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 more information about SCP configuration types, see the following guides:
  • 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.
  • 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:
  • modeld_routing: To enable or disable Release 16 Model D based routing.
  • mediation: To enable or disable Mediation.
  • interplmn_routing: To enable or disable the support for 5G SBI roaming.
  • global_egress_ratelimit: To enable or disable the Global Egress Rate Limiting and its specific configurations.
  • enhanced_nf_status_processing: To enable or disable the SUSPENDED NF Status processing.
  • scp_user_agent_info: To enable or disable addition of the "User-Agent" header in the SCP originated messages towards NRF.
  • lci: To enable or disable Load Control based on the Load Control Information (LCI) Header feature.
  • Traffic Feed: To enable or disable copying of both request and response messages routed through SCP towards Data Director
  • egress_host_preference: To enable or disable egress host preference.
  • location_hdr_update_for_host_mismatch: To enable or disable inter-SCP routing of subsequent 5G SBI request messages for unknown FQDNs as part of the Location Header for Host Mismatch feature.
  • cca_header_validation: To enable or disable Client Credentials Assertion (CCA) header validation.

    Note: SCP supports the 3gpp-Sbi-Client-Credentials header with x5c - X.509 URL, not x5u - X.509 URL.

  • health_check: Enables the Health Check API feature. By default, this feature is enabled.

    Note: This feature cannot be disabled because if it is disabled, SCP will not be able to send the response to the consumer, potentially causing the consumer to perceive SCP as unavailable. Therefore, disabling this feature is not allowed.

  • oauth2_support: This parameter enables or disables the OAuth2.0 (Open Authorization) access tokens feature.
  • nrf_bootstrap_info: To enable or disable NRF configuration using the DNS SRV resolution feature and its configuration.
  • oci: To enable or disable the Overload Control Information (OCI) feature.
  • ignore_unknown_nfservice: To enable or disable NFProfile Processing enhancements supported by SCP.
  • enhanced_error_rsp: To combine all the error responses from both internal and external sources, such as error responses generated by SCP and error responses received from producer NFs while performing alternate routing.
  • additional_logging: To enable or disable the additional logging feature.
  • log_subscriber_info: To enable or disable the log_subscriber_info feature and configure its settings.
  • timestamp_headers_support: To enable or disable the timestamp_headers_support feature and configure its settings.
  • enhanced_notifications_handling: To enable or disable the Enhanced Notifications Handling feature.
  • nf_discovery_enhancement: To enable or disable the NF Discovery enhancements.

    Note: Before enabling the nf_discovery_enhancement parameter, verify that the SCPNfTopologyForceRefreshAuditFailure alert is absent in the system. If the alert is absent, the feature can be enabled. If the alert is present, corrective action is required to clear the alert before proceeding. For more information about the SCPNfTopologyForceRefreshAuditFailure alert, see Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

  • nf_selection_enhancement: To enable or disable the NF Selection enhancements.

    Note: Before enabling the nf_selection_enhancement parameter, verify that the SCPNfTopologyForceRefreshAuditFailure alert is absent in the system. If the alert is absent, the feature can be enabled. If the alert is present, corrective action is required to clear the alert before proceeding. For more information about the SCPNfTopologyForceRefreshAuditFailure alert, see Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

  • ingress_rate_limit: To enable or disable ingress rate limiting.
  • egress_rate_limit: To enable or disable egress rate limiting.
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.

remoteScpOneEnabled: This parameter indicates whether SCP cache connectivity should be started for the remote SCP participant.

Type: Boolean

remoteScpTwoEnabled: This parameter indicates whether SCP cache connectivity should be started for the remote SCP participant.

modeld_routing featureSpecificConfig:{ "caching": "true", "enforceReqSpecificSvcDiscovery": "true" , "cacheCfgForNrfNotification": { "cacheUpdateMode": [ "LOCAL_REFRESH", "NRF_REFRESH" ] , "useCachedRecordOnError": 307, 308, 429, 5xx, empty2xx } } This parameter enables or disables the Model D Indirect 5G SBI Communication feature.

caching: This parameter indicates whether local cache is enabled for Model D rules.

enforceReqSpecificSvcDiscovery: This parameter enforces NF Service specific Discovery Request when possible.

cacheCfgForNrfNotification: Configuration for model-based D cache updates using NRF information. It includes two fields: cacheUpdateMode and useCachedRecordOnError.

cacheUpdateMode:This parameter indicates the cache update mode for SCP when an NF profile notification is received. The mode determines how cache records are updated, either locally or through a fresh discovery request to NRF, depending on the modified NF-profile attribute.

The following values are supported:
  • NONE: Cache updates do not occur on notification. Updates happen only based on discovery responses. Setting the value to "NONE" disables this feature.
  • LOCAL_REFRESH: The cache is updated locally if the NF-profile attribute being modified belongs to the local cache update category. If cacheUpdateMode is set to LOCAL_REFRESH only and the modified attribute requires an NRF discovery update, the notification is ignored.
  • NRF_REFRESH: The cache is refreshed through a new discovery request to NRF if the NF-profile attribute being modified requires an NRF discovery update. If cacheUpdateMode is set to NRF_REFRESH only and the modified attribute requires a local update, the notification is ignored.
  • [NRF_REFRESH, LOCAL_REFRESH]: Both local and NRF-based cache updates occur, depending on the modified NF-profile attribute.

    Upon receiving a Profile Notification, if both modes are configured, NRF_REFRESH will be applied first if applicable; otherwise, LOCAL_REFRESH will be applied.

  • Default value: [NRF_REFRESH, LOCAL_REFRESH]

useCachedRecordOnError: This parameter indicates that SCP uses the existing invalid cached response for the defined error codes if it receives an error response from NRF, if the request times out, or if it receives a 2xx response with no profiles.

The allowed values include:
  • Allowed values: NONE, 5xx, empty2xx, and all valid reroutable codes defined for Routing Options. These include: 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, and 511.
  • Default value: ["307", "308", "429", "5xx", "empty2xx"]
  • NONE: This value indicates that no error codes are configured. No other error codes can be used when "NONE" is set.
  • 5xx: Indicates all supported error codes starting with 5.
  • empty2xx: This custom string is defined to handle cases where the NRF discovery response returns a 200 OK status with an empty list of profiles. If this value is configured, SCP will use the old invalid cached response.
mediation "featureSpecificConfig": { "userDefinedVariable": { "enabled": false, "maxUserDefinedVariableSize": 1024, "maxUserDefinedVariableCount": 100 } } userDefinedVariable: Configuration wrapper for the userDefinedVariable feature; it contains three fields.
  • enabled: This boolean parameter indicates whether the userDefinedVariable feature is enabled for Mediation. The default value is false.
  • maxUserDefinedVariableSize: This integer parameter specifies the overall max size of all userDefinedVariables included in the request or response body for mediation.
    • Default Value: 1024
    • Range: 512 - 4096
  • maxUserDefinedVariableCount: This parameter is an Integer which signifies the total number of userDefinedVariables that can be configured for usage at User Defined Variables API.
    • Default Value: 100
    • Range: 1-250
Notes:
  • If the enabled field is set to false, rules using userDefinedVariables can only be saved in a draft state and cannot be moved to the compile or applied state.
  • If the enabled field is changed to true and any mediation rules are in the applied state, the enabled field cannot be set back to false until all applied rules are returned to draft state.
  • If userDefinedVariables are added through the User Defined Variables API, the maxUserDefinedVariableCount cannot be set to a value lower than the number of userDefinedVariables currently stored in the database.
interplmn_routing
"featureSpecificConfig": {
       "customRoamingProxySupport": false
}
customRoamingProxySupport: This parameter specifies if custom roaming proxy nfType is supported for inter-PLMN routing.

By default, this parameter is set to false.

If set to false, the default roaming proxy (SEPP) is considered only for inter-PLMN routing.

If set to true, custom roaming proxies along with SEPP are considered only for inter-PLMN routing. The usage of roaming proxy type depends on the roaming proxy mode rule.

enhanced_nf_status_processing featureSpecificConfig : { "enhancedSuspendedStateRouting": "["AMF", PCF"]" , "suspendedStateRouting": ["UDM"] } This parameter enables or disables the NF Status Processing feature.

enhancedSuspendedStateRouting: This parameter is used to indicate the list of NFTypes for which SCP would consider "SUSPENDED" NFs available for routing, alternate routing, or reselection only when alternate is not available in the "REGISTERED" state. This parameter is used to list NFTypes eligible for Mode 3. An * means that all NFTypes are eligible for Mode 3.

suspendedStateRouting: This parameter is used to indicate the list of NFTypes for which SCP would consider "SUSPENDED" NFs available for routing. This parameter is used to list the NFTypes eligible for Mode 2. An * means that all NFTypes are eligible for Mode 2.

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:
  • Mode 1: If the enhanced_nf_status_processing is set to false, only NFs in the REGISTERED state are considered for routing.
  • Mode 2: If the enhanced_nf_status_processing is set to true and suspendedStateRouting is present, all configured NFs are considered for routing, irrespective of their NF state (REGISTERED or SUSPENDED).
  • Mode 3: If the enhanced_nf_status_processing is set to true and enhancedSuspendedStateRouting is present, SCP considers SUSPENDED NFs available for routing, alternate routing, or reselection only when the alternate NF is not available in the REGISTERED state.
  • If enhancedSuspendedStateRouting is set to a subset of NF types such as AMF and PCF, SCP applies routing Mode 3 for AMF and PCF, and the remaining NF types will be routed to Mode 1.
  • If suspendedStateRouting is set to a subset of NF types such as AMF and PCF, SCP applies routing Mode 2 for AMF and PCF, and the remaining NF types will be routed to Mode 1.
  • If suspendedStateRouting and enhancedSuspendedStateRouting are configured for mutually exclusive NF types such as UDM and PCF, then SCP will route UDM to Mode 2 and PCF to Mode 3, respectively, and the remaining NF types will be routed to Mode 1.
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.

userAgentHeaderFormat: This parameter indicates the format of the"User-Agent" header that is added in the SCP originated message requests towards NRF. SCP supports the following formats of the "User-Agent" header:

  • NFTYPE-NFINSTANCEID FQDN
  • NFTYPE-NFINSTANCEID-FQDN
  • NFTYPE-FQDN NFINSTANCEID
  • NFTYPE-FQDN-NFINSTANCEID
  • NFTYPE-NFINSTANCEID
  • NFTYPE-FQDN
  • NFTYPE
  • NFTYPE-UNIQUEID
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.
  • Default value: false
relayPeerLci: This parameter allows SCP to forward the received LCI header from producer NF.
  • Default value: true
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.
  • Default value: 5000 milliseconds
  • Range: 1000 to 3600000 milliseconds
Note:
  • This LCI conveyance is not limited by scpLciConveyanceMinLoadThreshold or scpLciConveyanceMinLoadChange parameter.
  • However, if the SCP load value is lesser than scpLciConveyanceMinLoadThreshold, then it reports 0 as a load considering SCP is not loaded.
  • The LCI header will be sent along with the message being forwarded to the peer NF.
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.
  • Default value: 5%
  • Range: 5% to 25%

Example:

  • If the load changes from 30 to 35 or 35 to 30, LCI is conveyed.
  • if the load changes from 30 to 32, no LCI is conveyed.
scpLciConveyanceMinLoadThreshold: This parameter indicates that SCP considers this parameter as a starting point for updating its original load value to peers.
  • Default value: 30%
  • Range: 0% to 60%

Note: If the SCP load value is less than the scpLciConveyanceMinLoadThreshold, then SCP reports zero as a LCI load, considering SCP is not loaded. A zero load value is conveyed as part of the scpLciConveyanceInterval.

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.
  • Default value: false

Note: If the SCP load value is less than the scpLciConveyanceMinLoadThreshold, then SCP reports zero as a LCI load, considering SCP is not loaded.

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.
  • Default value: 5%
  • Range: 0% to 25%
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.
  • Default value: 300 seconds
  • Range: 30 to 900 seconds
traffic_feed NA The featureSpecificConfig field is not applicable for traffic_feed. You must keep its value empty, for example, featureSpecificConfig: {}
egress_host_preference "featureSpecificConfig": { "hostPreference": { "request": { "apiRootHdrPresent": "passThrough", "apiRootHdrNotPresent": "ip", "scpGeneratedNrfMsg": "ip" }, "response": { "headers": "followRequest" } }, "fqdnResolution": { "fqdn": "nfProfile", "interPlmnFqdn": "dns" } }

hostPreference.request.apiRootHdrPresent: This parameter indicates the Host (":authority" header) preference for egress request if "3gpp-Sbi-Target-apiRoot" header is present in the ingress request.

  • Default value: passThrough
  • Range: ip, fqdn, or passThrough
    If set as:
    • ip: IP is used in host of egress message requests.
    • fqdn: FQDN is used in host of egress message requests.
    • passThrough: Uses the same type of host in egress message requests as it is received in ingress message requests.

    Note: The :authority header in the egress request must be FQDN irrespective of the host configurations of hostPreference.request.apiRootHdrPresent and hostPreference.request.apiRootHdrNotPresent if the identified request is an interplmn request.

hostPreference.request.apiRootHdrNotPresent: This parameter indicates the host preference (":authority" header) for egress request if "3gpp-Sbi-Target-apiRoot" header is not present in the ingress request.

  • Default value: ip
  • Range: ip or fqdn
If set as:
  • ip: IP is used in host of egress message requests.
  • fqdn: FQDN is used in host of egress message requests.

hostPreference.request.scpGeneratedNrfMsg: This parameter indicates the host preference (":authority" header) for SCP generated NRF messages.

  • Default value: ip
  • Range: ip or fqdn
If set as:
  • ip: IP is used in host of egress message requests.
  • fqdn: FQDN is used in host of egress message requests.

hostPreference.response.headers: This parameter indicates the host preference for headers in egress message responses. Host present in "location" header or "3gpp-Sbi-Target-apiRoot" header will be updated as per configuration.

  • Default value: followRequest
  • Range: followRequest, ip, or fqdn
If set as:
  • ip: IP is used in host of location header or 3gpp-Sbi-Target-apiRoot header for egress message responses.
  • fqdn: FQDN is used in host of location header or 3gpp-Sbi-Target-apiRoot header for egress message responses.
  • followRequest: Uses the same host as used for corresponding egress message request.

Note: If the location header contains absolute URI, SCP does not update the authority in absolute URI.

fqdnResolution.fqdn: This parameter indicates the resolution preference of egress message requests host FQDN if present.

  • Default value: nfProfile
  • Range: dns or nfProfile
If set as:
  • dns: DNS resolution is used to resolve fqdn selected for egress message request.
  • nfProfile: IP Endpoint is used to resolve fqdn selected for egress message request.

fqdnResolution.interPlmnFqdn: This parameter indicates the resolution preference of egress message requests inter-plmn FQDN if present.

  • Default value: dns
  • Range: dns or nfProfile
If set as:
  • dns: DNS resolution is used to resolve fqdn selected for egress message request.
  • nfProfile: IP Endpoint is used to resolve fqdn selected for egress message request.
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, featureSpecificConfig: {}

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.
  • Default value: {"type": "subject","errorProfileName": "ccaVerificationError","producerNfTypes": [ ]}
  • Range: subject, headerPresence
type: This paremeter indicates the type of validation:
  • headerPresence: SCP checks the presence of the 3gpp-Sbi-Client-Credentials header in the ingress request.
    • Validation will pass if the header is present.
    • Validation will fail if the header is not present.
  • subject: SCP checks the NF instance ID from the "sub" parameter in the 3gpp-Sbi-Client-Credentials header with the NF instance ID from the list of SANs in the client's TLS certificate. SANs directly have the NF Instance Id or the client's other identity, like the FQDN or IP address, which will be used to get the NF Instance Id. If the 3gpp-Sbi-Client-Credentials header is not present, then this validation will not be performed.
    • Validation will pass if the NF instance ID from the "sub" parameter matches the NF instance ID from the SAN.
    • Validation will fail if the NF instance ID from the "sub" parameter doesn't match the NF instance ID from the SAN.
    • Default value: subject
    • Range: subject, headerPresence
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.
  • Default value: ccaVerificationError
  • Range: NA
producerNFTypes: This parameter mentions the name of the producer NF Type.
  • Default value: null
  • Range: NA
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.
  • Default value: URI-ID-URN, DNS-ID, IP-ADDRESS, URI-ID-APIROOT
  • Range: URI-ID-URN, DNS-ID, IP-ADDRESS, URI-ID-APIROOT
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.
  • Default value: 30
  • Range: 1-100
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.
  • Default value: 75%
  • Range: 75% - 90%
successRspType: This parameter indicates successful responses for a healthy SCP.
  • Default value: 200StatusCodeAndEmptyPayload
  • Range: 200WithPayLoad, 200WithEmptyPayload, and 204WithNoContent

errorProfileName: This parameter indicates the error profile configuration for the health query response in the exception conditions.

Default value: healthCheckErrorProfile. It configures error profiles for the health query responses in exception conditions. For more information about this parameter, see Configuring Error Profiles.

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.
  • Default value: false
  • Range: true or false
pollingInterval: This parameter indicates the duration to control the periodicity of health check requests in inter-scp scenarios.
  • Default value: 1000ms
  • Range: 300ms -60000ms
requestTimeout: This parameter indicates the timer to monitor the waiting time for health check response in inter-scp scenarios.
  • Default value: 1000ms
  • Range: 300ms -60000ms
noOfConsecutiveErrorResp: This parameter indicates the total number of consecutive failure responses that leads to failover in inter-scp scenarios.
  • Default value: 3
  • Range: 1 - 20
noOfConsecutiveSuccessResp: This parameter indicates the total number of consecutive successful responses that leads to fallback in inter-scp scenarios.
  • Default value: 3
  • Range: 1 - 20
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.

scpAccessTokenCapability: This parameter indicates Access token support for the listed indirect communication modes at SCP. (ENUM)

Possible values: [INDIRECT_COM_WITH_DELEG_DISC, INDIRECT_COM_WITHOUT_DELEG_DISC]
  • INDIRECT_COM_WITH_DELEG_DISC: SCP initiates access token request toward NRF in delegated discovery service request.
  • INDIRECT_COM_WITHOUT_DELEG_DISC: SCP is expected to forward the service request with or without access token as per configuration at SCP. SCP is not expected to initiate access token request toward NRF.
accessTokenConveyance: This parameter conveys acquired access token in the "3gpp-Sbi-Access-Token" header in service response to consumer NFs.
  • Default value: true
  • Range: true or false
oauth2AccessTokenValidation: This parameter enables or disables validation of OAuth2 access token from consumer NFs.
  • Default value: Disabled
  • Range: Disabled or Enabled
accessTokenValidationTypes: This parameter configures the list of required validation types in the network.
  • Default value: empty as default, only TYPE1 is in scope.
  • Enumeration: validationType. TYPE1: Represents validation for token expiry time.
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.
  • Default value: 60000ms
  • Range: 100ms - 300000ms
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.
  • Default value: 30000ms
  • Range: 100ms - 300000ms
accessTokenCleanUpPostExpiry : This parameter indicates the duration to purge the token from cache.
  • Default value: 900000ms
  • Range: 0ms - 3600000ms
accessTokenHistorySize: This parameter indicates the number of access tokens signature history to identify whether the access token initiated by SCP or not.
  • Default value: 10 records
  • Range: 0 - 20 records
accessTokenCacheSize: This parameter indicates the number of access tokens that can be cached in SCP.
  • Default value: 50000 records
  • Range: 5000 - 100000 records
requesterInfo: This parameter indicates access token requester (consumer NF) Info to generate the access token request.
  • Prioritized list of default values:
    1. DISCOVERY-HEADERS
    2. CCA-HEADER
    3. USER-AGENT-HEADER
cacheEnabled: This parameter enables or disables caching of access tokens.
  • Default value: true
  • Range: true or false
nrf_bootstrap_info

        "featureSpecificConfig": 
           "source": "DNS_SRV ",
           "deRegisterScpDuringMigration": "false"
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.
  • Default value: 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.
  • Default value: false
  • Range: true or false
oci
{
  "featureName": "oci",
  "enabled": false,
  "featureSpecificConfig": {
    "olcHSupportInd": true,
    "scpOciConveyanceInterval": 2000,
    "scpOciRecoveryValidityPeriod": 3600,
    "nextHopRoamingProxyOci": [
      {
        "nfType": "*",
        "enabled": true,
        "ruleName": "NextHopSeppOciRuleName"
      }
    ],
    "nextHopProxyOci": [
      {
        "nfType": "Scp",
        "enabled": true,
        "ruleName": "NextHopScpOciRuleName"
      }
    ],
    "scpOciConveyance": {
      "enable": true,
      "unknownPeer": {
        "request": true,
        "response": true
      }
    }
  }
}
If this parameter is set to true, SCP sends the olcHSupportInd parameter in SCP NF profile when registering with NRF (NFRegister) or updating NRF (NFUpdate) to indicate that SCP supports the Overload Control Information feature based on the 3gpp-Sbi-Oci header.
  • Data Type: Boolean
  • Default value: true
  • Range: true or false

scpOciConveanceInterval: This parameter is the interval for reporting SCP OCI to peer NFs. For every interval until the validity period, the last sent OCI is reported to peer NF, irrespective of any change to SCP OCI. Sending SCP OCI periodically ensures that the peer NF has not missed an earlier reported SCP OCI. The same OCI header as sent on the last OCI threshold change or validity period expiry is sent.

  • Data Type: Integer
  • Default value: 2000 milliseconds
  • Range: 2000 to 3600000 milliseconds

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.
  • Data Type: Integer
  • Default value: 3600 seconds
  • Range: 5 to 3600 seconds
nextHopRoamingProxyOci.nfType: Indicates the roaming proxy NF type. All NF types configured in the nfTypes-nfServices REST API with the NF role set to "CUSTOM_5G_ROAMING_PROXY", "SEPP", and "*".
  • Data Type: String
  • Default value: *
  • Range: "SEPP", "*", and NF Type with NF Role as "CUSTOM_5G_ROAMING_PROXY"
nextHopRoamingProxyOci.enabled: If this parameter is set to true, the OCI enforcement is enabled for roaming proxy NF type.
  • Data Type: Boolean
  • Default value: true
  • Range: true or false
nextHopRoamingProxyOci.ruleName: If this parameter is set to true, OCI feature enforcement is performed based on the OCI configuration referenced by the rule name specified as the value of this parameter.
  • Data Type: String
  • Default value: NextHopSeppOciRuleName
  • Range: NA

Note: The OCI config rule configured for relayPeerOci is always set to false, and for ociEnforcement is always set to true.

nextHopProxyOci.nfType: Indicates SCP NF type.
  • Data Type: String
  • Default value: SCP
  • Range: SCP
nextHopProxyOci.enabled: If set to true, OCI enforcement is enabled for SCP.
  • Data Type: Boolean
  • Default value: true
  • Range: true or false
nextHopProxyOci.ruleName: If set to true, OCI feature enforcement is performed based on the OCI configuration referenced by the rule name specified as this parameter’s value.
  • Data Type: String
  • Default value: NextHopScpOciRuleName
  • Range: NA

Note: The OCI config rule configured for relayPeerOci is always set to false, and for ociEnforcement is always set to true.

nextHopScpOciRuleName: If nextHopScpOciEnabled is set to true, OCI feature enforcement is done based on ociConfigRule configured with the name provided as value for this parameter.

  • Default value: NextHopScpOciRuleName
  • Range: NextHopScpOciRuleName

Note: When ociConfigRule is configured for nextHopScpOciRuleName, set relayPeerOci to false and ociEnforcement to true.

nextHopSeppOciRuleName: If nextHopSeppOciEnabled is set to true, OCI feature enforcement is done based on ociConfigRule configured with the name provided as value for this parameter.

  • Default value: NextHopSeppOciRuleName
  • Range: NextHopSeppOciRuleName

Note: When ociConfigRule is configured for nextHopSeppOciRuleName, set relayPeerOci to false and ociEnforcement to true.

scpOciConveyance:enable: If this parameter is set to true, SCP starts conveying the 3gpp-Sbi-Oci header based on self-overload information.

  • Data Type: Boolean
  • Default value: true
  • Range: true or false

scpOciConveyance:unknownPeer:request: If this parameter is set to true, SCP starts conveying self-OCI tagged to requests toward unknown peers. For unknown peers, identification of peer NFs is done based on message request's FQDN.

  • Data Type: Boolean
  • Default value:false
  • Range: true or false

scpOciConveyance:unknownPeer:response: If this parameter is set to true, SCP starts conveying self-OCI tagged to responses toward unknown peers.

  • Data Type: Boolean
  • Default value:false
  • Range: true or false
ignore_unknown_nfservice NA The featureSpecificConfig field is not applicable for ignore_unknown_nfservice. You must keep its value empty, for example, featureSpecificConfig: {}
enhanced_error_rsp
 "featureSpecificConfig": {
    "problemDetailsEnhancement": {
        "errorDetailMaxSize": 2100
    }
 }
This parameter adds routing attempt information to ProblemDetails when SCP generates error responses. It enables SCP to combine all the error responses from both internal and external sources, such as error responses generated by SCP and error responses received from producer NFs while performing alternate routing.

errorDetailMaxSize: This parameter manages the maximum length limit of the compiled error string in the detail parameter of problemDetails. SCP truncates the error string from end if the compiled string is greater than the maximum limit.

  • Default value: 2100 Bytes
  • Range: 1000 to 3100 Bytes
additional_logging
"featureSpecificConfig": {
    "scpGeneratedErrorRspLogging": {
        "enabled": false,
        "scpServiceNames": [
           "scp-worker"
        ]
    }
 }
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.

scpServiceNames: This parameter contains the list of services for which SCP generates error response logs.

  • Default value: scp-worker
  • Possible Values: ALL, scp-worker
Note:
  • This value cannot be null.
  • Do not set this parameter to any other microservice when it is set to ALL.
log_subscriber_info
"featureSpecificConfig": {
    "scpServiceNames": [
        "ALL"
     ]
 }
This parameter appends User Equipment (UE) identity or subscriber ID to error logs.

scpServiceNames: This parameter contains the list of services for which subscriber ID is added to their error logs.

  • Default value: ALL
  • Possible Values: ALL, scp-worker, scp-nrfproxy, and scp-nrfproxy-oauth
Note:
  • This value cannot be null.
  • Do not set this parameter to any other microservice when it is set to ALL.
timestamp_headers_support
"featureSpecificConfig": {
     "dynamicResponseTimeout": true,
     "updateTimestampHeaders": true,
     "responseTransitTime": {
          "downstreamNF": 50,
          "downstreamSCP": 100,
          "downstreamSEPP": 300,
          "downstreamRoamingProxy": 300
     }

}
To enable or disable the timestamp_headers_support feature.
  • dynamicResponseTimeout: This parameter, when set to true, enables SCP to perform dynamic response time calculations based on the received timestamp headers. It updates or adds the 3gpp-Sbi-Sender-Timestamp and 3gpp-Sbi-Max-Rsp-Time headers in the egress SBI request. Additionally, when this parameter is enabled, the value of updateTimestampHeaders will not have any impact.
    • Date Type: Boolean
    • Default Value: true
    • Range: true or false
  • updateTimestampHeaders: This parameter, when set to true and dynamicResponseTimeout is false, allows SCP to add or update the 3gpp-Sbi-Sender-Timestamp and 3gpp-Sbi-Max-Rsp-Time headers in the egress SBI request. The 3gpp-Sbi-Sender-Timestamp is set to reflect the current timestamp, while the 3gpp-Sbi-Max-Rsp-Time will be set to the configured responseTimeout value for the specific service.
    • Date Type: Boolean
    • Default Value: true
    • Range: true or false

    Moreover, when dynamicResponseTimeout is true, the value of updateTimestampHeaders will not have any impact and should be set to true. In this case, SCP will always add or update the 3gpp-Sbi-Sender-Timestamp and 3gpp-Sbi-Max-Rsp-Time headers in the egress SBI request.

  • responseTransitTime: This parameter specifies the minimum estimated transit time required (in milliseconds) for the response to reach back to the original sender, whether it's the Consumer NF, SCP, or SEPP."responseTransitTime": { "downstreamNF": 50, "downstreamSCP": 100, "downstreamSEPP": 300}
  • responseTransitTime.downstreamNF: This parameter specifies the minimum estimated transit time required (in milliseconds) for the response to return to the original requester NF.
    • Date Type: Integer
    • Default Value: 50
    • Range: 0 - 10000
  • responseTransitTime.downstreamSCP: This parameter specifies the minimum estimated transit time required (in milliseconds) for the response to return to the original requester SCP.
    • Date Type: Integer
    • Default Value: 100
    • Range: 0 - 10000
  • responseTransitTime.downstreamSEPP: This parameter specifies the minimum estimated transit time required (in milliseconds) for the response to return to the original requester SEPP.
    • Date Type: Integer
    • Default Value: 300
    • Range: 0 - 10000
  • responseTransitTime.downstreamRoamingProxy: This parameter specifies the minimum estimated transit time (in milliseconds) required for the response to reach the custom roaming proxy. SCP reserves this time when calculating the total transaction lifetime for the request.
    • Date Type: Integer
    • Default Value: 300
    • Range: 0 - 10000
enhanced_notifications_handling
 "featureSpecificConfig": {
    "alternateRoutingWithoutServName": false
  }
To enable or disable the Enhanced Notifications Handling feature.

alternateRoutingWithoutServName: Enables or disables SCP to alternate route notification requests even if the service name is unavailable in the 3gpp-Sbi-Routing-Binding header.

This parameter can have the following values:
  • true: Enables SCP to perform alternate routing of notification requests.
  • false: Refrains SCP from performing alternate routing of notification requests.
  • Date Type: Boolean
  • Default Value: false
ingress_rate_limit NA This is not applicable for ingress_rate_limit. You must keep it empty, that is, featureSpecificConfig: {}.
egress_rate_limit NA This is not applicable for egress_rate_limit. You must keep it empty, that is, featureSpecificConfig: {}.
nf_discovery_enhancement
 "featureSpecificConfig": {
    "nfStatusForLocalDiscRespCreation": [
      "REGISTERED"
    ]
  }

nfStatusForLocalDiscRespCreation: Indicates which NFs to consider during static discovery.

  • Date Type: array (string)
  • Default Value: ["REGISTERED"]
  • Range: ["REGISTERED","SUSPENDED","UNDISCOVERABLE"]
nf_selection_enhancement NA This is not applicable for nf_selection_enhancement. You must keep it empty, that is, featureSpecificConfig: {}.

Response Body

The following table describes response body data models that varies based on the REST operation status.

Table 2-4 Response Body Data Type

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(SCPFeaturesWrapper) M 1 200 OK Indicates the list of SCP features (SCPFeaturesWrapper) matching criteria.
ProblemDetails M 1 404 NOT FOUND Returns when the data is not found for given query parameters.
JSON Format
[    
{
  "featureName": "string",
  "enabled": false,
  "featureSpecificConfig": {
    
   }
},{
   ....
   ...   
  }
]

Resource Definition

GET REST API

This resource fetches the SCP feature details (SCPFeaturesWrapper) based on the query parameters.

If no query parameter is provided, all the SCP feature detail are returned.

Resource URI: /ocscp/scpc-configuration/v1/scp-features

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-5 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
featureName String O Specifies the identity of featureName for which SCP features are fetched.

Note:

featureName is a valid combination of query parameter or path variable.

Table 2-6 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(SCPFeaturesWrapper) M 1 200 OK Indicates the list of SCP features or specific record based on query parameters.
ProblemDetails M 1 404 NOT FOUND Returns when the data is not found for given query parameters.

Example

Successful response 1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json"
[       
 {
  "featureName": "interplmn_routing",
  "enabled": false,
  "featureSpecificConfig": {
    "customRoamingProxySupport": false
  },
  "createdTimestamp": "2025-11-26 00:04:42.0",
  "updatedTimestamp": "2025-11-27 03:15:13.0"
} 
]

Successful response 2

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/interplmn_routing" -H "accept: application/json"
        
 
{
  "featureName": "interplmn_routing",
  "enabled": false,
  "featureSpecificConfig": {
    "customRoamingProxySupport": true
  },
  "createdTimestamp": "2025-11-26 00:04:42.0",
  "updatedTimestamp": "2025-11-27 03:15:13.0"
}

Successful response 3

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=interplmn_routing" -H "accept: application/json"
        
 
{
  "featureName": "interplmn_routing",
  "enabled": false,
  "featureSpecificConfig": {
    "customRoamingProxySupport": false
  },
  "createdTimestamp": "2025-11-26 00:04:42.0",
  "updatedTimestamp": "2025-11-27 03:15:13.0"
}

Successful response 4

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preference"-H "accept: application/json"
 
Code: 200 

{  
  "featureName": "egress_host_preference",
  "enabled": false,
  "featureSpecificConfig": {
    "fqdnResolution": {
      "fqdn": "nfProfile",
      "interPlmnFqdn": "dns"
    },
    "hostPreference": {
      "request": {
        "apiRootHdrPresent": "passThrough",
        "scpGeneratedNrfMsg": "ip",
        "apiRootHdrNotPresent": "ip"
      },
      "response": {
        "headers": "followRequest"
      }
    }
  }
}

Successful response 5

$ curl -X 'GET'  'http://<localhost>:30472/ocscp/scpc-configuration/v1/scp-features/location_hdr_update_for_host_mismatch'  -H 'accept: application/json' 
{
  "featureName":"location_hdr_update_for_host_mismatch",
  "enabled":false
} 

Successful response 6

$ curl -X 'GET' 'http://<localhost>:31109/ocscp/scpc-configuration/v1/scp-features/cca_header_validation' -H 'accept: application/json'            
{ 
  "featureName": "cca_header_validation",
  "enabled": false,
  "featureSpecificConfig": {
    "validations": [
      {
        "type": "subject",
        "errorProfileName": "ccaVerificationError",
        "producerNfType": []
      }
    ],
    "tls_crt_san": {
      "preferred_validation_order": [
        "URI-ID-URN",
        "DNS-ID",
        "IP-ADDRESS",
        "URI-ID-APIROOT"
      ],
      "max_entries_to_process": 30
    }
  }
}

Successful response 7

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_error_rsp'  -H 'accept: application/json'          
{
  "featureName": "enhanced_error_rsp",
  "enabled": true,
  "featureSpecificConfig": {
    "problemDetailsEnhancement": {
        "errorDetailMaxSize": 2100
    }
  }
}

Successful response 8

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/additional_logging'  -H 'accept: application/json'          
{
  "featureName": "additional_logging",
  "enabled": false,
  "featureSpecificConfig": {
      "scpGeneratedErrorRspLogging": {
          "enabled": false,
           "scpServiceNames": [
              "scp-worker"
            ]
       }
   }
}

Successful response 9

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/log_subscriber_info'  -H 'accept: application/json'
{
  "featureName": "log_subscriber_info",
  "enabled": false,
  "featureSpecificConfig": {
     "scpServiceNames": [
        "ALL"
      ]
   }
}

Successful response 10

$ curl -X GET "http://<localhost>:30454/ocscp/scpc-configuration/v1/scp-features/mediation" -H "accept: application/json"
{
  "featureName": "mediation",
  "enabled": false,
  "featureSpecificConfig": {
    "userDefinedVariable": {
      "enabled": false,
      "maxUserDefinedVariableSize": 1024,
      "maxUserDefinedVariableCount": 100
    }
  },
  "createdTimestamp": "2024-11-13 10:28:24.0",
  "updatedTimestamp": "2024-11-18 08:59:40.0"
}

Successful response 11

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_support'  -H 'accept: application/json' 
{
  "featureName": "timestamp_headers_support",
  "enabled": false,
  "featureSpecificConfig": {
    "dynamicResponseTimeout": true,
    "updateTimestampHeaders": true,
    "responseTransitTime": {
      "downstreamNF": 50,
      "downstreamSCP": 100,
      "downstreamSEPP": 300,
      "downstreamRoamingProxy": 300
    }
  },
  "createdTimestamp": "2025-12-22 13:21:00.0",
  "updatedTimestamp": "2025-12-22 13:21:00.0"
}

Successful response 12

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_notifications_handling'  -H 'accept: application/json' 
{
    "featureName": "enhanced_notifications_handling",
    "enabled": true,
    "featureSpecificConfig": {
        "alternateRoutingWithoutServName": true
    }
}

Successful response 13

$ curl -X 'GET' \
  'http://<localhost>:31046/ocscp/scpc-configuration/v1/scp-features/nf_discovery_enhancement' \
  -H 'accept: application/json'
{
  "featureName": "nf_discovery_enhancement",
  "enabled": true,
  "featureSpecificConfig": {
    "nfStatusForLocalDiscRespCreation": [
      "REGISTERED"
    ]
  },
  "createdTimestamp": "2025-10-30 08:27:48.0",
  "updatedTimestamp": "2025-10-30 08:27:48.0"
}

Successful response 14

$ curl -X 'GET' \
  'http://<localhost>:31046/ocscp/scpc-configuration/v1/scp-features/nf_selection_enhancement' \
  -H 'accept: application/json'

{
  "featureName": "nf_selection_enhancement",
  "enabled": true,
  "createdTimestamp": "2025-10-30 08:27:48.0",
  "updatedTimestamp": "2025-10-30 08:27:48.0"
}

Failure case 1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options" -H "accept: application/json"
Response Body:
{
  "title": "Not Found",
  "status": "404",
  "detail": "SCP Features configuration data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options",
  "cause": "DATA_NOT_FOUND"
}

Failure case 2

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1" -H "accept: application/json“
    
Response Body:
{
  "title": "Not Found",
  "status": "404",
  "detail": "SCP Features configuration data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource adds or updates the feature-specific information based on the provided feature name in the Resource URI.

Resource URI: /ocscp/scpc-configuration/v1/scp-features/{featureName}

Table 2-7 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
SCPFeaturesWrapper M 1 200 OK Indicates the SCP feature configuration data.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1.

Example

Successful response 1:

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features" -H "accept: application/json"   
 
[       
 {
  "featureName": "interplmn_routing",
  "enabled": false,
  "featureSpecificConfig": {
    
   }
} 
]

Successful response 2:

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/interplmn_routing" -H "accept: application/json"
{
  "featureName": "interplmn_routing",
  "enabled": false,
  "featureSpecificConfig": {
    
   }
} 

Successful response 3:

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=interplmn_routing" -H "accept: application/json"
{
  "featureName": "interplmn_routing",
  "enabled": false,
  "featureSpecificConfig": {
    
   }
} 

Successful response 4:

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preference"-H "accept: application/json"
Code: 200 

{  
  "featureName": "egress_host_preference",
  "enabled": false,
  "featureSpecificConfig": {
    "fqdnResolution": {
      "fqdn": "nfProfile",
      "interPlmnFqdn": "dns"
    },
    "hostPreference": {
      "request": {
        "apiRootHdrPresent": "passThrough",
        "scpGeneratedNrfMsg": "ip",
        "apiRootHdrNotPresent": "ip"
      },
      "response": {
        "headers": "followRequest"
      }
    }
  }
}

Successful response 5:

$ curl -X 'GET'  'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/location_hdr_update_for_host_mismatch'  -H 'accept: application/json'          
{
  "featureName":"location_hdr_update_for_host_mismatch",
  "enabled":false
}  

Successful response 6:

$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/cca_header_validation' -H 'accept: application/json'            
{ 
  "featureName": "cca_header_validation",
  "enabled": false,
  "featureSpecificConfig": {
    "validations": [
      {
        "type": "subject",
        "errorProfileName": "ccaVerificationError",
        "producerNfType": []
      }
    ],
    "tls_crt_san": {
      "preferred_validation_order": [
        "URI-ID-URN",
        "DNS-ID",
        "IP-ADDRESS",
        "URI-ID-APIROOT"
      ],
      "max_entries_to_process": 30
    }
  }
}

Successful response 7:

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_error_rsp'  -H 'accept: application/json'          
{
  "featureName": "enhanced_error_rsp",
  "enabled": true,
  "featureSpecificConfig": {
    "problemDetailsEnhancement": {
        "errorDetailMaxSize": 2100
    }
  }
}

Successful response 8:

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/additional_logging'  -H 'accept: application/json'          
{
  "featureName": "additional_logging",
  "enabled": false,
  "featureSpecificConfig": {
      "scpGeneratedErrorRspLogging": {
          "enabled": false,
           "scpServiceNames": [
              "scp-worker"
            ]
       }
   }
}

Successful response 9:

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/log_subscriber_info'  -H 'accept: application/json'          
{
  "featureName": "log_subscriber_info",
  "enabled": false,
  "featureSpecificConfig": {
     "scpServiceNames": [
        "ALL"
      ]
   }
}

Successful response 10:

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/mediation" -H "accept: application/json"     
{
  "featureName": "mediation",
  "enabled": false,
  "featureSpecificConfig": {
    "userDefinedVariable": {
      "enabled": false,
      "maxUserDefinedVariableSize": 1024,
      "maxUserDefinedVariableCount": 100
    }
  },
  "createdTimestamp": "2024-11-13 10:28:24.0",
  "updatedTimestamp": "2024-11-18 08:59:40.0"
}

Successful response 11:

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_support'  -H 'accept: application/json' 
{
    "featureName": "timestamp_headers_support",
    "enabled": true,
    "featureSpecificConfig": {
        "dynamicResponseTimeout": true,
        "updateTimestampHeaders": true,
        "responseTransitTime": {
            "downstreamNF": 50,
            "downstreamSCP": 100,
            "downstreamSEPP": 300
        }
    }
}

Successful response 12:

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/enhanced_notifications_handling' 
        -H 'accept:
        application/json'
{
    "featureName": "enhanced_notifications_handling",
    "enabled": true,
    "featureSpecificConfig": {
        "alternateRoutingWithoutServName": true
    }
}

Failure case 1:

Note:

In case SCP is not configured with local or foreign PLMNs and invalid NF type is configured for this feature, you receive a Bad Request 400 with error message.
$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options"-H "accept:
        application/json"
Response Body:{  "title":
        "Not Found",  "status": "404",  "detail": "SCP Features configuration data not
        found against given query parameter(s), Please refer to the User Guide.",  "instance": "/ocscp/scpc-configuration/v1/scp-features?featureName=routing_options",  "cause": "DATA_NOT_FOUND"}

Failure case 2:

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1"-H "accept: application/json“
Response Body:{  "title":
        "Not Found",  "status": "404",  "detail": "SCP Features configuration data not
        found against given query parameter(s), Please refer to the User Guide.",  "instance": "/ocscp/scpc-configuration/v1/scp-features/egress_host_preferenceheader1",  "cause": "DATA_NOT_FOUND"}

Failure case 3:

curl -X 'GET'  'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/cca_header_validation1' 
        -H 'accept:
        application/json'    
Response Body:{  "title":
        "Not Found",  "status": "404",  "detail": "SCP Features configuration data not
        found against given query parameter(s), Please refer to the User Guide.",  "instance": "/ocscp/scpc-configuration/v1/scp-features/cca_header_validation1",  "cause": "DATA_NOT_FOUND"}

Failure case 4:

curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/additional_loggingxx' 
        -H 'accept:
        application/json'    
Response Body:{  "title":
        "Not Found",  "status": "404",  "detail": "SCP Features configuration data not
        found against given query parameter(s), Please refer to the User Guide.",  "instance": "/ocscp/scpc-configuration/v1/scp-features/additional_loggingxx",  "cause": "DATA_NOT_FOUND"}

Failure case 5:

curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/log_susbcriber_infoxx' 
        -H 'accept:
        application/json'    
Response Body:{  "title":
        "Not Found",  "status": "404",  "detail": "SCP Features configuration data not
        found against given query parameter(s), Please refer to the User Guide.",  "instance": "/ocscp/scpc-configuration/v1/scp-features/log_subscriber_infoxx",  "cause": "DATA_NOT_FOUND"}

Failure case 6:

$ curl -X 'GET'  'http://<host>:<port>/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_supportxx' 
        -H 'accept:
        application/json'
Response Body:{    "title":
        "Not Found",    "status": 404,    "detail": "SCP Features
        configuration data not found against given query parameter(s), Please refer to the User
        Guide.",    "instance": "/ocscp/scpc-configuration/v1/scp-features/timestamp_headers_supportxx",    "cause": "DATA_NOT_FOUND"}

2.2 Configuring Routing Options Config

This section describes the routing-options-config REST API parameters to configure a routing option based on the following parameters:

  • messageType
  • notificationType
  • nfType
  • nfServiceName
  • method
  • apiSpecificResourceUri
  • senderNFType
  • notificationSender
    • apiNameAxHeading
    • serviceOperation

This REST API provides a match criteria for selecting a routing option configuration. When SCP-Worker receives a message request, it extracts the above mentioned attributes from the message request and matches them to select a routing option.

Note:

You must configure message routing related parameters, such as maxRoutingAttempts, responseTimeout, and so on, as described in Configuring Routing Config Set.

Resources

The following table describes the resource name to retrieve, add, or update routing-options-config configuration data:

Table 2-8 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
routing-options-config /ocscp/scpc-configuration/{version}/routing-options-config GET
  • Retrieves routing options configuration for a given query parameters.
  • Retrieves all routing options configurations if no query parameter is specified.

Query parameters: configName, nfType, serviceName, messageType, notificationType, senderNFType, method, and apiSpecificResourceUri.

routing-options-config /ocscp/scpc-configuration/{version}/routing-options-config/{configName} GET Retrieves routing options configuration for a given configName.
routing-options-config /ocscp/scpc-configuration/{version}/routing-options-config/{configName} PUT
  • Creates new routing options configuration.
  • Updates routing options configuration if record exists based on provided configName.
  • routingConfigSetName is a foreign key, and its data should be available before creating records with configName value.
  • messageType should be available to map to serviceType.
  • nfServiceName value should be available and exception is '*' value.
  • nfType value should be available and exception is '*' value.
  • Default records (defaultSvcNotificationConfig, defaultSvcRequestConfig) cannot be modified.
routing-options-config /ocscp/scpc-configuration/{version}/routing-options-config/{configName} DELETE Removes routing options configuration for a given configName.

Sample Request Body:

{
    "configName": "mbkmYqfZzxO5E3vEYeUCg_gmCesZ7g85HC9",
    "routingOptionsConfigData": {
        "messageType": [
            "notification-message"
        ],
        "notificationType": [
            "N1_MESSAGES"
        ],
        "nfType": "udm",
        "nfServiceName": "nudm-uecm",
        "method": [
            "*"
        ],
        "apiSpecificResourceUri": "udm-nudm-uecm",
        "senderNFType": "*",
        "routingConfigSetName": "r1",
        "notificationSender": {
        "apiNameAxHeading": "Nudm_UECM",
        "serviceOperation": "Update"
      }
    }
}  

Resource Definition

GET

This resource fetches all the routing-options-config configurations.

Resource URI: /ocscp/scpc-configuration/{version}/routing-options-config

The following table describes the data structures supported by the GET response body on this resource:

Table 2-9 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
routingOptionsConfigDataWrapper M 1..N 200 OK Indicates routing-options-config configurations.

This resource fetches the routing-options-config configuration based on the configName parameter.

Resource URI: /ocscp/scpc-configuration/{version}/routing-options-config/{configName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-10 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configuration information for configName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-11 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
routingOptionsConfigDataWrapper M 1 200 OK Indicates routing-options-config configurations.
ProblemDetails M 1 404 Not Found Indicates problem details.

This resource fetches all the routing-options-config configuration based on queryParams: nfType, serviceName, notificationType, senderNFType, method, apiSpecificResourceUri, configName, and messageType.

Resource URI: /ocscp/scpc-configuration/{version}/routing-options-config?nfType={value}&serviceName={value1}&notificationType={value2}&senderNFType={value3}&method={value4}&apiSpecificResourceUri={value5}&configName={value6}&messageType={value7}

The following table describes the query parameters that can be matched to retrieve matching entries:

Table 2-12 Query Parameters

Name Data Type Mandatory (M) or Optional (O) Description
nfType String O Indicates the nfType to search.

The NF type of the producer NF or server for which routing options are configured.

serviceName String O Indicates the serviceName to search.

The NF service name of producer NF or server for which routing options are configured.

notificationType String O Fetches configurations based on notificationType.
senderNFType String O Fetches configurations based on NF type of the sender.
method String O Fetches configurations on method.
apiSpecificResourceUri String O Fetches configurations on apiSpecificResourceUri.
configName String O Fetches configurations on configName.
messageType String O Fetches configurations on messageType.

The following table describes data structures supported by the GET response body on these resources:

Table 2-13 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
routingOptionsConfigDataWrapper M 1..N 200 OK Indicates routing-options-config configurations.
ProblemDetails M 1 404 Not Found Indicates problem details.
Sample of a Successful GET Response
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/test' \
  -H 'accept: application/json'
{
  "configName": "test",
  "routingOptionsConfigData": {
    "messageType": [
      "notification-message"
    ],
    "notificationType": [
      "*"
    ],
    "nfType": "PCF",
    "nfServiceName": "*",
    "method": [
      "*"
    ],
    "apiSpecificResourceUri": ".*",
    "senderNFType": "*",
    "routingConfigSetName": "notification_req_default_config_set",
    "notificationSender": {
      "apiNameAxHeading": "nudm_uecm",
      "serviceOperation": "update"
    }
  },
  "createdTimestamp": "2025-06-20 06:41:15",
  "updatedTimestamp": "2025-06-20 06:41:15"
}
Sample of an Error GET Response
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/test1' \
  -H 'accept: application/json'
{
  "title": "Not Found",
  "status": 404,
  "detail": "Ocscp Routing Options Config data not found against given configName. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/routing-options-config/test1",
  "cause": "DATA_NOT_FOUND"
}
   
404 Error: Not Found

PUT

This resource configures routing-options-config configuration for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/routing-options-config/{configName}

The following table describes the path parameter supported by this resource:

Table 2-14 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Key for configurations on routingOptionsConfig.

The following table describes the data structures supported by the PUT request body on this resource:

Table 2-15 Request Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Description
routingOptionsConfigDataWrapper M 1 Indicates nftypes-nfservices configurations to be added or modified.

The following table describes data structures supported by the PUT response body on these resources:

Table 2-16 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
routingOptionsConfigDataWrapper M 1 200 OK Successfully updated routing-options-config data.
routingOptionsConfigDataWrapper M 1 201 Created Successfully created routing-options-config data.
ProblemDetails M 1 400 Bad Request Indicates problem details.
ProblemDetails M 1 403 Forbidden Forbidden updating default values.
Sample of a Successful PUT Response
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/test' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "test",
    "routingOptionsConfigData": {
      "messageType": [
        "notification-message"
      ],
      "notificationType": [
        "*"
      ],
      "nfType": "PCF",
      "nfServiceName": "*",
      "method": [
        "*"
      ],
      "apiSpecificResourceUri": ".*",
      "senderNFType": "*",
      "routingConfigSetName": "notification_req_default_config_set",
      "notificationSender": {
        "apiNameAxHeading": "Nudm_UECM",
        "serviceOperation": "Update"
      }
       
    }
  }'
{
  "configName": "test",
  "routingOptionsConfigData": {
    "messageType": [
      "notification-message"
    ],
    "notificationType": [
      "*"
    ],
    "nfType": "PCF",
    "nfServiceName": "*",
    "method": [
      "*"
    ],
    "apiSpecificResourceUri": ".*",
    "senderNFType": "*",
    "routingConfigSetName": "notification_req_default_config_set",
    "notificationSender": {
      "apiNameAxHeading": "nudm_uecm",
      "serviceOperation": "update"
    }
  },
  "createdTimestamp": "2025-06-20 06:41:14",
  "updatedTimestamp": "2025-06-20 06:41:14"
}
Sample of an Error PUT Response
curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/config111' -H 'accept: application/json' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "config111",
    "routingOptionsConfigData": {
        "nfType": "CUSTOM_UDM",
        "nfserviceName": "nudm-uecm",
        "messageType": ["notification-message", "svc-request-message"],
        "routingConfigSetName": "udm_nudm-uecm_routing_config_set",
        "notificationType": ["N1_MESSAGES"],
        "senderNFType": "*",
        "method": ["*"],
        "apiSpecificResourceUri": "imsi-111110000/registrations/amf-3gpp-access"
    },
    "createdTimestamp": "2024-04-24 14:50:56.0",
    "updatedTimestamp": "2024-04-24 14:50:56.0"
}'
{
    "title": "Bad Request",
    "status": 400,
    "detail": "NfType NfService ServiceType/MessageType combination is not configured. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-options-config/config111",
    "cause": "MANDATORY_IE_INCORRECT"
}
 
400 Error: Bad Request

Sample 2 of an Error PUT Response

curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig' -H 'accept: application/json' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "configName": "defaultSvcRequestConfig",
  "routingOptionsConfigData": {
        "nfType": "CUSTOM_UDM",
        "nfserviceName": "nudm-uecm",
        "messageType": ["notification-message", "svc-request-message"],
        "routingConfigSetName": "udm_nudm-uecm_routing_config_set",
        "notificationType": ["N1_MESSAGES"],
        "senderNFType": "*",
        "method": ["*"],
        "apiSpecificResourceUri": "imsi-111110000/registrations/amf-3gpp-access"
    }
}'
{
    "title": "Forbidden",
    "status": 403,
    "detail": "The default configuration cannot be updated. Please refer to the user guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig",
    "cause": "MODIFICATION_NOT_ALLOWED"
}
 
403 Error: Forbidden

DELETE

This resource removes the routing-options-config configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/routing-options-config/{configName}

The following table describes the path parameter supported by this resource:

Table 2-17 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Removes configurations based on configName.

The following table describes the data structures supported by the DELETE response body on this resource:

Table 2-18 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
ProblemDetails M 1 403 Forbidden Removes default data results
ProblemDetails M 1 404 Not Found Indicates the problem details.
NA - 1 204 No Content Successful removal of record.
Sample of a Successful DELETE Response
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/config111' -H 'accept: application/json' \  -H 'accept:
    application/json'
204 No Content

Sample of an Error DELETE Response

curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/config111' -H 'accept: application/json' \
  -H 'accept: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "Ocscp Routing Options Config data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-options-config/config111",
    "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

Sample 2 of an Error DELETE Response

curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig' -H 'accept: application/json' \
  -H 'accept: application/json'
{
    "title": "Forbidden",
    "status": 403,
    "detail": "The default configuration cannot be deleted. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-options-config/defaultSvcRequestConfig",
    "cause": "DATA_CANT_DELETED"
}
  
403 Error: Forbidden

Data Model

The following table describes data model for request or response:

Table 2-19 routingOptionsConfigDataWrapper

Field Name Data Type Mandatory (M) or Optional (O) Description
configName String M Unique configName key to identify the records.

Number of characters is 256. Allowed character combinations should be alpha-numeric, hyphen, and underscore.

routingOptionsConfigData JSON M User defined values for json data, structure is predefined with keys as defined in routingOptionsConfigData.
createdTimestamp String Read Only Timestamp of the created record. This is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Timestamp of the updated record. This is not required in the request, but it is present in the response.

The following table describes parameters of routingOptionsConfigData:

Table 2-20 routingOptionsConfigData Parameters

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
nfType String M NA Allowed character combinations should be alpha-numeric, hyphen, underscore, and *. Indicates the NF type for which routing options are configured. This is either 3GPP defined NFType as per TS 29.510 or custom NFType.

Entry for NFType SCP and SEPP is not allowed. "*" keyword is allowed to indicate any NFType match.

Length: 100

nfServiceName String M NA Allowed character combinations should be alpha-numeric, hyphen, underscore, and *. Indicates the NF service name for which routing options are configured.

This is either 3GPP defined serviceName as per TS29.510 or any custom service name.

If a particular NFType does not have NF service, '*' keyword is used for serviceName.

Length: 100

messageType Array(Enum) M NA ["notification-message", "svc-request-message"] Provides a list of message type, such as notifications and SBI-messages, for which the routing configurations will apply.

messageType is a foreign key mapped to serviceType and the mapping of servcie_type should be available.

routingConfigSetName String M NA Allowed character combinations should be alpha-numeric, hyphen, and underscore. Indicates the name of the Routing Config set record, a rule with this name must be available.
notificationType Array(Enum) O * N1_MESSAGES, N2_INFORMATION, LOCATION_NOTIFICATION, DATA_REMOVAL_NOTIFICATION, DATA_CHANGE_NOTIFICATION, *,

LOCATION_UPDATE_NOTIFICATION, NSSA_REAUTH_NOTIFICATION, NSSA_REVOC_NOTIFICATION,MATCH_INFO_NOTIFICATION, DATA_RESTORATION_NOTIFICATION, TSCTS_NOTIFICATION,LCS_KEY_DELIVERY_NOTIFICATION, UUAA_MM_AUTH_NOTIFICATION

Indicates the notification type.

If messageType has notification messages, notificationType may be configured.

If messageType is only svc-request-message, notificationType must be blank.

If messageType is only notification-message, notificationType is optional, and it can be configured. If not configured, '*' value will be configured.

If messageType is both, notificationType is optional, and it can be configured. If not configured by user, '*' value will be configured.

senderNFType String O * * Configures consumer NFType. It decides routing options based on the sender or consumer NFType that sends the message to SCP for routing.
NFType is obtained from the following headers in order of precedence:
  • XFCC or User-Agent headers
  • 3gpp-sbi-callback

If senderNFType is not provided or null or empty is provided, '*' is configured, which means any value of the parameter is accepted when matched with the header attributes.

Length: 100

method Array(Enum) O Array having the * value *,GET,PUT,POST,PATCH,OPTIONS,TRACE,HEAD,CONNECT,DELETE Indicates the method type. If no value is provided, '*' is configured for method. This indicates that SCP-Worker will match any method type from following list:
  • GET
  • PUT
  • POST
  • PATCH
  • OPTIONS
  • TRACE
  • HEAD
  • CONNECT
  • DELETE

Note: Both method and apiSpecificResourceUri should be configured for service operation specific configurations.

apiSpecificResourceUri String O .* - REGEX expression which is used to validate apiSpecificResourceUri in the RX request.

REGEX should be valid as per Java regex validator.

Sample:

Ingress request URI: /USEast/nudm-uecm/v1/imsi-100000001/registrations/amf-3gpp-access

Not matched regex:

imsi-100000001/registrations/amf-3gpp-access

"/" is considered as part of apiSpecificResourceUri for matching. Hence, the provided regex does not match.

Matched regex:

/imsi-100000001/registrations/amf-3gpp-access

Ingress request URI: /USEast/nausf-auth/v1/ue-authentications

Matched regex: *auth.*

Note: Both method and apiSpecificResourceUri should be configured for service operation specific configurations.

notificationSender json O NA NA Specifies the notification sender details and is used to identify the API that sends the notification.

If this parameter is not configured, it will be considered as a match-all, meaning any value for the parameter will be accepted during matching with the header attributes.

notificationSender.apiNameAxHeading String M NA Allowed values are the configured values of apiNameAxHeading in the NFTypes-NFServices REST API.

Indicates the service type of the consumer NF.

The value of this parameter is the first part of the callback type values in the 3gpp-Sbi-Callback header in a notification message.

For example, when nudm-uecm sends DeregistrationNotification, then callback type value in 3gpp-Sbi-Callback header will have Nudm_UECM_DeregistrationNotification. Where Nudm_UECM is the apiNameAxHeading and DeregistrationNotification is callback service operation.

notificationSender.serviceOperation String O NA Allowed character combinations should be alpha-numeric, hyphen, and underscore. Indicates the service operation type.

The value of this parameter is compared with the second part of the callback type values in the 3gpp-Sbi-Callback header when the NF service sends a notification message.

For example, when nudm-uecm sends DeregistrationNotification, then callback type value in the 3gpp-Sbi-Callback header will have Nudm_UECM_DeregistrationNotification, where DeregistrationNotification is callback service operation.

If this parameter is not configured, only values that match the range regular expression are permitted.

Note:

  • The "*" value for a parameter indicates that any value of the parameter is accepted when matching is done.
  • Duplicate entries are rejected with error response 400, Bad Request.

2.3 Configuring Routing Config Set

This section describes the routing-config-set REST API to define routing options parameters, such as maxRoutingAttempts, responseTimeout, and so on. These parameters are mapped with service operation related parameters in Configuring Routing Options Config. These routing options parameters are applied to a certain message routing when matched with service operation parameters.

Resources

The following table describes the resource name to retrieve, add, update, and remove routing config set configurations based on the query parameters:

Table 2-21 Resources

Resource Name Resource URI HTTP Method Query Parameter Description
routing-config-set

/ocscp/scpc-configuration/<version>/routing-config-set/<routingConfigSetName>

GET None Retrieves routing config set records based on routingConfigSetName.
routing-config-set

/ocscp/scpc-configuration/<version>/routing-config-set/

GET None Retrieves all routing config set records.
routing-config-set

/ocscp/scpc-configuration/<version>/routing-config-set/<routingConfigSetName>

PUT None
  • Create and update the new routing config set.
  • Default routing config set record (notification_req_default_config_set, svc_req_default_config_set) can be updated.
routing-config-set

/ocscp/scpc-configuration/<version>/routing-config-set/<routingConfigSetName>

DELETE None
  • Removes the routing config set record for the given routingConfigSetName.
  • The default routing config set records (notification_req_default_config_set, svc_req_default_config_set) cannot be removed.
  • Deletion can only be processed if ocscp routing options has no reference to the specified routingConfigSetName.
.

Resource Definition

GET

This resource fetches the routing conifig set configurations for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-22 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
routingConfigSetName String O The name of the routing config set used to retrieve the respective configurations.
The following table describes the data structures supported by the GET response body on this resource:

Table 2-23 Data Structures

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
routingConfigSetWrapperV2 M 1 200 OK The routing options with the rule name.
ProblemDetails M 1 404 Not Found Problem details

Example

Sample Successful Response

curl -v -H "Content-Type: application/json" --request GET  http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set
HTTP / 1.1 200 OK

[{
        "routingConfigSetName": "notification_req_default_config_set",
        "routingOptions": {
            "srv": {
                "maxRoutingAttempts": 3,
                "alternateRouting": true
            },
            "pod": {
                "alternateRouting": true,
                "maxRoutingAttempts": 1
            },
            "alternateNFGroupRoutingOptions": {
                "mode": "NF_SET"
            },
            "totalTransactionLifetime": "6s",
            "responseTimeout": "1s",
            "reRouteConditionList": [{
                    "statusCode": "307"
                }, {
                    "statusCode": "308"
                }, {
                    "statusCode": "429"
                }, {
                    "statusCode": "5xx"
                }, {
                    "statusCode": "timeout"
                }, {
                    "statusCode": "connectionError"
                }
            ],
            "exceptionErrorResponses": [{
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }, {
                    "name": "No_Response",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_response"
                }, {
                    "name": "Connect_Failure",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_connect_failure"
                }, {
                    "name": "No_Host",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_host"
                }, {
                    "name": "Insufficient_Time",
                    "action": "Send_Answer",
                    "error_profile": "timeHdrInsufficientTimeErrorProfile"
                }
            ],
            "nextHopSCP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "nextHopSEPP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "307"
                    }, {
                        "statusCode": "308"
                    }, {
                        "statusCode": "429"
                    }, {
                        "statusCode": "5xx"
                    }, {
                        "statusCode": "timeout"
                    }, {
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "No_Host",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_no_host"
                    }, {
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "assignPreferredLocality": false,
            "overridePreferredLocality": false,
            "forwardRevisedPreferredLocality": false
        },
        "createdTimestamp": "2024-10-15 08:07:32",
        "updatedTimestamp": "2024-10-15 08:07:32"
    }, {
        "routingConfigSetName": "svc_req_default_config_set",
        "routingOptions": {
            "srv": {
                "maxRoutingAttempts": 3,
                "alternateRouting": true
            },
            "pod": {
                "alternateRouting": true,
                "maxRoutingAttempts": 1
            },
            "alternateNFGroupRoutingOptions": {
                "mode": "NF_SET"
            },
            "totalTransactionLifetime": "6s",
            "responseTimeout": "1s",
            "reRouteConditionList": [{
                    "statusCode": "307"
                }, {
                    "statusCode": "308"
                }, {
                    "statusCode": "429"
                }, {
                    "statusCode": "5xx"
                }, {
                    "statusCode": "timeout"
                }, {
                    "statusCode": "connectionError"
                }
            ],
            "exceptionErrorResponses": [{
                    "name": "No_Response",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_response"
                }, {
                    "name": "Connect_Failure",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_connect_failure"
                }, {
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }, {
                    "name": "No_Host",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_host"
                }, {
                    "name": "Insufficient_Time",
                    "action": "Send_Answer",
                    "error_profile": "timeHdrInsufficientTimeErrorProfile"
                }
            ],
            "nextHopSCP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "nextHopSEPP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "307"
                    }, {
                        "statusCode": "308"
                    }, {
                        "statusCode": "429"
                    }, {
                        "statusCode": "5xx"
                    }, {
                        "statusCode": "timeout"
                    }, {
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "No_Host",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_no_host"
                    }, {
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "assignPreferredLocality": false,
            "overridePreferredLocality": false,
            "forwardRevisedPreferredLocality": false
        },
        "createdTimestamp": "2024-10-15 08:07:32",
        "updatedTimestamp": "2024-10-15 08:07:32"
    }
]

Sample Failure Response

curl -v -H "Content-Type: application/json" --request GET  http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig
404 Not Found
 
{"title":"Not Found","status":"404","detail":"RoutingConfigSet data not found against given RoutingConfigSetName . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig","cause":"DATA_NOT_FOUND"}

This resource fetches the routing config set configurations for all rules.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config-set

The following table describes the data structures supported by the GET response body on this resource:

Table 2-24 Data Structures

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
routingConfigSetWrapperV2 M 1..N 200 OK The routing options data with the rule name.

Sample Routing Config Set Configurations for GET:

curl - v - H "Content-Type: application/json"--request GET http: //localhost:8081/ocscp/scpc-configuration/v1/routing-config-set
HTTP / 1.1 200 OK

[{
        "routingConfigSetName": "notification_req_default_config_set",
        "routingOptions": {
            "srv": {
                "maxRoutingAttempts": 3,
                "alternateRouting": true
            },
            "pod": {
                "alternateRouting": true,
                "maxRoutingAttempts": 1
            },
            "alternateNFGroupRoutingOptions": {
                "mode": "NF_SET"
            },
            "totalTransactionLifetime": "6s",
            "responseTimeout": "1s",
            "reRouteConditionList": [{
                    "statusCode": "307"
                }, {
                    "statusCode": "308"
                }, {
                    "statusCode": "429"
                }, {
                    "statusCode": "5xx"
                }, {
                    "statusCode": "timeout"
                }, {
                    "statusCode": "connectionError"
                }
            ],
            "exceptionErrorResponses": [{
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }, {
                    "name": "No_Response",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_response"
                }, {
                    "name": "Connect_Failure",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_connect_failure"
                }, {
                    "name": "No_Host",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_host"
                }, {
                    "name": "Insufficient_Time",
                    "action": "Send_Answer",
                    "error_profile": "timeHdrInsufficientTimeErrorProfile"
                }
            ],
            "nextHopSCP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "nextHopSEPP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "307"
                    }, {
                        "statusCode": "308"
                    }, {
                        "statusCode": "429"
                    }, {
                        "statusCode": "5xx"
                    }, {
                        "statusCode": "timeout"
                    }, {
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "No_Host",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_no_host"
                    }, {
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "assignPreferredLocality": false,
            "overridePreferredLocality": false,
            "forwardRevisedPreferredLocality": false
        },
        "createdTimestamp": "2024-10-15 08:07:32",
        "updatedTimestamp": "2024-10-15 08:07:32"
    }, {
        "routingConfigSetName": "svc_req_default_config_set",
        "routingOptions": {
            "srv": {
                "maxRoutingAttempts": 3,
                "alternateRouting": true
            },
            "pod": {
                "alternateRouting": true,
                "maxRoutingAttempts": 1
            },
            "alternateNFGroupRoutingOptions": {
                "mode": "NF_SET"
            },
            "totalTransactionLifetime": "6s",
            "responseTimeout": "1s",
            "reRouteConditionList": [{
                    "statusCode": "307"
                }, {
                    "statusCode": "308"
                }, {
                    "statusCode": "429"
                }, {
                    "statusCode": "5xx"
                }, {
                    "statusCode": "timeout"
                }, {
                    "statusCode": "connectionError"
                }
            ],
            "exceptionErrorResponses": [{
                    "name": "No_Response",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_response"
                }, {
                    "name": "Connect_Failure",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_connect_failure"
                }, {
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }, {
                    "name": "No_Host",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_host"
                }, {
                    "name": "Insufficient_Time",
                    "action": "Send_Answer",
                    "error_profile": "timeHdrInsufficientTimeErrorProfile"
                }
            ],
            "nextHopSCP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "nextHopSEPP": {
                "totalTransactionLifetime": "7s",
                "responseTimeout": "4s",
                "service": {
                    "maxRoutingAttempts": 2
                },
                "serviceEndpoint": {
                    "maxRoutingAttempts": 1
                },
                "reRouteConditionList": [{
                        "statusCode": "307"
                    }, {
                        "statusCode": "308"
                    }, {
                        "statusCode": "429"
                    }, {
                        "statusCode": "5xx"
                    }, {
                        "statusCode": "timeout"
                    }, {
                        "statusCode": "connectionError"
                    }
                ],
                "exceptions": [{
                        "name": "No_Host",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_no_host"
                    }, {
                        "name": "Destination_Exhausted",
                        "action": "Send_Answer",
                        "error_profile": "default_exception_error_destination_exhausted"
                    }
                ]
            },
            "assignPreferredLocality": false,
            "overridePreferredLocality": false,
            "forwardRevisedPreferredLocality": false
        },
        "createdTimestamp": "2024-10-15 08:07:32",
        "updatedTimestamp": "2024-10-15 08:07:32"
    }
]

PUT

This resource creates or updates routing config set records for the specified routingConfigSetName.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}

Table 2-25 URI Query Parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
routingConfigSetName String M The name of the routing config set rule using which the respective routing config set is created or updated.

Table 2-26 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
routingConfigSetWrapperV2 M 1 200 OK This response is generated when an existing record is updated.
routingConfigSetWrapperV2 M 1 201 This response is generated when a new record is created.
ProblemDetails M 1 400 Bad Request Returns problem details.

Sample Success Response of Routing Config Set Configurations for PUT:

curl -v -H "Content-Type: application/json" --request PUT  http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1 -d 
'{"routingConfigSetName": "config1", "routingOptions": {"pod": {"maxRoutingAttempts": 1, "alternateRouting": True}, "alternateNFGroupRoutingOptions": {"mode": "NF_SET"}, "srv": {"maxRoutingAttempts": 3, "alternateRouting": True}, "totalTransactionLifetime": "6s", "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "responseTimeout": "1s", "exceptionErrorResponses": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Response", "action": "Send_Answer", "error_profile": "default_exception_error_no_response"}, {"name": "Connect_Failure", "action": "Send_Answer", "error_profile": "default_exception_error_connect_failure"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Insufficient_Time", "action": "Send_Answer", "error_profile": "timeHdrInsufficientTimeErrorProfile"}], "assignPreferredLocality": False, "overridePreferredLocality": False, "forwardRevisedPreferredLocality": False, "nextHopSEPP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "exceptions": [{"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}]}, "nextHopSCP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}], "reRouteConditionList": [{"statusCode": "connectionError"}]}}}'

 HTTP/1.1 201 Created

{"routingConfigSetName": "config1", "routingOptions": {"srv": {"maxRoutingAttempts": 3, "alternateRouting": True}, "pod": {"alternateRouting": True, "maxRoutingAttempts": 1}, "alternateNFGroupRoutingOptions": {"mode": "NF_SET"}, "totalTransactionLifetime": "6s", "responseTimeout": "1s", "reRouteConditionList": [{"statusCode": "connectionError"}, {"statusCode": "5xx"}, {"statusCode": "307"}, {"statusCode": "429"}, {"statusCode": "308"}, {"statusCode": "timeout"}], "exceptionErrorResponses": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Response", "action": "Send_Answer", "error_profile": "default_exception_error_no_response"}, {"name": "Connect_Failure", "action": "Send_Answer", "error_profile": "default_exception_error_connect_failure"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Insufficient_Time", "action": "Send_Answer", "error_profile": "timeHdrInsufficientTimeErrorProfile"}], "nextHopSCP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "connectionError"}], "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}]}, "nextHopSEPP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "connectionError"}, {"statusCode": "5xx"}, {"statusCode": "307"}, {"statusCode": "429"}, {"statusCode": "308"}, {"statusCode": "timeout"}], "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}]}, "assignPreferredLocality": False, "overridePreferredLocality": False, "forwardRevisedPreferredLocality": False}, "createdTimestamp": "2025-08-24 19:53:30", "updatedTimestamp": "2025-08-24 19:53:30"}

Sample Success Response 2 of Routing Config Set Configurations for PUT:

curl -X 'PUT' \
  'http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '
 "routingConfigSetName": "config1",
    "routingOptions": {
        "srv": {
            "maxRoutingAttempts": 3,
            "alternateRouting": true
        },
        "pod": {
            "alternateRouting": true,
            "maxRoutingAttempts": 1
        },
        "alternateNFGroupRoutingOptions": {
            "mode": "NF_SET"
        },
        "totalTransactionLifetime": "6s",
        "responseTimeout": "1s",
        "reRouteConditionList": [{
                "statusCode": "307"
            }, {
                "statusCode": "308"
            }, {
                "statusCode": "429"
            }, {
                "statusCode": "5xx"
            }, {
                "statusCode": "timeout"
            }, {
                "statusCode": "connectionError"
            }
        ],
        "exceptionErrorResponses": [{
                "name": "Destination_Exhausted",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_destination_exhausted"
            }, {
                "name": "No_Response",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_no_response"
            }, {
                "name": "Connect_Failure",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_connect_failure"
            }, {
                "name": "No_Host",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_no_host"
            }, {
                "name": "Insufficient_Time",
                "action": "Send_Answer",
                "error_profile": "timeHdrInsufficientTimeErrorProfile"
            }
        ],
        "nextHopSCP": {
            "totalTransactionLifetime": "7s",
            "responseTimeout": "4s",
            "service": {
                "maxRoutingAttempts": 2
            },
            "serviceEndpoint": {
                "maxRoutingAttempts": 1
            },
            "reRouteConditionList": [{
                    "statusCode": "connectionError"
                }
            ],
            "exceptions": [{
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }
            ]
        },
        "nextHopSEPP": {
            "totalTransactionLifetime": "7s",
            "responseTimeout": "4s",
            "service": {
                "maxRoutingAttempts": 2
            },
            "serviceEndpoint": {
                "maxRoutingAttempts": 1
            },
            "reRouteConditionList": [{
                    "statusCode": "307"
                }, {
                    "statusCode": "308"
                }, {
                    "statusCode": "429"
                }, {
                    "statusCode": "5xx"
                }, {
                    "statusCode": "timeout"
                }, {
                    "statusCode": "connectionError"
                }
            ],
            "exceptions": [{
                    "name": "No_Host",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_host"
                }, {
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }
            ]
        },
        "assignPreferredLocality": false,
        "overridePreferredLocality": false,
        "forwardRevisedPreferredLocality": false
    }
}'

 HTTP/1.1 201 Created

{
    "routingConfigSetName": "config1",
    "routingOptions": {
        "srv": {
            "maxRoutingAttempts": 3,
            "alternateRouting": true
        },
        "pod": {
            "alternateRouting": true,
            "maxRoutingAttempts": 1
        },
        "alternateNFGroupRoutingOptions": {
            "mode": "NF_SET"
        },
        "totalTransactionLifetime": "6s",
        "responseTimeout": "1s",
        "reRouteConditionList": [{
                "statusCode": "307"
            }, {
                "statusCode": "308"
            }, {
                "statusCode": "429"
            }, {
                "statusCode": "5xx"
            }, {
                "statusCode": "timeout"
            }, {
                "statusCode": "connectionError"
            }
        ],
        "exceptionErrorResponses": [{
                "name": "Destination_Exhausted",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_destination_exhausted"
            }, {
                "name": "No_Response",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_no_response"
            }, {
                "name": "Connect_Failure",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_connect_failure"
            }, {
                "name": "No_Host",
                "action": "Send_Answer",
                "error_profile": "default_exception_error_no_host"
            }, {
                "name": "Insufficient_Time",
                "action": "Send_Answer",
                "error_profile": "timeHdrInsufficientTimeErrorProfile"
            }
        ],
        "nextHopSCP": {
            "totalTransactionLifetime": "7s",
            "responseTimeout": "4s",
            "service": {
                "maxRoutingAttempts": 2
            },
            "serviceEndpoint": {
                "maxRoutingAttempts": 1
            },
            "reRouteConditionList": [{
                    "statusCode": "connectionError"
                }
            ],
            "exceptions": [{
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }
            ]
        },
        "nextHopSEPP": {
            "totalTransactionLifetime": "7s",
            "responseTimeout": "4s",
            "service": {
                "maxRoutingAttempts": 2
            },
            "serviceEndpoint": {
                "maxRoutingAttempts": 1
            },
            "reRouteConditionList": [{
                    "statusCode": "307"
                }, {
                    "statusCode": "308"
                }, {
                    "statusCode": "429"
                }, {
                    "statusCode": "5xx"
                }, {
                    "statusCode": "timeout"
                }, {
                    "statusCode": "connectionError"
                }
            ],
            "exceptions": [{
                    "name": "No_Host",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_no_host"
                }, {
                    "name": "Destination_Exhausted",
                    "action": "Send_Answer",
                    "error_profile": "default_exception_error_destination_exhausted"
                }
            ]
        },
        "assignPreferredLocality": false,
        "overridePreferredLocality": false,
        "forwardRevisedPreferredLocality": false
    },
    "createdTimestamp": "2024-10-15 08:07:32",
    "updatedTimestamp": "2024-10-15 08:07:32"
}


Sample Fail Response of Routing Config Set Configurations for PUT:

curl -v -H "Content-Type: application/json" --request PUT  http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1123 -d
{"routingConfigSetName": "config1", "routingOptions": {"pod": {"maxRoutingAttempts": 1, "alternateRouting": True}, "alternateNFGroupRoutingOptions": {"mode": "NF_SET"}, "srv": {"maxRoutingAttempts": 3, "alternateRouting": True}, "totalTransactionLifetime": "6s", "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "responseTimeout": "1s", "exceptionErrorResponses": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}, {"name": "No_Response", "action": "Send_Answer", "error_profile": "default_exception_error_no_response"}, {"name": "Connect_Failure", "action": "Send_Answer", "error_profile": "default_exception_error_connect_failure"}, {"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Insufficient_Time", "action": "Send_Answer", "error_profile": "timeHdrInsufficientTimeErrorProfile"}], "assignPreferredLocality": False, "overridePreferredLocality": False, "forwardRevisedPreferredLocality": False, "nextHopSEPP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "reRouteConditionList": [{"statusCode": "307"}, {"statusCode": "308"}, {"statusCode": "429"}, {"statusCode": "5xx"}, {"statusCode": "timeout"}, {"statusCode": "connectionError"}], "exceptions": [{"name": "No_Host", "action": "Send_Answer", "error_profile": "default_exception_error_no_host"}, {"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}]}, "nextHopSCP": {"totalTransactionLifetime": "7s", "responseTimeout": "4s", "service": {"maxRoutingAttempts": 2}, "serviceEndpoint": {"maxRoutingAttempts": 1}, "exceptions": [{"name": "Destination_Exhausted", "action": "Send_Answer", "error_profile": "default_exception_error_destination_exhausted"}], "reRouteConditionList": [{"statusCode": "connectionError"}]}}}'

DELETE

This resource removes the routing config set configuration for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config-set/{routingConfigSetName}

Table 2-27 URI Query Parameters Supported by the DELETE Method on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
routingOptionsConfigName String O The name of the routing options configuration which should be removed.

Table 2-28 Data Structures Supported by the Delete Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
NA M 1 204 No Content Successful deletion of routing config set records.
ProblemDetails M 1 403 Forbidden Indicates problem details.
ProblemDetails M 1 404 Not Found Indicates problem details.

Sample Successful Response of Routing Config Set Configurations for DELETE:

curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/defaultConfig
204 No Content

Sample Fail Response of Routing Config Set Configurations for DELETE:

curl -v -H "Content-Type: application/json" -X DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set
403 Forbidden
{"title":"Forbidden","status":403,"detail":"The default configuration cannot be deleted. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/routing-config-set/notification_req_default_config_set","cause":"DATA_CANT_DELETED"}

Sample Fail Response 2 of Routing Config Set Configurations for DELETE:

curl -v -H "Content-Type: application/json" --request DELETE http://localhost:8081/ocscp/scpc-configuration/v1/routing-config-set/config1
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/config1","cause":"DATA_NOT_FOUND"}

Data Model

Request or Response Body (PUT)

The following table describes the field names of the routingConfigSetWrapperV2 data type.

Table 2-29 routingConfigSetWrapperV2

Field Name Data Type Mandatory (M) or Optional(O) Default Values Allowed Values Description
routingConfigSetName String M - - Unique name that identifies the routing config set. This rule name is used in RoutingOptionsConfig as a reference.
routingOptionsroutingConfigSetWrapperV2 JSON M - - This field defines the routing option configurations.
createdTimestamp String Read Only - - Timestamp of the created record. This is not required in the request, but it is present in the response.
updatedTimestamp String Read Only - - Timestamp of the updated record. This is not required in the request, but it is present in the response.

The following table describes the RoutingOptionsV2 parameters:

Table 2-30 Parameters of RoutingOptionsV2

Parameter Name Mandatory (M) or Optional(O) Default Values Value Range Description and Data Type Applicable to NF Service Level Applicable to Pod Level within NF
responseTimeout M 1 second 100-10000 ms Indicates the allotted time to respond to a message request. When the response timeout expires, SCP performs alternate rerouting to the available alternate NF or pod. If no alternate NFs or pods are available, SCP sends an error message.
Notes:
  • The supported values can be in 's' or 'ms'. Where, 's' is seconds and 'ms' is milliseconds.
  • This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms.

Data Type: string

Yes Yes
totalTransactionLifetime M 6 seconds 100 - 240000 ms

Indicates the total time allowed to forward a request, including the initial and all subsequent routing attempts.

Note:
  • The totalTransactionLifetime value should be greater than the value obtained by multiplying responseTimeout by the total maximum number of attempts (pod level + service level).
  • This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms.
The totalTransactionLifetime value should be greater than the value obtained by multiplying responseTimeout by the total maximum number of attempts (pod level + service level).

Data Type: string

Yes Yes
pod M - - See Table 2-37.

Data Type: PodLevelRoutingOptionsV2

- -
service M - - See Table 2-38.

Data Type: ServiceLevelRoutingOptionsV2

- -
reRouteConditionList O - 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx, "timeout", "connectionError".
  • This parameter lists the HTTP status codes that SCP uses to attempt alternative routing. If the upstream server responds with any of these configured response codes, SCP will try rerouting based on the configured alternate routing mechanism.
  • If SCP encounters errors such as "ConnectionError" or "Timeout" while routing to the upstream server, and these errors are configured, SCP will attempt to reroute using the configured alternate routing mechanism.

Example:

"reRouteConditionList":
[
  {
    "statusCode": "5xx"
  },
  {
    "statusCode": "429"
  },
  {
    "statusCode": "307"
  },
  {
    "statusCode": "308"
  },
  { 
    "statusCode": "timeout"
  }, 
  {
    "statusCode": "connectionError"
  }
]

Data Type: array(ProblemData)

No Yes
exceptionErrorResponses O - This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected.

Destination Exhausted Action: The action taken when a request cannot be processed due to an internal resource being exhausted.

Send an answer with the configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Data Type: Array(ExceptionErrorResponse)

Yes No
exceptionErrorResponses O - This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected.

No Producer Response Action: Action taken when the routing of a request is abandoned due to a response timeout.

Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Data Type: Array(ExceptionErrorResponse)

Yes No
exceptionErrorResponses O - This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected.

Connection Failure Action: Action taken when the routing of a request is abandoned when the last egress connection selection fails

Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Data Type: Array(ExceptionErrorResponse)

Yes No
exceptionErrorResponses O - This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected.

Host not found Action: Action taken when the routing of a request is abandoned due to FQDN of the host not being found

Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Data Type: Array(ExceptionErrorResponse)

Yes No
exceptionErrorResponses O - This range is fixed, and you are not allowed to add any additional entries to the list. If you configure lesser than five entries, the missing entries will be automatically added, as shown in the default value column. If you attempt to enter more than five entries, the request will be rejected. Insufficient Processing Time Action: The action taken when an SBI request received from a downstream consumer NF or SCP has already timed out, based on the received timestamp headers.

Send Answer with configured HTTP status code. For more information, see "HTTP Status Code and Applicability for Rerouting" in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Data Type: Array(ExceptionErrorResponse)

Yes No
assignPreferredLocality O false true, false SCP assigns its own locality as a preferred locality for NF discovery if assignPreferredLocality is enabled and the 3gpp-Sbi-Discovery-preferredlocality header is absent in ingress service requests.

Data Type: boolean

Yes NA
overridePreferredLocality O false true, false SCP overrides the 3gpp-Sbi-Discoverypreferred-locality header received in the service request and uses its own locality as preferred-locality for NF discovery if overridePreferredLocality is enabled, and the 3gpp-Sbi-Discoverypreferred-locality header is present in ingress service requests.

Data Type: boolean

Yes NA
forwardRevisedPreferredLocality O false true, false Controls the forwarding of assigned or overridden values of 3gpp-Sbi-Discovery-preferred-locality headers to the next hop SCP.

Data Type: boolean

Yes NA
nextHopSCP M - - See Table 2-32

Data Type: NextHopSCPV2

- -
nextHopSEPP M - - See Table 2-35

Data Type: NextHopSEPPV2

- -
alternateNFGroupRoutingOptions M NF_SET NF_SET DNS_SRV NF_SET_FOLLOWED_BY_DNSSRV STATIC_CONFIG NF_SET_FOLLOWED_BY_STATIC_CONFIG This parameter decides the alternate routing mode, depending on which scp-worker derives the alternate producer NF
  • Different modes are described as follows:
    • NF_SET: SCP performs alternate routing based on the Model C Indirect 5G SBI Communication format. This is the default mode.
    • DNS_SRV: SCP performs alternate routing based on the DNS SRV query.
    • NF_SET_FOLLOWED_BY_DNSSRV: SCP performs alternate routing based on NF Set and then with DNS SRV.
    • STATIC_CONFIG: SCP performs alternate routing based on the static configuration.
    • NF_SET_FOLLOWED_BY_STATIC_CONFIG: SCP performs alternate routing based on NF Set, and then using static configuration.

Data Type: Enum(DNSSRVType)

Yes No

Table 2-31 ExceptionErrorResponse

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
name

Name of the exception.

Data Type: String

M NA NA Yes Yes
action

Indicates the action to be taken when the exception name is received.

Data Type: String

M Send_Answer NA Yes Yes
error_profile

Indicates the name of the error profile referenced in ERROR_PROFILE_CONFIG. If provided, the response will be generated based on the parameters defined in the error profile.

Data Type: String

M NA NA Yes Yes

Table 2-32 NextHopSCPV2

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
service See Table 2-33

Data Type: NextHopSCPServiceV2

M - - Yes Yes
serviceEndpoint See Table 2-33

Data Type: NextHopSCPServiceEndpointV2

M - - Yes Yes
responseTimeout

Indicates the allotted time to respond to a message request. When the response timeout expires, the SCP either reroutes the request to an available alternate NF or pod, or sends an error message.

Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms.

Data Type: String

M NA 100 ms to 50,000 ms (or 1s to 50s) Yes Yes
reRouteConditionList Indicates error conditions that prompt SCP to attempt alternate routing.

If SCP encounters errors such as connectionError while routing to the upstream server, and if these errors are configured, SCP tries rerouting based on the configured alternate routing mechanism.

Example:

"reRouteConditionList":
[
  {
    "statusCode": "connectionError"
  }
]

Data Type: String

O - "connectionError" No Yes
totalTransactionLifetime

Indicates that the time consumed in processing all retries should not exceed the total transaction lifetime. This refers to the total time allowed to forward a request, which includes the initial request and all subsequent routing attempts.

Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms.

Data Type: String

M NA 100 ms to 240,000 ms (or 1s to 240s) Yes Yes
exceptions

Destination Exhausted Action: The action taken when a request cannot be processed due to an internal resource being exhausted.

O 504

Only one entry is allowed.

  • If you do not provide an entry, the default entry will be added.
  • If more than one entry is provided, it will be rejected.
Yes -

Table 2-33 NextHopSCPServiceV2

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
maxRoutingAttempts

Indicates the number of reroute attempts (retries) at the service level.

This is the maximum number of times the SCP is allowed to forward a request message.

  • If the Max Routing Attempts value is set to 1, the Total Transaction Lifetime field value is not required.
  • If the Max Routing Attempts value is greater than 1, the Total Transaction Lifetime value is considered during the rerouting process.

Data Type: Integer

M NA 1-5 Yes Yes

Table 2-34 NextHopSCPServiceEndpointV2

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
maxRoutingAttempts

Indicates the number of re-route attempts (retries) at the NF/Pod level.

This is the maximum number of times the SCP is allowed to forward a request message at the NF/Pod level.

  • If the Max Routing Attempts value is set to 1 for both the Service and Pod level, the Total Transaction Lifetime field value is not needed.
  • If the Max Routing Attempts value (including both Service and Pod levels) is greater than 1, the Total Transaction Lifetime value will be considered during the rerouting process.

Data Type: Integer

M NA 1-5 Yes Yes

Table 2-35 NextHopSEPPV2

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
responseTimeout

Indicates the allotted time to respond to a message request. When the response timeout expires, the SCP either reroutes the request to an available alternate NF or pod, or sends an error message.

Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms.

Data Type: String

M NA 100 ms to 50,000 ms (or 1s to 50s) Yes Yes
totalTransactionLifetime

Indicates that the time consumed in processing all retries should not exceed the total transaction lifetime. This is the total time allowed to forward a request, including the initial request and all subsequent routing attempts.

Note: This parameter must be an integer, not a decimal. If the value is provided as a decimal, convert it to an integer unit. For example, 0.1 s becomes 100 ms.

Data Type: String

M NA 100ms to 240,000ms (or 1s to 240s) Yes Yes
reRouteConditionList Indicates the HTTP response codes for which SCP will attempt alternate routing. If the upstream server responds with any of these configured response codes, SCP will reroute the request based on the configured alternate routing mechanism.

If SCP encounters other errors such as connectionError or timeout while routing to the upstream server, and if these errors are configured, SCP tries rerouting based on the configured alternate routing mechanism.

Example:

"reRouteConditionList":
[
  {
    "statusCode": "5xx"
  },
  {
    "statusCode": "429"
  },
  {
    "statusCode": "307"
  },
  {
    "statusCode": "308 

Data Type: Array(ProblemData)

O - 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx,"connectionError","timeout" No Yes
exceptions

Destination Exhausted Action: The action taken when a request cannot be processed due to an internal resource being exhausted.

Data Type: Array(ExceptionErrorResponse)

O 504

This range is fixed, and you are not allowed to add any further entries to this list.

  • If you configure fewer than two entries, the missing entry will be added automatically, as shown in the default value column.
  • If you attempt to enter more than two entries, the request will be rejected.
Yes No
exceptions

Host Not Found Action: The action taken when the routing of a request is abandoned due to the FQDN of the host not being found.

O 400

This range is fixed, and you are not allowed to add any further entries to this list.

  • If you configure fewer than two entries, the missing entry will be added automatically, as shown in the default value column.
  • If you attempt to enter more than two entries, the request will be rejected.
Yes No

Table 2-36 ProblemData

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
statusCode

Indicates the HTTP response codes for which SCP will attempt alternate routing. If the upstream server responds with any of these configured response codes, SCP will attempt to reroute the request based on the configured alternate routing mechanism.

SCP will also attempt to reroute the request in the event of a response timeout, connection failure, refused stream, or when a GOAWAY frame is received on any connection. These events are not configurable and are supported by SCP by default.

Example:

"reRouteConditionList":
[
  {
    "statusCode": "5xx"
  },
  {
    "statusCode": "429"
  },
  {
    "statusCode": "307"
  },
  {
    "statusCode": "308"
  }
]

Data Type: String

O - 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx Yes Yes

Table 2-37 PodLevelRoutingOptionsV2

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
maxRoutingAttempts

Indicates the number of re-route attempts (retries) at the NF/Pod level.

This is the maximum number of times the SCP is allowed to forward a request message at the NF/Pod level.

  • If the Max Routing Attempts value is set to 1 for both the Service and Pod level, the Total Transaction Lifetime field value is not needed.
  • If the Max Routing Attempts value (including both Service and Pod levels) is greater than 1, the Total Transaction Lifetime value will be considered during the rerouting process.

Data Type: Integer

M NA 1-5 Yes Yes
alternateRouting This parameter determines whether SCP will attempt alternate routing.

Data Type: Boolean

M true true or false - -

Table 2-38 ServiceLevelRoutingOptionsV2

Parameter Name Description and Data Type Mandatory (M)/Optional (O) Default Value Value Range Applicable to NF Service Level Applicable to Pod Level within NF
maxRoutingAttempts

Indicates the number of re-route attempts (retries) at the NF/Pod level.

This is the maximum number of times the SCP is allowed to forward a request message at the NF/Pod level.

  • If the Max Routing Attempts value is set to 1 for both the Service and Pod level, the Total Transaction Lifetime field value is not needed.
  • If the Max Routing Attempts value (including both Service and Pod levels) is greater than 1, the Total Transaction Lifetime value will be considered during the rerouting process.

Data Type: Integer

M NA 1-5 Yes Yes
alternateRouting This parameter determines whether SCP will attempt alternate routing based on the configured alternate NF selection mechanism.

Data Type: Boolean

M true true or false - -

2.4 Configuring NF Service Feature Config

This section describes the nfservice-config REST API to configure NF Service Feature Config for NFType and serviceName combinations. Each entry points to an NF Service Feature Config Set name, which is configured using the nfservice-config-set REST API.

Resources

The following table describes the resource name to retrieve, add, or remove nfservice-config configuration data:

Table 2-39 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
nfservice-config /ocscp/scpc-configuration/{version}/nfservice-config GET Retrieves nfServiceConfig for given query parameters if the record exists.

Retrieves all nfServiceConfig records if query parameter is not provided.

Query parameters: nfType, serviceName, and configName.

nfservice-config /ocscp/scpc-configuration/{version}/nfservice-config/{configName} GET Retrieves nfServiceConfig for a given configName if the record exists.
nfservice-config /ocscp/scpc-configuration/{version}/nfservice-config/{configName} PUT Creates mapping of NF type and NF service to nfServiceConfigSetName.

Mapping to nfServiceConfigSetName is possible only if that record is available.

Ensure that provided nfType and serviceName records are available.

Update nfServiceConfig if record exists:

  • nfType and nfService can be updated, but its mapping should be available.
  • configName cannot be updated.
  • The serviceName '*' value is accepted to indicate any match.
  • The nfType '*' value is accepted to indicate any match.
  • The default record name cannot be updated.
nfservice-config /ocscp/scpc-configuration/{version}/nfservice-config/{configName} DELETE

Removes NF Services configurations for the given configName.

The default record (defaultNfServiceConfig) cannot be removed.

Resource Definition

GET

This resource fetches all the nfServiceConfig configurations.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config

The following table describes the data structures supported by the GET response body on this resource:

Table 2-40 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigWrapper M 1..N 200 OK Indicates successful retrieval of all nfServiceConfigWrapper objects.

This resource fetches the nfServiceConfig configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config/{configName}

The following table describes the path parameter supported by this resource:

Table 2-41 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configuration information for configName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-42 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigWrapper M 1 200 OK Indicates successful retrieval of all nfServiceConfigWrapper objects.
ProblemDetails M 1 404 Not Found Indicates problem details.

Sample of a Successful GET Response

curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config1' -H 'accept: application/json'
{
   "configName": "config1",
   "nfServiceConfig": {
          "nfType": "UDM",
          "nfServiceName": "nudm-uecm",
          "nfServiceConfigSetName": "udm_nudm_uecm_config1"
    }
   "createdTimestamp": "2024-04-24 14:50:56.0",
   "updatedTimestamp": "2024-04-24 14:50:56.0"
}  

Sample of an Error GET Response

curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config2' -H 'accept: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "NF Service Configuration data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config/c2342v",
    "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

PUT

This resource configures nfservice-config for given data.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config/{configName}

The following table describes the path parameter supported by this resource:

Table 2-43 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Key for PUT operation.

The following table describes the data structures supported by the PUT request body on this resource:

Table 2-44 Request Body Parameter

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigWrapper M 1 200 OK Indicates nfServiceConfigWrapper configurations to be added or modified.

The following table describes data structures supported by the PUT response body on these resources:

Table 2-45 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigWrapper M 1 200 OK Indicates successful update of nfServiceConfig configurations.
nfServiceConfigWrapper M 1 201 Created Indicates successful creation of nfServiceConfig configurations.
ProblemDetails M 1 400 Bad Request Indicates problem details.
ProblemDetails M 1 403 Forbidden Updates the default data results.
Sample of a Successful PUT Response
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
   "configName": "config1",
   "nfServiceConfig": {
          "nfType": "UDM",
          "nfServiceName": "nudm-uecm",
          "nfServiceConfigSetName": "udm_nudm_uecm_config1"
    }
}' 
 
{
   "configName": "config1",
   "nfServiceConfig": {
          "nfType": "UDM",
          "nfServiceName": "nudm-uecm",
          "nfServiceConfigSetName": "udm_nudm_uecm_config1"
    },
   "createdTimestamp": "2024-04-24 14:50:56.0",
   "updatedTimestamp": "2024-04-24 14:50:56.0"
}
Sample of an Error PUT Response
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config2' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
   "configName": "config2",
   "nfServiceConfig": {
          "nfType": "UDM",
          "nfServiceName": "nudm-uecm",
          "nfServiceConfigSetName": "udm_nudm_uecm_config2"
    }
}'  
{
    "title": "Bad Request",
    "status": 400,
    "detail": "NfServiceConfig should have unique combination of nfType and nfServiceName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config/c4",
    "cause": "MANDATORY_IE_INCORRECT"
}
  
400 Error: Bad Request

Sample 2 of an Error PUT Response

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/defaultNfServiceConfig' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '  {
    "configName": "defaultNfServiceConfig",
    "nfServiceConfig": {
      "nfType": "UDM",
      "nfServiceName": "*",
      "nfServiceConfigSetName": "defaultNfServiceConfigSet"
    }
  }
'
{
    "title": "Forbidden",
    "status": 403,
    "detail": "The default configuration cannot be updated. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config/defaultNfServiceConfig",
    "cause": "MODIFICATION_NOT_ALLOWED"
}
  
403 Error: Forbidden

DELETE

This resource removes all the nfservice-config configurations based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config/{configName}

The following table describes the path parameter supported by this resource:

Table 2-46 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Removes configurations based on combination of configName.

The following table describes the data structures supported by the DELETE response body on this resource:

Table 2-47 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
n/a M 1 204 No Content Removes the configuration of combination of nfType and nfServiceName.
ProblemDetails M 1 404 Not Found Indicates the problem details.
ProblemDetails M 1 403 Forbidden Removes the default data results.
Sample of a Successful DELETE Response
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json
204 No Content

Sample of an Error DELETE Response

curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config/config5' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "NF Service Configuration data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config/config5",
    "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

Data Model

The following table describes data model for request or response:

Table 2-48 nfServiceConfigWrapper

Field Name Data Type Mandatory (M) or Optional (O) Description
configName String M Unique configName key to identify record.

Number of characters is 256. Allowed character combinations should be alpha-numeric, hyphen, and underscore.

nfServiceConfig JSON M Provides configuration values of nfType, nfServiceName, and nfServiceConfigSetName.
createdTimestamp String Read Only Timestamp of the created record. This is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Timestamp of the updated record. This is not required in the request, but it is present in the response.

The following table describes parameters of nfServiceConfig:

Table 2-49 nfServiceConfig Parameters

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
nfType String M NA Allowed character combinations should be alpha- numeric, hyphen, underscore, and *. The NF type for which routing options are configured. This is either 3GPP defined NFType as per TS 29.510 or custom NFType.

The '*' value is accepted to indicate any match.

Length: 100

serviceName String M NA Allowed character combinations should be alpha- numeric, hyphen, underscore, and *. The NF service name for which routing options are configured.

This is either 3GPP defined serviceName as per TS29.510 or any custom service name.

If a particular NFType does not have NF Service, the '*' keyword should be provided for serviceName.

The '*' value is accepted to indicate any match.

Length: 100

nfServiceConfigSetName String M NA Allowed character combinations should be alpha- numeric, hyphen, underscore, and blank. Indicates configName records that are available.

Sample configuration of nfServiceConfig parameters:

{
    configName: "config1",
    nfServiceConfig{
        "nfType": "UDM",
        "nfServiceName": "nudm-uecm",
        "nfServiceConfigSetName": "udm_nudm_uecm_config1"
    }
}

2.5 Configuring NF Service Feature Config Set

This section describes the nfservice-config-set REST API parameters to configure service level features in configName. This configuration is mapped with an NFType and serviceName combination using the nfservice-config REST API as described in Configuring NF Service Feature Config.

Resources

The following table describes the resource name to retrieve, add, update, and remove nfservice config set configurations based on the query parameters:

Table 2-50 Resources

Resource Name Resource URI HTTP Method Description
nfservice-config-set /ocscp/scpc-configuration/{version}/nfservice-config-set GET Retrieves all stored NF services configuration records.
nfservice-config-set /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName} GET Get NF services configuration for given configName.
nfservice-config-set /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName} PUT Create new NF service config set.

Update nfServiceConfigSetData if the record exists. configName cannot be updated.

The default record (defaultNfServiceConfigSet) can be updated.

New record cannot be created if rule mentioned in cbRuleName, odRuleName, ociRuleName, canaryReleaseConfigName, nfServiceLoadBasedCongestionControlCfg are not present in the respective tables.

nfservice-config-set /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName} DELETE Removes NF service configuration data for the given configName.

Removal of information can proceed when no references of configName is present in the OCSCP_NF_SERVICE_CONFIG table.

Resource Definition

GET

This resource fetches all the nfservice-config-set configuration.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config-set

The following table describes the data structures supported by the GET response body on this resource:

Table 2-51 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigSetWrapper M 1..N 200 OK Indicates nfServiceConfigSet configuration.

This resource fetches the nfservice-config-set configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName}

The following table describes the path parameter supported by this resource:

Table 2-52 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configuration information for configName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-53 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigWrapper M 1 200 OK Indicates nfServiceConfigSet configurations.
ProblemDetails M 1 404 Not Found Indicates problem details.

Sample of a Successful GET Response

curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config1' \
  -H 'accept: application/json'
{
    "configName": "udm_nudm_uecm_config1",
    "nfServiceConfigSetData": {
      "defaultPriority": 1,
      "defaultCapacity": 65535,
      "altRoutingDnsSrvModeSupported": false,
      "loadBasedCongestionControlEnabled": true,
      "nfServiceLoadBasedCongestionControlCfg": "defaultRule",
      "cbEnabled": false,
      "cbRuleName": "defaultRule",
      "odEnabled": false,
      "odRuleName": "defaultRule",
      "ociEnabled": false,
      "ociRuleName": "defaultOciConfigRule",
      "canaryReleaseEnabled": false,
      "canaryReleaseConfigName": "default",
      "nextHopSCP": {
        "loadBasedCongestionControlEnabled": true,
        "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
      },
      "nextHopSEPP": {
        "loadBasedCongestionControlEnabled": true,
        "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
      }
    },
 
    "createdTimestamp": "2024-05-02 02:26:30.0",
    "updatedTimestamp": "2024-05-02 02:26:30.0"
  }
Sample of a Fail GET Response
curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108' \
  -H 'accept: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "NF Service Config Set Data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108",
    "cause": "DATA_NOT_FOUND"
}
   
404 Error: Not Found

PUT

This resource configures nfservice-config-set configuration for given data.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName}

The following table describes the path parameter supported by this resource:

Table 2-54 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Unique identifier of the records.

The following table describes the data structures supported by the PUT request body on this resource:

Table 2-55 Request Body Parameter

Data Type Mandatory (M) or Optional (O) Cardinality Description
nfServiceConfigWrapper M 1 Indicates nfServiceConfigWrapper configurations to be added or modified.

The following table describes data structures supported by the PUT response body on these resources:

Table 2-56 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
nfServiceConfigWrapper M 1 200 OK Indicates successful update or replacement of nfServiceConfigSet configurations for configName.
nfServiceConfigSetWrapper M 1 201 Created Indicates creation of nfServiceConfigSet configurations for configName.
ProblemDetails M 1 400 Bad Request Indicates problem details.
Sample of a Successful PUT Response
curl -X 'PUT' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "udm_nudm_uecm_config1",
    "nfServiceConfigSetData": {
        "defaultPriority": 1,
        "defaultCapacity": 65535,
        "altRoutingDnsSrvModeSupported": false,
        "loadBasedCongestionControlEnabled": true,
        "nfServiceLoadBasedCongestionControlCfg": "r1",
        "cbEnabled": false,
        "cbRuleName": "defaultRule",
        "odEnabled": false,
        "odRuleName": "defaultRule",
        "ociEnabled": false,
        "ociRuleName": "defaultOciConfigRule",
        "canaryReleaseEnabled": false,
        "canaryReleaseConfigName": "default",
        "nextHopSCP": {
          "loadBasedCongestionControlEnabled": true,
          "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
        },
        "nextHopSEPP": {
          "loadBasedCongestionControlEnabled": true,
          "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
        }
    }
}'  
{
    "configName": "udm_nudm_uecm_config1",
    "nfServiceConfigSetData": {
        "defaultPriority": 1,
        "defaultCapacity": 65535,
        "altRoutingDnsSrvModeSupported": false,
        "loadBasedCongestionControlEnabled": true,
        "nfServiceLoadBasedCongestionControlCfg": "r1",
        "cbEnabled": false,
        "cbRuleName": "defaultRule",
        "odEnabled": false,
        "odRuleName": "defaultRule",
        "ociEnabled": false,
        "ociRuleName": "defaultOciConfigRule",
        "canaryReleaseEnabled": false,
        "canaryReleaseConfigName": "default",
        "nextHopSCP": {
          "loadBasedCongestionControlEnabled": true,
          "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
        },
        "nextHopSEPP": {
          "loadBasedCongestionControlEnabled": true,
          "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
        }
    },
    "createdTimestamp": "2024-04-24 14:50:56.0",
    "updatedTimestamp": "2024-04-24 14:50:56.0"
}
Sample of an Error PUT Response
curl -X 'PUT' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "udm_nudm_uecm_config1",
    "nfServiceConfigSetData": {
        "defaultPriority": 1,
        "defaultCapacity": 70000,
        "altRoutingDnsSrvModeSupported": false,
        "loadBasedCongestionControlEnabled": true,
        "nfServiceLoadBasedCongestionControlCfg": "r1",
        "cbEnabled": false,
        "cbRuleName": "defaultRule",
        "odEnabled": false,
        "odRuleName": "defaultRule",
        "ociEnabled": false,
        "ociRuleName": "defaultOciConfigRule",
        "canaryReleaseEnabled": false,
        "canaryReleaseConfigName": "default",
        "nextHopSCP": {
          "loadBasedCongestionControlEnabled": true,
          "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopScp"
        },
        "nextHopSEPP": {
          "loadBasedCongestionControlEnabled": true,
          "nfServiceLoadBasedCongestionControlCfg": "defaultRuleForNextHopSepp"
        } 
    }
}'   
{
"title": "Bad Request",
"status": 400,
"detail": "Field defaultCapacity cannot be more than '65535'",
"instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config",
"cause": "INVALID_DATA"
}
 
400 Error: Bad Request

DELETE

This resource removes all the nfservice-config-set configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/nfservice-config-set/{configName}

The following table describes the path parameter supported by this resource:

Table 2-57 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Removes configurations based on combination of configName.

The following table describes the data structures supported by the DELETE response body on this resource:

Table 2-58 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
n/a M 1 204 No Content Removes the configuration of combination of nfType and nfServiceName.
ProblemDetails M 1 404 Not Found Indicates the problem details.
ProblemDetails M 1 403 Forbidden Indicates the error when trying to remove a record with a reference in the foreign table (OCSCP_NF_SERVICE_CONFIG) or the default record removal.
Sample of a Successful DELETE Response
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
204 No Content
Sample of an Error DELETE Response
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "NF Service Config Set Data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/udm_nudm_uecm_config108",
    "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

Sample 2 of an Error DELETE Response

curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfservice-config-set/c1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
{
    "title": "Forbidden",
    "status": 403,
    "detail": "The given configName is referred by 'NF Service Config' hence cannot be deleted. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nfservice-config-set/c1",
    "cause": "DATA_CANT_DELETED"
}
  
403 Error: Forbidden

Data Model

The following table describes data model for request or response:

Table 2-59 nfServiceConfigSetWrapper

Field Name Data Type Mandatory (M) or Optional (O) Description
configName String M Unique configName to identify the records of nfServiceConfigSet.

Allowed character combinations should be alpha-numeric, hyphen, and underscore.

nfServiceConfigSetData JSON M Indicates JSON structure to hold different NFService specific configurations.
createdTimestamp String Read Only Timestamp of the created record. This is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Timestamp of the updated record. This is not required in the request, but it is present in the response.

The following table describes parameters of nfServiceConfigSetData:

Table 2-60 nfServiceConfigSetData

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
defaultPriority integer M NA 0-65535 Priority (relative to other NF Services of the same type) in the range of 0-65535, to be used for NF Service selection. The lower values indicate a higher priority. If priority is present in either NF profile or nfServiceList parameters, those will have precedence over this value.

This default priority value shall be used for NF service instance selection only if priority is not published by producer NFs while registering with NRF in NF profile (including both NF profile and nfServiceList parameters).

defaultCapacity integer M NA 0-65535 Capacity information in the range of 0-65535, expressed as a weight relative to other NF service instances of the same type. If capacity is also present in either NF profile or nfServiceList parameters, those will have precedence over this value.

This default capacity value shall be used for NF service instance selection only if capacity is not published by producer NFs while registering with NRF in NF profile (including both NF profile and nfServiceList parameters).

altRoutingDnsSrvModeSupported boolean M false true or false Indicates whether alternate routing is supported using DNS SRV.
loadBasedCongestionControlEnabled boolean M true true or false Enables or disables congestion control for the associated service.
nfServiceLoadBasedCongestionControlCfg String O NA - Name of the rule holding the configuration of congestion control. Based on the configuration under this rule, congestion control will be applied.
cbEnabled boolean M false true or false Enables or disables circuit breaking for the associated service.
cbRuleName String O NA -

Name of the rule holding the configuration of circuit breaking. Based on the configuration under this rule, circuit breaking is activated.

odEnabled boolean M false true or false Enables or disables the Outlier Detection feature.
odRuleName String O NA - Name of the rule holding the configuration of Outlier Detection. Based on the configuration under this rule, the Outlier Detection is activated.
ociEnabled boolean M false true or false Enables or disables OCI for the associated service.

Note: Ensure that the Overload Control Information (OCI) feature is enabled through the scp-features REST API as follows:

""featureName"": ""oci"",
""enabled"": true,
ociRuleName String O NA -

Name of the rule holding the configuration of OCI. Based on the configuration under this rule, OCI is activated.

canaryReleaseEnabled boolean M false true or false Enables or disables canary traffic for the associated service.
canaryReleaseConfigName String O NA - Name of the rule holding the configuration of canary traffic. Based on the configuration under this rule, canary traffic routing is activated.
nextHopSCP Json M NA - Service specific configuration to apply when routing to the next hop SCP.
nextHopSEPP Json M NA - Service specific configuration to apply when routing to the next hop SEPP.

Table 2-61 nextHopSCP

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
loadBasedCongestionControlEnabled boolean M true true or false Enables or disables congestion control for the associated service for the next hop SCP.
nfServiceLoadBasedCongestionControlCfg String O NA - Name of rule holding the configuration of congestion control. Based on configuration under this Rule, congestion control will be applied for next hop SCP.

Table 2-62 nextHopSEPP

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
loadBasedCongestionControlEnabled boolean M true true or false Enables or disables congestion control for the associated service for the next hop SEPP.
nfServiceLoadBasedCongestionControlCfg String O NA - Name of the rule holding the configuration of congestion control. Based on the configuration under this rule, congestion control is applied for the next hop SEPP.

2.6 Configuring NFTypes-NFServices

This section describes the NFTypes-NFServices REST API parameters configuration to add new 3GPP defined NFs, custom NF types, and custom NF services in SCP.

Note:

  • You must configure NFType and NFService parameters before configuring routing related parameters and feature level parameters.
  • apiName, NFType, and NFService values are not case-sensitive irrespective of the scenarios they are configured.
  • SCP stores NFType value in uppercase, NFService and apiName values in lowercase, irrespective of the scenarios they are configured.
  • apiName received in RX request is always case-insensitive.
  • You must configure NFType, ServiceName, and ApiName as a valid combination of alphanumeric characters, hyphen, and underscore.
  • The keyword "default" is not allowed for ServiceName.
  • You must check APINameAxHeading validation for details on validation supported on the apiNameAxHeading field.

Resources

The following table describes the resource name to retrieve, add, or update nftypes-nfservices configuration data:

Table 2-63 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description

nftypes-nfservices

/ocscp/scpc-configuration/{version}/nftypes-nfservices GET
  • Retrieves NF types and NF services configurations for given query parameters.
  • Retrieves all NF types and NF services configurations if no query parameter is used.

Query parameters are: nfType, serviceName, configName, apiName, nfRole, and apiNameAxHeading.

nftypes-nfservices /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName} GET Retrieves NF type and NF service configuration for a given configName.
nftypes-nfservices /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName} PUT
  • Creates new NF type and NF service configurations. Ensure that NF type and NF serviceName combination is unique.
  • Updates to NF type or NF service fields of an existing configuration are not allowed.
nftypes-nfservices /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName} DELETE
  • Removes NF type and NF service configurations for a given configName.
  • Removal of parameters can only be proceeded if no other table has a reference to NF_TYPE and SERVICE_NAME combination.
  • Configuration containing nfType as SCP cannot be removed.

Resource Definition

GET

This resource fetches the nftypes-nfservices configuration based on the query parameters.

Resource URI: /ocscp/scpc-configuration/{version}/nftypes-nfservices

The following table describes the data structures supported by the GET response body on this resource:

Table 2-64 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfServiceWrapper M 1..N 200 OK Indicates nftypes-nfservices configurations.

This resource fetches the nftypes-nfservices configuration based on the configName parameter.

Resource URI: /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}

The following table describes the path parameter supported by this resource:

Table 2-65 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configuration information for configName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-66 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfServiceWrapper M 1 200 OK Indicates nftypes-nfservices configurations.
ProblemDetails M 1 404 Not Found Indicates problem details.

This resource fetches all the nftypes-nfservices configurations based on configName, nfType, and serviceName, apiname, and apinameaxheading query parameters.

Resource URI: /ocscp/scpc-configuration/{version}/nftypes-nfservices?configName={value}&nfType={value2}&serviceName={value3}

The following table describes the query parameters:

Table 2-67 Query Parameters

Name Data Type Mandatory (M) or Optional (O) Description
configName String O
  • Provide any number of query parameters (maximum five).
  • The request fetches configuration that matches five query parameters.
nfType String O
serviceName String O
apiName String O
nfRole String O
apiNameAxHeading String O

The following table describes data structures supported by the GET response body on these resources:

Table 2-68 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfServiceWrapper M 1 200 OK Indicates nftypes-nfservices configurations.
ProblemDetails M 1 404 Not Found Indicates problem details.
Sample of a Successful GET Response
curl -X 'GET' \
  'http://<localhost>:32516/ocscp/scpc-configuration/v1/nftypes-nfservices?nfType=&serviceName=&configName=&apiName=&nfRole=&apiNameAxHeading=' \
  -H 'accept: application/json'

[
  {
    "configName": "5g_eir_n5g-eir-eic",
    "nfServiceData": {
      "nfType": "5G_EIR",
      "serviceName": "n5g-eir-eic",
      "apiName": "n5g-eir-eic",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "n5g-eir_equipmentidentitycheck",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "af",
    "nfServiceData": {
      "nfType": "AF",
      "serviceName": "noservice",
      "apiName": "",
      "serviceType": [
        "notification-message-service"
      ],
      "apiNameAxHeading": "",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "amf_namf-comm",
    "nfServiceData": {
      "nfType": "AMF",
      "serviceName": "namf-comm",
      "apiName": "namf-comm",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "namf_communication",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "amf_namf-evts",
    "nfServiceData": {
      "nfType": "AMF",
      "serviceName": "namf-evts",
      "apiName": "namf-evts",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "namf_eventexposure",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "amf_namf-loc",
    "nfServiceData": {
      "nfType": "AMF",
      "serviceName": "namf-loc",
      "apiName": "namf-loc",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "namf_location",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "amf_namf-mt",
    "nfServiceData": {
      "nfType": "AMF",
      "serviceName": "namf-mt",
      "apiName": "namf-mt",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "namf_mt",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "ausf_nausf-auth",
    "nfServiceData": {
      "nfType": "AUSF",
      "serviceName": "nausf-auth",
      "apiName": "nausf-auth",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nausf_ueauthentication",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "ausf_nausf-sorprotection",
    "nfServiceData": {
      "nfType": "AUSF",
      "serviceName": "nausf-sorprotection",
      "apiName": "nausf-sorprotection",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nausf_sorprotection",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "ausf_nausf-upuprotection",
    "nfServiceData": {
      "nfType": "AUSF",
      "serviceName": "nausf-upuprotection",
      "apiName": "nausf-upuprotection",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nausf_upuprotection",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "bsf_nbsf-management",
    "nfServiceData": {
      "nfType": "BSF",
      "serviceName": "nbsf-management",
      "apiName": "nbsf-management",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nbsf_management",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "chf_nchf-convergedcharging",
    "nfServiceData": {
      "nfType": "CHF",
      "serviceName": "nchf-convergedcharging",
      "apiName": "nchf-convergedcharging",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nchf_convergedcharging",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "chf_nchf-spendinglimitcontrol",
    "nfServiceData": {
      "nfType": "CHF",
      "serviceName": "nchf-spendinglimitcontrol",
      "apiName": "nchf-spendinglimitcontrol",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nchf_spendinglimitcontrol",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "gmlc_ngmlc-loc",
    "nfServiceData": {
      "nfType": "GMLC",
      "serviceName": "ngmlc-loc",
      "apiName": "ngmlc-loc",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "ngmlc_location",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "lmf_nlmf-loc",
    "nfServiceData": {
      "nfType": "LMF",
      "serviceName": "nlmf-loc",
      "apiName": "nlmf-loc",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nlmf_location",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "n3iwf",
    "nfServiceData": {
      "nfType": "N3IWF",
      "serviceName": "noservice",
      "apiName": "",
      "serviceType": [
        "notification-message-service"
      ],
      "apiNameAxHeading": "",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "nef_3gpp-as-session-with-qos",
    "nfServiceData": {
      "nfType": "NEF",
      "serviceName": "3gpp-as-session-with-qos",
      "apiName": "3gpp-as-session-with-qos",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "assessionwithqos",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "nef_3gpp-traffic-influence",
    "nfServiceData": {
      "nfType": "NEF",
      "serviceName": "3gpp-traffic-influence",
      "apiName": "3gpp-traffic-influence",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "trafficinfluence",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "nef_nnef-eventexposure",
    "nfServiceData": {
      "nfType": "NEF",
      "serviceName": "nnef-eventexposure",
      "apiName": "nnef-eventexposure",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnef_eventexposure",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "nef_nnef-pfdmanagement",
    "nfServiceData": {
      "nfType": "NEF",
      "serviceName": "nnef-pfdmanagement",
      "apiName": "nnef-pfdmanagement",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnef_pfdmanagement",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "nrf_nnrf-disc",
    "nfServiceData": {
      "nfType": "NRF",
      "serviceName": "nnrf-disc",
      "apiName": "nnrf-disc",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnrf_nfdiscovery",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "nrf_nnrf-nfm",
    "nfServiceData": {
      "nfType": "NRF",
      "serviceName": "nnrf-nfm",
      "apiName": "nnrf-nfm",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnrf_nfmanagement",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "nrf_nnrf-oauth2",
    "nfServiceData": {
      "nfType": "NRF",
      "serviceName": "nnrf-oauth2",
      "apiName": "nnrf-oauth2",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": null,
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:22:58"
  },
  {
    "configName": "nssf_nnssf-nssaiavailability",
    "nfServiceData": {
      "nfType": "NSSF",
      "serviceName": "nnssf-nssaiavailability",
      "apiName": "nnssf-nssaiavailability",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnssf_nssaiavailability",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "nssf_nnssf-nsselection",
    "nfServiceData": {
      "nfType": "NSSF",
      "serviceName": "nnssf-nsselection",
      "apiName": "nnssf-nsselection",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnssf_nsselection",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "nwdaf_nnwdaf-analyticsinfo",
    "nfServiceData": {
      "nfType": "NWDAF",
      "serviceName": "nnwdaf-analyticsinfo",
      "apiName": "nnwdaf-analyticsinfo",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnwdaf_analyticsinfo",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "nwdaf_nnwdaf-eventssubscription",
    "nfServiceData": {
      "nfType": "NWDAF",
      "serviceName": "nnwdaf-eventssubscription",
      "apiName": "nnwdaf-eventssubscription",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nnwdaf_eventssubscription",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "pcf_npcf-am-policy-control",
    "nfServiceData": {
      "nfType": "PCF",
      "serviceName": "npcf-am-policy-control",
      "apiName": "npcf-am-policy-control",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "npcf_ampolicycontrol",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "pcf_npcf-bdtpolicycontrol",
    "nfServiceData": {
      "nfType": "PCF",
      "serviceName": "npcf-bdtpolicycontrol",
      "apiName": "npcf-bdtpolicycontrol",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "npcf_bdtpolicycontrol",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "pcf_npcf-eventexposure",
    "nfServiceData": {
      "nfType": "PCF",
      "serviceName": "npcf-eventexposure",
      "apiName": "npcf-eventexposure",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "npcf_eventexposure",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "pcf_npcf-policyauthorization",
    "nfServiceData": {
      "nfType": "PCF",
      "serviceName": "npcf-policyauthorization",
      "apiName": "npcf-policyauthorization",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "npcf_policyauthorization",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "pcf_npcf-smpolicycontrol",
    "nfServiceData": {
      "nfType": "PCF",
      "serviceName": "npcf-smpolicycontrol",
      "apiName": "npcf-smpolicycontrol",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "npcf_smpolicycontrol",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "pcf_npcf-ue-policy-control",
    "nfServiceData": {
      "nfType": "PCF",
      "serviceName": "npcf-ue-policy-control",
      "apiName": "npcf-ue-policy-control",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "npcf_uepolicycontrol",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "scp",
    "nfServiceData": {
      "nfType": "SCP",
      "serviceName": "noservice",
      "apiName": "",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "",
      "nfRole": "STANDARD_5G_NE"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "sepp",
    "nfServiceData": {
      "nfType": "SEPP",
      "serviceName": "noservice",
      "apiName": "",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "",
      "nfRole": "STANDARD_5G_NE"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  },
  {
    "configName": "smf_nsmf-event-exposure",
    "nfServiceData": {
      "nfType": "SMF",
      "serviceName": "nsmf-event-exposure",
      "apiName": "nsmf-event-exposure",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nsmf_eventexposure",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "smf_nsmf-pdusession",
    "nfServiceData": {
      "nfType": "SMF",
      "serviceName": "nsmf-pdusession",
      "apiName": "nsmf-pdusession",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nsmf_pdusession",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "smsf_nsmsf-sms",
    "nfServiceData": {
      "nfType": "SMSF",
      "serviceName": "nsmsf-sms",
      "apiName": "nsmsf-sms",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nsmsf_smservice",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "udm_nudm-ee",
    "nfServiceData": {
      "nfType": "UDM",
      "serviceName": "nudm-ee",
      "apiName": "nudm-ee",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudm_ee",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "udm_nudm-pp",
    "nfServiceData": {
      "nfType": "UDM",
      "serviceName": "nudm-pp",
      "apiName": "nudm-pp",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudm_pp",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "udm_nudm-sdm",
    "nfServiceData": {
      "nfType": "UDM",
      "serviceName": "nudm-sdm",
      "apiName": "nudm-sdm",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudm_sdm",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "udm_nudm-ueau",
    "nfServiceData": {
      "nfType": "UDM",
      "serviceName": "nudm-ueau",
      "apiName": "nudm-ueau",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudm_ueau",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "udm_nudm-uecm",
    "nfServiceData": {
      "nfType": "UDM",
      "serviceName": "nudm-uecm",
      "apiName": "nudm-uecm",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudm_uecm",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  },
  {
    "configName": "udr_nudr-dr",
    "nfServiceData": {
      "nfType": "UDR",
      "serviceName": "nudr-dr",
      "apiName": "nudr-dr",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudr_datarepository",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "udr_nudr-group-id-map",
    "nfServiceData": {
      "nfType": "UDR",
      "serviceName": "nudr-group-id-map",
      "apiName": "nudr-group-id-map",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudr_groupidmap",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:31",
    "updatedTimestamp": "2026-03-13 11:12:31"
  },
  {
    "configName": "udsf_nudsf-dr",
    "nfServiceData": {
      "nfType": "UDSF",
      "serviceName": "nudsf-dr",
      "apiName": "nudsf-dr",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nudsf_datarepository",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  },
  {
    "configName": "upf",
    "nfServiceData": {
      "nfType": "UPF",
      "serviceName": "noservice",
      "apiName": "",
      "serviceType": [
        "notification-message-service"
      ],
      "apiNameAxHeading": "",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:32",
    "updatedTimestamp": "2026-03-13 11:12:32"
  }
]

Sample of a Successful GET API with path Parameter

curl -X 'GET' 'http://<localhost>:32586/ocscp/scpc-configuration/v1/nftypes-nfservices/config1' -H 'accept: application/json'
{
    "configName": "config1",
    "nfServiceData": {
        "nfType": "UDM",
        "serviceName": "nudm-uecm",
        "apiName": "apiName1",
        "apiNameAxHeading": "apiNameAxHeading1",
        "serviceType": ["notification-message-service", "request-message-service"],
		"nfRole": STANDARD_5G_NF
    },
    "createdTimestamp": "2024-04-24 14:50:56.0",
    "updatedTimestamp": "2024-04-24 14:50:56.0"
} 

Sample of a Successful GET API with Query Parameters

curl -X 'GET' \
'http://<localhost>:32516/ocscp/scpc-configuration/v1/nftypes-nfservices?nfType=AUSF&serviceName=nausf-auth&configName=ausf_nausf-auth&apiName=&nfRole=&apiNameAxHeading=' \
-H 'accept: application/json'
[
  {
    "configName": "ausf_nausf-auth",
    "nfServiceData": {
      "nfType": "AUSF",
      "serviceName": "nausf-auth",
      "apiName": "nausf-auth",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "nausf_ueauthentication",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:33",
    "updatedTimestamp": "2026-03-13 11:12:33"
  }
]
Sample of an Error GET API
curl -X 'GET' 'http://<localhost>:32586/ocscp/scpc-configuration/v1/nftypes-nfservices/config108' -H 'accept: application/json'
{
  "title": "Not Found",
  "status": "404",
  "detail": "NfTypes-NfServices data not found against given configName. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config108",
  "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found
Sample of an Error GET API
curl -X 'GET' 'http://<localhost>:32586/ocscp/scpc-configuration/v1/nftypes-nfservices?configName=config108' -H 'accept: application/json'
{
  "title": "Not Found",
  "status": "404",
  "detail": "NfTypes-NfServices data not found against given query parameter(s). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config108",
  "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found

PUT

This resource configures nftypes-nfservices for given data.

Resource URI: /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}

The following table describes the data structures supported by the PUT response body on this resource:

Table 2-69 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfServiceWrapper M 1 200 OK Indicates nftypes-nfservices configurations to be added or modified.

This resource fetches the nftypes-nfservices configuration based on the configName parameter.

Resource URI: /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}

The following table describes the path parameter supported by this resource:

Table 2-70 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Signifies a unique configuration name to identify the configuration. The name must be unique, as it serves as the key for the record.

The following table describes data structures supported by the PUT response body on these resources:

Table 2-71 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfServiceWrapper M 1 201 Created Indicates new nftypes-nfservices configuration creation.
NfServiceWrapper M 1 200 OK Updates the existing record.
ProblemDetails M 1 400 Bad Request Indicates problem details.
ProblemDetails M 1 403 Forbidden Updates the fields that cannot be modified.
Sample of a Successful PUT Response
curl -X 'PUT' \
  'http://<localhost>:32516/ocscp/scpc-configuration/v1/nftypes-nfservices/udm_nudm-uecm' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "udm_nudm-uecm",
    "nfServiceData": {
      "nfType": "UDM",
      "serviceName": "nudm-uecm",
      "apiName": "apiName1",
      "serviceType": [
        "notification-message-service",
        "request-message-service"
      ],
      "apiNameAxHeading": "apiNameAxHeading1",
      "nfRole": "STANDARD_5G_NF"
    },
    "createdTimestamp": "2026-03-13 11:12:34",
    "updatedTimestamp": "2026-03-13 11:12:34"
  }'
  {
  "configName": "udm_nudm-uecm",
  "nfServiceData": {
    "nfType": "UDM",
    "serviceName": "nudm-uecm",
    "apiName": "apiname1",
    "serviceType": [
      "notification-message-service",
      "request-message-service"
    ],
    "apiNameAxHeading": "apinameaxheading1",
    "nfRole": "STANDARD_5G_NF"
  },
  "createdTimestamp": "2026-03-13 11:12:34",
  "updatedTimestamp": "2026-03-18 06:32:10"
}
Sample of an Error PUT Response
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config2' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "config2",
    "nfServiceData": {
        "nfType": "UDM",
        "serviceName": "nudm-sdm",
        "apiName": "apiName1",
        "serviceType": [
            "notification-message-service",
            "request-message-service"
        ]
    }
}'  
{
    "title": "Bad Request",
    "status": 400,
    "detail": "ApiName is not unique. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config2",
    "cause": "MANDATORY_IE_INCORRECT"
}
  
400 Error: Bad Request

Sample 2 of an Error PUT Response

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "config1",
    "nfServiceData": {
        "nfType": "nfT2",
        "serviceName": "nfsvc1",
        "apiName": "something",
        "serviceType": []
    },
    "createdTimestamp": "string",
    "updatedTimestamp": "string"
}'  
{
    "title": "Forbidden",
    "status": 403,
    "detail": "NF Type and NF Service Name should not be modified for existing configuration. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config1",
    "cause": "MODIFICATION_NOT_ALLOWED"
}
  
403 Error: Forbidden

DELETE

This resource removes the nftypes-nfservices configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/nftypes-nfservices/{configName}

The following table describes the path parameter supported by this resource:

Table 2-72 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Removes configurations based on configName.

The following table describes the data structures supported by the DELETE response body on this resource:

Table 2-73 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
None - 1 204 No Content In successful cases, only response code is returned.
ProblemDetails M 1 404 Not Found Indicates the problem details.
Sample of a Successful DELETE Response
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config108' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
Response: 200 OK or 204 No
    Content

Sample of an Error DELETE Response

curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nftypes-nfservices/config108' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "NfTypes-NfServices data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/nftypes-nfservices/config108",
    "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

Data Model

The following table describes data model for request or response:

Table 2-74 NfServiceWrapper

Field Name Data Type Mandatory (M) or Optional (O) Description
configName String M Signifies a unique configuration name to identify the configuration. The name must be unique, as it serves as the key for the record.

Number of characters is 256. Allowed character combinations should be alpha-numeric, hyphen, and underscore.

nfServiceData JSON M Provides configuration values of nfType, apiName, serviceName, and serviceType.
createdTimestamp String Read Only Timestamp of the created record. This is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Timestamp of the updated record. This is not required in the request, but it is present in the response.

The following table describes parameters of nfServiceData:

Table 2-75 nfServiceData Parameters

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
nfType String M NA Allowed character combinations should be alpha-numeric, hyphen, and underscore. Indicates the NF type for which routing options are configured. This is either 3GPP defined NFType as per TS 29.510 or custom NFType.

Length: 100

serviceName String M NA Allowed character combinations should be alpha-numeric, hyphen, and underscore.

"default" is not supported as a service name.

Indicates the NF service name for which routing options are configured.

This is either 3GPP defined serviceName as per TS29.510 or any custom service name.

For proxy network entities, such as SCP and SEPP, serviceName must be configured only with 'noservice' value. Apart from SCP and SEPP, if a particular NFType does not have NF Service, 'noservice' keyword should be provided for serviceName.

Note:
  • "noservice" is a keyword used by SCP to indicate that the corresponding has no NFService.
  • If you have added an NFType with serviceName as "noservice", and want to add a new serviceName for the same NFType, follow these steps:
    1. Remove the NFType, "noservice" entry.
    2. Add NFType, <new serviceName> entry again.

Length: 100

apiName String O NA Allowed character combinations should be alpha-numeric, hyphen, and underscore. Ensure that the API name is unique across all records.

In the absence of apiName, serviceName is configured as apiName. This must be configured if apiName and serviceName values are different.

apiName must be defined if apiName to be used in API URI for this service API is different from serviceName published in NF Profile.

When serviceName is set as 'noservice', apiName configuration is not allowed.

Note: configName does not show any value for apiName when nfType is not configured. When any value is configured for nfType, apiName is not included in configName:
{
"configName": "config199",
"nfServiceData":
{ "nfType": "UDMTEST", "serviceName": "noservice", "serviceType": [ "notification-message-service" ], "nfRole": "STANDARD_5G_NF" }

,
"createdTimestamp": "2025-11-17 09:30:26",
"updatedTimestamp": "2025-11-17 09:30:26"
}

Length: 256

apiNameAxHeading

String

M NA Allowed character combinations should be alpha-numeric, hyphen, and underscore.

Configures the apiNameAxHeading attribute of notificationSender of routing options configuration.

Its value is API name taken from the heading of the relevant annex A.x as defined in the corresponding 3GPP TS of that API.

The value of this parameter is the first part of the callback type values in the 3gpp-Sbi-Callback header in a notification message.

For example, when nudm-uecm sends DeregistrationNotification, then callback type value in 3gpp-Sbi-Callback header will have Nudm_UECM_DeregistrationNotification. Where Nudm_UECM is the apiNameAxHeading and DeregistrationNotification is callback service operation.

Validations:

  • Empty and null values are allowed.
  • Default entries are populated for all supported 3GPP NFTypes.
  • If the value of this parameter is not provided, the API attempts to populate it from a static YAML file, provided that apiName is configured.
  • API allows the configuration of this parameter even when serviceName is set to noservice.
  • The API returns 400 responses if the following values are configured:

    • a duplicate value that is already configured in SCP for a different NFType-NFService.
    • a reserved value for a different 3GPP NF irrespective of whether the specified NF is supported by SCP or is currently registered using the NFType-NFService REST API. The reserved value for NFs is taken from the static YAML file.
    • a value not aligned to the allowed regex of alpha-numeric, hyphen, and underscore characters.
    • a value for SCP and SEPP NFs.

Length: 256

serviceType

Array(String)

M
["notification-message-service",
"request-message-service"] Or 
["notification-message-service"]
["notification-message-service", "request-message-service"] When this attribute is blank, serviceType is automatically configured for both notification-message-service and request-message-service.

When NFType is SCP and SEPP, serviceType is configured for both notification-message-service and request-message-service. When serviceName is set to 'noservice', serviceType configuration is allowed to have only "notification-message-service" value for NF other than SCP and SEPP. When serviceName is set to 'noservice', and serviceType is blank, serviceType is automatically configured to notification-message-service only for NF other than SCP and SEPP.

2.7 Configuring Canary Release Config Set

The canary-release REST API inspects the version (API version) attribute of the NF Service profile published by the NFs during NF registration or update. It can identify the release as a canary version if the version matches the configured value. There are two versions of API, Production version (older version) and Canary version (newer version) of the service instance. SCP distributes traffic between the Production version and the Canary versions based on operator configuration.

The following sample REST messages provide the details about the operations and parameters for CanarayRelease Options. The default values of parameters related to CanaryRelease are mentioned in the following samples, however, you can modify these values. These parameters are applicable at the pod level.

Resources

The following table describes the resource name to retrieve, add, or update canary-release configuration data:

Table 2-76 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description

canary-release

/ocscp/scpc-configuration/{version}/canary-release GET

Retrieves all stored canary release configuration data.

canary-release

/ocscp/scpc-configuration/{version}/canary-release/{configName} GET

Retrieves canary release configuration data for the given configName.

canary-release

/ocscp/scpc-configuration/{version}/canary-release/{configName} PUT Creates new canary release config data.

Updates canary release data if the record exists.

configName cannot be updated. The default record (defaultCanaryConfigName) can be updated.

canary-release /ocscp/scpc-configuration/{version}/canary-release/{configName} DELETE Removes canary release configuration data for the given configName.

Cannot remove the records if it is used in the OCSCP_NF_SERVICE_CONFIG_SET table.

The default record (defaultCanaryConfigName) cannot be deleted.

Resource Definition

GET

This resource fetches all the canary release configurations.

Resource URI: /ocscp/scpc-configuration/{version}/canary-release

The following table describes the data structures supported by the GET response body on this resource:

Table 2-77 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
canaryReleaseData M 1..N 200 OK Fetches all canary release data record.

This resource fetches the canary release configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/canary-release/{configName}

The following table describes the path parameter supported by this resource:

Table 2-78 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configuration information for configName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-79 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
canaryReleaseData M 1 200 OK Indicates canaryReleaseData configurations.
ProblemDetails M 1 404 Not Found Indicates problem details.
Sample of a Successful GET Response
 curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
  -H 'accept: application/json'
{
    "configName": "config1",
    "canaryData": {
        "apiFullVersion": "2.0.0",
        "canaryTraffic": 5
    },
    "createdTimestamp": "2024-04-24 14:50:56.0",
    "updatedTimestamp": "2024-04-24 14:50:56.0"
}

Sample of an Error GET Response

curl -X 'GET' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
  -H 'accept: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "Canary release data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/canary-release/config1",
    "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found

PUT

This resource configures canary release configuration for given data.

Resource URI: /ocscp/scpc-configuration/{version}/canary-release/{configName}

The following table describes the path parameter supported by this resource:

Table 2-80 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Unique identifier for the record configName.

The following table describes the data structures supported by the PUT request body on this resource:

Table 2-81 Request Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Description
canaryReleaseData M 1 The canaryRelease data to be added or updated.

The following table describes data structures supported by the PUT response body on these resources:

Table 2-82 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
canaryReleaseData M 1 200 OK Indicates successful update of canary release configurations.
canaryReleaseData M 1 201 Created Indicates successful creation of canary release configurations.
ProblemDetails M 1 400 Bad Request Indicates the problem details.
Sample of a Successful PUT Response
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "config1",
    "canaryData": {
        "apiFullVersion": "2.0.0",
        "canaryTraffic": 5
    }
}' 
{
    "configName": "config1",
    "canaryData": {
        "apiFullVersion": "2.0.0",
        "canaryTraffic": 5
    },
    "createdTimestamp": "2024-08-02 09:47:12",
    "updatedTimestamp": "2024-08-02 09:47:12"
}

Sample of an Error PUT Response

curl -X 'PUT' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "configName": "config1",
    "canaryData": {
        "apiFullVersion": "adfasdfldksfa;sdfk;asdlfasdfljsadf",
        "canaryTraffic": 5
    }
}'  
{
    "title": "Bad Request",
    "status": 400,
    "detail": "Field apiFullVersion format is incorrect. Please refer to the user guide.",
    "instance": "/ocscp/scpc-configuration/v1/canary-release/config1",
    "cause": "INVALID_VALUE"
}
  
400 Error: Bad Request

DELETE

This resource removes all the canary release configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/canary-release/{configName}

The following table describes the path parameter supported by this resource:

Table 2-83 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Removes configurations based on configName.

The following table describes the data structures supported by the DELETE response body on this resource:

Table 2-84 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NA M 1 204 No Content Successful deletion of nfServiceConfigData.
ProblemDetails M 1 404 Not Found Indicates the problem details.
ProblemDetails M 1 403 Forbidden Indicates the problem details.
Sample of a Successful DELETE Response
curl -X 'DELETE' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
  -H 'accept: application/json'
204 No Content
Sample of an Error DELETE Response
curl -X 'DELETE' \ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/config1' \
  -H 'accept: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "Canary release data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/canary-release/config1",
    "cause": "DATA_NOT_FOUND"
}
   
404 Error: Not Found

Sample 2 of an Error DELETE Response

curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/canary-release/defaultCanaryConfigName' \
  -H 'accept: application/json'
{
    "title": "Forbidden",
    "status": 403,
    "detail": "The default configuration cannot be deleted. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/canary-release/defaultCanaryConfigName",
    "cause": "DATA_CANT_DELETED"
}
   
403 Error: Forbidden

Data Model

The following table describes data model for request or response:

Table 2-85 canaryReleaseData

Field Name Data Type Mandatory (M) or Optional (O) Description
configName String M Unique configName key to identify canary release configuration.

Allowed character combinations should be alpha-numeric, hyphen, and underscore.

canaryData JSON M JSON containing apiFullVersion of canaryTraffic.
createdTimestamp String Read Only Timestamp of the created record. This is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Timestamp of the updated record. This is not required in the request, but it is present in the response.

The following table describes parameters of canaryData:

Table 2-86 canaryData

Field Name Data Type Mandatory (M) or Optional (O) Default Value Range Description
apiFullVersion String M NA - API version to redirect requests.
canaryTraffic int M NA 0-100 Represents percentage of traffic to be routed.

2.8 Configuring Topology Source Info

The Topology Source Info REST API configures how SCP discovers and learns 5G topology to derive routing rules. It supports learning from NRF, LOCAL, or both (NRF_AND_LOCAL). If duplicate instanceIds are encountered, the SCP resolves conflicts based on the configured preferredTopologySource.

This REST API operates in either AUTO (AUTONOMOUS) or USER mode. This setting determines how SCP behaves when using locally sourced topology information.

Resources

The following table describes the resource name to retrieve, add, or remove the topologysourceinfo configuration data:

Table 2-87 Resources

Resource Name Resource URI HTTP Method or Custom Operation Request Body, Query Parameters Response Status Code, Body Description
topologysourceinfo /ocscp/scpc-configuration/v1/topologysourceinfo GET - 200 Reads the topology source information for all the NF types.
topologysourceinfo /ocscp/scpc-configuration/v1/ topologysourceinfo/{NFType} PUT

Body:

TopologySource

  • 200
  • 201
  • 400

Creates or updates the topology source information for a specific NF type.

topologysourceinfo /ocscp/scpc-configuration/v1/ topologysourceinfo/{NFType} DELETE

Query Parameter:

NFType

  • 204
  • 404
Removes the topology source information for a specific NF type.
topologysourceinfo /ocscp/scpc-configuration/v1/ topologysourceinfo/{NFType} GET

Query Parameter:

NFType

  • 200
  • 404
Reads the topology source information for a specific NF type.

Data Model

The following table describes data model for request or response:

Table 2-88 TopologySourceInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nftype String M Identifies the NF type to which this configuration applies.

Length: 256

Default value: NA

Allowed values: Any valid NF type as configured in Configuring NFTypes-NFServices or "*".

topologysource Enumeration (TopologySource) M The source from which the NF profile is learned.

Default value: NA

Allowed values:
  • NRF (Existing)
  • LOCAL (Existing)
  • NRF_AND_LOCAL
preferredTopologySource Enumeration (TopologySourcePreference) O The preferred source is used when a profile with the same instance ID is learned from both NRF and LOCAL.

The value of this parameter depends on the topologySource parameter.

Default value:
  • LOCAL: LOCAL
  • NRF: NRF
  • NRF_AND_LOCAL: NRF

Allowed values: NRF, LOCAL

  • If the topologySource is LOCAL, the preferredTopologySource must be LOCAL and it cannot be changed.
  • If the topologySource is NRF, preferredTopologySource must be NRF and it cannot be changed.
  • If the topologySource is NRF_AND_LOCAL, preferredTopologySource can be either NRF or LOCAL, and it can be changed.
localNfTopologyCfgMode Enumeration(LocalNfTopologyConfigMode) O Indicates the mode to configure LOCAL NF topology.
  • USER mode: It is the default mode and no local copy of an NRF-learned profile is created.
  • AUTO mode: An SCP-owned copy of the NRF-learned profile is created and can be used for routing even if the NRF profile is deregistered, until the retentionPeriod expires.

Default value: USER

Allowed values: AUTO,USER

localNfTopologyCfgMode can be set to AUTO only when the topologySource is NRF or NRF_AND_LOCAL.

localNfTopologyRetentionPeriod String O Indicates the local NF topology retention period after an NF_DEREGISTERED request is received from NRF.

Default value: "7D"

Allowed values: Any combination of number with M, H, and D in range 5M to 14D. Multiple units are not supported.

  • The retention period must be at least 2 characters long.
  • The numeric portion of the retention period must be in a parse condition.
  • The unit must be one of the allowed values, M (minutes), H (hours), or D (days), and is case-insensitive.

Note: localNfTopologyRetentionPeriod applies only to profiles owned by SCP.

Table 2-89 TopologySource

Topology Source Values Description
NRF The SCP 5G topology information source is NRF.
LOCAL The SCP 5G topology information source is local, not NRF.

This configuration may result from an NF service failure and may trigger restoration procedures. For more information, see clause 6.2 of 3GPP TS 23.527.

  • Transition from NRF to LOCAL: Stops learning from NRF and, from now on, uses the available, modified, or created topology information in SCP.
  • Transition from LOCAL to NRF: Starts learning from NRF and creates routing rules accordingly. In this scenario, statically configured NF rules may be deleted if their information is not available in NRF.
NRF_AND_LOCAL The SCP 5G topology information source is both NRF and LOCAL. If there is a conflicting instanceId, SCP selects routing rules based on the configured preferredTopologySource.

Table 2-90 TopologySourcePreference

Topology Source Preference Values Description
NRF When topologySource is NRF_AND_LOCAL and the same instanceId is learned from both sources, the profile learned from NRF takes precedence over the profile learned locally.
LOCAL When topologySource is NRF_AND_LOCAL and the same instanceId is learned from both sources, the profile learned locally through the SCP REST API takes precedence over the profile learned from the NRF.

Table 2-91 LocalNfTopologyConfigMode

Local NF Topology Mode Description
AUTO SCP creates a LOCAL NF topology based on topology learned from NRF.
USER SCP does not create a LOCAL NF topology based on topology learned from the NRF. You can configure it.

Note:

Any update to an SCP-owned profile through the NF Profile REST API reassigns ownership of that profile from SCP to USER.

Table 2-92 Request Body

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
topologySourceInfo TopologySourceInfo M Indicates the topology source information.

The response body data model varies based on the REST API operation status.

Table 2-93 Response Body

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Code Description
array(TopologySourceInfo ) M 1 200 OK Indicates a list of TopologySourceInfo configurations.
ProblemDetails M 1 400 BAD REQUEST Returned when invalid input is provided.

Resource Definition

GET ALL REST API

This resource fetches all the topology source configuration.

Resource URI: /ocscp/scpc-configuration/{version}/ topologysourceinfo

The following table describes the data model supported by the GET response body on this resource:

Table 2-94 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
List<TopologySourceInfo> M 1 200 OK Indicates the topology source info of nfType.

GET REST API

This resource fetches the topology source configuration for nftype.

Resource URI: /ocscp/scpc-configuration/{version}/ topologysourceinfo/{nftype}

The following table describes the data structure supported by the GET response body on this resource:

Table 2-95 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
TopologySourceInfo M 1 200 OK Indicates the topology source info of nfType.
ProblemDetails M 1 404 Not Found Returns when no matching entry is found.

Sample of a Successful GET API

curl -X 'GET'   'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/UPF'   -H 'accept: application/json'
{
  "nftype": "UPF",
  "topologysource": "NRF_AND_LOCAL",
  "preferredTopologySource": "NRF",
  "localNfTopologyCfgMode": "USER",
  "localNfTopologyRetentionPeriod": "6M"
}

Sample of a Configuration Not Found

curl -X 'GET' \
  'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/SMF' \
  -H 'accept: application/json'
{"title":"Not Found","status":404,"detail":"The nfType is not configured in Topology Source Info API. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/topologysourceinfo/SMF","cause":"DATA_NOT_FOUND"}

PUT

This resource adds or updates the topology source configuration using the request body.

Resource URI: /ocscp/scpc-configuration/{version}/ topologysourceinfo/{nftype}

The following table describes the data structure supported by PUT response body on this resource:

Table 2-96 Request Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Code Description
TopologySourceInfo(json) M 1 200 OK Adds a new topology source configuration.
TopologySourceInfo(json) M 1 201 Created Indicates updated existing topology source configuration.
String M 1 400 BAD REQUEST Returns problem description when invalid input is provided.

Sample of a Successful PUT API

curl -X 'PUT' \
  'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/UPF' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d
 '{
  "nftype": "UPF",
  "topologysource": "NRF_AND_LOCAL",
  "preferredTopologySource": "NRF",
  "localNfTopologyCfgMode": "USER",
  "localNfTopologyRetentionPeriod": "6m"
}'
{"nftype":"UPF","topologysource":"NRF_AND_LOCAL","preferredTopologySource":"NRF","localNfTopologyCfgMode":"USER","localNfTopologyRetentionPeriod":"6M"}

DELETE

This resource removes the topology source configuration.

Resource URI: /ocscp/scpc-configuration/{version}/ topologysourceinfo/{nftype}

The following table describes the data model supported by the DELETE response body on this resource:

Table 2-97 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
Default M 1 204 OK Indicates the topology source configuration removed for nfType.
ProblemDetails M 1 404 Not Found Indicates the problem details.

Sample of a Successful of DELETE API

curl -v 'DELETE' 'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/SMF'   -H 'accept: application/json'
HTTP/1.1 204 No Content

Sample of an Error DELETE API

curl -v 'DELETE' 'http://localhost:8081/ocscp/scpc-configuration/v1/topologysourceinfo/SMF' -H 'accept: application/json' 
HTTP/1.1 404 Not Found
{"title":"Not Found","status":404,"detail":"The nfType is not configured in Topology Source Info API. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/topologysourceinfo/SMF","cause":"DATA_NOT_FOUND"}

2.9 Configuring System Options

These options are used to control system behavior per service. You can configure System Options by using GET and PUT operations.

Note:

  • The default System Option values are provided for the following parameters during the installation of SCP through Helm:
    • tcp.connectTimeout
    • tcp.tcpKeepalive
    • tcp.enable
    • tcp.probes
    • tcp.time
    • tcp.interval
  • The same functionality is achieved using the OutlierDetection (URI: /ocscp/scpc-configuration/{version}/outlier-detection) API to the nextHopScpODRule rule assigned to odScpRuleName.

REST Message Sample

Request_Type: GET and PUT

URI: http://<SCP configuration FQDN/External IP>:8081//ocscp/scpc-configuration/v1/systemoptions
{
  "nextHopProxyODConfig": [
    {
      "nfType": "SCP",
      "odEnabled": false,
      "odRuleName": "nextHopScpODRule"
    }
  ],
  "nextHopRoamingProxyODConfig": [
    {
      "nfType": "*",
      "odEnabled": false,
      "odRuleName": "defaultRule"
    }
  ],
  "nextHopProxyCBConfig": [
    {
      "nfType": "SCP",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "nextHopRoamingProxyCBConfig": [
    {
      "nfType": "*",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "forwardNfDiscoveryHeaders": true,
  "viaHeaderCheckEnabled": true,
  "interPlmnFqdnValidationEnabled": false,
  "trafficPolicy": {
    "connectionPool": {
      "http": {
        "idleTimeout": "600s"
      },
      "https": {
        "idleTimeout": "600s"
      },
      "tcp": {
        "connectTimeout": "250ms",
        "tcpKeepalive": {
          "enable": true,
          "probes": 9,
          "time": "180s",
          "interval": "1s"
        }
      }
    }
  },
  "ttl": "900s",
  "dnsQueryTimeout": "5000ms"
}

The following table describes System Options parameters:

Table 2-98 Configuring Parameters for System Options

Parameter Value Description
odEnabled Boolean Provides information whether the Outlier Detection feature is enabled. The default value is false.

For more information, see Outlier Detection Configuration.

Default value: false

odScpRuleName String Indicates the name of the rule holding the configuration of outlier detection for next Hop SCP. The Outlier Detection feature for next Hop SCP works based on configuration under this rule.

For more information, see Outlier Detection Configuration.

Default value: nextHopScpODRule

odSeppEnabled Boolean Enables or disables the Outlier Detection feature for the next Hop SEPP.

For more information, see Outlier Detection Configuration.

Default value: false

odSeppRuleName String Indicates the name of the rule holding the configuration of outlier detection for next Hop SEPP. The Outlier Detection feature for next Hop SEPP works based on configuration under this rule.

For more information, see Outlier Detection Configuration.

Default value: defaultRule

cbScpEnabled Boolean Enables or disables circuit breaking for next Hop SCP. The default value is false.

For more information, see Circuit Breaking Configurations.

Default value: false

cbScpRuleName String Name of the rule holding the configuration of outlier detection for next Hop SCP. Based on configuration under this rule, circuit breaking for next Hop SCP will work. The default value is "defaultRule" string. { "ruleName": "defaultRule", "data": { "v1": { "http2MaxRequests": 1000 } } }

For more information, see Circuit Breaking Configurations.

Default value: defaultRule

cbSeppEnabled Boolean Enables or disables circuit breaking for next Hop SEPP. The default value is false.

For more information, see Circuit Breaking Configurations.

Default value: false

cbSeppRuleName String Name of the rule holding the configuration of circuit breaking for next Hop SEPP. Based on configuration under this Rule, circuit breaking for next Hop SEPP will work. The default value is "defaultRule" string.{ "ruleName": "defaultRule", "data": { "v1": { "http2MaxRequests": 1000 } } }

For more information, see Circuit Breaking Configurations.

Default value: defaultRule

forwardNfDiscoveryHeaders Boolean Enables or disables the forwarding of discovery headers to next hop SCP.

Default value: true

trafficPolicy.connectionPool.http.idleTimeout String The idle timeout for upstream connection pool connections. The idle timeout is defined as the period in which there are no active requests. If not set, there is no idle timeout. When the idle timeout is reached the connection will be closed. Note that request based timeouts mean that HTTPS/2 PINGs will not keep the connection alive..

Default value: 600s

trafficPolicy.connectionPool.https.idleTimeout String The idle timeout for upstream connection pool connections is defined as the period in which there are no active requests. If not set, there is no idle timeout. When the idle timeout is reached, the connection will be closed. Note that request-based timeouts mean that HTTP/2 PINGs will not keep the connection alive.

Default value: 600s

trafficPolicy.connectionPool.tcp.connectTimeout String TCP Connection timeout. The valid time units are ns, us (or µs), ms, s. For example: 300ms.

Default value: 250ms

trafficPolicy.connectionPool.tcp.tcpKeepalive TcpKeepalive Contains the TcpKeepalive information. If set, enables TCP Keepalives to upstream peer. All the parameters of tcpkeepAlive are required if this information is configured.
trafficPolicy.connectionPool.tcp.tcpKeepalive.enable Boolean Enables or disables tcp keepalive for upstream connections.

Default value: true

trafficPolicy.connectionPool.tcp.tcpKeepalive.probes Integer

Maximum number of keepalive probes to send without response before deciding the connection is dead. For example: 9

The default value is 9, minimum value is 1, and maximum value is 16.

trafficPolicy.connectionPool.tcp.tcpKeepalive.time String

The time duration a connection needs to be idle before keep-alive probes are sent. The valid time unit is second. For example: 180s

The default value is 180 seconds, minimum value is 1 second, and maximum value is 7200 seconds.

trafficPolicy.connectionPool.tcp.tcpKeepalive.interval String

The time duration between keep-alive probes. The valid time unit is seconds. For example: 1s

The default value is 1 second, minimum value is 1 second, and maximum value is 120 seconds.

ttl String Indicates the duration in which the DNS record is valid. This is used by the DNS SRV feature to refresh the DNS SRV record.

The range is between 30 to 86400 seconds.

Default value: 900s

dnsQueryTimeout String The maximum amount of time in milliseconds to wait for a response during a DNS SRV query.

The range is between 30 to 86400 seconds.

Default value: 500ms

viaHeaderCheckEnabled boolean The relevance of this parameter arises when the 3gpp-Sbi-Target-apiRoot value contains a PLMN ID that is local to the SCP.
  • If this parameter is enabled, the "via header" will be checked for the presence of SEPP. If SEPP is found, the SCP will consider the request as coming from a SEPP, and intra-PLMN routing to the alternate producer NF will be based on the interplmnFQDN.
  • If this parameter is disabled, the decision to use either the interplmnFQDN or the FQDN of the alternate producer NF for intra-PLMN routing will depend on the interPlmnFqdnValidationEnabled parameter.

Note: The first routing attempt will always be based on the 3gpp-Sbi-Target-apiRoot, but the parameter's relevance is in selecting the alternate producer for intra-PLMN routing.

Default value: true

interPlmnFqdnValidationEnabled boolean The relevance of this parameter arises when viaHeaderCheckEnabled is set to false or the viaHeader is not present in the incoming request, and the 3gpp-Sbi-Target-apiRoot value contains a PLMN ID that is local to the SCP.
  • If this parameter is enabled, SCP selects an alternate destination for intra-PLMN routing based on the interplmnFQDN if the first destination matches the interplmnFQDN of a known NF profile. If there is no match, then SCP selects the alternate destination based on the FQDN. This can occur in the following scenarios:
    • The first destination matches the FQDN instead of the interplmnFQDN of a known NF profile.
    • The first destination has no match with either the FQDN or the interplmnFQDN among the list of known profiles (catch-all routing for the first attempt).
  • If this parameter is disabled, SCP always selects the alternate destination for intra-PLMN routing based on the FQDN.

Note: The first routing attempt will always be based on the 3gpp-Sbi-Target-apiRoot header, but the relevance of this parameter is in selecting the alternate producer for intra-PLMN routing.

Default value: true

Sample of a Successful GET API

{
  "nextHopProxyODConfig": [
    {
      "nfType": "SCP",
      "odEnabled": false,
      "odRuleName": "nextHopScpODRule"
    }
  ],
  "nextHopRoamingProxyODConfig": [
    {
      "nfType": "*",
      "odEnabled": false,
      "odRuleName": "defaultRule"
    }
  ],
  "nextHopProxyCBConfig": [
    {
      "nfType": "SCP",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "nextHopRoamingProxyCBConfig": [
    {
      "nfType": "*",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "forwardNfDiscoveryHeaders": true,
  "viaHeaderCheckEnabled": true,
  "interPlmnFqdnValidationEnabled": false,
  "trafficPolicy": {
    "connectionPool": {
      "http": {
        "idleTimeout": "600s"
      },
      "https": {
        "idleTimeout": "600s"
      },
      "tcp": {
        "connectTimeout": "250ms",
        "tcpKeepalive": {
          "enable": true,
          "probes": 9,
          "time": "180s",
          "interval": "1s"
        }
      }
    }
  },
  "ttl": "900s",
  "dnsQueryTimeout": "5000ms"
}
curl -X 'GET' \
  'http://<localhost>:31359/ocscp/scpc-configuration/v1/systemoptions' \
  -H 'accept: application/json'

Sample of a Successful PUT API

curl -X 'PUT' \
  'http://<localhost>:31359/ocscp/scpc-configuration/v1/systemoptions' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d
 '{
  "nextHopProxyODConfig": [
    {
      "nfType": "SCP",
      "odEnabled":false,
      "odRuleName": "nextHopScpODRule"
    }
  ],
  "nextHopRoamingProxyODConfig": [
    {
      "nfType": "*",
      "odEnabled": false,
      "odRuleName": "defaultRule"
    }
  ],
  "nextHopProxyCBConfig": [
    {
      "nfType": "SCP",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "nextHopRoamingProxyCBConfig": [
    {
      "nfType": "*",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "forwardNfDiscoveryHeaders": true,
  "viaHeaderCheckEnabled": true,
  "interPlmnFqdnValidationEnabled": false,
  "trafficPolicy": {
    "connectionPool": {
      "http": {
        "idleTimeout": "600s"
      },
      "https": {
        "idleTimeout": "600s"
      },
      "tcp": {
        "connectTimeout": "250ms",
        "tcpKeepalive": {
          "enable": true,
          "probes": 9,
          "time": "180s",
          "interval": "1s"
        }
      }
    }
  },
  "ttl": "900s",
  "dnsQueryTimeout": "5000ms"
}'


Response Body:


{
  "nextHopProxyODConfig": [
    {
      "nfType": "SCP",
      "odEnabled": true,
      "odRuleName": "nextHopScpODRule"
    }
  ],
  "nextHopRoamingProxyODConfig": [
    {
      "nfType": "*",
      "odEnabled": false,
      "odRuleName": "defaultRule"
    }
  ],
  "nextHopProxyCBConfig": [
    {
      "nfType": "SCP",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "nextHopRoamingProxyCBConfig": [
    {
      "nfType": "*",
      "cbEnabled": false,
      "cbRuleName": "defaultRule"
    }
  ],
  "forwardNfDiscoveryHeaders": true,
  "viaHeaderCheckEnabled": true,
  "interPlmnFqdnValidationEnabled": false,
  "trafficPolicy": {
    "connectionPool": {
      "http": {
        "idleTimeout": "600s"
      },
      "https": {
        "idleTimeout": "600s"
      },
      "tcp": {
        "connectTimeout": "250ms",
        "tcpKeepalive": {
          "enable": true,
          "probes": 9,
          "time": "180s",
          "interval": "1s"
        }
      }
    }
  },
  "ttl": "900s",
  "dnsQueryTimeout": "5000ms"
}

2.10 Configuring Overload Configuration Information

This section provides information about overload control configuration parameters required for sending OCI to peers.

Resources

The following table describes the resource name to retrieve, add, or update overload control configuration data:

Table 2-99 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
oci-config /ocscp/scpc-configuration/v1/oci-config GET Retrieves OCI config at SCP.
oci-config /ocscp/scpc-configuration/v1/oci-config PUT Updates OCI config parameters.
oci-config /ocscp/scpc-configuration/v1/oci-config DELETE Removes OCI config rule.

Resource Definition

GET

This resource fetches the OCI Config details (OCIConfigWrapper) based on the query parameters.

If no query parameter is provided, all the SCP feature details are returned.

Resource URI: /ocscp/scpc-configuration/v1/oci-config

Response Body

Response body data model varies based on the REST operation status.

Table 2-100 Response Body Parameters

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
OCIConfigWrapper M 1 200 OK Indicates the list of OCI Config (OCIConfigWrapper) matching criteria.
ProblemDetails M 1 404 NOT FOUND Returns when data is not found for given query parameters.

This resource fetches the OCI Config details (OCIConfigWrapper) based on the ociConfigRule query parameter.

If no query parameter is provided, all the SCP feature details are returned.

Resource URI: /ocscp/scpc-configuration/{version}/oci-config?ociConfigRule=defaultOciConfigRule

Response Body

Response body data model varies based on the REST operation status.

Table 2-101 Response Body Parameters

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
OCIConfigWrapper M 1 200 OK Indicates the list of OCI Config (OCIConfigWrapper) matching criteria.
ProblemDetails M 1 404 NOT FOUND Returns when data is not found for given query parameters.
Example of a successful response:
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oci-config" -H "accept: application/json“
Code: 200
{
    [
        {  
            "ociConfigRule": "defaultOciConfigRule",
            "data":
            {
                "relayPeerOci": false,
                "ociEnforcement": true,
                "ociEnforcementAction": "REROUTE",
                "ociSendErrorProfile": "defaultErrorProfile",
                "interPlmnOciEnforcement": false,
                "ociTrafficRecoveryPolicy":
                {
                    "recoveryPolicy": "INCREMENTAL",
                    "stepInPercentage": 10,
                    "stepDurationInMs": 100
                },
                "ociEnforcementPolicy":
                {
                    "enforcementPolicy": "PERCENTAGE_WITH_PRIORITY",
                    "maxSbiMessagePriorityForOciEnforcement": 15
                }
            }
        }
    ]
}
Example of a failure response:
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v2/oci-config" -H "accept: application/json“
{
    "title": "Not Found",
    "status": "404",
    "detail": "Oci_Config data not found against given query parameter(s). Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/oci-config?ociConfigRule=abc", "cause": "DATA_NOT_FOUND"
}

PUT

This resource updates the OCI config using the request body.

Resource URI: ocscp/scpc-configuration/v1/oci-config

Table 2-102 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
OCIConfigWrapper M 1 200 OK Indicates the list of OCI Config (OCIConfigWrapper) matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns error with problem details structure as defined in 3GPP TS 29.571 Section 5.2.4.1.
Example of a successful response:
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/oci-config" -H "accept: application/json“
Code: 200
{
    [
        {
            "ociConfigRule": "defaultOciConfigRule",
            "data":
            {
                "relayPeerOci": false,   
                "ociEnforcement": true,
                "ociEnforcementAction": "REROUTE",
                "ociSendErrorProfile": "defaultErrorProfile",
                "interPlmnOciEnforcement": false,
                "ociTrafficRecoveryPolicy":
                {
                    "recoveryPolicy": "INCREMENTAL",
                    "stepInPercentage": 10,
                    "stepDurationInMs": 100
                },
                "ociEnforcementPolicy":
                {
                    "enforcementPolicy": "PERCENTAGE_WITH_PRIORITY",
                    "maxSbiMessagePriorityForOciEnforcement": 15
                }
            }
        }
    ]
}

DELETE

This resource deletes the OCI config using the request body.

Resource URI: ocscp/scpc-configuration/v1/oci-config

Table 2-103 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
OCIConfigWrapper M 1 200 OK Indicates the list of OCI Config (OCIConfigWrapper) matching criteria.
ProblemDetails M 1 403 Forbidden Returns when data is not found for given query parameters.

Example of a successful response:

Request:
curl -X 'DELETE'\  'http://<localhost>:8081/ocscp/scpc-configuration/v1/oci-config?ociConfigRule=defaultOciConfigRule'\  -H 'accept: application/json'
Response:
{
    "title": "Forbidden",
    "status": "403",
    "detail": "Given oci config rule is used in routing options hence cannot be deleted",
    "instance": "/ocscp/scpc-configuration/v1/oci-config?ociConfigRule=defaultOciConfigRule",
    "cause": "OPERATION_NOT_ALLOWED"
}

Data Model

Table 2-104 OCIConfigWrapper

Field Name Data Type Default Value Description
relayPeerOci Boolean false If this parameter is set to true, SCP forwards the OCI header received from downstream peer in the ingress messages to upstream peers with the egress messages.
  • Default value: false
  • Range: true, false
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.
  • Default value: true
  • Range: true, false
ociEnforcementAction Enum REROUTE Decides OCI enforcement action, such as send error or reroute.

SENDERROR: SCP immediately sends error responses without trying for alternate peers.

REROUTE: SCP attempts to reselect equivalent available peers. If it is not able to route to reselected peer, SCP sends error responses back.

  • Default value: REROUTE
  • Range: SENDERROR and REROUTE
OciSendErrorProfile String defaultErrorProfile In reference to the error response profile, SCP sends error responses because of overload correction action based on OCI.
  • Default value: defaultErrorProfile
interPlmnOciEnforcement Boolean false Enables or disables OCI enforcement toward remote PLMN peers.
  • Default value: false
  • Range: true, false

Table 2-105 ociTrafficRecoveryPolicy

Field Name Data Type Default Value Description
recoveryPolicy Enum INCREMENTAL Decides the traffic recovery policy after OCI enforcement action.

INCREMENTAL: Increments traffic in steps to 100% based on "stepInPercentage" and "stepDurationInMs" parameters.

IMMEDIATE: Increments traffic to 100% immediately.
  • Default value: INCREMENTAL
  • Range: INCREMENTAL, IMMEDIATE
stepInPercentage Integer 10 Defines the size of a step in percentage of reduced traffic when the INCREMENTAL policy is configured.
  • Default value: 10
  • Range: 5 - 15
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.
  • Default value: 100
  • Range: 50 - 10000

Table 2-106 ociEnforcementPolicy

Field Name Data Type Default Value Description
enforcementPolicy Enum PERCENTAGEWITHPRIORITY Decides the traffic recovery policy toward a peer after OCI enforcement action.

PERCENTAGE_WITH_PRIORITY: Enforces OCI action on percentage of messages as received in reduction metric if priority of message is greater than "maxSbiMessagePriorityForOciEnforcement".

PERCENTAGE_ONLY: Enforces OCI action on percentage of messages as received in the reduction metric.
  • Default value: PERCENTAGE_WITH_PRIORITY
  • Range: PERCENTAGE_WITH_PRIORITY, PERCENTAGE_ONLY
maxSbiMessagePriorityForOciEnforcement Integer 15 Defines maximum priority value below which OCI enforcement action will not be applied.
  • Default value: 15
  • Range: 0 - 31

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
            }
        }
    }
]
Error Profile:
{
    "name":"ociErrorProfile",
    "errorProfile":
    {
        "status":500,
        "cause":"NF_SERVICE_FAILOVER",
        "customCause":null,
        "title":"INTERNAL SERVER ERROR",
        "detail":"SCP is unable to route because peer NF overload as per reported OCI",
        "retryAfter":0,
        "redirectURL":null
    }
}

2.11 Configuring Overload Configuration Information Threshold

This section provides information about overload control configurations required for the OciThresholdConfig threshold levels to generate self-Overload Control Information (OCI) by SCP.

Resources

The following table describes the resource name to retrieve, add, or update overload control configuration data:

Table 2-107 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
oci-threshold-config /ocscp/scpc-configuration/v1/oci-threshold-config GET Retrieves all SCP OCI threshold config data configured at SCP.
oci-threshold-config /ocscp/scpc-configuration/v1/oci-threshold-config GET Retrieves an SCP OCI threshold config data configured based on the threshold level at SCP when the threshold level is provided as query parameters. However, this query parameter is optional. If it is absent, then it retrieves all SCP OCI threshold config data configured at SCP.
oci-threshold-config /ocscp/scpc-configuration/v1/oci-threshold-config PUT Adds or updates SCP OCI threshold config data at SCP.

Resource Definition

GET REST API

This resource fetches the SCP OCI threshold config data based on the query parameters.

If no query parameter is provided, all the SCP OCI threshold config data is returned.

Resource URI: /ocscp/scpc-configuration/v1/oci-threshold-config

Table 2-108 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the names of supported threshold levels such as WARN, MINOR, MAJOR, and CRITICAL.

PUT REST API

This resource adds or updates the SCP OCI threshold config configuration using the request body.

Resource URI: /ocscp/scpc-configuration/v1/oci-threshold-config

Table 2-109 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
OciThresholdConfigWrapper M 1 200 OK Indicates the names of supported threshold levels such as WARN, MINOR, MAJOR, and CRITICAL.
ProblemDetails M 1 400 BAD REQUEST Returns error with problem details structure as defined in 3GPP TS 29.571 Section 5.2.4.1.

Table 2-110 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
thresholdLevel String M 1 Indicates all the custom threshold levels apart from WARN, MINOR, MAJOR, and CRITICAL.

Note:

  • The threshold level is a valid combination of query parameters.
  • Only custom threshold levels can be removed. The default levels such as WARN, MINOR, MAJOR, or CRITICAL, cannot be removed.

Table 2-111 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
None - 1 200 OK In successful cases, only response code is returned.
ProblemDetails M 1 404 NOT FOUND When no matching entry is found.

Data Model

The following table describes the field names of the OciThresholdConfigWrapper data type:

Table 2-112 OciThresholdConfigWrapper

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the supported threshold levels such as WARN, MINOR, MAJOR, and CRITICAL.
OciThresholdConfig Object M Indicates the OciThresholdConfig data.

Table 2-113 OciThresholdConfig

Field Name Data Type Mandatory (M) or Optional(O) Range Description
generateOciHeader Boolean M true, false Controls the generation of self-OCI, which is created by SCP, for different threshold levels. If this parameter is set to true. The OCI header for self-overload is added to HTTP messages on load update for this OCI level.

The default value is false.

onSetThreshold Integer M 2-100 Indicates the onset overload threshold value based on the CPU usage.
abatementThreshold Integer M 1-99 Indicates the abatement overload threshold value based on the CPU usage.
overloadReductionMetric Integer M 0-100% Indicates the value of the Overload-Reduction-Metric attribute in the 3gpp-Sbi-Oci header that is configured at each overload level, for example, the percentage (%) of traffic that the consumer NF must reduce toward SCP.
periodOfValidity Integer M 5 - 3600 seconds Indicates the value of the Period-of-Validity attribute in the 3gpp-Sbi-Oci header that is configured at each overload level.
abatementTimeInMilliSeconds Integer M 50 ms to 5000 ms Indicates the abatement time for overload level change.

The following table provides the default values of the OciThresholdConfig parameter:

Table 2-114 OciThresholdConfig

thresholdLevel onsetThreshold abatementThreshold overloadReductionMetric periodOfValidity abatementTime
WARN 68 65 10 5 seconds 200 ms
MINOR 75 70 20 5 seconds 200 ms
MAJOR 80 78 30 5 seconds 200 ms
CRITICAL 86 82 40 5 seconds 200 ms

JSON format for SCP OCI threshold config

[
    {
        "thresholdLevel": "CRITICAL",
        "data":
        {
            "onSetThreshold": 86,
            "abatementThreshold": 82,
            "abatementTimeInMilliSeconds": 200,
            "generateOciHeader": false,
            "overloadReductionMetric": 40,
            "periodOfValidity": 5
        }
    },
    {
        "thresholdLevel": "MAJOR",
        "data":
        {
            "onSetThreshold": 80,
            "abatementThreshold": 78,
            "abatementTimeInMilliSeconds": 200,
            "generateOciHeader": false,
            "overloadReductionMetric": 30,
            "periodOfValidity": 5
        }
    },
    {
        "thresholdLevel": "MINOR",
        "data":
        {
            "onSetThreshold": 75,
            "abatementThreshold": 70,
            "abatementTimeInMilliSeconds": 200,
            "generateOciHeader": false,
            "overloadReductionMetric": 20,
            "periodOfValidity": 5
        }
    },
    {
        "thresholdLevel": "WARN",
        "data":
        {
            "onSetThreshold": 68,
            "abatementThreshold": 65,
            "abatementTimeInMilliSeconds": 200,
            "generateOciHeader": false,
            "overloadReductionMetric": 10,
            "periodOfValidity": 5
        }
    }
]

2.12 Configuring NRF

This section provides information about configuration of NRF preferred by SCP for access token requests.

Resources

The following table describes the resource name to retrieve and update the NRF data based on the query parameters.

Table 2-115 Resource Name

Resource Name Resource URI HTTP Method Description
nrf-configuration /ocscp/scpc-configuration/v1/nrf-configuration GET Retrieves NRF configurations.
nrf-configuration /ocscp/scpc-configuration/v1/nrf-configuration PUT Updates NRF configurations.

Data Model

Request Body

The following table describes the field names of the NrfConfigurationWrapper data model.

Table 2-116 NrfConfigurationWrapper

Field Name Data Type Mandatory (M) or Optional(O) Default Value Supported Values Description
Service String M "nnrf-oauth2" "nnrf-oauth2", "nnrf-disc" Indicates the service name of the preferred NRF configuration.
NrfConfigData JSON M See Table 2-117   Configures preferred NRF.

This parameter can be configured as nrfInstanceId or nrfSetId or both.

Table 2-117 NrfConfigData

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
nrfInstanceId String C 6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a Indicates the NF Instance ID of the preferred NRF.

Note: When only nfinstanceid is provided, then SCP forwards the route to the matching NRF with nfinstanceid.

nrfSetId Array C setnrfl1.nrfset.5gc.mnc012.mcc345 The NF Set ID of the preferred NRF.

Array(nrfSetid) uses the value from the first index even if multiple values are added.

Note: When only nfSetId is provided, then SCP supports load balancing to the matching NRFs selected by nfSetId.

Note:

If both nfinstanceid and nfSetId are provided, SCP forwards the route to the matching NRF with nfinstanceid; if it fails, then SCP does an alternate route to the NRFs selected by nfSetId.

Resource Definition

GET REST API

This resource fetches the NrfConfiguration data based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/nrf-configuration

Table 2-118 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
Service String O Indicates the configuration name. If the parameter is empty, all configurations are returned.

Table 2-119 array(NrfConfigurationWrapper)

Field Name Mandatory (M) or Optional(O) Cardinality Response Code Description
array(NrfConfigurationWrapper) M 1 200 OK The list of NrfConfigurations available.
Preferred NRF oauth2 GET SCP JSON example:
$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2' -H 'accept:
    application/json'

{
  "service": "nnrf-oauth2",
  "nrfConfigData": {
    "nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
    "nrfSetId": [
      "setnrfl1.nrfset.5gc.mnc012.mcc345"
    ]
  }
}
Preferred NRF disc GET SCP JSON example:
$ curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-disc' -H 'accept:
        application/json'

{
  "service": "nnrf-disc",
  "nrfConfigData": {
    "nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
    "nrfSetId": [
      "setnrfl1.nrfset.5gc.mnc012.mcc345"
    ]
  }
}

PUT REST API

This resource update the NrfConfiguration data using the request body.

Resource URI: /ocscp/scpc-configuration/v1/nrf-configuration

Table 2-120 Data Structures Supported by the PUT Response Body

Name Mandatory (M) or Optional(O) Cardinality Response Code Description
NrfConfiguration M 1 200 OK Indicates NrfConfiguration to be set.
ProblemDetails M 1 400 BAD REQUEST

Returns when both the nfinstancid and nrfsetid are not present.

JSON Example of NRF Configuration for PUT

Successful response for NRF oauth2:
$ curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2' -H 'accept: */*' -H 'Content-Type: application/json' -d ' {"service": "nnrf-oauth2","nrfConfigData": {"nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a","nrfSetId":["setnrfl1.nrfset.5gc.mnc012.mcc345"]}}'
{
  "service": "nnrf-oauth2",
  "nrfConfigData": {
    "nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
    "nrfSetId": [
     "setnrfl1.nrfset.5gc.mnc012.mcc345"
    ]
  }
}
Successful response for NRF disk:
$ curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-disc' -H 'accept: */*' -H 'Content-Type: application/json' -d
{
  "service": "nnrf-disc",
  "nrfConfigData": {
    "nrfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
    "nrfSetId": [
      "setnrfl1.nrfset.5gc.mnc012.mcc345"
    ]
  }
}'

Failure response:

$ curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2' -H 'accept: */*' -H 'Content-Type: application/json' -d ' {"service": "nnrf-oauth2","nrfConfigData": { }}'
{
  "title": "Forbidden",
  "status": "403",
  "detail": "Minimum one value nfinstanceid or nfinstancesetid must present",
  "instance": "/ocscp/scpc-configuration/v1/nrf-configuration?service=nnrf-oauth2",
  "cause": "INVALID_REQUEST_BODY"
}

2.13 OAuth2.0 Configurations

This section provides information about NRF configurations and configuring access token granularity and requests for NF types or NF service instances.

2.13.1 Configuring OAuth2.0 Access Token Granularity

This section provides information about configurations required for access token granularity and access token requests for NFType, specific NF, or NF instance ID.

Resources

The following table describes the resource name to retrieve, add, and delete the access token granularity configurations data based on the query parameters.

Table 2-121 Resource Name

Resource Name Resource URI HTTP Method Description
oauth2-authorization/access-token-granularity /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity GET Retrieves access token granularity configurations.
oauth2-authorization/access-token-granularity /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity PUT Adds an access token granularity configuration.
oauth2-authorization/access-token-granularity /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity DELETE Removes an access token granularity configuration.

Data Model

Request Body

The following table describes the field names of the accessTokenGranularityWrapper data model.

Table 2-122 accessTokenGranularityWrapper

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
ruleName String M defaultNonRoaming Indicates the unique string that works as an ID.
data AccessTokenGranularityData M For more information, see Table 2-123 Indicates the specific data for each OAuth2 configuration type.

Note:

There are two default entries: one for non-roaming and another for roaming.

Table 2-123 AccessTokenGranularityData

Field Name Data Type Mandatory (M) or Optional(O) Default Value Range Description
requesterPlmnIds PLMN List C null empty or plmn ids

Indicates the list of Local PLMNs IDs.

Note: These can be present for NON_ROAMING traffic, but not mandatory to have it in this scenario.

targetPlmnIds PLMN List C null empty or plmn ids

Indicates the list of target PLMN IDs.

Note: These can be present for NON_ROAMING traffic as well, but not mandatory to have it in this scenario.

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:
  • NF-TYPE: NF: Represents target NF type based access token.
  • NF-INSTANCE: Represents target NF instance ID based access token.

    For example, { "ruleName": "defaultNonRoaming", "data": { "trafficScenario": "NON-ROAMING", "targetNfTypes": [ "*" ], "supportedAccessTokenGranularity": "NF-INSTANCE", "accessTokenReqInfo": { "localPlmn": { "intraScp": { "mandatory": [ "grant_type", "nfInstanceId", "scope", "targetNfInstanceId" ] }, "interScp": { "mandatory": [ "grant_type", "nfInstanceId", "scope", "targetNfInstanceId" ] } } } } }

accessTokenReqInfo accessTokenReqInfo Data O Structure of accessTokenReqInfo Data:
"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"]
         }
       },

     "remotePlmn": {

         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"],
           "preferred": ["string1","string2"]
         },
     }
Default:
"accessTokenReqInfo": {
       "localPlmn": {
         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
         },
         "interScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfSetId","targetNfSetId"],]
         }
       }
     }
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 AccessTokenReqInfo" as per the allowed access token in the deployed network.

  • The Mandatory list defines the attributes that are required in an access token request so that NRF can issue the access token.
  • The preferred list defines the attributes that are expected to be used in access token requests based on their presence in 5G SBI requests from consumer NF; for example, if attributes are present, they are used in access token requests; otherwise, they are not.
  • The following lists the possible values for mandatory and preferred parameters:

    GRANT_TYPE("grant_type"), NF_INSTANCE_ID("nfInstanceId"), NF_TYPE("nfType"), TARGET_NF_TYPE("targetNfType"), SCOPE("scope"), TARGET_INSTANCE_ID("targetNfInstanceId"), REQUESTER_PLMN_LIST("requesterPlmnList"), REQUESTER_SNSSAI_LIST("requesterSnssaiList"), REQUESTER_FQDN("requesterFqdn"), REQUESTER_SNPN_LIST("requesterSnpnList"), TARGET_PLMN("targetPlmn"), TARGET_SNPN("targetSnpn"), TARGET_SNSSAI_LIST("targetSnssaiList"), TARGET_NSI_LIST("targetNsiList"), TARGET_SET_ID("targetNfSetId"), TARGET_NF_SERVICE_SET_ID("targetNfServiceSetId"), HMRF_ACCESS_TOKEN_URI("hnrfAccessTokenUri"), SOURCE_NF_INSTANCE_ID("sourceNfInstanceId")

    Note: Among all possible values, at least one must be included as mandatory parameter.

Response Body

The response body data model varies based on Rest operation status.

Table 2-124 Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(accessTokenGranularityWrapper) M 1 200 OK Indicates the list of oauth2 configurations (accessTokenGranularityWrapper) Matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when invalid combination or more than 3 query parameters are provided.

JSON Example of "accessTokenGranularityWrapper"

[
 {
   "ruleName": "defaultNonRoaming",
   "data": {
     "trafficScenario": "NON-ROAMING",
     "targetNfTypes": [
       "*"
     ],
     "supportedAccessTokenGranularity": "NF-TYPE",
     "accessTokenReqInfo": {
       "localPlmn": {
         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
         },
         "interScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfSetId","targetNfSetId"]
         }
       }
     }
   }
 } ,
  {
   "ruleName": "Config1",
   "data": {
     "requesterPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
     "targetPlmnIds": [{"mcc":"324","mnc":"12"}, { "mcc": "327","mnc": "15"}],
     "trafficScenario": "NON-ROAMING",
     "consumerNfTypes": ["PCF","UDM"],
     "targetNfTypes": ["PCF","UDM"],
     "targetServiceNames": ["nudm-uecm", "nudm-sdm"],
     "supportedAccessTokenGranularity": "NF-TYPE",
     "accessTokenReqInfo": {
       "localPlmn": {
         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"],
           "preferred": ["requesterFqdn","targetPlmn"]
         },
         "interScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope", "nfType", "targetNfType","targetNfSetId"],
           "preferred": ["requesterFqdn","targetPlmn"]
         }
       }
     }
   }
 },
 {.....}
]

Resource Definition

GET REST API

This resource fetches the Oauth2 configuration (accessTokenGranularityWrapper) based on the query parameters.

If no query parameter is provided, all message priorities are returned.

Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity

Table 2-125 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O Indicates the configuration name. If the parameter is empty, all configurations are returned.

Table 2-126 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
array(accessTokenGranularityWrapper) M 1 200 OK Indicates the list of OAuth2 configurations (accessTokenGranularityWrapper) matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than three query parameters are provided.

Example

Successful response 1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity" -H "accept: application/json"

Response Body:

[
 {
   "ruleName": "defaultNonRoaming",
   "data": {
     "trafficScenario": "NON-ROAMING",
     "targetNfTypes": [
       "*"
     ],
     "supportedAccessTokenGranularity": "NF-TYPE",
     "accessTokenReqInfo": {
       "localPlmn": {
         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
         },
         "interScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType", "targetNfType","targetNfSetId"]
         }
       }
     }
   }
 } ,
  {
   "ruleName": "Config1",
   "data": {
     "requesterPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
     "targetPlmnIds": [{"mcc":"324","mnc":"12"}, { "mcc": "327","mnc": "15"}],
     "trafficScenario": "NON-ROAMING",
     "consumerNfTypes": ["PCF","UDM"],
     "targetNfTypes": ["PCF","UDM"],
     "targetServiceNames": ["nudm-uecm", "nudm-sdm"]
     "supportedAccessTokenGranularity": "NF-TYPE",
     "accessTokenReqInfo": {
       "localPlmn": {
         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"],
           "preferred": ["string1","string2"]
         },
         "interScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope", "nfType", "targetNfType","targetNfSetId"],
           "preferred": ["string1","string2"]
         }
       }
     }
   }
 },
 {.....}
]

Successful response 2

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=defaultNonRoaming" -H "accept: application/json"
[
  {
   "ruleName": "defaultNonRoaming",
   "data": {
     "trafficScenario": "NON-ROAMING",
     "targetNfTypes": [
       "*"
     ],
     "supportedAccessTokenGranularity": "NF-TYPE",
     "accessTokenReqInfo": {
       "localPlmn": {
         "intraScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType","targetNfType"]
         },
         "interScp": {
           "mandatory": ["grant_type","nfInstanceId", "scope","nfType", "targetNfType","targetNfSetId"]
         }
       }
     }
   }
 }   
]  

Failure response

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularityruleName=ojhasflakhsdvg" -H "accept: application/json"
{
  "title": "Not Found",
  "status": "404",
  "detail": "access Token Granularity configuration data not found against given query parameter(s), Please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/ruleName=ojhasflakhsdvg",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource adds one Oauth 2 configuration (accessTokenGranularityWrapper) using the request body.

If no query parameter is provided, all message priorities are returned.

Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity

Table 2-127 Data Structures Supported by the PUT Response Body

Name Mandatory (M) or Optional(O) Cardinality Response Code Description
array(accessTokenGranularityWrapper) M 1 200 OK Indicates the list of oauth2 configurations (accessTokenGranularityWrapper) matching criteria.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails when an invalid combination or more than three query parameters are provided.

Example

Successful response$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ruleName\":\"Config2\",\"data\":{\"trafficScenario \":\"NON-ROAMING\"},\"targetNfTypes\":\["PCF\"]},\"supportedAccessTokenGranularity\":"NFType\"}"

{
    "ruleName": "Config2",
    "data": {
      "trafficScenario ": "NON-ROAMING",
      "targetNfTypes": ["PCF"],
      "supportedAccessTokenGranularity": "NFType"
    }
 } 
 
200 OK
Failure response$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ruleName\":\"Config2\",\"data\":{\"targetNfTypes\":\["PCF\"]},\"supportedAccessTokenGranularity\":"NFType\"}"
{
  "title": "Bad Request",
  "status": "400",
  "detail": "trafficScenario Object is missing, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity",
  "cause": "MANDATORY_IE_MISSING"
}

DELETE REST API

This resource removes one Oauth 2 configuration (accessTokenGranularityWrapper) based on query parameters.

Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity

Table 2-128 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String O 1 Defines the name of the rule. The name of the rule must be unique.

Table 2-129 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None - - 204 OK In a success case, only the response code is returned.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found.

Example

Successful response

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=Config2"-H "accept: application/json"*/*"
204OK

Failure response

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/access-token-granularity?ruleName=Config222" -H "accept: */*"
{
  "title": "Not Found",
  "status": "404",
  "detail": "oauth2-authorization/access-token-granularity configuration data not found for the given 'ruleName': Config222",
  "instance": "/ocscp/scpc-configuration/v1/oauth2-authorizationy/Config222",
  "cause": "DATA_NOT_FOUND"
}

2.13.2 Configuring OAuth2.0 Local PLMN Required

This section provides information about configurations required for local PLMN OAuth2.0.

Resources

The following table describes the resource name to retrieve, add, and remove the Oauth2 required configurations data based on the query parameters.

Table 2-130 Resource Name

Resource Name Resource URI HTTP Method Description
oauth2-authorization/local-plmn-oauth2-required-config /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config GET Retrieves the Oauth2 required configurations.
oauth2-authorization/local-plmn-oauth2-required-config /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config PUT Adds and updates the Oauth2 required configuration.
oauth2-authorization/local-plmn-oauth2-required-config /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config DELETE Removes one Oauth2 required configuration.

Data Model

Request Body

The following table describes the field names of the Oauth2RequiredWrapper data model.

Table 2-131 Oauth2RequiredWrapper

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
ruleName String M default Indicates a unique string that works as an ID.
data LocalNfOauth2RequiredData M See Table 2-132 Indicates the specific data for each OAuth2 configuration type.

Table 2-132 LocalNfOauth2RequiredData

Field Name Data Type Mandatory (M) or Optional(O) Default Value Range Description
nfType String M * * or Valid NF type Indicates the producer NF types for this configuration.
localPlmnIds PLMN List O - empty or Valid service Names Indicates the list of Local PLMNs IDs of Producers.

Following this pattern: [{“mcc”:“234",“mnc”:“987"},{“mcc”:“123",“mnc”:“987"},{...}....]

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:
  • If true, it means an access token is required at the selected target NF service instance and for service requests.
  • If false, then it means an access token is not required at the selected target NF service instance for service requests.
defaultScope Oauth2DefaultScopeData O {scopeSource:NFTYPE} "SERVICE-SPECIFIC"/"NF-TYPE"/ "CUSTOM-SCOPE"

Provides different scopes selection options which can be used in the access token process.

SERVICE-SPECIFIC: The scope is selected from incoming service request.

NF-TYPE: The scope is selected based on the configured NF type (all the services under this NF type will be the scope list).

CUSTOM-SCOPE: Allows to explicitly configure the required NF services for scope.

Table 2-133 Oauth2DefaultScopeData Model

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
scopeSource enum M NFTYPE Indicates enum with three different values:ScopeSourceEnum { "SERVICE-SPECIFIC", "NF-TYPE", "CUSTOM-SCOPE";}
scopelist Array C - List of of valid services, this is mandatory when scopeSource is CUSTOM-SCOPE and SERVICE-SPECIFIC and NF-TYPE are null.

Response Body

The response body data model varies based on REST operation status.

Table 2-134 Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(Oauth2RequiredWrapper) M 1 200 OK List of OAuth2 configurations (Oauth2RequiredWrapper) matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than three query parameters are provided.
Example,
[
  {
    "ruleName": "default",
    "data": {
      "nfType": "*"
      "oauth2Required": false,      
      "defaultScope": {
        "scopeSource": "NF-TYPE"
     }
    }
  },{
    "ruleName": "config1",
    "data": {
      "nfType": "AMF",
      "localPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
      "serviceNames": ["nudm-ee"],
      "nfInstanceIdsList": ["1aaf1bbc-6e4a-4454-a507-11111111111", "1aaf1bbc-6e4a-4454-a507-222222222222"],
      "nfServiceInstanceIdsList": ["1aaf1bbc-6e4a-4454-0000-11111111111", "1aaf1bbc-6e4a-4454-0000-222222222222"],
      "oauth2Required": true,      
      "defaultScope": {
        "scopeSource": "CUSTOM-SCOPE",
        "scopelist":["nudm-uecm", "nudm-sdm"]
        }     
     }
  },{
      ......
      ......
  }
]

Resource Definition

GET REST API

This resource fetches the Oauth2 configuration (Oauth2RequiredWrapper) based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config

Table 2-135 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O Indicates the configuration name. If the parameter is empty, all configurations are returned.

Table 2-136 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
array(Oauth2RequiredWrapper) M 1 200 OK Indicates the list of oauth2 configurations (Oauth2RequiredWrapper) matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than three query parameters are provided.

Example

Successful response 1$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config" -H "accept: application/json"

[
  {
    "ruleName": "default",
    "data": {
      "nfType": "*"
      "oauth2Required": false,      
      "defaultScope": {
        "scopeSource": "NF-TYPE"
     }
    }
  },{
    "ruleName": "config1",
    "data": {
      "nfType": "AMF",
      "localPlmnIds": [{"mcc":"325","mnc":"13"}, { "mcc": "326","mnc": "14"}],
      "serviceNames": ["nudm-ee"],
      "nfInstanceIdsList": ["1aaf1bbc-6e4a-4454-a507-11111111111", "1aaf1bbc-6e4a-4454-a507-222222222222"],
      "nfServiceInstanceIdsList": ["1aaf1bbc-6e4a-4454-0000-11111111111", "1aaf1bbc-6e4a-4454-0000-222222222222"],
      "oauth2Required": true,      
      "defaultScope": {
        "scopeSource": "CUSTOM-SCOPE",
        "scopelist":["nudm-uecm", "nudm-sdm"]
        }     
     }
  },{
      ......
      ......
  }
 
]
Failure response$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-configruleName=ojhasflakhsdvg" -H "accept: application/json"
{
  "title": "Not Found",
  "status": "404",
  "detail": "oauth2 configuration data not found against given query parameter(s), Please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/ruleName=ojhasflakhsdvg",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource adds one Oauth 2 configuration (Oauth2RequiredWrapper) using the Request Body.

Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config

Table 2-137 Data Structures Supported by the PUT Response Body

Name Mandatory (M) or Optional(O) Cardinality Response Code Description
array(Oauth2RequiredWrapper) M 1 200 OK Indicates the list of oauth2 configurations (Oauth2RequiredWrapper) matching criteria
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than three query parameters are provided.

Example

Successful response$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ruleName\":\"Config2\",\"data\":{\"NFType\":\"PCF\"},\"oauth2Required\":true}"

{
    "ruleName": "Config2",
    "data": {
        "nfType": "PCF",
        "oauth2Required": true,
     }
}
 
200 OK

DELETE REST API

This resource removes one Oauth 2 configuration (Oauth2RequiredWrapper) based on query parameters.

Resource URI: /ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config

Table 2-138 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String O 1 Indicates the rule name.

Table 2-139 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None - - 204 OK Returns the successful response. Only response code is returned.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found.

Example

Successful response

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config?ruleName=Config2" -H "accept: application/json" */*"
 
204 OK

Failure response$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/oauth2-authorization/local-plmn-oauth2-required-config?ruleName=Config222" -H "accept: */*"

{
  "title": "Not Found",
  "status": "404",
  "detail": "Oauth2 configuration data not found for the given 'ruleName': Config222",
  "instance": "/ocscp/scpc-configuration/v1/oauth2-authorizationy/Config222",
  "cause": "DATA_NOT_FOUND"
}

2.14 Configuring Error Profiles

This section provides information about configuring different Error Profiles, which can be used to build problem details sent in response body to the consumer.

Resources

The following table describes the resource name to retrieve, add, update, and remove error profile configuration based on the query parameters.

Table 2-140 Resource Name

Resource Name Resource URI HTTP Method Description
error-response-profile /ocscp/scpc-configuration/{version}/error-response-profile GETALL Retrieves all error profile configurations.
error-response-profile /ocscp/scpc-configuration/{version}/error-response-profile/{name} GET Retrieves error profile configuration for given name.
error-response-profile /ocscp/scpc-configuration/{version}/error-response-profile/{name} PUT Add or update error profile configuration for given name.
error-response-profile /ocscp/scpc-configuration/{version}/error-response-profile/{name} DELETE Deletes error profile configuration for a given name; if the name is in use, it can't be deleted.

Data Model

Request Body

The following table describes the field names of the ErrorProfileData data type.

Table 2-141 ErrorProfileData

Field Name Data Type Mandatory (M) or Optional(O) Description
name (256) String M Name of the configuration record
errorProfile JSON M Error Profile JSON object

Table 2-142 ErrorProfile

Parameter Data Type Mandatory (M) or Optional(O) Default Value Allowed Value Description
status Integer M 500 300-511 HTTP Status Code
cause String M UNSPECIFIED_NF_FAILURE For list of error causes, see Table 2-148 This parameter indicates the list of error causes that are specific to the occurrence of the problem.
customCause String (256) C null NA User defined custom cause. This field will be used only if cause field value is set to "CUSTOM".
title String (256) O Internal Server Error NA If this field is null, a standard HTTP status code description is added.
detail enum O null NA If present, the same data is used; otherwise, the application can add it optionally.
retryAfter Integer C 0 NA This parameter indicates the number of seconds after client should retry.
redirectURL String (256) C null NA This parameter indicates the AbsoluteURL of the resource to which the message is redirected.
Request Body JSON Format
    
{
  "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

The following table describes the data structure supported by the GET method on this resource.

Table 2-143 Data structures supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
errorProfile M 1.N 200 OK Indicates error profile configurations.

This resource fetches all the error profile based on name.

Resource URI: /ocscp/scpc-configuration/{version}/error-response-profile/{name}

The following table describes the path parameter supported by the GET method on this resource.

Table 2-144 Path Parameter

Name Data Type Mandatory (M) or Optional(O) Description
name String M Fetches configurations on name.

Example

Successful response - 1

$ curl -X 'GET'\ 'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile'\ -H 'accept:
        application/json'

[
  {
    "name": "ccaHeaderNotPresentError",
    "errorProfile": {
      "status": 400,
      "cause": "MANDATORY_IE_MISSING",
      "title": "BAD_REQUEST",
      "detail": "Bad Request, Mandatory 3gpp-Sbi-Client-Credential header missing",
      "retryAfter": 0
    }
  },
  {
    "name": "ccaVerificationError",
    "errorProfile": {
      "status": 403,
      "cause": "CCA_VERIFICATION_FAILURE",
      "title": "FORBIDDEN",
      "detail": "Forbidden, CCA verification failed",
      "retryAfter": 0
    }
  },
  {
    "name": "defaultErrorProfile",
    "errorProfile": {
      "status": 500,
      "cause": "UNSPECIFIED_NF_FAILURE",
      "title": "INTERNAL_SERVER_ERROR",
      "detail": "Internal Server Error",
      "retryAfter": 0
    }
  },
  {
    "name": "healthCheckErrorProfile",
    "errorProfile": {
      "status": 503,
      "cause": "NF_CONGESTION",
      "title": "NF service is overloaded/congested",
      "detail": "NF service is overloaded/congested"
    }
  }
]

Successful response - 2

$ curl -X 'GET'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile'\ -H 'accept:
        application/json'

[
  [
   {
    "ruleName": "udm_test",
    "data": {
      "nfServiceName": "nudm_uecm",
      "httpMethods": [
        "GET",
        "POST"
      ],
      "messageType": "REQUEST",
      "enableAssignPriority": true,
      "assignPriority": 10,
      "enableOverridePriority": false,
      "overridePriority": -1
    }
  }
]

Failure Case

$ curl -X 'GET'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultError'\-H 'accept: application/json'
     

{
  "title": "Not Found",
  "status": "404",
  "detail": "Error Profile data not found against given name. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/error-response-profile/defaultError",
  "cause": "DATA_NOT_FOUND"
}
]

PUT REST API:

This resource adds or updates the error profile configuration using the request body.

Resource URI: /ocscp/scpc-configuration/{version}/error-response-profile/{name}

Table 2-145 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
errorProfile M 1 200 OK Indicates Error Profile to be added.
ProblemDetails M 1 400/404 Returns ProblemDetails.

Example

Successful response

$ curl -X 'PUT'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile'\  -H 'accept:
        application/json'\  -H 'Content-Type:
        application/json'\ -d '{"name":
        "defaultErrorProfile","errorProfile": {"status": 500,"cause":
        "UNSPECIFIED_NF_FAILURE","title": "INTERNAL_SERVER_ERROR", "detail":  "Internal
        Server Error", "retryAfter": 0}}'

{
  "name": "defaultErrorProfile",
  "errorProfile": {
    "status": 500,
    "cause": "UNSPECIFIED_NF_FAILURE",
    "title": "INTERNAL_SERVER_ERROR",
    "detail": "Internal Server Error",
    "retryAfter": 0
  }
}

Failure Case

$ curl -X 'PUT'\'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile'\-H 'accept:
        application/json'\-H 'Content-Type:
        application/json'\ -d '{"name":
        "defaultErrorProfile","errorProfile": {"status": 500,"cause":  "abc","title":
        "INTERNAL_SERVER_ERROR","detail": "Internal Server  Error", "retryAfter":
        0}}' 
     

{
  "title": "Bad Request",
  "status": "400",
  "detail": "The value given should be either 'custom' or present in ApplicationError Enum List. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile",
  "cause": "MANDATORY_IE_MISSING"
}

DELETE REST API:

This resource deletes the error profile configuration data based on name.

Resource URI: /ocscp/scpc-configuration/{version}/error-response-profile/{name}

Table 2-146 Path Parameter

Name Data Type Mandatory (M) or Optional(O) Description
name String M Delete configurations for name.

Table 2-147 Data structures supported by the Delete Response Body on this resource

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
ProblemDetails M 1 400/404 Problem Details.

Example

Successful response
$ curl -X 'DELETE' \'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile' \-H 'accept: application/json'Server response
Code Details
204
Response headers
date: Fri,12 May 2023 07:13:56 GMT 
Failure case
$ curl -X 'DELETE' \'http://<localhost>:8081/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile' \ -H 'accept: application/json'

{
  "title": "Not Found",
  "status": "404",
  "detail": "Error Profile data not found against given name. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/error-response-profile/defaultErrorProfile",
  "cause": "DATA_NOT_FOUND"
}
Protocol or application Error

Table 2-148 Common Protocol and Application Errors

Protocol or application Error HTTP status code Description
INVALID_API 400 Bad Request The HTTP request contains an unsupported API name or API version in the URI.
INVALID_MSG_FORMAT 400 Bad Request The HTTP request has an invalid format.
INVALID_QUERY_PARAM 400 Bad Request The HTTP request contains an unsupported query parameter in the URI. See NOTE 1.
MANDATORY_QUERY_PARAM_INCORRECT 400 Bad Request A mandatory query parameter, or a conditional query parameter that is mandatory, for an HTTP method was received in the URI with a semantically incorrect value. See NOTE 1.
OPTIONAL_QUERY_PARAM_INCORRECT 400 Bad Request An optional query parameter for an HTTP method was received in the URI with a semantically incorrect value that prevents successful processing of the service request. See NOTE 1.
MANDATORY_QUERY_PARAM_MISSING 400 Bad Request A query parameter that is defined as mandatory, or as conditional but mandatory, for an HTTP method is not included in the URI of the request. See NOTE 1.
MANDATORY_IE_INCORRECT 400 Bad Request A mandatory IE within the JSON body, within a variable part of an apiSpecificResourceUriPart or within an HTTP header, or a conditional IE but mandatory for an HTTP method was received with a semantically incorrect value. See NOTE 1.
OPTIONAL_IE_INCORRECT 400 Bad Request An optional IE within the JSON body or within an HTTP header for an HTTP method was received with a semantically incorrect value that prevents successful processing of the service request. See NOTE 1.
MANDATORY_IE_MISSING 400 Bad Request A mandatory IE within the JSON body or within the variable part of an apiSpecificResourceUriPart or within an HTTP header, or a conditional IE but mandatory, for an HTTP method is not included in the request. See NOTE 1.
UNSPECIFIED_MSG_FAILURE 400 Bad Request The request is rejected due to an unspecified client error. See NOTE 2.
RESOURCE_CONTEXT_NOT_FOUND 400 Bad Request The notification request is rejected because the callback URI still exists in the receiver of the notification, but the specific resource context identified within the notification payload is not found in the NF service consumer.
CCA_VERIFICATION_FAILURE 403 Forbidden The request is rejected due to a failure to verify the CCA at the receiving entity, for example, an NRF or NF service producer.
TOKEN_CCA_MISMATCH 403 Forbidden The request is rejected due to a mismatch between the subject claim in the access token and the subject claim in the CCA.
MODIFICATION_NOT_ALLOWED 403 Forbidden The request is rejected because the contained modification instructions attempt to modify IE, which is not allowed to be modified.
SUBSCRIPTION_NOT_FOUND 404 Not Found The request for modification or deletion of the subscription is rejected because the subscription is not found in the NF.
RESOURCE_URI_STRUCTURE_NOT_FOUND 404 Not Found

The request is rejected because a fixed part after the first variable part of an apiSpecificResourceUriPart (as defined in clause 4.4.1 of 3GPP TS 29.501 [5]) is not found in the NF.

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:

  1. invalidParams attribute is included in the "ProblemDetails" data structure, indicating unsupported, missing, or incorrect IEs, query parameters, or 3gpp-Sbi-Discovery-* headers.
  2. This application error indicates an error in the HTTP request, and there is no other application error value that can be used instead.
  3. This application error indicates an error condition in the NF, and there is no other application error value that can be used instead.
  4. 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.
  5. 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.
  6. The NF service consumer (as receiver of the cause code) should stop sending subsequent requests addressing the resource contexts in the producer's NF instance (for NF_FAILOVER) or NF service instance (for NF_SERVICE_FAILOVER) to avoid massive rejections.  The NF service consumer may reselect an alternative NF service producer as specified in clause 6.5 of 3GPP TS 23.527 [38], for example, using the binding indication of resource context. It is implementation specific for the NF service consumer to determine when and whether the NF producer becomes available again, for example, when there is no other alternative available or at expiry of a local configured timer.

2.15 Outlier Detection Configuration

This section describes the REST API configurations required for Outlier Detection. Outlier Detection is configured for each service in the routing option and for inter-SCP and SEPP in System Options. Outlier Detection configurations created using this REST API are used in Routing Options for NF Services and in System Options for inter-SCP and SEPP. This feature can be disabled at the global or system level and enabled at the NF service level in the routing option to work for those services.

Resources

The following table describes the resource URIs and the corresponding HTTP methods for the outlier-detection resource type.

Table 2-149 Resources

Resource Name Resource URI HTTP Method Description
outlier-detection /ocscp/scpc-configuration/{version}/outlier-detection GET Retrieves all outlier-detection configurations.
outlier-detection /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} GET Retrieves outlier-detection configuration for a given ruleName.
outlier-detection /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} PUT Create or update the outlier-detection configuration for a given ruleName.
outlier-detection /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} PATCH Updates outlier-detection configuration by ruleName.
outlier-detection /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName} DELETE Removes outlier-detection configuration for a given ruleName. If the rule is in use, then it cannot remove the ruleName.

Data Model

Request Body

The following table describes outlierDetectionConfig data types.

Table 2-150 outlierDetectionConfig

Field Name Data Type Mandatory (M) or Optional(O) Default Value Range Description
ruleName String M NA NA Provides the unique rule present in the outlier detection table that must not be repeated.
consecutiveErrors Integer O 100 5 - 500 Number of consecutive errors after which an endpoint is considered unhealthy.
interval String O 86400 seconds 30 seconds - 86400 seconds Interval after which stale records are removed from the outlier data cache. Stale records are identified as the records that are not referenced by any message in this interval.

Note: The interval value must be significantly greater than baseEjectionTime.

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

JSON Format
{
  "ruleName": "defaultRule",
  "outlierDetectionConfigData": {
    "consecutiveErrors": 100,
    "interval": "86400s",
    "baseEjectionTime": "5s",
    "ErrorList": [
      "500"
    ]
  }
}   

Response Body

JSON Format
{
  "ruleName": "defaultRule",
  "outlierDetectionConfigData": {
    "consecutiveErrors": 100,
    "interval": "86400s",
    "baseEjectionTime": "5s",
    "ErrorList": [
      "500"
    ]
  }
}   

Resource Definition

This section describes GET, PUT, PATCH, and DELETE resource types supported by this feature.

GET REST API

This section describes the resources to fetch all the outlier-detection configurations.

Resource URI: /ocscp/scpc-configuration/{version}/outlier-detection

Table 2-151 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
outlierDetectionConfig M 1,,N 200 OK Indicates outlier-detection configurations.

Resource to fetch all the outlier-detection configurations based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}

Table 2-152 Path Parameters

Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Fetches configurations on ruleName.

Table 2-153 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
outlierDetectionConfig M 1 200 OK Indicates outlier-detection configurations.
ProblemDetails M 1 404 Provides problem details.

PUT REST API

This section describes outlier-detection configurations for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}

Table 2-154 Data Structures Supported by the PUT Request Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
outlierDetectionConfig M 1 200 OK Indicates outlier-detection configurations.
ProblemDetails M 1 400 or 404 BAD REQUEST Provides problem details.

PATCH REST API

This section describes resource to update the outlier-detection configurations using the request body.

Resource URI: /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}

Table 2-155 Data Structures Supported by the PATCH Request Body

Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Rule name for which Outlier Detection configuration is modified.
outlierDetectionConfig JSON 0 patchDocument to be sent. For example,[{ "op": "replace", "path": "/outlierDetectionConfigData/interval", "value": "50s" }][{ "op": "replace", "path": "/outlierDetectionConfigData/ErrorList", "value": ["500","501"] }]

DELETE REST API

This section describes resources to fetch all the outlier-detection configurations based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/outlier-detection/{ruleName}

Table 2-156 Path Parameter

Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Fetch configurations on ruleName.

Table 2-157 Data Structures Supported by the DELETE Request Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
ProblemDetails M 1 400 or 404 BAD REQUEST Provides problem details.

2.16 Configuring Ingress Rate Limiting

This section provides the following information about Ingress Rate Limiting configuration:

  • List of resources required for retrieving, configuring, and deleting the Ingress Rate Limiting data.
  • Ingress Rate Limiter data name and data type.
  • Functionalities of GET, PUT, and DELETE APIs.

Resources

The following table describes the resources for retrieving, configuring, and deleting the Ingress Rate Limiting data.

Table 2-158 Ingress Rate Limiting Resource Names

Resource Name Resource URI HTTP Method Query Parameters Description
ingressRateLimiter /ocscp/scpc-configuration/v1/ratelimit/ingress GET NFType or FQDN or NfInstanceId Retrieves Ingress Rate Limiting data configured to the corresponding supplied query parameters.
ingressRateLimiter /ocscp/scpc-configuration/v1/ratelimit/ingress PUT NA Configures Ingress Rate Limiting data using the supplied request body in the JSON format.
ingressRateLimiter /ocscp/scpc-configuration/v1/ratelimit/ingress DELETE FQDN or NfInstanceId Deletes Ingress Rate Limiting data corresponding to supplied query parameters.

Data Model

Request Body

The following table describes Ingress Rate Limiter data name and data type.

Table 2-159 IngressRateLimiterData

Name DataType Mandatory (M) or Optional(O) Cardinality Description
nfType NFType C 1

Indicates the supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: UDM, AMF, SMF, AUSF, NEF, NRF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP.

fqdn String C 1 Indicates the FQDN of consumer NF.
NfInstanceId String C 1 NfInstanceId of consumer NF
enabled Boolean O 1 Indicates whether the rate limiting is enabled for nfType/fqdn. Default value is false.
data Data M 1 Indicates the rate limit configuration data.
Data

The following table describes the types of data.

Table 2-160 Data Name and Type

Name DataType Mandatory (M) or Optional(O) Cardinality Description
config Config M 1 Indicates the rate limit data.
errorResponse ErrorResponse M 1 Indicates the error handling related data.
Config

Table 2-161 Config Data Type

Name DataType Mandatory (M) or Optional(O) Cardinality Range Description
durationInSec integer M 1 1-1 Indicates the time unit in seconds to calculate the rate. The default value is 1 second.
rate integer M 1 1- 50000 Indicates the messages or time unit to be accepted.
burstPercentage integer O 1 0 - 100 Indicates the Burst percentage used to calculate the number of burst messages allowed per 100ms.

The default value is 0.

Note: Burst Control is not supported. Therefore, any value set for this parameter does not take effect.

Table 2-162 ErrorResponse

Name DataType Mandatory (M) or Optional(O) Cardinality Range Description
errorResponse String O 1 0-200 characters

Indicates the Custom Error String used in cause field of the ProblemDetails structure as defined in the 3GPP TS 29.571 section 5.2.4.1.

Default value shall be a constant string "INGRESS-RATE-LIMITER:TOO MANY REQUESTS" auto configured by SCP.

errorCode Int M 1 3xx,4xx,5xx Indicates the Http Status code.
JSON Format
{

  "data": {
    "config": {
      "durationInSec": 1,
      "rate": 0,
      "burstPercentage" : 0
    },
    "errorResponse": {
      "errorCode": 0,
      "errorResponse": "string"
    }
  },
  "enabled": true,
  "fqdn": "string",
  "nfinstanceid":"string",
  "nfType": "string"
}
Response Body

The response body data model varies based on the Rest operation status. For more information, refer to the subsequent sections.

Table 2-163 Response Body Data Type

Data Type Description
IngressRateLimiterData Same as the request body as described in Table 2-159.
ProblemDetails Returns when an invalid combination or more than two query parameters are provided.
None Indicates an empty body.

Resource Definition

GET REST API

This resource fetches the Ingress Rate Limiting Configuration based on the query parameters. If no query parameter is provided, all the Ingress Rate Limiting Configuration data is returned.

Resource URI: /ocscp/scpc-configuration/v1/ratelimit/ingress

The following table describes URI query parameters supported by the GET method on this resource.

Table 2-164 URI Query Parameters

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
Fqdn String O 1 Indicates the FQDN of consumer NF.
NfInstanceId String O 1 NfInstanceId of consumer NF
NFType NFType O 1 Indicates the NFType supported as described in the 3GPP TS 29.510 section 6.1.6.3.11: UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIRSEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP.

Note:

Only one Query parameters is supported at a time.

The following table describes data structures supported by the GET Response Body on this resource.

Table 2-165 Data Structures

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
array(IngressRateLimiterData) M 1 200 OK Indicates the list of Ingress Rate Limiting Configuration data.
IngressRateLimiterData M 1 200 OK Indicates the Ingress Rate Limiting Configuration data.
ProblemDetails M 1 400 BAD REQUEST Indicates that the requested combination of Query Parameters is not allowed.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example:

Successful response

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress?nfType=PCF" -H "accept: */*"
{
  "nfType": "PCF",
  "data": {
    "config": {
      "rate": 1000,
      "durationInSec": 1,
      "burstPercentage": 0
    },
    "errorResponse": {
      "errorResponse": "TOO MANY REQUESTS",
      "errorCode": 429
    }
  },
  "enabled": true
}

Failure response, If the Ingress rate limiting data is not configured.

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress?fqdn=amf" -H "accept: */*"
 
{
  "title": "Not Found",
  "status": "404",
  "detail": "Ingress Rate Limiting Configuration data not found against given query parameter.",
  "instance": "/ocscp/scpc-configuration/v1/ratelimit/ingress?fqdn=amf",
  "cause": "DATA_NOT_FOUND"
}
PUT API

This resource adds Ingress Rate Limiting Configuration using the Request Body.

Resource URI: /ocscp/scpc-configuration/v1/ratelimit/ingress

Note:

One of the following fields must be present in the request body:
  • Fqdn
  • NFType

The following table describes Data structures supported by the PUT Response Body on this resource.

Table 2-166 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
IngressRateLimiterData M 1 200 OK Indicates the Ingress Rate Limiting Configuration data.
ProblemDetails M 1 400 BAD REQUEST

Indicates that both NFType and Fqdn is provided in the request.

Returns when an invalid combination or more than two query parameters are provided.

Example:

Successful response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"durationInSec\":1,\"rate\":80},\"errorResponse\":{\"errorCode\":429,\"errorResponse\":\"INGRESS-RATE-LIMITER:TOO MANY REQUESTS\"}},\"enabled\":true,\"nfType\":\"UDM\"}"
 
{
  "nfType": "UDM",
  "data": {
    "config": {
      "rate": 80,
      "durationInSec": 1,
      "burstPercentage": 0
    },
    "errorResponse": {
      "errorResponse": "INGRESS-RATE-LIMITER:TOO MANY REQUESTS",
      "errorCode": 429
    }
  },
  "enabled": true
}
 
200 OK

Failure response: If both FQDN and NFType are given in the request body.

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"durationInSec\":1,\"rate\":200},\"errorResponse\":{\"errorCode\":429,\"errorResponse\":\"TOO MANY REQUESTS\"}},\"enabled\":true,\"fqdn\":\"udm.oracle.com\",\"nfType\":\"UDM\"}"
 
{
  "title": "Bad Request",
  "status": "400",
  "detail": "Both NFType and Fqdn is provided in the request body, Only one of the 2 fields can be provided.",
  "instance": "/ocscp/scpc-configuration/ratelimit/ingress",
  "cause": "INVALID_KEY_COMBINATION"
}

Failure response: if rate divided by durationInSec is less than 10, then the configuration is considered as invalid.

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/ingress' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "data": {
    "config": {
      "burstPercentage": 0,
      "durationInSec": 1,
      "rate": 1
    },
    "errorResponse": {
       "errorResponse": "INGRESS-RATE-LIMITER:TOO MANY REQUESTS",
        "errorCode": 429
    }
  },
  "enabled": true,
  "fqdn": "amf1svc.oracle.com"
}
'
{
  "title": "Bad Request",
  "status": "400",
  "detail": "rate divided by durationInSec should be more than or equal to 10, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ratelimit/ingress",
  "cause": "MANDATORY_IE_INCORRECT"
}
DELETE API:

This resource deletes the Ingress Rate Limiting Configuration data based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/ratelimit/ingress

The following table describes URI query parameters supported by the DELETE method on this resource.

Table 2-167 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
Fqdn String O 1 Indicates the FQDN of consumer NF.
NfInstanceId String O 1 NfInstanceId of Consumer NF

Note:

Rate limit configuration corresponding to NFType is used as the default configuration and only update operation is supported on it.

The following table describes Data structures supported by the DELETE Response Body on this resource.

Table 2-168 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     200 OK Indicates that the response is successful.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Returns when an invalid combination or more than two query parameters are provided.

Example

Successful response

curl -X DELETE
    "http://<localhost>:8081/ocscp/scpc-configuration/v1/ingressratelimiter?fqdn=udm.oracle.com" -H
    "accept: */*" 200 OK

Failure Response: When no matching entry is found.

curl -X DELETE
    "http://<localhost>:8081/ocscp/scpc-configuration/v1/ingressratelimiter?fqdn=amf" -H "accept:
    */*" { "title": "Not Found", "status": "404", "detail": "Ingress Rate Limiting
    Configuration data not found against given fqdn.", "instance":
    "/ocscp/scpc-configuration/v1/ratelimit/ingress?fqdn=amf", "cause": "DATA_NOT_FOUND"
    }

2.17 Configuring Egress Rate Limiting and Global Egress Rate Limiting

This section provides the information about Egress Rate Limiting and Global Egress Rate Limiting configurations:

  • List of resources required for retrieving, configuring, and deleting the rate limiting data.
  • Rate limiter data name and data type.
  • Functionalities of GET, PUT, and DELETE REST APIs.

Resources

The following table describes the resources for retrieving, configuring, and deleting the egress rate limiting data.

Table 2-169 Egress Rate Limiting Resource Names

Resource Name Resource URI HTTP Method Query Parameters Description
egressRateLimiter /ocscp/scpc-configuration/v1/ratelimit/egress GET Combination of NFType/FQDN/serviceName Retrieves egress rate limiting data configured to the corresponding supplied query parameters.
egressRateLimiter /ocscp/scpc-configuration/v1/rateimit/egress PUT NA Configures egress rate limiting data using the supplied request body in the JSON format.
egressRateLimiter /ocscp/scpc-configuration/v1/ratelimit/egress DELETE Combination of NFType/FQDN/serviceName Removes egress rate limiting data corresponding to supplied query parameters.

Data Model

Request Body

The following table describes egress rate limiter data name and data type.

Table 2-170 EgressRateLimiterData

Name DataType Mandatory (M) or Optional(O) Cardinality Description
nfType NFType C 1 Indicates the supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: NRF, UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP.
serviceName ServiceName C 1 Indicates the ServiceName as per the supported NFType.
fqdn String C 1 Indicates the FQDN of producer NF.
enabled Boolean O 1 Indicates whether the rate limiting is enabled for this entry: Default value is false.
data Data M 1 Indicates the rate limit configuration data.
Data

The following table describes the types of data.

Table 2-171 Data Name and Type

Name DataType Mandatory (M) or Optional(O) Cardinality Description
config Config M 1 Indicates the rate limit data.
errorResponse ErrorResponse C 1 Indicates the error handling related data.
Config

Table 2-172 Config Data Type

Name DataType Mandatory (M) or Optional(O) Cardinality Range Description
durationInSec integer M 1 1-1 Indicates the time unit in seconds to calculate the rate. The default value is 1 second.
rate integer M 1 1- 75000 Indicates the messages / time unit to be accepted when aggregatedRate is set to 0 or the Global Egress Rate Limit feature is disabled.
aggregatedRate integer O 1 0- 75000

Indicates the messages / time unit to be accepted when the Global Egress Rate Limit feature is enabled.

If it is set to 0, this field is ignored and this configuration is not considered for Global Egress Rate Limit. It is considered for local rate limit.

burstPercentage integer O 1 0 - 100 Indicates the Burst percentage used to calculate the number of burst messages allowed per 100ms.

Note: Burst Control is not supported. Therefore, any value set for this parameter does not take effect.

action String O 1

"sendResponse" / "AlternateRoute"

Default value is "sendResponse"

Defines the action if the rate limit quota is exhausted.

"sendResponse": sends configured error response back immediately

"AlternateRoute": attempts to reselect the equivalent NF and send the messages to that reselected NF

Table 2-173 ErrorResponse

Name DataType Mandatory (M) or Optional(O) Cardinality Range Description
errorResponse String O 1 0-200

Indicates the Custom Error String used in cause field of the ProblemDetails structure as defined in the 3GPP TS 29.571 section 5.2.4.1.

Default value shall be a constant string "EGRESS-RATE-LIMITER:TOO MANY REQUESTS" auto configured by SCP.

errorCode Int M 1 3xx,4xx,5xx Indicates the Http Status code.
JSON Format
{
  "data": {
    "config": {
      "action": "string",
      "aggregatedRate": 0,
      "burstPercentage": 0,
      "durationInSec": 1,
      "rate": 0
    },
    "errorResponse": {
      "errorCode": 0,
      "errorResponse": "string"
    }
  },
  "enabled": true,
  "fqdn": "string",
  "nfType": "string",
  "serviceName": "string"
}
Response Body

The response body data model varies based on the REST operation status.

Table 2-174 Response Body Data Type

Data Type Description
EgressRateLimiterData Same as the request body as described in Table 2-170.
ProblemDetails Indicates the ProblemDetails structure as defined in the 3GPP TS 29.571 section 5.2.4.1.
None Indicates an empty body.

Resource Definition

GET REST API

This resource fetches the egress rate limiting configuration based on the query parameters. If no query parameter is provided, all the egress rate limiting configuration data is returned.

Resource URI: /ocscp/scpc-configuration/v1/ratelimit/egress

The following table describes URI query parameters supported by the GET method on this resource.

Table 2-175 URI Query Parameters

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
NFType NFType O 1

Indicates the supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIRSEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP.

serviceName ServiceName O 1 Indicates the ServiceName as per the supported NFType.
Fqdn String O 1 Indicates the FQDN of producer NF.

Note:

The valid combination of query parameters are as follows:
  • Fqdn + serviceName
  • Fqdn + NFType
  • Fqdn
  • serviceName
  • NFType

The following table describes data structures supported by the GET Response Body on this resource.

Table 2-176 Data Structures Supported by the GET Response Body on this resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
array (EgressRateLimiterData) M 1 200 OK Indicates the list of egress rate limiting configuration data.
EgressRateLimiterData M 1 200 OK Indicates the egress rate limiting configuration data.
ProblemDetails M 1 400 BAD REQUEST Indicates that the requested combination of query parameters is not allowed.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example:

Successful response - 1, Combination of Fqdn, serviceName

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress?serviceName=nudm-uecm&fqdn=udm1svc.scpsvc.svc.cluster.local" -H "accept: */*"
 
 {
  "fqdn": "udm1svc.scpsvc.svc.cluster.local",
  "serviceName": "nudm-uecm",
  "data": {
    "config": {
      "rate": 1000,
      "durationInSec": 1,
      "action": "AlternateRoute",
      "burstPercentage": 0,
      "aggregatedRate": 5000
    },
    "errorResponse": {
      "errorResponse": "TOO MANY REQUEST",
      "errorCode": 429
    }
  },
  "enabled": true
}

Successful response - 2, Only serviceName

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress?serviceName=nudm-uecm" -H "accept: */*"
 
{
  "serviceName": "nudm-uecm",
  "data": {
    "config": {
      "rate": 1000,
      "durationInSec": 1,
      "action": "AlternateRoute",
      "burstPercentage": 0,
      "aggregatedRate": 5000
    },
    "errorResponse": {
      "errorResponse": "TOO MANY REQUEST",
      "errorCode": 429
    }
  },
  "enabled": true
}

Failure case, Incorrect combination of parameters such as NFType and serviceName

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress?nfType=UDM&serviceName=nudm-uecm" -H "accept: */*"
Response Body :
{
  "title": "Bad Request",
  "status": "400",
  "detail": "Requested combination of Query Parameters is not allowed, please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/ratelimit/egress?nfType=UDM&serviceName=nudm-uecm",
  "cause": "INVALID_QUERY_PARAM"
}
PUT REST API

This resource adds and updates egress rate limiting configuration using the Request Body.

Resource URI: /ocscp/scpc-configuration/v1/ratelimit/egress

The following table describes data structures supported by the PUT Response Body on this resource.

Table 2-177 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
EgressRateLimiterData M 1 200 OK Indicates the egress rate limiting configuration data.
ProblemDetails M 1 400 BAD REQUEST

Indicates that both NFType and Fqdn is provided in the request.

The ProblemDetails structure is defined in the 3GPP TS 29.571 Section 5.2.4.1.

Note:

The valid combination of fields in the request body is as follows:
  • Fqdn, serviceName
  • Fqdn, NFType
  • Fqdn
  • serviceName
  • NFType

Example:

Successful response - 1, Combination of Fqdn and ServiceName.

Configuring with a global rate of 5000 with aggregatedRate field.

$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"action\":\"AlternateRoute\",\"durationInSec\":1,\"rate\":100},\"errorResponse\":{\"errorCode\":429,\"errorResponse\":\"EGRESS_RATE_LIMITER:TOO MANY REQUEST\"}},\"enable\":true,\"fqdn\":\"udm1.vzw.com\",\"serviceName\":\"nudm-uecm\"}"

{
  "fqdn": "udm1.vzw.com",
  "serviceName": "nudm-uecm",
  "enabled": true,
  "data": {
    "config": {
      "rate": 100,
      "durationInSec": 1,
      "burstPercentage" : 0,
      "action": "AlternateRoute"
    },
    "globalConfig": {
      "rate": 120,
      "durationInSec": 1,
      "burstPercentage" : 0,
      "action": "AlternateRoute"
    },      
    "errorResponse": {
      "errorResponse": "EGRESS_RATE_LIMITER:TOO MANY REQUEST",
      "errorCode": 429
    }
  }
}

200 OK

Successful response - 2, Combination of Fqdn and ServiceName.

curl -X 'PUT' \
  'http://<SCP configuration FQDN>:30446/ocscp/scpc-configuration/v1/ratelimit/egress' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "fqdn": "nef1.vzw.com",
  "serviceName": "nnef-eventexposure",
  "enabled": true,
  "data": {
    "config": {
      "rate": 100,
      "durationInSec": 1,
      "burstPercentage" : 0,
      "action": "AlternateRoute"
    },
    "globalConfig": {
      "rate": 120,
      "durationInSec": 1,
      "burstPercentage" : 0,
      "action": "AlternateRoute"
    },     
    "errorResponse": {
      "errorResponse": "EGRESS_RATE_LIMITER:TOO MANY REQUEST",
      "errorCode": 429
    }
  }
}'

Failure case 1: Incorrect combination of fields such as NFType and serviceName in request body

$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"config\":{\"action\":\"AlternateRoute\",\"durationInSec\":1,\"rate\":300},\"errorResponse\":{\"errorCode\":0,\"errorResponse\":\"\"}},\"enable\":true
,\"nfType\":\"UDM\",\"serviceName\":\"nudm-uecm\"}"


Response Body:
{
  "title": "Bad Request",
  "status": "400",
  "detail": "Incorrect combination of Keys in request Body, please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/ratelimit/egress",
  "cause": "INVALID_KEY_COMBINATION"
}

Failure response: if rate divided by durationInSec is less than 10, then the configuration is considered as invalid.

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/ratelimit/egress' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "data": {
    "config": {
      "action": "sendResponse",
      "burstPercentage": 0,
      "durationInSec": 1,
      "rate": 1,
      "aggregatedRate": 0
    },
    "errorResponse": {
      "errorResponse": "EGRESS-RATE-LIMITER:TOO MANY REQUESTS",
        "errorCode": 429
    }
  },
  "enabled": true,
  "fqdn": "udm1svc.scpsvc.svc.cluster.local"
}'
{
  "title": "Bad Request",
  "status": "400",
  "detail": "rate divided by durationInSec should be more than or equal to 10, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ratelimit/egress",
  "cause": "MANDATORY_IE_INCORRECT"
}
DELETE REST API

This resource deletes the egress rate limiting configuration data based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/ratelimit/egress

The following table describes URI query parameters supported by the DELETE method on this resource.

Table 2-178 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
NFType NFType O 1 Indicates supported NFType as described in the 3GPP TS 29.510 section 6.1.6.3.3: UDM, AMF, SMF, AUSF, NEF, PCF, SMSF, NSSF, UDR, LMF, GMLC, F5GEIR, SEPP, UPF, N3IWF, AF, UDSF, BSF, CHF, NWDAF, CUSTOM_ORACLE_SCP, SCP.
serviceName ServiceName O 1 Indicates the ServiceName as per supported NFType.
Fqdn String O 1 Indicates the FQDN of producer NF.

Note:

The valid combination of query parameters are provided as follows:
  • Fqdn, serviceName
  • Fqdn, NFType
  • Fqdn
  • serviceName

The following table describes data structures supported by the DELETE Response Body on this resource.

Table 2-179 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     200 OK Indicates that the response is successful.
ProblemDetails M 1 400 BAD REQUEST Indicates that the requested combination of query parameters is not allowed.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example

Successful response - 1, Combination of Fqdn and serviceName

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/
ratelimit/egress?fqdn=udm1.vzw.com&serviceName=nudm-uecm"-H "accept:
*/*" 200OK

Successful response - 2, Only Fqdn Delete

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/
egressratelimiter?fqdn=udm1.vzw.com"-H "accept:
*/*" 200OK

Failure case 1, Incorrect query parameter like NFType

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/
ratelimit/egress?nfType=UDM"-H "accept:
*/*" Response Body:{ "title": "Bad Request", "status": "400",
"detail": "Requested Delete combination of Query Parameters is not allowed,
please refer to the User Guide", "instance": "/ocscp/scpcconfiguration/
v1/ratelimit/egress?nfType=UDM", "cause":
"INVALID_QUERY_PARAM"}

Failure case 2, When no matching entry is found

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpcconfiguration/
v1/ratelimit/egress?serviceName=nudm-sdm"-H "accept:
*/*" Response Body:{ "title": "Not Found", "status": "404",
"detail": "Egress Rate Limiting configuration data not found against
given
query parameter(s), Please refer to the User Guide",
"instance":
"/ocscp/scpc-configuration/v1/ratelimit/egress?
serviceName=nudm-sdm", "cause": "DATA_NOT_FOUND"}

2.18 Configuring Dynamic Logging

Service Communication Proxy (SCP) provisions an option to change log levels of SCP microservices dynamically through SCP configuration service.

Retrieving all Service Level Logs

Table 2-180 Retrieving all Service Level Logs

Resource URI HTTP Method Content Type Response Codes
Configuration attributes for all service level logs
http://<ip>:<port>/ocscp/scpc-configuration/v1/all/logging GET application/json
  • 200: Successfully returns Log Levels of all SCP microservices
  • 404: No SCP Log levels found in system
Configuration attributes at service level logs
http://<ip>:<port>/ocscp/scpc-configuration/v1/<microservice-name>/logging GET application/json
  • 200: Successfully returns Log Levels of all SCP microservices
  • 404: No SCP Log levels record found for microservice
http://<ip>:<port>/ocscp/scpc-configuration/v1/<microservice-name>/logging PUT application/json
  • 200: Successfully returns Log Levels of all SCP microservices
  • 400: Request Body is empty for service
  • 404: No SCP Log levels record found for microservice

Note:

The following microservices are supported: scp-worker, scpc-notification, scpc-configuration, scpc-audit, scpc-subscription, and scpc-loadmanager.

Response Body of GET ALL Method for all Service Level Logs:

[
  {
    "scpc-audit": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "OFF"
      }
    },
    "scpc-notification": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "OFF"
      }
    },
    "scpc-subscription": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "OFF"
      }
    },
    "scpc-configuration": {
      "appLogLevel": "INFO",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "OFF"
      }
    },
    "scp-worker": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "ERROR"
      }
    },
    "scp-cache": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "OFF"
      }
    }
   },
   "scp-load-manager": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "OFF"
      }
    },
    "scp-nrfproxy": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "WARN"
      }
    },
    "scp-nrfproxy-oauth": {
      "appLogLevel": "WARN",
      "packageLogLevel": [
        {
          "packageName": "library",
          "logLevelForPackage": "OFF"
        }
      ],
      "logRateControl": {
        "rate": 100,
        "logLevel": "WARN"
      }
    }
  }
]

Response Body of GET Method at Service Level Logs:

{
  "appLogLevel": "INFO",
  "packageLogLevel": [
    {
      "logLevelForPackage": "library",
      "packageName": "OFF"
    }
  ],
  "logRateControl": {
    "rate": 100,
    "logLevel": "OFF"
  }
}

Response Body of PUT Method at Service Level Logs:

{
  "appLogLevel": "INFO",
  "packageLogLevel": [
    {
      "logLevelForPackage": "library",
      "packageName": "OFF"
    }
  ],
  "logRateControl": {
    "rate": 100,
    "logLevel": "OFF"
  }
}

Table 2-181 Logging

Attribute Name Data Type Constraints Default Values Description
appLogLevel string INFO,DEBUG,WARN,ERROR, TRACE, RX_TX_MSG_INFO WARN Specifies the log level of the application.
Note:
  • WARN is the default log level of SCP-Load-Manager, SCP-nrfProxy-oauth, SCP-nrfProxy, SCP-Cache, SCP-Worker, and SCP-Mediation.
  • INFO is the default log level of SCPC-Audit, SCPC-Configuration, SCPC-Subscription, SCPC-Notification, and SCPC-Alternate-Resolution.
  • The TRACE log level is supported by SCPC-Notification, SCPC-Audit, SCP-Load-Manager, and SCP-Cache.
  • The RX_TX_MSG_INFO log level is supported only by SCP-Worker.
  • Coherence library logs are recorded at the INFO level by default, regardless of the application log level, to capture Coherence cluster-level events.
packageLogLevel array (PackageLogLevel) - See Table 2-182. Specifies a list of individual packages and their respective log levels
logRateControl SeeTable 2-183 See Table 2-183 See Table 2-183 Specifies the log levels of the application to support rate control.

Table 2-182 PackageLogLevel

Attribute Name Data Type Constraints Default Values Description
packageName string root root Specifies the name of the package.
logLevelForPackage string INFO,DEBUG,WARN,ERROR,FATAL,OFF,TRACE WARN Specifies the log level for the given package.

Table 2-183 LogRateControl

Attribute Name Data Type Constraints Default Values Description
rate Integer 1-1000 100 Specifies the average number of logs per second that should be allowed.

Note: The default log rate change to 100 is applied only during installation, not when upgrading.

logLevel string ERROR,WARN,INFO,DEBUG,OFF OFF Specifies the log level to control log rate.

The following table describes log rate impact based on the log levels:

Table 2-184 Log Rate Impact Based on Log Levels

AppLogLevel Rate Control LogLevel Log Levels Controlled by Defined Rate per Second Log Levels Not Impacted Results
ERROR OFF NONE FATAL/ERROR All ERROR messages are delivered.
WARN OFF NONE FATAL/ERROR/WARN All ERROR/WARN messages are delivered.
INFO OFF NONE FATAL/ERROR/WARN/INFO

All ERROR/WARN/INFO messages are delivered.

DEBUG OFF NONE FATAL/ERROR/WARN/INFO/DEBUG

All ERROR/WARN/INFO/DEBUG messages are delivered.

ERROR ERROR ERROR FATAL

All ERROR logs are controlled based on the configured rate per second, and any FATAL messages are delivered with no limitation.

WARN ERROR ERROR/WARN FATAL

ERROR/WARN messages are controlled by the filter, and any FATAL messages are delivered with no limitation.

INFO ERROR ERROR/WARN/INFO FATAL

Logs are controlled together (INFO+WARN+ERROR) at the configured rate per second, and any FATAL messages are delivered with no limitation.

DEBUG ERROR ERROR/WARN/INFO/DEBUG FATAL

ERROR/WARN/INFO/DEBUG messages are controlled by the filter, and any FATAL messages are delivered with no limitation.

ERROR WARN NONE FATAL/ERROR

All ERROR messages are delivered.

WARN WARN WARN FATAL/ERROR

WARN messages are controlled by the filter, and any ERROR/FATAL messages are delivered with no limitation.

INFO WARN WARN/INFO FATAL/ERROR

WARN/INFO messages are controlled by the filter, and any ERROR/FATAL messages are delivered with no limitation.

DEBUG WARN WARN/INFO/DEBUG FATAL/ERROR

WARN/INFO/DEBUG messages are controlled by the filter, and any ERROR/FATAL messages are delivered with no limitation.

ERROR INFO NONE FATAL/ERROR

All ERROR messages are delivered.

WARN INFO NONE FATAL/ERROR/WARN

All ERROR/WARN messages are delivered.

INFO INFO INFO FATAL/ERROR/WARN

INFO logs are controlled as per the configured rate per second. INFO logs (WARN/ERROR/FATAL) would continue to be delivered.

DEBUG INFO INFO/DEBUG FATAL/ERROR/WARN

INFO/DEBUG logs are controlled as per the configured rate per second. WARN/ERROR/FATAL logs would continue to be delivered.

ERROR DEBUG NONE FATAL/ERROR

All ERROR messages are delivered.

WARN DEBUG NONE FATAL/ERROR/WARN

All ERROR/WARN essages are delivered.

INFO DEBUG NONE FATAL/ERROR/WARN/INFO

All ERROR/WARN/INFO messages are delivered.

DEBUG DEBUG DEBUG FATAL/ERROR/WARN/INFO

DEBUG logs are controlled as per the configured rate per second. INFO/WARN/ERROR/FATAL logs would continue to be delivered.

ERROR/WARN/INFO/DEBUG TRACE TRACE FATAL/ERROR/WARN/INFO

If any or all TRACE logs are controlled as per the configured rate per second, DEBUG/INFO/WARN/ERROR/FATAL logs would continue to be delivered.

Sample JSON Format with Default Value

curl -X 'PUT' \
 'http://localhost:8081/ocscp/scpc-configuration/v1/scp-worker/logging' \
-H 'accept: application/json' \
 -H 'Content-Type: application/json' \
 -d '{
 "appLogLevel": "WARN",
 "packageLogLevel": [
  {
   "packageName": "library",
   "logLevelForPackage": "OFF"
  }
 ],
 "logRateControl": {
  "rate": 100,
  "logLevel": "OFF"
 }
}'

Sample JSON Format with logLevel Enabled

curl -X 'PUT' \
 'http://localhost:8081/ocscp/scpc-configuration/v1/scp-worker/logging' \
-H 'accept: application/json' \
 -H 'Content-Type: application/json' \
 -d '{
 "appLogLevel": "WARN",
 "packageLogLevel": [
  {
   "packageName": "<some-library-name>",
   "logLevelForPackage": "ERROR"
  }
 ],
 "logRateControl": {
  "rate": 100,
  "logLevel": "ERROR"
 }
}'

Log levels during deployment

The default log levels of SCP Services can be set during deployment time as below:
# ********* LOG LEVELS OF ALL SERVICES ********* #
  serviceLogLevels:
    scpcAudit: &auditLogLevelRef INFO
    scpcConfiguration: &configLogLevelRef INFO
    scpcSubscription: &subsLogLevelRef INFO
    scpcNotification: &notifLogLevelRef INFO
    scpcAlternateResolution: &alternateResolutionLogLevelRef INFO
    scpcLoadManager: &loadManagerLogLevelRef WARN
    scpNrfProxyOauth: &nrfProxyOauthLogLevelRef WARN
    scpNrfProxy: &nrfproxyLogLevelRef WARN
    scpCache: &cacheLogLevelRef WARN
    scpWorker: &workerLogLevelRef WARN
    scpMediation: &mediationLogLevelRef WARN
    scpMediationTest: &mediationTestLogLevelRef WARN
# ******************** END ********************* #

Note:

The variables start with & are reference variables that must not be modified.

Changing log levels from internal config pod

The log levels can be changed form inside config pod.

Step: curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/all/logging" -H "accept: application/json" or to get log level of particular service. curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" Step3: To change log level of a service. Updating all services(PUT ALL) at once not supported. curl -X PUT "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appLogLevel\":\"warn\",\"packageLogLevel\":[{\"packageName\":\"library\",\"logLevelForPackage\":\"OFF\"}]}"
  1. Execute the following command into config pod:
    kubectl exec -it <config_pod_name> -n <namspace> bash
  2. Check log levels of all services as follows:
    curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/all/logging" -H "accept: application/json"
  3. 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"
  4. To change log level of a service. Updating log level for all the services at once (PUT ALL) is not supported:
    curl -X PUT "http://localhost:8081/ocscp/scpc-configuration/v1/<microservice-name>/logging" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appLogLevel\":\"warn\",\"packageLogLevel\":[{\"packageName\":\"library\",\"logLevelForPackage\":\"OFF\"}]}"
    

For performing logging configurations using the CNC Console, see Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

2.18.1 Third Party Packages

Users should never enable DEBUG logs under high traffic conditions. DEBUG logs should only be enabled when the traffic rate is very low.

The following table lists the package names and the corresponding logs that each enables:

Table 2-185 Log Packages and Their Corresponding Log Levels

Package Name Log Enabled Recommended Notes
org Enables logs for all packages that start with org. No Since it generates a lot of logs and may impact the performance of the service.
io Enables logs for all packages that start with io. No Since it generates a lot of logs and may impact the performance of the service.
org.springframework Enables logs related to the Spring Framework only. Yes NA
org.springframework.<subpackage> Enables logging for specific subpackages of the Spring Framework. Yes NA
reactor.netty Enables logging for Reactor Netty. Yes NA
reactor.netty.<subpackage> Enables logging for specific subpackages of Reactor Netty. Yes NA
org.eclipse.jetty Enables logging for Jetty-related components only.   NA
org.eclipse.jetty.<subpackage>

Enables logging for specific Jetty subpackages, such as:

  • org.eclipse.jetty.client
  • org.eclipse.jetty.http
  • org.eclipse.jetty.http2
  • org.eclipse.jetty.io
Yes NA
com.oracle.cgbu.jetty Enables logging for Oracle Custom Jetty Client. Yes NA
com.oracle.cgbu.jetty.<subpackage> Enables logging for specific subpackages of the Oracle Custom Jetty Client. Yes NA
com.zaxxer Enables logging for HikariCP. Yes This component is used to manage DB connections

2.19 Fetching Release 16 Routing Rules

This section provides details about fetching routing information that is supported in Release 16 deployment. The following information is fetched for routing:

  • List of resources required for retrieving routing information
  • URI Query parameters supported by the GET method
  • Data structures supported by the GET response body
For information about Release 16, see 3GPP TS 23.501 version 16.6.0 Release 16.

Resources

The following table describes the resource name to retrieve a collection of routing information.

Table 2-186 Resource Name

Resource Name Resource URI HTTP Method Description
routing-rules-r16 /ocscp/scpc-configuration/v1/routing-rules-r16 GET Retrieves a collection or list of routing information (NfInstanceServices) configured in SCP.

Use this API when Model C support is enabled in SCP. For information about enabling this feature, see Oracle Communications Cloud Native Core, Service Communication Proxy Installation, Upgrade, and Fault Recovery Guide.

Resource Definition

This resource fetches the routing information (NfInstanceServices) based on the query parameters.

If no query parameter is provided, all the routing information is returned.

Resource URI: /ocscp/scpc-configuration/v1/routing-rules-r16

Table 2-187 URI Query Parameters Supported by the GET Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
nfSetId String O 1 Indicates the nfSetId of the NF.
nfFqdn FQDN O 1 Indicates the FQDN of NF service.
nfType NFType O 1 Indicates the NF type of the NF for which routing information is fetched.
nfInstanceId NfInstanceId O 1 Identifies the NF instance for which routing information is fetched.
nfServiceType NFService O 1 Indicates NFService, for example, nudm-uecm, for which routing information is fetched.
nfIp Ipv4Addr O 1 Indicates the IPv4 address for which routing information is fetched.
nfServiceInstanceId String C 1 Indicates the NF Service Instance ID for which routing information is fetched.

Use it with nfInstanceId.

Note:

  • Supports only 0 to 3 query parameters.
  • The valid combinations of 1 query parameter are as follows:
    • nfSetId
    • nfIp
    • nfFqdn
    • nfType
    • nfInstanceId
    • nfServiceType
  • The valid combinations of 2 query parameters are as follows:
    • nfSetId + nfFqdn
    • nfSetId + nfIp
    • nfSetId + nfInstanceId
    • nfSetId + nfType
    • nfSetId + nfServiceType
    • nfFqdn + nfServiceType
    • NfIp+ nfServiceType
    • nfInstanceId + nfServiceInstanceId
  • The valid combinations of 3 query parameters are as follows:
    • nfSetId + nfFqdn + nfServiceType
    • nfSetId + nfIp + nfServiceType
    • nfSetId + nfInstanceId + nfServiceInstanceId
  • If there are more than 3 query parameters, these combinations are considered as invalid.

The following tables describe query parameters for Local and InterSCP.

Table 2-188 One Query Parameter for Local and InterSCP

Parameter Local InterSCP (Foreign) Description
nfInstnaceId Allowed Allowed Identifies the NF instance for which routing information is fetched.
nfSetId Allowed NA Indicates the nfSetId of the NF.
nfType Allowed NA Indicates the NF type of the NF for which routing information is fetched.
nfServiceType Allowed NA Indicates NFService, for example, nudmuecm, for which routing information is fetched.
locality NA Allowed Identifies the InterSCP unknown instance for which routing information is fetched.
nfFqdn Allowed Allowed Indicates the FQDN of NF service.
nfIp Allowed Allowed Indicates the IPv4 address for which routing information is fetched.

Two Query Parameter for Local and InterSCP

Table 2-189 Two Query Parameter for Local and InterSCP

Parameter Local InterSCP (Foreign) Description
nfSetId + nfFqdn Allowed NA nfSetId of the NF and FQDN of NF service.
nfSetId + nfIp Allowed NA nfSetId of the NF and IPv4 address for which routing information is fetched.
nfSetId + nfInstnaceId Allowed NA nfSetId of the NF and identity of the NF instance for which routing information is fetched.
nfSetId + nfType Allowed NA nfSetId of the NF and the NF type for which routing information is fetched.
nfSetId + nfServiceType Allowed NA nfSetId of the NF and NFService, for example, nudm-uecm, for which routing information is fetched.
nfFqdn + nfServiceType Allowed NA FQDN of the NF service and the NF service type, for example, nudm-uecm, for which routing information is fetched.
nfIp+ nfServiceType Allowed NA IPv4 address of the NF and the NF service type, for example, nudm-uecm, for which routing information is fetched.
nfInstanceId + nfServiceInstanceId Allowed NA Identity of the NF instance and the NF Service Instance ID for which routing information is fetched.

Note: To be used with nfInstanceId.

nfFqdn + locality NA Allowed FQDN of NF service and identity of the InterSCP of unknown records for which routing information is fetched.
nfIp+ locality NA Allowed IPv4 address of the NF and identity of the InterSCP of unknown records for which routing information is fetched.
nfInstanceId + locality NA Allowed Identity of the NF instance and identity of the InterSCP of unknown records for which routing information is fetched.

Three Query Parameter for Local and InterSCP

Table 2-190 Three Query Parameter for Local and InterSCP

Parameter Local InterSCP (Foreign) Description
nfSetId + nfFqdn + nfServiceType Allowed NA Fetches SCP routing rules information for Release 16 using nfSetId, nfFqdn, and nfServiceType.
nfSetId + nfIp + nfServiceType Allowed NA Fetches SCP routing rules information for Release 16 using nfSetId, nfIp, and nfServiceType.
nfSetId + nfInstanceId + nfServiceInstanceId Allowed NA Fetches SCP routing rules information for Release 16 using nfSetId, nfInstanceId, and nfServiceInstanceId.

Data Structures Supported by the GET Response Body on this Resource

The following tables describes the supported data type by the GET response body.

Table 2-191 Data Structures Supported by the GET Response Body

Data Type P Cardinality Response Code Description
array(NfInstanceServices) M 1 200 OK Indicates the list of routing rules (NfInstance Services) matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than three query parameters are provided.
NfInstanceServices
{
  local:  [
    {
     "kind":"NFInstanceServiceMapping",
     "spec":{
        "hosts":[
         "string"
        ],
      "nfType":"string",
      "nfSetsList":{
         nfSetIdList:["string"]
      },
      "nfInstanceId":"3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
      "nfServiceToRouteMapping":{
         "nfServiceToRoutesListMap":{
            "default":{
               "hosts":[
                  "string"
               ],
               "destinations":[
                   
               ]
            },
            "nnrf-nfm":{
               "hosts":[
                  "string"
               ],
               "destinations":[
                  {
                     "destWeight":{
                        "weight":0,
                        "destination":{
                           "host":"string",
                           "port":{
                              "number":0
                           },
                           "http2MaxRequests":0
                            
                        },
                        "isRemoteScp":false,
                        "ocscpc_load":0,
                        "ocscpw_priority":0,
                        "ocscpw_nf_instance_id":"string",
                        "ocscpw_service_instance_id":"string"
                     },
                     "serviceSetIds":null
                  }
               ]
            },
            "nnrf-disc":{
               "hosts":[
                  "string"
               ],
               "destinations":[
                  {
                     "destWeight":{
                        "weight":0,
                        "destination":{
                           "host":"string",
                           "port":{
                              "number":0
                           },
                           "http2MaxRequests":0
                        },
                        "isRemoteScp":false,
                        "ocscpc_load":0,
                        "ocscpw_priority":0,
                        "ocscpw_nf_instance_id":"string",
                        "ocscpw_service_instance_id":"string"
                     },
                     "serviceSetIds":null
                  }
               ]
            }
         }
      }
   },
   "metadata":{
      "name":"string",
      "namespace":"string"
   },
   "apiVersion":"string"
  ],
 foreign:
  [
    {
    "kind": "InterSCPRoutingInfo",
    "spec": {
        "hosts": ["udm1svc.default.svc.cluster.local:8080", "udm1svc.default.svc.cluster.local:8080-nudm-uecm",
        "192.168.2.143:8080-nudm-uecm",   "192.168.2.143:8080"],
        "locality": "Loc1",
        "nfSetIdList": [],
        "nfInstanceIdList": ["9faf1bbc-6e4a-4454-a507-a14ef8e1bc5b"],
        "primaryDestinationList": [{
            "weight": 100,
            "destination": {
                "host": "ocscp-localscp-worker.scpsvc.svc.cluster.local",
                "port": {
                    "number": 8000
                },
                "http2MaxRequests": 100000
            },
            "isRemoteScp": true,
            "ocscpc_load": 0,
            "ocscpw_priority": 0,
            "ocscpw_nf_instance_id": "3faf1bbc-6e4a-4454-a507-a14ef8e1bc5e",
            "ocscpw_service_instance_id": "f86b54b7-aef9-4c78-b346-3bfb7f380811"
        }],
        "secondaryDestinationList": {}
    },
    "metadata": {
        "name": "interScpRoutingInfo",
        "namespace": "scpsvc"
    },
    "apiVersion": "v1"
   }
 ]
  
}

Example:

Successful Response1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF" -H "accept: */*"
{
  "local": [
    {
      "spec": {
        "nfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
        "nfServiceToRouteMapping": {
          "nfServiceToRoutesListMap": {
            "default": {
              "hosts": [
                null
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "port": {
                        "number": 80
                      }
                    },
                    "weight": 0,
                    "ocscpw_priority": 0,
                    "ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
                    "ocscpw_service_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
                    "ocscpc_load": 0
                  }
                }
              ]
            },
            "nnrf-nfm": {
              "hosts": [
                "nrf1svc.scpsvc.svc.cluster.local:8080-nnrf-nfm"
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "host": "nrf1svc.scpsvc.svc.cluster.local",
                      "port": {
                        "number": 8080
                      },
                      "location": "MESH_EXTERNAL",
                      "ports": [
                        {
                          "number": 8080,
                          "protocol": "HTTP2",
                          "name": "http2"
                        }
                      ],
                      "resolution": "DNS"
                    },
                    "weight": 5000,
                    "ocscpw_priority": 0,
                    "ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
                    "ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b01",
                    "ocscpc_load": 0
                  }
                }
              ]
            },
            "nnrf-disc": {
              "hosts": [
                "nrf1svc.scpsvc.svc.cluster.local:8080-nnrf-disc"
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "host": "nrf1svc.scpsvc.svc.cluster.local",
                      "port": {
                        "number": 8080
                      },
                      "location": "MESH_EXTERNAL",
                      "ports": [
                        {
                          "number": 8080,
                          "protocol": "HTTP2",
                          "name": "http2"
                        }
                      ],
                      "resolution": "DNS"
                    },
                    "weight": 5000,
                    "ocscpw_priority": 0,
                    "ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a",
                    "ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
                    "ocscpc_load": 0
                  }
                }
              ]
            }
          }
        },
        "hosts": [
          null
        ],
        "nfSetsList": {
          "nfSetIdList": [
            "Reg1"
          ]
        },
        "nfType": "NRF"
      }
    },
    {
      "spec": {
        "nfInstanceId": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
        "nfServiceToRouteMapping": {
          "nfServiceToRoutesListMap": {
            "default": {
              "hosts": [
                null
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "port": {
                        "number": 80
                      }
                    },
                    "weight": 0,
                    "ocscpw_priority": 1,
                    "ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
                    "ocscpw_service_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
                    "ocscpc_load": 0
                  }
                }
              ]
            },
            "nnrf-nfm": {
              "hosts": [
                "nrf2svc.scpsvc.svc.cluster.local:8080-nnrf-nfm"
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "host": "nrf2svc.scpsvc.svc.cluster.local",
                      "port": {
                        "number": 8080
                      },
                      "location": "MESH_EXTERNAL",
                      "ports": [
                        {
                          "number": 8080,
                          "protocol": "HTTP2",
                          "name": "http2"
                        }
                      ],
                      "resolution": "DNS"
                    },
                    "weight": 5000,
                    "ocscpw_priority": 1,
                    "ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
                    "ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b01",
                    "ocscpc_load": 0
                  }
                }
              ]
            },
            "nnrf-disc": {
              "hosts": [
                "nrf2svc.scpsvc.svc.cluster.local:8080-nnrf-disc"
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "host": "nrf2svc.scpsvc.svc.cluster.local",
                      "port": {
                        "number": 8080
                      },
                      "location": "MESH_EXTERNAL",
                      "ports": [
                        {
                          "number": 8080,
                          "protocol": "HTTP2",
                          "name": "http2"
                        }
                      ],
                      "resolution": "DNS"
                    },
                    "weight": 5000,
                    "ocscpw_priority": 1,
                    "ocscpw_nf_instance_id": "6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
                    "ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
                    "ocscpc_load": 0
                  }
                }
              ]
            }
          }
        },
        "hosts": [
          null
        ],
        "nfSetsList": {
          "nfSetIdList": [
            "Reg1"
          ]
        },
        "nfType": "NRF"
      }
    }
  ],
  "foreign": []
}

Successful Response2:

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=AUSF&nfSetId=NONE" -H "accept: */*"
{
  "local": [
    {
      "spec": {
        "nfInstanceId": "8faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
        "nfServiceToRouteMapping": {
          "nfServiceToRoutesListMap": {
            "default": {
              "hosts": [
                "10.75.226.108:ip",
                "ausfsvc_fqdn"
              ]
            },
            "nausf-auth": {
              "hosts": [
                "nrf2svc.scpsvc.svc.cluster.local:8080-nausf-auth"
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "host": "nrf2svc.scpsvc.svc.cluster.local",
                      "port": {
                        "number": 8080
                      },
                      "location": "MESH_EXTERNAL",
                      "ports": [
                        {
                          "number": 8080,
                          "protocol": "HTTP2",
                          "name": "http2"
                        }
                      ],
                      "resolution": "DNS"
                    },
                    "weight": 5000,
                    "ocscpw_priority": 1,
                    "ocscpw_nf_instance_id": "8faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
                    "ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b01",
                    "ocscpc_load": 0
                  }
                }
              ]
            },
            "nausf-sorprotection": {
              "hosts": [
                "nrf2svc.scpsvc.svc.cluster.local:8080-nausf-sorprotection"
              ],
              "destinations": [
                {
                  "destinationInfo": {
                    "destination": {
                      "host": "nrf2svc.scpsvc.svc.cluster.local",
                      "port": {
                        "number": 8080
                      },
                      "location": "MESH_EXTERNAL",
                      "ports": [
                        {
                          "number": 8080,
                          "protocol": "HTTP2",
                          "name": "http2"
                        }
                      ],
                      "resolution": "DNS"
                    },
                    "weight": 5000,
                    "ocscpw_priority": 1,
                    "ocscpw_nf_instance_id": "8faf1bbc-6e4a-2828-a507-a14ef8e1bc5b",
                    "ocscpw_service_instance_id": "fe137ab7-740a-46ee-aa5c-951806d77b02",
                    "ocscpc_load": 0
                  }
                }
              ]
            }
          }
        },
        "nfSetsList": {},
        "nfType": "AUSF"
      }
    }
  ],
  "foreign": []
}

Failure cases

If the number of query parameters is greater than 3.

$ curl -X GET "http://localhost:8081/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF&nfServiceType=nnrf-disc&nfIp=10.75.226.108&nfInstanceId=6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a" -H "accept: */*"
Error response for above curl Request:
Response Code: 400
Response Status: BAD_REQUEST
Response Body : { "title": "Bad Request", "status": "400", "detail": "Maximum 3 Query Parameters are allowed, please refer to the User Guide",
"instance": "/ocscp/scpc-configuration/v1/routing-rules-r16?nfType=NRF&nfServiceType=nnrf-disc&nfIp=10.75.226.108&nfInstanceId=6faf1bbc-6e4a-4454-a507-a14ef8e1bc5a",
"cause": "INVALID_MSG_FORMAT" }
Response Headers :
 connection: keep-alive  content-type: application/problem+json  date: Wed30 Dec 2020 07:16:52 GMT  transfer-encoding: 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.20 Fetching Upgrade and Rollback Events

This section provides information about fetching upgrade and rollback event information.

Resources

The following table describes the resource name to retrieve the list of upgrade and rollback events.

Table 2-192 Upgrade and Rollback Resource Name

Resource Name Resource URI HTTP Method Description
upgraderollbackevents /ocscp/scpc-configuration/v1/upgraderollbackevents GET Retrieves a collection or list of upgrade and rollback events.

Resource Definition

This resource fetches upgrade or rollback events based on the query parameters.

If no query parameter is provided, all the events are returned.

Resource URI: /ocscp/scpc-configuration/v1/upgraderollbackevents

Table 2-193 URI Query Parameters Supported by the GET Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values
serviceName String O 1 Name of the service
  • scpc-audit
  • scpc-configuration
  • scpc-notification
  • scpc-subscription
  • scp-worker

Example: scpc-audit

event String O 1 Event to be filtered
  • Pre_Upgrade_Started
  • Pre_Upgrade_Completed
  • Pre_Upgrade_Failed
  • Post_Upgrade_Started
  • Post_Upgrade_Completed
  • Post_Upgrade_Failed
  • Pre_Rollback_Started
  • Pre_Rollback_Completed
  • Pre_Rollback_Failed
  • Post_Rollback_Started
  • Post_Rollback_Completed
  • Post_Rollback_Failed

Example: Pre_Upgrade_Started

sourceRelease String O 1 Source release version for performing upgrade and rollback.

The convention to identify a release is as follows: 25.1.200 is identified as 25120000

Any string followed the convention.

Example: 25120000

Sample output:

{
"serviceName": "scpc-configuration",
"event": "Pre_Upgrade_Started",
"sourceRelease": "25120000",
"targetRelease": "25210000",
"creationTimestamp": "2025-10-26T00:36:40.000+00:00"
}
targetRelease String O 1 Target release version for performing upgrade and rollback.

The convention to identify a release is as follows: 25.2.100 is identified as 25210000

Any string followed the convention.

Example: 25210000

Sample output:

{
"serviceName": "scpc-configuration",
"event": "Pre_Upgrade_Started",
"sourceRelease": "25120000",
"targetRelease": "25210000",
"creationTimestamp": "2025-10-26T00:36:40.000+00:00"
}

Table 2-194 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
array(UpgradeRollbackEvent) M 1 200 OK List of events matching criteria.

Example Response

$ curl -X GET "curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/upgraderollbackevents" -H "accept: */*"" -H "accept: */*"
[
  {
"serviceName": "scpc-configuration",
"event": "Pre_Upgrade_Started",
"sourceRelease": "25120000",
"targetRelease": "25210000",
"creationTimestamp": "2025-10-26T00:36:40.000+00:00"
}
  ]

2.21 Updating HELM Configurable Parameters with REST APIs

This section provides REST API parameters required to update the Helm configurable options after SCP deployment.

Configuring Operations for PUT ALL Method

Request_Type: PUT ALL

URI: /ocscp/scpc-configuration/v1/tracing

Message:
[{
  "msgTracingEnabled": true,
  "msgJsonBodyEnabled": false,
  "serviceName": "scp-worker"
}]

Table 2-195 REST API: PUT ALL Method

Parameter Description DataType Value Range Mandatory
msgTracingEnabled Enable/Disable jaeger trace Boolean True/False Yes
msgJsonBodyEnabled Enable/Disable body decoding in jager traces Boolean True/False Yes
serviceName Name of the service to which tracing is applied String (scp-worker) scp-worker Yes

Success Response

Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing

Request Body:
[{ 
"msgTracingEnabled": true, 
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker" 
}]
Response:
[{
  "msgTracingEnabled": true,
  "msgJsonBodyEnabled": false,
  "serviceName": "scp-worker"
}]
Error Response
  • 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:
    [{
         "bacd": true,
         "msgJsonBodyEnabled": false,
         "serviceNameasd": "scp-worker"
         }]
    Response Body:
     { "status": "400", "error":"Bad Request" }

Configuring Operations for PUT Single Method

Request_Type: PUT

URI: /ocscp/scpc-configuration/v1/tracing/{serviceName}

Table 2-196 Path Variable

Parameter Description DataType Value Range
serviceName Name of the service to which tracing is applied. String scp-worker
Message:
{
  "msgTracingEnabled": true,
  "msgJsonBodyEnabled": false,
  "serviceName": "scp-worker"
}

Table 2-197 REST API: PUT Single Method

Parameter Description DataType Value Range Mandatory
msgTracingEnabled Enable/Disable jaeger trace Boolean True/False Yes
msgJsonBodyEnabled Enable/Disable json body trace Boolean True/False Yes
serviceName Name of the service to which tracing parameters are applied. String scp-worker Yes

Success Response

Request URI: http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker

Request Body:
{ 
"msgTracingEnabled": true, 
"msgJsonBodyEnabled": false,
"serviceName": "scp-worker" 
}
Response:
{
  "msgTracingEnabled": true,
  "msgJsonBodyEnabled": false,
  "serviceName": "scp-worker"
}
Error Response
  • 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

Message:
[{
  "msgTracingEnabled": true,
  "msgJsonBodyEnabled": false,
  "serviceName": "scp-worker"
}]

Table 2-198 REST API: GET Method

Parameter Description DataType Value Range
serviceName Service Name to which tracing will be applied String scp-worker

Success Response

Request URI: /ocscp/scpc-configuration/v1/tracing/scp-worker

Response body:
[{
  "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

Response body:
{ "title": "Invalid Service Name", "status": "400", "cause":"Invalid Service Name" }

Supported HTTP Status Code

  • 200 - In case of success
  • 400 - In case of Bad Request or invalid serviceName
  • 404 - In case when serviceName is not found

Curl Commands

  • GET:
    curl -X GET -i 'http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/'
  • PUT ALL:
    curl -X PUT -H 'Content-Type: application/json' -i 'http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/' --data '[{"msgTracingEnabled":true,"msgJsonBodyEnabled":false,"serviceName":"scp-worker"}]'
  • PUT Single:
    curl -X PUT -H 'Content-Type: application/json' -i 'http://<hostname>:<port>/ocscp/scpc-configuration/v1/tracing/scp-worker' --data '{"msgTracingEnabled":true,"msgJsonBodyEnabled":false,"serviceName":"scp-worker"}'

For information about HELM parameters, see the Oracle Communications Cloud Native Core, Service Communication Proxy Installation, Upgrade, and Fault Recovery Guide.

2.22 Configuring Alternate NF Group

This section provides the following Alternate NF Group REST API configurations:

  • Resource URIs for the alternatenfgroup resource type.
  • Types of data model.
  • URI query parameters supported by GET, PUT, and DELETE methods.

Resources

The following table describes the resource URIs and the corresponding HTTP methods for the alternatenfgroup resource type.

Table 2-199 alternatenfgroup Resource Type

Resource Name Resource URI HTTP Method Mandatory (M) or Optional(O) Query Parameters Description
alternatenfgroup /ocscp/scpc-configuration/v1/alternatenfgroup/configuration GET O
  • serviceProtoName
  • apiPrefix
Retrieves the alternate NF group configuration data that are configured for corresponding query parameters.

Displays both statically configured and alternate NF group data determined from NF profiles.

alternatenfgroup /ocscp/scpc-configuration/v1/alternatenfgroup/configuration PUT O NA Configures the alternate NF group configuration data using the request body in the JSON format.
alternatenfgroup /ocscp/scpc-configuration/v1/alternatenfgroup/configuration DELETE M serviceProtoName Removes the alternate NF group configuration data for corresponding query parameters.
alternatenfgroup /ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata PUT O NA Refreshes the alternate NF group data when required.

Data Model

The following tables describe different data models required for configuring Alternate NF Group.

Table 2-200 AlternateNFGroupData

Name Data Type Mandatory (M) or Optional(O) Cardinality Range or Supported Value Description
dnsSRVConfiguration AlternateNFGroupConfiguration M 1 NA The data type of the DNS SRV configuration.
array(dnsSrvRecords) DNSSRVRecord M 1 NA This is the alternate NF group configuration data.

Table 2-201 AlternateNFGroupConfiguration

Name Data Type Mandatory (M) or Optional(O) Cardinality Range or Supported Value Description
serviceProtoName String M 1 Extract and validate as per SCP FQDN regex The service proto name of the producer NF.

The DNS SRV format:

_service._proto.name. ttl IN SRV priority weight port target. serviceProtoName represents _service._proto.name
apiPrefix String O 1 NA This is used while constructing destination URI. If empty or null, then the string is provided.

Table 2-202 DNSSRVRecord

Name Data Type Mandatory (M) or Optional(O) Cardinality Range or Supported Value Description
target String M 1 Validate as per SCP FQDN regex Indicates the target NF type.
port String M 1 0-65535 Indicates the port number of the ipEndPoint attribute.
ttl Long O 1 30-86400 seconds Determines the availability of data in the network and when the data can be removed.

If the TTL value received is not within this range, then the default TTL value, which is 900s, is used as configured in the System Config table.

type String O 1 SRV Identifies the record type.
dclass String O 1 IN Defines DNS class values.
priority Long M 1 0-65535 Prioritizes the NF selection.
weight Long M 1 0-65535 Specifies a relative order or position for entries with the same priority. For more information, see RFC 2782.

Table 2-203 AlternateNFGroupRefreshData

Name Data Type Mandatory (M) or Optional(O) Cardinality Range or Supported Value Description
refreshAll String O 1 true or false Indicates whether all the alternate NF group data should be refreshed or not.

If only the refreshAll parameter is present with the value as true without the spnlist parameter, then all the Service Proto Names (SPNS) are considered for the refresh.

spnlist Array O 1 NA Provides the list of Service Proto Names (SPNS) to be refreshed.

If the spnlist parameter is present and contains an SPN with the refreshAll parameter set to true, then that SPN in the spnlist parameter will be considered for refresh.

Table 2-204 ProblemDetails

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
type String O 1 Identifies the problem type.
title String M 1 Summarizes the problem type.
status String M 1 Indicates the HTTP status code for the occurrence of the problem type.
detail String M 1 Provides a description specific to the occurrence of the problem type.
instance String M 1 Identifies the specific occurrence of this problem type.
cause String M 1 Defines the application error cause specific to the occurrence of this problem type.

Request Body

The following table describes the AlternateNFGroupConfiguration data type.

Table 2-205 AlternateNFGroupConfiguration Data Type

Data Type Description
AlternateNFGroupConfiguration Indicates the data type of the DNS SRV configuration.

For more information, see Table 2-201.

Response Body

The response body data model varies based on the REST operation status. For more information, see the information provided in the subsequent tables.

Table 2-206 Response Body Data Type

Data Type Description
DNSSRVData This is the alternate NF group configuration data.
None Empty body

Resource Definition

This section describes GET, PUT, and DELETE resource types supported by Alternate NF Group.

GET API

This resource fetches the alternate NF group configuration based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/alternatenfgroup/configuration

Request Body

There is no request body in GET Request API.

Table 2-207 URI Query Parameters Supported by the GET Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
serviceProtoName String O 1 The service proto name of the producer NF.
apiPrefix String O 0..1 Optional path segments used to construct the {apiRoot} variable of the different API URIs as described in 3GPP 29.501.

Note:

If none of the aforementioned query parameters are provided, all the user provisioned serviceProtoName data are returned.

Table 2-208 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(DNSSRVData) M 1 200 OK This is the alternate NF group configurations data.
ProblemDetails M 1 400 BAD REQUEST This data structure is sent if the query parameters validation fails.
ProblemDetails M 1 404 NOT FOUND This data structure is sent when no matching entry is found.

For information about the ProblemDetails structure, see 3GPP TS 29.571.

Note:

The GET request only retrieves the records provisioned by users.

The following examples are of successful and failed responses.

Success response:

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf2stub.scpsvc.svc" -H "accept: */*"

Response Body:
[{
	"dnsSRVConfiguration": {
		"serviceProtoName": "_http._tcp.nf2stub.scpsvc.svc",
		"apiPrefix": "USEast"
	},
	"dnsSrvRecords": [{
			"target": "nf2stub.scpsvc.svc",
			"port": 8080,
			"ttl": 86400,
			"type": "SRV",
			"dclass": "IN",
			"priority": 1,
			"weight": 60
		},
		{
			"target": "nf21stub.scpsvc.svc",
			"port": 8080,
			"ttl": 86400,
			"type": "SRV",
			"dclass": "IN",
			"priority": 20,
			"weight": 20
		},
		{
			"target": "nf22stub.scpsvc.svc",
			"port": 8080,
			"ttl": 86400,
			"type": "SRV",
			"dclass": "IN",
			"priority": 10,
			"weight": 20
		}
	]
}]

Failure response: If the alternate NF group data is not configured.

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf23432stub.scpsvc.svc" -H "accept: */*"

{
  "title": "Not Found",
  "status": "404",
  "detail": "Alternate NF Group Configuration not found against given query parameters",
  "instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf23432stub.scpsvc.svc",
  "cause": "DATA_NOT_FOUND"
}

PUT API

This resource adds the alternate NF group configuration using the request body.

Resource URI: /ocscp/scpc-configuration/v1/alternatenfgroup/configuration

Table 2-209 Data Structures Supported by the PUT Request Body

Data Type Description
AlternateNFGroupConfiguration Indicates the data type of the DNS SRV configuration.

For more information, see Table 2-201.

Table 2-210 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
AlternateNFGroupConfiguration M 1 200 OK This response is used when an existing record is updated.
AlternateNFGroupConfiguration M 1 201 CREATED This response is used when a new entry is created.
ProblemDetails M 1 400 BAD REQUEST This response is used when the request body validation fails. For example, when serviceProtoName is missing in the request body.

For information about the ProblemDetails structure, see 3GPP TS 29.571.

Note:

The PUT request for Alternate NF Group is allowed only when the entry for that spn is already present in DNS SERVER otherwise, it gives a 404 Not Found error for such spn.

The following examples are of successful and failed responses.

Success response:

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration" -H "accept: */*" -H "Content-Type: application/json" -d "{
	"apiPrefix": "USEast",
	"serviceProtoName": "_http._tcp.nf2stub.scpsvc.svc"
}"

Response:
{
  "serviceProtoName": "_http._tcp.nf2stub.scpsvc.svc",
  "apiPrefix": "USEast"
}
200 OK

Failure response: Invalid request body

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration" -H "accept: */*" -H "Content-Type: application/json" -d "{
	"apiPrefix": "USEast",
	"serviceProtoName": "_http.npcf.rcklca63.we.pcf.5gc.oper.com"
}"

Response:
{
  "title": "Bad Request",
  "status": "400",
  "detail": "Invalid request body received, please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/configuration",
  "cause": "INVALID_REQUEST_BODY"
}

DELETE API

This resource removes the alternate NF group configuration based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/alternatenfgroup/configuration

Table 2-211 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
None     200 OK This response is used when the query is successful.
Problem Details M 1 404 NOT FOUND This response is used when no matching entry is found.

For information about the ProblemDetails structure, see 3GPP TS 29.571.

Problem Details M 1 400 BAD REQUEST This response is used when serviceProtoName is missing in the request.

For information about the ProblemDetails structure, see 3GPP TS 29.571.

Note:

The DELETE request body removes only the records provisioned by users.

The following examples are of successful and failed responses.

Success response:

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf2stub.scpsvc.svc" -H "accept: */*"

200 OK 

Failure response: When no matching entry is found.

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf21232stub.scpsvc.svc" -H "accept: */*"

{
  "title": "Not Found",
  "status": "404",
  "detail": "Alternate NF Group Configuration not found against given query parameters",
  "instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/configuration?serviceProtoName=_http._tcp.nf21232stub.scpsvc.svc",
  "cause": "DATA_NOT_FOUND"
}

REFRESH DNS Data API

This resource refreshes the alternate NF group configuration based on the request body parameters.

Resource URI: /ocscp/scpc-configuration/{version}/alternatenfgroup/refreshdnssrvdata

Table 2-212 Data Structures Supported by the PUT Request Body

Data Type Description
AlternateNFGroupRefreshData Indicates whether all the alternate NF group data should be refreshed or not.

For more information, see Table 2-203.

The following examples are of successful and failed responses.

Success response:

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata" -H "accept: */*" -H "Content-Type: application/json" -d "{
  "refreshAll": "true",
  "spnlist": [
  ]
}"

Response:
{
  "refreshAll": "true",
  "spnlist": []
}
200 OK

Failure response: Invalid request body

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata" -H "accept: */*" -H "Content-Type: application/json" -d "{"spnlist":[]}"

{
  "title": "Bad Request",
  "status": "400",
  "detail": "Invalid request body received, please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/alternatenfgroup/refreshdnssrvdata",
  "cause": "INVALID_REQUEST_BODY"
}

2.23 Configuring Server Header

This section describes the Server Header REST API configuration.

Resources

The following table describes the resource name to retrieve and update server header configurations in SCP.

Table 2-213 Resource Name

Resource Name Resource URI HTTP Method Description
serverheader /ocscp/scpc-configuration/{version}/serverheader GET Retrieves server header configurations in SCP.
serverheader /ocscp/scpc-configuration/{version}/serverheader PUT Updates server header configurations in SCP.

Data Model

The following table describes different types of server header parameters.

Table 2-214 Types of Server Header Parameters

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
enableEnhanceServerHeaderBehavior Boolean M false

Enables or disables the enhanced server header behavior.

Possible values are: true, false, 1, or 0.

The enhanced server header format: List of <NF-Type>-<NF-Instance Id> in reverse order of tried producers.

Producer generated error: <NF-Type2>-<NF-Instance Id2> <NF-Type1>-<NF-Instance Id1>

SCP generated error: SCP-<scp fqdn> <NF-Type2>-<NF-Instance Id2> <NF-Type1>-<NF-Instance Id1>

sideCarProxyServerHeader List<String> M Empty List Indicates the list of strings (example: envoy, istio-envoy, and so on )/string patterns(example: e.*y, and so on) to identify from server header value if error response is generated by side car proxy. If response received by SCP carries any of the configured strings or patterns in sideCarProxyServerHeader and response code matches with any of the configured sideCarProxyStatusCode, it will be treated as sidecar/service mesh generated error.

It is applicable to both enableEnhanceServerHeaderBehavior and enableEnhanceServerHeaderBehaviorV2.

Note: This parameter allows the string regex patterns and empty list.

addServerHeaderInProducerResponse Boolean M false Enables or disables the addition of a server header in producer NF-generated error responses by SCP during the default behavior (which means both enableEnhanceServerHeaderBehavior and enableEnhanceServerHeaderBehaviorV2 are false).
If set to TRUE
  • SCP will add a server header with the producer's information if a server header is not present in the error response received from the upstream peer.
If set to FALSE
  • SCP will not add a server header with the producer's information if the server header is not present in the error response received from the upstream peer. The received response is passed as it is to the consumer.

Possible values are: true, false, 1, or 0.

sideCarProxyStatusCode List<Integer> M 503 Indicates the list of server header status codes (503 and so on)/class of status code (5xx,4xx) to identify if error response is generated by side car proxy.

If response received by SCP carries any of the configured strings or patterns in sideCarProxyServerHeader and response code matches with any of the configured sideCarProxyStatusCode, it will be treated as sidecar/service mesh generated error.

Supported range or patterns are: 5xx and 4xx

Value range: 400-599

Empty list is allowed.

Applicable to both enableEnhanceServerHeaderBehavior and enableEnhanceServerHeaderBehaviorV2.

enableEnhanceServerHeaderBehaviorV2 Boolean M false Enables or disables the new custom behavior.

The behavior enabled is mutually exclusive with enableEnhanceServerHeaderBehavior.

Server header format: List of <NF-Type>-<NF-Instance Id> in reverse order of tried producer NFs.

Producer NF generated error format: <NF-Type2>-<NF-Instance Id2> <NF-Type1>-<NF-Instance Id1>
  • If SCP receives at least one server header from any one of the attempted producer NFs, SCP adds the same server header to the final error response.
  • If SCP receives server headers from multiple attempted producer NFs, SCP adds the received server headers in the reverse order to the final error response.

SCP generated error format: SCP-<scp fqdn>

SCP adds "SCP-<scp fqdn>" to the server header in the following scenarios:

  • In all the self-generated errors, such as connection failures, timeout, unknown errors, and so on.
  • If the error is received from the service mesh sidecar

Resource Definition

GET REST API

URL: curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json"

Request URI: /ocscp/scpc-configuration/{version}/serverheader

Example of a curl request:

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json"

Response Data Structure:

Response of "curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json""

{
       "enableEnhanceServerHeaderBehavior": false,
       "sideCarProxyServerHeader": [],
       "addServerHeaderInProducerResponse": false,
       "enableEnhanceServerHeaderBehaviorV2": false,
       "sideCarProxyServerHeaderStatusCode": ["503"]
     }

PUT REST API

Request URI: /ocscp/scpc-configuration/{version}/serverheader

Example of a curl command:

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/serverheader" -H "accept: application/json" -H "Content-Type: application/json" -d " 

{\"enableEnhanceServerHeaderBehavior\":false,\"sideCarProxyServerHeader\":

[\"envoy\"],\"addServerHeaderInProducerResponse\":false,\"enableEnhanceServerHeaderBehaviorV2\":false,\"sideCarProxyServerHeaderStatusCode\":[\"503\",\"4xx\"]}"

Understanding sideCarProxyServerHeader and sideCarProxyStatusCode Configurations

This scenario explains sideCarProxyServerHeader and sideCarProxyStatusCode configurations based on the following conditions:

  • Alternate routing is enabled.
  • Producer NF, for example, chf1, responds with “503” and server header as “envoy”. chf2 responds with 503 without server header.

Sample SCP server header configuration:

{
"enableEnhanceServerHeaderBehavior": false,
"sideCarProxyServerHeader": ["e*y", "istio*y"],
"addServerHeaderInProducerResponse": false,
"enableEnhanceServerHeaderBehaviorV2": true,
"sideCarProxyStatusCode": [
"5xx", "4xx"
]
}

Server header behavior: SCP responds to consumer NF with "503" and "envoy" as server header.

In the above scenario, the received error response is not considered as service mesh error because the configured sideCarProxyServerHeader regex is not matching with the received server header. This mismatch occurs when the configured "e*y" mismatches with the received server header "envoy".

Where,

  • e*: This means zero or more occurrences of the letter e.
  • y: This means exactly one occurrence of the letter y.

The pattern e*y does not match "envoy" because there are characters, n, v, and o, between e and y, which are not accounted for by the pattern e*y.

If you want to match "envoy", then you can use the following regex:

  • "e.*y"
  • "envoy"

In the above mentioned regex configurations, SCP treats the received error response as service mesh error and adds SCP's FQDN in the server header and sends it to the consumer NF.

2.24 Configuring SBI Message Priority

This section provides Service Based Interface (SBI) Message Priority REST API configurations to support SCP behavior for SBI Messages priority headers received in message requests and responses.

Resources

The following table describes the resource name to retrieve, add, update, and remove SBI message priority information based on the query parameters.

Table 2-215 Resource Name

Resource Name Resource URI HTTP Method Description
sbi-message-priority /ocscp/scpc-configuration/v1/sbi-message-priority GET Retrieves the SBI Message Priority configured in SCP.
sbi-message-priority /ocscp/scpc-configuration/v1/sbi-message-priority PUT Adds and updates the SBI Message Priority configured in SCP.
sbi-message-priority /ocscp/scpc-configuration/v1/sbi-message-priority PATCH Updates or modifies the SBI Message Priority configured in SCP.
sbi-message-priority /ocscp/scpc-configuration/v1/sbi-message-priority DELETE Removes the configured SBI Message Priority from SCP.

Data Model

Request Body

The following table describes the field names of the SbiMsgPriorityWrapper data type.

Table 2-216 SbiMsgPriorityWrapper

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
ruleName String M default Indicates the unique name for ruleName.
nfServiceName String M * Indicates all 3GPP defined NF Services as per 3GPP TS29.510.
httpMethods String M * Indicates the list of String HTTP methods, such as GET, POST, PUT, PATCH, DELETE, and OPTIONS.
messageType String M * Indicates the incoming request type. Possible values are: REQUEST or RESPONSE.
enableAssignPriority boolean O false Indicates whether the SMP header is available or not in the ingress message.
assignPriority String O 16 Indicates the "3gpp-Sbi-Message-Priority" header value. The value range is between 0 and 31.
enableOverridePriority boolean O false Indicates whether the SMP header is available or not in the ingress message.
overridePriority String O 16 Indicates the "3gpp-Sbi-Message-Priority" header value.

* indicates that the default value is applicable for all the possible message priority rules.

Response Body

The following table describes response body data models that varies based on the REST operation status.

Table 2-217 Response Body Data Type

DataType Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(SbiMsgPriorityWrapper) M 1 200 OK Indicates the list of Message Priorities (SbiMsgPriorityWrapper) that matches the criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than three query parameters are provided.
JSON Format
[
  {
    "ruleName": "default",
    "data": {
      "nfServiceName": "*",
      "httpMethods": [
        "*"
      ],
      "messageType": [
       "*"
      ],
      "enableAssignPriority": false,
      "assignPriority": 16,
      "enableOverridePriority": false,
      "overridePriority": 16,
      "nfType": "*"
    }
  },{
   ....
   ... 
  }
]

Resource Definition

GET REST API

This resource fetches the message priority (SBIMessagePriorityBean) based on the query parameters.

If no query parameter is provided, all the message priority are returned.

Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-218 URI Query Parameters Supported by the GET Method

Field Name DataType Mandatory (M) or Optional(O) Description
ruleName String O Indicates the name of ruleName.
nfServiceName String O Indicates all 3GPP defined NF Services as per 3GPP TS29.510 (callback and custom).
httpMethod String O Indicates HTTP methods, such as GET, POST, PUT, PATCH, DELETE, and OPTIONS.
messageType String O Indicates the message request or response. Possible values are: REQUEST or RESPONSE.

Note:

The valid combination of query parameters is as follows:
  • ruleName
  • nfServiceName
  • httpMethod
  • messageType
  • nfServiceName + httpMethod + messageType
  • nfServiceName + httpMethod
  • nfServiceName + messageType
  • httpMethod + messageType

Table 2-219 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(SbiMsgPriorityWrapper) M 1 200 OK Indicates the list of Message Priority (SbiMsgPriorityWrapper) that matches the criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than 3 query parameters are provided.

Example

Successful response - 1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json"
[
  {
    "ruleName": "default",
    "data": {
      "nfServiceName": "*",
      "httpMethods": [
        "*"
      ],
      "messageType": [
       "*"
      ],
      "enableAssignPriority": false,
      "assignPriority": 16,
      "enableOverridePriority": false,
      "overridePriority": 16,
      "nfType": "*"
    }
  },
  {
    "ruleName": "udm_test",
    "data": {
      "nfServiceName": "nudm_uecm",
      "httpMethods": [
        "GET",
        "POST"
      ],
      "messageType":
       [
        "service-request",
        "service-response"
       ],
      "enableAssignPriority": true,
      "assignPriority": 10,
      "enableOverridePriority": false,
      "overridePriority": -1,
      "nfType": "UDM"
    }
  }
]

Successful response - 2

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?nfServiceName=nudm_uecm" -H "accept: application/json"
[
  [
   {
    "ruleName": "udm_test",
    "data": {
      "nfServiceName": "nudm_uecm",
      "httpMethods": [
        "GET",
        "POST"
      ],
      "messageType": [
        "service-request",
        "service-response"
       ],
      "enableAssignPriority": true,
      "assignPriority": 10,
      "enableOverridePriority": false,
      "overridePriority": -1,
      "nfType": "UDM"
    }
  }
]

Successful response - 3

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?nfServiceName=nudm_uecm&messageType=REQUEST" -H "accept: application/json"
[
  {
    "ruleName": "udm_test",
    "data": {
      "nfServiceName": "nudm_uecm",
      "httpMethods": [
        "GET",
        "POST"
      ],
      "messageType": [
        "service-request",
        "service-response"
       ],
      "enableAssignPriority": true,
      "assignPriority": 10,
      "enableOverridePriority": false,
      "overridePriority": -1,
      "nfType": "UDM"
    }
  }
]

Successful response - 4

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=default" -H "accept: application/json"
{
  "ruleName": "default",
  "data": {
    "nfServiceName": "*",
    "httpMethods": [
      "*"
    ],
    "messageType": [
      "*"
    ],
    "enableAssignPriority": false,
    "assignPriority": 16,
    "enableOverridePriority": false,
    "overridePriority": 16,
    "nfType": "*"
  }
}

PUT REST API

This resource adds or updates the SBI message priority configuration using the request body.

Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority

Table 2-220 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
SbiMsgPriorityWrapper M 1 200 OK Indicates the SBI message priority configuration data.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571.

Example
Successful response - 1
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"ruleName\":\"nudm_test\",\"data\":{\"nfServiceName\":\"nudm_uecm\",\"httpMethods\":[\"PUT\",\"PATCH\"],\"messageType\":[\"service-request\",\"service-response\"],\"enableAssignPriority\":true,\"assignPriority\":10,\"enableOverridePriority\":true,\"overridePriority\":10}}"
  
{
  "ruleName": "nudm_test",
  "data": {
    "nfServiceName": "nudm_uecm",
    "httpMethods": [
      "PUT",
      "PATCH"
    ],
    "messageType": [
        "service-request",
        "service-response"
       ],
    "enableAssignPriority": true,
    "assignPriority": 10,
    "enableOverridePriority": true,
    "overridePriority": 10,
    "nfType": "UDM"
  }
}
  
200 OK
Successful response - 2
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"
      ],
      [
        "service-request",
        "service-response"
       ],
      "enableAssignPriority": true,
      "assignPriority": 10,
      "enableOverridePriority": false,
      "overridePriority": 1,
      "nfType": "NEF"
    }
  }'

Failure case 1: Due to missing data object in the request body.

$ curl -X 'PUT' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d ' {
    "ruleName": "rule1"
     
  }'
 
 
Response Body:
{
  "title": "Bad Request",
  "status": 400,
  "detail": "data Object is missing, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
  "cause": "MANDATORY_IE_MISSING"
}

Failure case 2: Due to missing fields in request body.

$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"data\":{\"assignPriority\":10,\"dNNs\":\"\",\"enableAssignPriority\":true,\"enableOverridePriority\":true,\"httpMethods\":[\"PUT\",\"PATCH\"],\"messageType\":\"REQUEST\",\"overridePriority\":10,\"sNSSAIs\":\"\"},\"ruleName\":\"nudm_test\"}"
 
 
Response Body:
{
  "title": "Bad Request",
  "status": "400",
  "detail": "nfServiceName is missing, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
  "cause": "MANDATORY_IE_MISSING"
}

Failure case 2: Missing fields in request body

$ curl -X 'PUT' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d ' {
    "ruleName": "rule1",
    "data": {
       
      "httpMethods": [
        "*"
      ],
      "messageType": [
        "notification-response",
        "notification-request"
      ],
      "enableAssignPriority": false,
      "assignPriority": 16,
      "enableOverridePriority": false,
      "overridePriority": 16,
      "nfType": "*"
    }
  }'
 
 
Response Body:
{
  "title": "Bad Request",
  "status": 400,
  "detail": "nfServiceName is missing, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
  "cause": "MANDATORY_IE_MISSING"
}

Failure case 2: Overlapping of Keys

$ curl -X 'PUT' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d ' {
    "ruleName": "rule4",
    "data": {
      "nfServiceName": "*",
      "httpMethods": [
        "*"
      ],
      "messageType": [
        "notification-response",
        "notification-request"
      ],
      "enableAssignPriority": false,
      "assignPriority": 16,
      "enableOverridePriority": false,
      "overridePriority": 16,
      "nfType": "*"
    }
  }'
 
Response Body:
{
  "title": "Bad Request",
  "status": 400,
  "detail": "Overlapping of Keys in request Body, please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/sbi-message-priority",
  "cause": "MANDATORY_IE_INCORRECT"
}

PATCH REST API

This resource adds or updates the message priority configuration using the request body.

Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority

Table 2-221 URI Query Parameters Supported by the PATCH method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String M 1 Indicates the name of ruleName.
patchDocument String M 1 Indicates the patchDocument to be added to the request body.

Example:

[{"op":"replace","path":"/data/nfServiceName","value":"nudm_sdm"},{"op":"replace","path":"/data/messageType","value":"REQUEST"},{"op":"replace","path":"/data/httpMethods","value":["GET"]}]

Successful response

$ curl -X 'PATCH' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/merge-patch+json' \
  -d '[{ "op": "replace", "path": "/data/nfServiceName", "value": "nudm-uecm" }]'
 
$ curl -X 'PATCH' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/merge-patch+json' \
  -d '[{ "op": "replace", "path": "/data/nfType", "value": "UDM" }]'
 
$ curl -X 'PATCH' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/merge-patch+json' \
  -d '[{"op":"replace","path":"/data/httpMethods","value":["GET"]}]'
 
$ curl -X 'PATCH' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/merge-patch+json' \
  -d '[{"op":"replace","path":"/data/messageType","value":["service-request"]}]'

Table 2-222 PATCH Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
SbiMsgPriorityWrapper M 1 200 OK Indicates the SBI message priority configuration data.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571.

Response body

Response Body:
{
  "ruleName": "udm_test1",
  "data": {
    "nfServiceName": "nudm_sdm",
    "httpMethods": [
      "GET"
    ],
    "messageType": [
        "service-request",
        "service-response"
    ],
    "enableAssignPriority": true,
    "assignPriority": 25,
    "enableOverridePriority": false,
    "overridePriority": 16,
    "nfType": "UDM"
  }
}

DELETE REST API

This resource removes the message priority configuration data based on query parameters.

Resource URI: /ocscp/scpc-configuration/v1/sbi-message-priority

Table 2-223 URI Query Parameters Supported by the DELETE method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String O 1 Indicates the name of ruleName.

Note:

ruleName is a valid combination of query parameters.

Table 2-224 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     204 OK Returns only the response code in successful scenarios.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found.
Example

Successful response - 1

$ curl -X DELETE "http://<localhost>:8081/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://<localhost>:8081/ocscp/scpc-configuration/v1/sbi-message-priority?ruleName=udm_test" -H "accept: */*"
 
Response Body:
{
  "title": "Not Found",
  "status": "404",
  "detail": "Sbi Message Priority configuration data not found for the given 'ruleName': udm_test",
  "instance": "/ocscp/scpc-configuration/v1/sbi-message-priority/udm_test",
  "cause": "DATA_NOT_FOUND"
}

2.25 Pod Overload Control Configurations

This section provides information about overload policy configurations to control and discard request messages sent to scp-worker.

2.25.1 Configuring Pod Overload Control Policy

This section provides information about configurations required for CPU and pending transactions onset threshold, abatement threshold, and abatement time for SCP-Worker.

Resources

The following table describes the resource name to retrieve, add, update, and remove the SCP-Worker Pod Overload Control Policy data based on the query parameters.

Table 2-225 Resource Name

Resource Name Resource URI HTTP Method Description
pod-overload-control-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy GET Retrieves all the scp-worker Pod Overload Control Policy data configured in SCP.
pod-overload-control-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy GET Retrieves the scp-worker Pod Overload Control Policy data configured based on the threshold level in SCP when the threshold level is provided as query parameters, which is optional. If it is absent, then it retrieves all Overload Control Policy data configured in SCP.
pod-overload-control-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy PUT Adds or updates the scp-worker Pod Overload Control Policy data to SCP.
Note:
  • You can add new customized threshold levels.
  • While configuring threshold levels, ensure that onset and abatement thresholds do not overlap with other threshold levels.
  • While configuring the WARN level, you should configure the lowest possible onset and abatement thresholds.
  • Ensure that the abatement threshold is lesser than the onset threshold.
pod-overload-control-policy /ocscp/scpc-configuration/v1/pod-overload-control-policy DELETE Removes the configured scp-worker Pod Overload Control Policy data at the threshold level.

Note: SCP does not allow the removal of default threshold levels: MINOR, MAJOR, WARN, and CRITICAL.

Data Model

Request Body

The following table describes the field names of the OverloadCtrlPolicyWrapper data type.

Table 2-226 OverloadCtrlPolicyWrapper

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL.
data WorkerPodOlCtrlPolicyData M Contains the cpuOverloadConfig data.

Table 2-227 WorkerPodOlCtrlPolicyData

Field Name Data Type Mandatory (M) or Optional(O) Description
cpuOverloadConfig Object M Contains CPU overload control details.
pendingTransactionOverloadConfig Object C Configures the parameters such as onSetThreshold, abatementThreshold, and abatementTimeInMilliseconds for all the threshold levels.

Note: The pendingTransactionOverloadConfig parameter is optional, but if a user wants to keep this configuration, then all three parameters of this configuration should be provided.

Table 2-228 CpuOverloadConfig

Field Name Data Type Mandatory (M) or Optional(O) Range Description
onSetThreshold Integer M 2-100 Indicates the Pod CPU overload onset threshold value for a congestion level.

Note: This value is the percentage of CPU utilization.

abatementThreshold Integer M 1-99 Indicates the congestion level abatement threshold value.

Note: This value is the percentage of CPU utilization.

abatementTimeInMilliSeconds Integer M 50 ms to 5000 ms Indicates the congestion level abatement threshold time.

Table 2-229 pendingTransactionOverloadConfig

Field Name Data Type Mandatory (M) or Optional(O) Range Description
onSetThreshold Integer M 2-100 Indicates the percentage of pod's pending transaction for given maximum allowed pending transaction.

Note: Maximum allowed pending transaction is the maximum number of requests pending at SCP at any point in time for a particular SCP-Worker CPU profile deployed. For maximum allowed pending transaction per SCP-Worker CPU profile, see Table 2-230.

abatementThreshold Integer M 1-99 Indicates the congestion level abatement threshold value.

Note: This value is the percentage of the maximum allowed pending transactions supported by SCP.

abatementTimeInMilliSeconds Integer M 50ms to 5000ms Indicates the congestion level abatement threshold time.

Table 2-230 Maximum Allowed Pending Transaction per SCP-Worker CPU Profile

SCP-Worker CPU Profile Maximum Allowed Pending Transaction
4 6000
8 12000
12 15000

Table 2-231 CpuOverloadConfig Threshold Level

Threshold Level onSetThreshold abatementThreshold Abatement Time in millisecond
WARN 75 70 200
MINOR 82 76 200
MAJOR 87 83 200
CRITICAL 92 88 200

Note:

These alarms are raised when the CPU utilization reaches the mentioned threshold level.

Table 2-232 pendingTransactionOverloadConfig Threshold Level

Threshold Level onSetThreshold abatementThreshold Abatement Time in millisecond
WARN 75 70 200
MINOR 82 76 200
MAJOR 87 83 200
CRITICAL 92 88 200

Note:

These alarms are raised when the pending transaction reaches the mentioned threshold level.

Resource Definition

GET REST API

This resource fetches the scp-worker Pod Overload Control Policy data based on the query parameters.

If no query parameter is provided, all the Overload Control Policy data is returned.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy

Table 2-233 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL.

This is the threshold level for which the query is being triggered. This returns the overload Control policy configuration for the queried threshold level.

Table 2-234 Data Structures Supported by the GET ALL Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
List<OverloadCtrlPolicyWrapper> M 1 200 OK Indicates the list of OverloadCtrlPolicyWrapper data.

Table 2-235 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
OverloadCtrlPolicyWrapper - 1 200 OK Indicates the OverloadCtrlPolicyWrapper configuration data.

On successful response, returns the overload Control configuration data.

ProblemDetails M 1 404 NOT FOUND Returns error with problem details in case of any issue and if the query is unable to fetch the results. This data type can have 403 response code that indicates operation is not allowed.

Example

Successful response

{
    "thresholdLevel": "CRITICAL",
    "data": {
      "cpuOverloadConfig": {
        "onSetThreshold": 95,
        "abatementThreshold": 92,
        "abatementTimeInMilliSeconds": 90
      },
      "pendingTransactionOverloadConfig": {
        "onSetThreshold": 95,
        "abatementThreshold": 92,
        "abatementTimeInMilliSeconds": 50
      }
    }
  }

PUT REST API

This resource adds or updates the scp-worker Pod Overload Control Policy configuration data using the request body.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy

Table 2-236 Data Structures Supported by the PUT Response Body

Name Mandatory (M) or Optional(O) Cardinality Response Code Description
OverloadCtrlPolicyWrapper M 1 200 OK Indicates the OverloadCtrlPolicyWrapper configuration data.

On successful response, returns the overload Control configuration data.

ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571. This data type can have 403 response code that indicates operation is not allowed.

Returns BAD request in case request is incorrect. In response, sends probLemDetails as defined in 29.571.

Example

Successful response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-control-policy" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"cpuOverloadConfig\":{\"abatementThreshold\":96,\"abatementTimeInMilliSeconds\":600,\"onSetThreshold\":97}},\"thresholdLevel\":\"Level1\"}"

Response Code: 201 CREATED
Response Body:
{
"thresholdLevel": "Level1",
"data": {
"cpuOverloadConfig": {
"onSetThreshold": 97,
"abatementThreshold": 96,
"abatementTimeInMilliSeconds": 90
},
"pendingTransactionOverloadConfig": {
"onSetThreshold": 97,
"abatementThreshold": 96,
"abatementTimeInMilliSeconds": 50
}
}

DELETE REST API

This resource removes the scp-worker Pod Overload Control Policy configuration data based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-control-policy

Table 2-237 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
thresholdLevel String M 1 Indicates the name of a custom threshold level.

This is the threshold level for which the query is being triggered. This returns the overload Control policy configuration for the queried threshold level.

Note:

  • thresholdLevel is a valid combination of query parameters.
  • Only custom threshold levels can be removed. The default levels, MINOR, MAJOR, WARN, and CRITICAL cannot be removed.

Table 2-238 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     204 OK Returns the successful response in case deletion of record is successful.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found. This data type can have 403 response code that indicates operation is not allowed.

Example

Successful response

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-control-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response code : 204 No Content

2.25.2 Configuring Pod Overload Action Policy

This section describes SCP-Worker Pod Overload Action Policy configurations based on the threshold level.

Resources

The following table describes the resource name to retrieve, add, update, and remove the SCP-Worker Pod Overload Action Policy data based on the query parameters.

Table 2-239 Resource Name

Resource Name Resource URI HTTP Method Description
pod-overload-action-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy GET Retrieves all the scp-worker Pod Overload Action Policy data configured in SCP.
pod-overload-action-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy GET Retrieves the scp-worker Pod Overload Action Policy data configured based on the threshold level in SCP.
pod-overload-action-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy PUT Adds scp-worker Pod Overload Action Policy data to SCP. By default, this policy supports MINOR, MAJOR, and CRITICAL levels.
Note:
  • You can add new customized threshold levels.
  • Do not configure the Warn threshold level.
pod-overload-action-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy DELETE Removes the configured scp-worker Pod Overload Action Policy data by the threshold level.

Note: You cannot remove MINOR, MAJOR, and CRITICAL threshold levels.

Data Model

Request Body

The following table describes the field names of the OverloadActionWrapper data type.

Table 2-240 OverloadActionWrapper

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the name of a threshold level, for example, MINOR, MAJOR, and CRITICAL.
data WorkerPodOlActionPolicyData M Contains the cpuOverloadConfig data.

Table 2-241 WorkerPodOlActionPolicyData

Field Name Data Type Mandatory (M) or Optional(O) Range Description
overloadAction Enum M NO_ACTION and DISCARD Indicates the overloadAction objects, for example: NO_ACTION and DISCARD.

NO_ACTION indicates that no action is taken for the configured thresholdLevel.

DISCARD indicates that the messages can be discarded based on the "3gpp-Sbi-Message-Priority" header or percentage.

The default value is DISCARD.
errorResponsePercentage Integer M 100 Indicates the percentage of messages with error responses when overloadAction is DISCARD.
ErrorProfileConfiguration Object M NA Indicates error profiles to be used for responding with error responses if overloadAction is configured.
DiscardPolicyType Enum M DISCARD_PERCENTAGE and SBI_MESSAGE_PRIORITY Indicates the DiscardPolicyType objects. For example: DISCARD_PERCENTAGE and SBI_MESSAGE_PRIORITY.

DISCARD_PERCENTAGE enables the discard message by percentage.

SBI_MESSAGE_PRIORITY enables the discard message by priority.

Table 2-242 ErrorProfileConfiguration

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
errorCode Integer M 429 Indicates an HTTP status error code.
errorCause String M NF_CONGESTION_RISK Indicates the cause of the pod overload.
errorTitle String M SCP is in pod overload congestion Indicates the name of the error.
errorDescription String M SCP <podName> pod is in <congestion level> pod overload congestion Describes the cause of the error.
retryAfter String O NA Indicates the interval to start the next retry attempt.
redirectUrl String O NA Indicates the alternate URL to redirect request messages.

Resource Definition

GET REST API

This resource fetches the scp-worker Pod Overload Action Policy data based on the query parameters.

If no query parameter is provided, all the Overload Action Policy data is returned.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy

Table 2-243 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the name of a threshold level, for example, MINOR, MAJOR, and CRITICAL.

This is the threshold level for which the query is being triggered. This returns the overload action policy configuration for the queried threshold level.

Note:

thresholdLevel is a valid combination of query parameters.

Table 2-244 Data Structures Supported by the GET ALL Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
List<OverloadActionPolicyWrapper>   1 200 OK Indicates the list of OverloadActionPolicyWrapper data.

Table 2-245 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
OverloadActionPolicyWrapper   1 200 OK Indicates the OverloadActionPolicyWrapper configuration data.

On successful response, returns the overload Action configuration data.

Example

Successful response

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy?thresholdLevel=CRITICAL" -H "accept: application/json"
Response code : 200 OK
Response data:
{
  "thresholdLevel": "CRITICAL",
  "data": {
    "overloadAction": "DISCARD",
    "errorResponsePercentage": 100,
    "errorProfileConfiguration": {
      "errorCode": 429,
      "errorCause": "",
      "errorTitle": "",
      "errorDescription": "",
    },
    "discardPolicyType": "DISCARD_PERCENTAGE"
  }
}

PUT REST API

This resource adds or updates the scp-worker Pod Overload Action Policy configuration data using the request body.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy

Table 2-246 Data Structures Supported by the PUT Response Body

Field Name Mandatory (M) or Optional(O) Response Codes Description
OverloadActionWrapper M 200 OK Indicates the OverloadAction configuration data.

On successful response, returns the overload Action configuration data.

ProblemDetails M 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571. This data type can have 403 response code that indicates operation is not allowed.

Returns BAD request in case request is incorrect. In response, sends probLemDetails as defined in 3GPP TS 29.571.

Example

Successful response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-action-policy" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"discardPolicyType\":\"DISCARD_PERCENTAGE\",\"errorProfileConfiguration\":{\"errorCause\":\"\",\"errorCode\":429,\"errorDescription\":\"string\",\"errorTitle\":\"string\",\"redirectUrl\":\"string\",\"retryAfter\":\"string\"},\"errorResponsePercentage\":67,\"overloadAction\":\"NO_ACTION\"},\"thresholdLevel\":\"Level1\"}"
Response Code: 201 CREATED
Response Data: 
{
  "thresholdLevel": "Level1",
  "data": {
    "overloadAction": "NO_ACTION",
    "errorResponsePercentage": 100,
    "errorProfileConfiguration": {
      "errorCode": 429,
      "errorCause": "",
      "errorTitle": "string",
      "errorDescription": "string",
      "retryAfter": "string",
      "redirectUrl": "string"
    },
    "discardPolicyType": "DISCARD_PERCENTAGE"
  }
}

DELETE REST API

This resource removes the scp-worker Pod Overload Action Policy configuration data based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy

Table 2-247 URI Query Parameters Supported by the DELETE Method

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
thresholdLevel String M 1 Indicates the name of a threshold level, for example, MINOR, MAJOR, and CRITICAL.

This is the threshold level for which the query is being triggered. This returns the overload Action policy configuration for the queried threshold level.

Note:

thresholdLevel is a valid combination of query parameters.

Table 2-248 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     204 NO CONTENT Returns the successful response in case deletion of record is successful.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found. This data type can have 403 response code that indicates operation is not allowed.

Example

Successful response

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-action-policy?thresholdLevel=LEVEL1" -H "accept: application/json"
Response Code: 204 No Content

2.25.3 Configuring Pod Overload Discard Policy

This section describes SCP-Worker Pod Overload Discard Policy configurations based on the threshold level.

Resources

The following table describes the resource name to retrieve, add, update, and remove the SCP-Worker Pod Overload Discard Policy data based on the query parameters.

Table 2-249 Resource Name

Resource Name Resource URI HTTP Method Description
pod-overload-discard-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy GET Retrieves all the scp-worker Pod Overload Discard Policy data configured in SCP.
pod-overload-discard-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy GET Retrieves the scp-worker Pod Discard Policy data configured based on the threshold level in SCP.
pod-overload-discard-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy PUT Adds the scp-worker Pod Discard Policy data to SCP. By default, this policy supports MINOR, MAJOR, and CRITICAL levels.
Note:
  • You can add new customized threshold levels.
  • Do not configure the Warn threshold level.
pod-overload-discard-policy /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy DELETE Removes the configured scp-worker Pod Discard Policy data by the threshold level.

Note: You cannot remove MINOR, MAJOR, and CRITICAL threshold levels.

Data Model

Request Body

The following table describes the field names of the DiscardPolicyWrapper data type.

Table 2-250 DiscardPolicyWrapper

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL.
data WorkerPodOlDiscardPolicyData M Contains the cpuOverloadConfig data.

Table 2-251 DiscardPolicyConfig Threshold Level

Threshold Level discardPercentage sbiMsgPriorityDiscardForm
MINOR 20 16
MAJOR 50 8
CRITICAL 70 4

Table 2-252 WorkerPodOlDiscardPolicyData

Field Name Data Type Mandatory (M) or Optional(O) Range Description
discardPercentage Integer M 1-100 Indicates the percentage of messages to be discarded if the CPU overload threshold level exceeds the configured limit.
sbiMsgPriorityDiscardFrom Integer M 0-31 Discards the requests having SBI message priority greater than or equal to the configured limit.

Resource Definition

GET REST API

This resource fetches the scp-worker Pod Overload Discard Policy data based on the query parameters.

If no query parameter is provided, all the Discard Policy data is returned.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy

Table 2-253 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
thresholdLevel String M Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL.

This is the threshold level for which the query is being triggered. This returns the overload Discard policy configuration for the queried threshold level.

Table 2-254 Data Structures Supported by the GET ALL Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
List<DiscardPolicyWrapper> M 1 200 OK Indicates the list of DiscardPolicyWrapper data.

Table 2-255 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
DiscardPolicyWrapper M 1 200 OK Indicates the DiscardPolicyWrapper configuration data.

On successful response, returns the overload Discard configuration data.

ProblemDetails M 1 404 NOT FOUND Returns error with problem details in case of any issue and if the query is unable to fetch the results. This data type can have 403 response code that indicates operation is not allowed.

Example

Successful response

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy?thresholdLevel=CRITICAL" -H "accept: application/json"

Response Code: 200 OK
Response Body:
{
  "thresholdLevel": "CRITICAL",
  "data": {
    "discardPercentage": 30,
    "sbiMsgPriorityDiscardFrom": 4
  }
}

PUT REST API

This resource adds or updates the scp-worker Pod Overload Discard Policy configuration data using the request body.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy

Table 2-256 Data Structures Supported by the PUT Response Body

Field Name Mandatory (M) or Optional(O) Response Codes Description
DiscardPolicyWrapper M 200 OK Indicates the DiscardPolicy configuration data.

On successful response, returns the overload Discard configuration data.

ProblemDetails M 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571. This data type can have 403 response code that indicates operation is not allowed.

Returns BAD request in case request is incorrect. In response, sends probLemDetails as defined in 29.571.

Example

Successful response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/V1/scp-worker/pod-overload-discard-policy" -H "accept: */*" -H "Content-Type: application/json" -d "{\"data\":{\"discardPercentage\":40,\"sbiMsgPriorityDiscardFrom\":19},\"thresholdLevel\":\"LEVEL1\"}"

Response Code: 201 OK
Response Body:
{
  "thresholdLevel": "LEVEL1",
  "data": {
    "discardPercentage": 40,
    "sbiMsgPriorityDiscardFrom": 19
  }
}

DELETE REST API

This resource removes the scp-worker Pod Overload Discard Policy configuration data based on the query parameters.

Resource URI: /ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy

Table 2-257 URI Query Parameters Supported by the DELETE Method

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
thresholdLevel String M 1 Indicates the name of a threshold level, for example, MINOR, MAJOR, WARN, and CRITICAL.

This is the threshold level for which the query is being triggered. This returns the overload Discard policy configuration for the queried threshold level.

Note:

thresholdLevel is a valid combination of query parameters.

Table 2-258 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     200 OK Returns the successful response in case deletion of record is successful.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found. This data type can have 403 response code that indicates operation is not allowed.

Example

Successful response

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-worker/pod-overload-discard-policy?thresholdLevel=LEVEL1" -H "accept: application/json"

Response Code: 204 No Content

2.26 Configuring SEPP InterPlmn Info

This section provides SEPP InterPlmn Info REST API configurations to enable SCP integration with Security Edge Protection Proxy (SEPP) to route 5G Service Based Interface (SBI) roaming subscriber traffic outside the network to the required Public Land Mobile Network (PLMN).

Resources

The following table describes the resource name to retrieve, add, update, and remove SEPP Info based on the query parameters.

Table 2-259 Resource Name

Resource Name Resource URI HTTP Method Description
sepp-config /ocscp/scpc-configuration/v1/sepp-config GET Retrieves all the SEPP Info configured list at SCP or specific records based on the query parameters.
sepp-config /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId} GET Retrieves SEPP Info records based on nfInstanceId as a path variable.
sepp-config /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId} PUT Adds or updates SEPP Info details configured in SCP.
sepp-config /ocscp/scpc-configuration/v1/sepp-config/ {nfInstanceId} PATCH Updates or modifies SEPP Info details configured in SCP.
sepp-config /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId} DELETE Removes the configured SEPP Info details based on nfInstanceId.

Data Model

Request Body

The following table describes the field names of the InterPlmnRoutingInfo data type.

Table 2-260 InterPlmnRoutingInfo

Field Name Data Type Mandatory (M) or Optional(O) Description
nfInstanceId String M Specifies the identity of the NF instance for which routing information is fetched.
seppInfo remotePlmnList String M This is the remote PLMN list served by SEPP, utilized in roaming scenarios to select SEPP based on the PLMN in the FQDN.
mcc String M Indicates the mobile country code.

It is a three digit number ranging from 0 to 9.

mnc String M Indicates the mobile network code.

It can be of two or three digits ranging from 0 to 9.

http String M Enables the HTTP connection.

The value can be 0 to 65535.

https String M Enables the HTTPS connection.

The value can be 0 to 65535.

Response Body

The following table describes response body data models that varies based on the REST operation status.

Table 2-261 Response Body Data Type

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(InterPlmnRoutingInfo) M 1 200 OK Indicates the list of SEPP Info (InterPlmnRoutingInfo) matching criteria.
ProblemDetails M 1 404 NOT FOUND Returns when the data is not found for given query parameters.
JSON Format
[  
 {
  "nfInstanceId" : "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
  "seppInfo": {
    "remotePlmnList": [{
        "mcc": "327",
        "mnc": "15"
    }, {
        "mcc": "328",
        "mnc": "16"
    }, {
        "mcc": "329",
        "mnc": "17"
    }],
    "seppPorts": {
        "http": "8000",
        "https": "8090"
    }
  }
 },{
   ....
   ...  
  }
]

Resource Definition

GET REST API

This resource fetches the SEPP Info details (InterPlmnRoutingInfo) based on the query parameters.

If no query parameter is provided, all the SEPP info details are returned.

Resource URI: /ocscp/scpc-configuration/v1/sepp-config

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-262 URI Query Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
nfInstanceId String O Specifies the identity of the NF instance for which routing information is fetched.

Note:

nfInstanceId is a valid combination of query parameter or path variable.

Table 2-263 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(InterPlmnRoutingInfo) M 1 200 OK Indicates the list of SEPP Info (InterPlmnRoutingInfo) or specific record based on the query parameters.
ProblemDetails M 1 404 NOT FOUND Returns when the data is not found for given query parameters.

Example

Successful response - 1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config" -H "accept: application/json"
[    
  {
    "nfInstanceId": "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
    "seppInfo": {
        "remotePlmnList": [{
            "mcc": "327",
            "mnc": "15"
        }, {
            "mcc": "328",
            "mnc": "16"
        }],
        "seppPorts": {
            "http": "8000",
            "https": "8090"
        }
    }
}
]

Successful response - 2

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config?nfInstanceId=1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"  
 
{
    "nfInstanceId": "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
    "seppInfo": {
        "remotePlmnList": [{
            "mcc": "327",
            "mnc": "15"
        }, {
            "mcc": "328",
            "mnc": "16"
        }],
        "seppPorts": {
            "http": "8000",
            "https": "8090"
        }
    }
}

Successful response - 3

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"  
 
{
    "nfInstanceId": "1faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
    "seppInfo": {
        "remotePlmnList": [{
            "mcc": "327",
            "mnc": "15"
        }, {
            "mcc": "328",
            "mnc": "16"
        }],
        "seppPorts": {
            "http": "8000",
            "https": "8090"
        }
    }
}

Failure case 1

$ curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config?nfInstanceId=4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"
 
 
Response Body:
{
  "title": "Not Found",
  "status": "404",
  "detail": "Sepp Info configuration data not found against given query parameter(s), Please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/sepp-config?nfInstanceId=4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource adds or updates the SEPP Info configuration using the request body.

Resource URI: /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId}

Table 2-264 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
InterPlmnRoutingInfo M 1 200 OK Indicates the InterPlmn RoutingInfo configuration data.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1.

Example
Successful response
$ curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: */*" -H "Content-Type: application/json" -d "{ \"nfInstanceId\": \"9faf1bbc-6e4a-4454-a507-aef01a101a06\", \"seppInfo\": { \"remotePlmnList\": [{ \"mcc\": \"267\", \"mnc\": \"321\" }], \"seppPorts\": { \"http\": \"8000\", \"https\": \"4430\" } }} '"
 
  {
    "nfInstanceId": "2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
    "seppInfo": {
        "remotePlmnList": [{
            "mcc": "267",
            "mnc": "321"
        }],
        "seppPorts": {
            "http": "8000",
            "https": "4430"
        }
    }
}  
 
200 OK
PATCH 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-265 URI Query Parameters Supported by the PATCH method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
nfInstanceId String M 1 Specifies the identity of the NF instance for which routing information is fetched.
patchDocument String M 1 Indicates the patchDocument to be sent.

Example:

[{"op":"replace","path":"/seppInfo/seppPorts/http","value":"8000"}

{"op":"replace","path":"/seppInfo/seppPorts/https","value":"9000"}]

Successful response: Request Body

$ curl -X PATCH "http://<localhost>:8081/ocscp/scpcconfiguration/v1/sepp-config/2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json" -H "Content-Type: application/merge-patch+json" -d "[{\"op\":\"replace\",\"path\":\"/seppInfo/seppPorts/https\",\"value\":\"9010\"},  {\"op\":\"replace\",\"path\":\"/seppInfo/seppPorts/http\",\"value\":\"9100\"}]"

Table 2-266 PATCH Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
InterPlmnRoutingInfo M 1 200 OK Indicates the InterPlmn RoutingInfo configuration data.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1.

Response body

{
    "nfInstanceId": "2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a",
    "seppInfo": {
        "remotePlmnList": [{
            "mcc": "327",
            "mnc": "15"
        }, {
            "mcc": "328",
            "mnc": "16"
        }],
        "seppPorts": {
            "http": "9010",
            "https": "9000"
        }
    }
}

DELETE REST API

This resource removes the SEPP Info configuration data based on query parameters.

Resource URI: /ocscp/scpc-configuration/v1/sepp-config/{nfInstanceId}

Table 2-267 URI Query Parameters Supported by the DELETE method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
nfInstanceId String O 1 Specifies the identity of the NF instance for which routing information is fetched.

Note:

nfInstanceId is a valid combination of query parameter or path variable.

Table 2-268 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
None     204 OK In successful scenarios, only response code is returned.
ProblemDetails M 1 404 NOT FOUND When no matching entry is found.
Example

Successful response - 1

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/2faf1bbc-6e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json" */*"
 
204 OK
 

Failure case 1: When no matching entry is found.

$ curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/sepp-config/4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a" -H "accept: application/json"
 
Response Body:
{
  "title": "Not Found",
  "status": "404",
  "detail": "Sepp Info configuration data not found against given query parameter(s), Please refer to the User Guide",
  "instance": "/ocscp/scpc-configuration/v1/sepp-config4faf1bbc-5e4a-4454-a507-a14ef8e1bc6a",
  "cause": "DATA_NOT_FOUND"
}

2.27 Configuring App Routing Options

The following section provides configuration details about routing options applicable for Mediation.

Resources

The following table describes the resource name to retrieve, add, update, and remove App routing options.

Table 2-269 Resource Name

Resource Name Resource URI HTTP Method Description
approutingoptions /ocscp/scpc-configuration/{version}/approutingoptions GET ALL Retrieves all configured App routing options.
approutingoptions /ocscp/scpc-configuration/{version}/approutingoptions/{appname} GET

Retrieves the configured App routing options specified using the field appname.

Note: Routing options can be specified only for Mediation, therefore only "mediation" appname is supported.

approutingoptions /ocscp/scpc-configuration/{version}/approutingoptions/{appname} PUT

Updates the configured App routing options specified using the field appname.

Note: You cannot create new routing options but you can only update them. Routing options for appname Mediation can only be updated.

approutingoptions /ocscp/scpc-configuration/{version}/approutingoptions/{appname} DELETE Removes the configured App routing options specified using the appname field.

Note: DELETE method is not supported.

Data Model

The following table describes the supported data type.

Table 2-270 approutingoptions

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Value
appName String M 1 Indicates the name of the application for which the routing option has to be configured. mediation mediation
routingOptions JSON M 1 Indicates the JSON structure to store the routing options. NA { "appName": "mediation", "routingOptions": { "v1": { "retry": true, "maxRetryAttempts": 2, "responseTimeout": "1s", "exceptionErrorResponses": [ { "statusCode": [ "DEFAULT" ], "action": "continue_processing" }, { "statusCode": [ "MSGDECODEFAILURE" ], "action": "continue_processing" }, { "statusCode": [ "MAXHDRSIZEEXCEEDED" ], "action": "continue_processing" } ] } } }

Table 2-271 approutingOptions

Field Name Data Type Mandatory (M) or Optional(O) Description Default Value
retry boolean O Indicates whether to attempt retry or not when the routing fails. true
maxRetryAttempts INT O Indicates the maximum number of retry attempts.

Minimum value is 1, Maximum value is 10.

1
responseTimeout String O Indicates the allotted time to respond to a message request.

Value Range: 100 - 50000 milliseconds or 1 - 50 seconds.

1s
exceptionErrorResponses List<ExceptionErrorResponses> O Indicates the list of ExceptionErrorResponses. Specifies the methods to handle exceptions in case of routing failures.

Note: exceptionErrorResponses specify how exceptions should be handled. In the exceptionErrorResponses of routingOptions, three exception configurations will be created by default during deployment. These configurations will include the status codes DEFAULT, MSGDECODEFAILURE, and MAXHDRSIZEEXCEEDED, with the action set to continue_processing. This means that if an exception occurs during mediation invocation, the process will continue. To change this behavior, the user must create their own exception configuration by specifying actions for specific status codes.

"exceptionErrorResponses": [ { "statusCode": [ "DEFAULT" ], "action": "continue_processing" }, { "statusCode": [ "MSGDECODEFAILURE" ], "action": "continue_processing" }, { "statusCode": [ "MAXHDRSIZEEXCEEDED" ], "action": "continue_processing" }, ]

Table 2-272 exceptionErrorResponses

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Default Value
statusCode List<String> M 1..N Indicates the list of status codes that matches with the status code received from the application. The required action specified by action field is taken. HTTP Status Codes, HTTP Status with other defined custom status (RESPONSE_TIMEOUT and CONNECTION_FAILURE)

Default values are: DEFAULT, MSGDECODEFAILURE, and MAXHDRSIZEEXCEEDED

action String M 1 Indicates the action to be taken when the above mentioned status code is received.

send_error_response: Error to be sent if the received status code from application is present in the statusCode list.

continue_processing: Continue with processing of message if the received status code from application is present in the statusCode list.

errorProfileConfiguration JSON C (mandatory when action=send_error_response) 1 The error profile to be sent when the action to perform is send_error_response when the statusCode matches. NA

Table 2-273 errorProfileConfiguration

Field Name Data Type Mandatory (M) or Optional(O) Description Default Value
errorCode Int O Indicates configurable error codes to be sent by SCP to consumer NFs. Valid HTTP status codes include 5xx and 4xx error codes, as well as custom error codes such as DEFAULT, RESPONSE_TIMEOUT, and CONNECTION_FAILURE. For example, 500, 502, 400, 404 and so on.
errorCause String O

Indicates the error cause that is specific to the occurrence of the problem.

NA
errorTitle String O Indicates the title of the error. NA
errorDescription String O Indicates an explanation specific to the occurrence of the problem. NA
retryAfter String C Indicates the retry interval.

Mandatory if ERROR code is 3xx series and action is send_error_response. The time unit supported is seconds.

Example: 2s, 3s, and so on.

redirectUrl String C

Indicates the AbsoluteURL of the resource to which the message is redirected to.

Mandatory if ERROR code is 3xx series and action is send_error_response.

Default Routing Options

In the exceptionErrorResponses of routingOptions, three exception configurations are created by default during deployment. The status codes for these configurations are DEFAULT, MSGDECODEFAILURE, and MAXHDRSIZEEXCEEDED, with the action set to continue processing. The routing options will be created with the following default configurations:
{
    "appName": "mediation",
    "routingOptions": {
      "retry": true,
      "maxRetryAttempts": "2",
      "responseTimeout": "1s",
      "exceptionErrorResponses": [
        {
          "statusCode": [
            "DEFAULT"
          ],
          "action": "continue_procesing"
        },
         {
          "statusCode": [
            "MSGDECODEFAILURE"
          ],
          "action": "continue_procesing"
        },
         {
          "statusCode": [
            "MAXHDRSIZEEXCEEDED"
          ],
          "action": "continue_procesing"
        }
      ]
    }
  }

Request or Response Body

The following table describes response body based on the REST operation status.

RoutingOptions

{
    "appname": "mediation"
    "routingOptions":
     {
        "retry": true,
        "maxRetryAttempts": 4,
        "responseTimeout": 5s,
        "exceptionErrorResponses": [{
            "statusCode": ["501", "504", "connection_failure", "response_timeout", "SERVICE_UNAVAILABLE" ]
            "action": "send_error",    
            "errorProfileConfiguration": {
               "errorCode": 503,
               "errorCause": "MEDIATION_NOT_REACHABLE",
               "errorTitle": "Mediation service unreachable",
               "errorDescription": "Mediation service is not reachable",
               "retryAfter": "5",
               "redirectUrl": ""
             }
        }]
    }
}

Resource Definition

GET REST API

This resource retrieves routing options for all the applications.

Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions

The following table describes the data structure supported by the GET method on this resource.

Table 2-274 Data Structure Supported by the GET Method

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
approutingoptions M 1..N 200 OK Routing options configuration for the application.

This resource retrieves routing options for the application specified by appname.

Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions/{appname}

The following table describes the path parameters supported by the GET method on this resource.

Table 2-275 Path Parameters Supported by the GET Method

Name Data Type Mandatory (M) or Optional(O) Description
appname String M Fetches configurations on app name.

The supported value is "mediation".

Table 2-276 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
approutingoptions M 1 200 OK Indicates the routing options configuration for the Application.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example

Success response for GET ALL

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions" -H "accept: application/json"

HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT

[
  {
    "appName": "mediation",
    "routingOptions": {
      "retry": false,
      "maxRetryAttempts": 6,
      "responseTimeout": "10s",
      "exceptionErrorResponses": [
        {
          "statusCode": [
            "DEFAULT"
          ],
          "action": "continue_processing"
        },

      {
        "statusCode": [
          "MSGDECODEFAILURE"
        ],
        "action": "continue_processing"
      },

      {
        "statusCode": [
          "MAXHDRSIZEEXCEEDED"
        ],
        "action": "continue_processing"
      },
        {
          "statusCode": [
            "501"
          ],
          "action": "send_error_response",
          "errorProfileConfiguration": {
            "errorCode": 501,
            "errorCause": "NOT FOUND",
            "errorTitle": "NOT FOUND ",
            "errorDescription": "NOT FOUND",
            "retryAfter": "",
            "redirectUrl": ""
          }
        }
      ]
    }
  }
]

Success response for GET

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/mediation" -H "accept: application/json"

HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT

{
  "appName": "mediation",
  "routingOptions": {
    "retry": false,
    "maxRetryAttempts": 6,
    "responseTimeout": "10s",
    "exceptionErrorResponses": [
      {
        "statusCode": [
          "DEFAULT"
        ],
        "action": "continue_processing"
      },

      {
        "statusCode": [
          "MSGDECODEFAILURE"
        ],
        "action": "continue_processing"
      },

      {
        "statusCode": [
          "MAXHDRSIZEEXCEEDED"
        ],
        "action": "continue_processing"
      },
      {
        "statusCode": [
          "501"
        ],
        "action": "send_error_response",
        "errorProfileConfiguration": {
          "errorCode": 501,
          "errorCause": "NOT FOUND",
          "errorTitle": "NOT FOUND ",
          "errorDescription": "NOT FOUND",
          "retryAfter": "",
          "redirectUrl": ""
        }
      }
    ]
  }
}

Failure response

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/med" -H "accept: application/json"

HTTP/1.1 404 Not Found
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT

{
  "title": "Not Found",
  "status": "404",
  "detail": "App Routing Options response data not found against given query parameter(s)",
  "instance": "/ocscp/scpc-configuration/v1/approutingoptions/med",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource configures routing options for the application.

Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions/{appname}

Table 2-277 Data Structures Supported by the PUT Request Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Description
approutingoptions M 1 Indicates the routing options configuration for the Application.

Table 2-278 Data Structures Supported by the PUT Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
approutingoptions M 1 200 OK Indicates the routing options configuration for the Application.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.
ProblemDetails M 1 400 BAD REQUEST Returns the ProblemDetails structure as defined in 3GPP TS 29.571.

Example

Success response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/mediation" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appName\":\"mediation\",\"routingOptions\":{\"retry\":false,\"maxRetryAttempts\":6,\"responseTimeout\":\"10\",\"exceptionErrorResponses\":[{\"statusCode\":[\"DEFAULT\"],\"action\":\"continue_processing\"},{\"statusCode\":[\"501\"],\"action\":\"send_error_response\",\"errorProfileConfiguration\":{\"errorCode\":501,\"errorCause\":\"NOT FOUND\",\"errorTitle\":\"NOT FOUND \",\"errorDescription\":\"NOT FOUND\",\"retryAfter\":\"\",\"redirectUrl\":\"\"}}]}}"



HTTP/1.1 201 Ok
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT


{
  "appName": "mediation",
  "routingOptions": {
    "retry": false,
    "maxRetryAttempts": 6,
    "responseTimeout": "10s",
    "exceptionErrorResponses": [
      {
        "statusCode": [
          "DEFAULT"
        ],
        "action": "continue_processing"
      },
      {
        "statusCode": [
          "501"
        ],
        "action": "send_error_response",
        "errorProfileConfiguration": {
          "errorCode": 501,
          "errorCause": "NOT FOUND",
          "errorTitle": "NOT FOUND ",
          "errorDescription": "NOT FOUND",
          "retryAfter": "",
          "redirectUrl": ""
        }
      }
    ]
  }
}

Failure response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/approutingoptions/med" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"appName\":\"mediation\",\"routingOptions\":{\"retry\":false,\"maxRetryAttempts\":6,\"responseTimeout\":\"10\",\"exceptionErrorResponses\":[{\"statusCode\":[\"DEFAULT\"],\"action\":\"continue_processing\"},{\"statusCode\":[\"501\"],\"action\":\"send_error_response\",\"errorProfileConfiguration\":{\"errorCode\":501,\"errorCause\":\"NOT FOUND\",\"errorTitle\":\"NOT FOUND \",\"errorDescription\":\"NOT FOUND\",\"retryAfter\":\"\",\"redirectUrl\":\"\"}}]}}"

HTTP/1.1 400 Bad Request
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:08:49 GMT

{
  "title": "Bad Request",
  "status": "400",
  "detail": "App Name must always be mediation",
  "instance": "/ocscp/scpc-configuration/v1/approutingoptions/med",
  "cause": "INVALID_QUERY_PARAM"
}

DELETE REST API

This resource removes all the application routing options based on ruleName.

Note:

DELETE method is not supported.

Resource URI: /ocscp/scpc-configuration/{version}/approutingoptions/{appname}

Table 2-279 Path Parameters Supported by the DELETE Response Body on this Resource

Name Data Type Mandatory (M) or Optional(O) Description
appname String M Removes configurations on app name.

Table 2-280 Data Structures Supported by the DELETE Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.
ProblemDetails M 1 400 BAD REQUEST Returns the ProblemDetails structure as defined in 3GPP TS 29.571.

2.28 Configuring Mediation Trigger Point

This section describes the trigger points configurations to define the filter criteria for a message to decide whether to invoke mediation or not.

Resources

The following table describes the resource name to retrieve, add, update, and remove Mediation trigger points.

Table 2-281 Resource Name

Resource Name Resource URI HTTP Method Description
mediation-trigger-point-config

/ocscp/scpc-configuration/{version}/mediation-trigger-point-config

GET

Retrieves all Mediation trigger point configurations.

mediation-trigger-point-config /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName} GET Retrieves Mediation trigger point configuration for the specified ruleName.
mediation-trigger-point-config

/ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}

PUT

Configures Mediation trigger point configuration for the specified data.

mediation-trigger-point-config /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName} PATCH Updates the Mediation trigger point configuration by ruleName.
mediation-trigger-point-config

/ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}

DELETE

Removes the Mediation trigger point configuration for the specified ruleName.

Data Model

The following table describes the supported data type.

Table 2-282 MediationTriggerPointConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String M 1 Unique rule name for each mediation configuration.

It is a unique primary key.

triggerPoints

Array(TriggerPoint)

M 1..N

List of trigger points to be enabled if matches.

One or more of the following trigger points:"requestIngress", "requestEgress", "responseIngress", "responseEgress"

nfType NFType C 1 NFType for which mediation configuration is required.

NFType is as per 3GPP TS 29.510 Section 6.1.6.3.3 Enumeration: NFType.

serviceName String C 1 The service of NFType for which mediation configuration is required.

NFType is as per 3GPP TS29.510 Section 6.1.6.3.11 Enumeration: ServiceName.

match Array(Match) O 1..N

List of match blocks to be satisfied for the rule to be activated.

Minimum number of blocks is 1.

Maximum number of blocks is 20.

groupId String O 1 groupId for which mediation configuration is required.

Mediation configuration for a specific group is applicable to the mediation requests or responses received only from the same group. HTTP Mediation service consumer NFs which requires the same mediation rules can be grouped together using this groupId.

httpMethods Array(String) M 1..N HTTP methods (GET,POST,PUT,PATCH,DELETE,OPTIONS)
messageType Array(MessageType) M 1..N The allowed message types are [svc-request-message], [notification-message], or both [notification-message, svc-request-message].
action Action M 1 Action Wrapper to set the type of action to be taken on the message.

Note:

For each trigger point configuration, the combination of NfType, serviceName, httpMethods, messageType and triggerPoints methods must be unique. No new records can be added with the same combination.
For example, if a configuration exists with the following values:
  • ruleName: medRule1
  • nfType: UDM
  • serviceName: nudm-uecm
  • httpMethod: {PUT, POST}
  • messageType: [notification-message, svc-request-message]
  • triggerPoints: [requestIngress]
Then, adding a similar configuration using the same nfType, serviceName, and httpMethods but with a different rule name, as shown below, will not be allowed:
  • ruleName: medRule2
  • nfType: UDM
  • serviceName: nudm-uecm
  • httpMethod: {PUT, POST}
  • messageType: [notification-message, svc-request-message]
  • triggerPoints: [requestIngress]

Table 2-283 TriggerPoint

Order of Invocation Enumeration value Description
First "requestIngress" Mediation invocation after receiving the ingress 5G SBI request message.
Second

"requestEgress"

Mediation invocation before forwarding the 5G SBI request message.

Third

"responseIngress"

Mediation invocation after receiving the ingress 5G SBI response message.

Fourth

"responseEgress"

Mediation invocation before forwarding the 5G SBI response message.

Table 2-284 MessageType

Enumeration value Description
"notification-message" The message type is a notification message.

"svc-request-message"

The message type is a service request message.

Table 2-285 Match

Field Name Data Type Description Required
headers

HeaderBodyMatch[]

List of header names and values to match using MatchType comparison. All conditions within a single header block are combined with AND semantics.
  • Minimum number of elements/conditions: 1
  • Maximum number of elements/conditions: 5
anyOf
body

HeaderBodyMatch[]

List of "body IE" JSON Pointers and their corresponding values to match using MatchType comparison. All conditions within a single body block are combined with AND semantics.
  • Minimum number of elements/conditions: 1
  • Maximum number of elements/conditions: 5
anyOf
userDefinedVariables HeaderBodyMatch[] List of userDefinedVariables names (to be selected from the dropdown in CNCC) and their corresponding values to match using MatchType comparison. All conditions within a single body block are combined with AND semantics.
  • Minimum number of elements/conditions: 1
  • Maximum number of elements/conditions: 5
anyOf
Match Parameter Semantics
  • Match Blocks using OR Semantics:

    The match wrapper consists of multiple match blocks, which are evaluated using OR semantics. This means that for the overall match wrapper to evaluate to true, it is sufficient for any one match block to satisfy the conditions.

    For example, if the match wrapper contains three match blocks, the entire wrapper will be considered a match as long as at least one of the blocks matches the conditions.

  • Internal Components of a Match Block (AND Semantics)
    Each match block contains three components:
    • Body: A list of match conditions for body fields.
    • Headers: A list of match conditions for headers.
    • userDefinedVariables (UDVs): A list of match conditions for user-defined variables.
    These components are evaluated using AND semantics:
    • All conditions within each component (for example, all body conditions, all header conditions, and all UDV conditions) must be satisfied.
    • Furthermore, all three components (body, headers, and userDefinedVariables) must match in order for the block to be considered a match.

Table 2-286 HeaderBodyMatch

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
name String M 1 Name of the header or the bodyIE or the userDefinedVariable JSON Pointer.

Note: List of predefined headers available in this section. JSON Pointer must point to basic data types. Arrayed and Object values are not supported.

match_type MatchType M 1 One of the supported match operators.
value String C 0..1 Value of header or bodyIE or userDefinedVariable to be matched.

The value is only required if match_type is not range.

range Range C 0..1 Range start (inclusive).

It is used only when match_type is range.

Note:

Either the value or the range attribute must be present.

The supported pseudo headers are :scheme, :authority, :path, and :status.

For :path, when specifying a match, ignore the leading or the first forward slash (/) for the match to succeed.

Example:

"headers":
    [
        {
            "name": ":path",
            "value": "USEast/nudm-uecm/v1/imsi-1100000001/registrations/amf-3gpp-access",
            "match-type": "exact"
        }
    ]

For :status, the value must be specified as an integer.

Example:

"headers":
    [
        {
            "name": ":status",
            "value": "200",
            "match-type": "exact"
        }
    ]

For :scheme and :authority, provide the exact value as received in the request.

Table 2-287 MatchType

Field Name Data Type Description Required
exact String Matching is performed using the exact comparison. oneOf
prefix String Matching is performed using the prefix comparison. oneOf
range String Matching is performed using the range comparison. oneOf
regex String Matching is performed using the ECMAScript Regular Expression comparison. oneOf

Table 2-288 Range

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
start String O 0..1 The first value, that is, range start inclusive, identifying the start of the range.

This string consists of only digits.

Pattern: "^[0-9]+$"

end String O 0..1

The last value, that is, range end inclusive, identifying the end of the range.

This string consists of only digits.

Pattern: "^[0-9]+$"

Table 2-289 Action

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
actionType ActionType(String) M 1 This parameter is to select the action for the configured trigger point rules matching the trigger point rules configuration.
  • Allowed Values:forwardToMediationService, setTriggerPointsInvocation
forwardToMediationService: If the mediationTriggerPointConfig conditions are matched for a request, the request will be sent to the mediation service for the particular trigger point specified in the triggerPoints field where the match is successful.setTriggerPointsInvocation: If the mediationTriggerPointConfig conditions are matched for a request, the matching conditions will not be attempted again for the trigger points present in the triggerPointList field. Instead, the request will be sent directly to mediation for those trigger points.
triggerPointList array(TriggerPoint) C 1....N (where 1 <=N<=4) List of trigger points to be invoked for matching the configured trigger point rule. This is only applicable for actionType = setTriggerPointsInvocation. Additionally, the first value in the triggerPointList should not precede the parent triggerPoints.

Example (not allowed)triggerPoints: ["requestEgress"], "action": { "actionType": "setTriggerPointsInvocation", "triggerPointList": [ "requestIngress" ] }

In this example, "requestIngress" is listed after "requestEgress", which violates the rule that the first trigger point in the triggerPointList should not occur before the first trigger point in the parent triggerPoints.

Examples

Request body

{
  "groupId": "string",
  "ruleName": "string",
  "match": [
    {
      "body": [
        {
          "range": {
              "start": 0,
              "end": 0
           },
          "match-type": "exact",
          "name": "string",
          "value": "string"
        }
      ],
      "headers": [      
       {
          "range": {
              "start": 0,
              "end": 0
           },
          "match-type": "exact",
          "name": "string",
          "value": "string"
        }    
      ],
     "userDefinedVariables": [      
       {
          "range": {
              "start": 0,
              "end": 0
           },
          "match-type": "exact",
          "name": "string",
          "value": "string"
        }    
      ]
    }
  ],
  "serviceName": "5g-sbi-notification",
  "httpMethods": ["PUT","POST"]
  "nfType": "5G_EIR",
  "triggerPoints": [
    "requestEgress"
  ],
  "messageType": [
    "notification-message"
  ],
  "action": {
      "actionType": "forwardToMediationService"
    }
}

Response body:

The response body for GET is the list of the following JSON structure.

The response body of PUT and PATCH is the following JSON structure.

{
  "groupId": "string",
  "ruleName": "string",
  "match": [
    {
      "body": [
        {
          "range": {
              "start": 0,
              "end": 0
           },
          "match-type": "exact",
          "name": "string",
          "value": "string"
        }
      ],
      "headers": [      
       {
          "range": {
              "start": 0,
              "end": 0
           },
          "match-type": "exact",
          "name": "string",
          "value": "string"
        }    
      ],
      "userDefinedVariables": [      
       {
          "range": {
              "start": 0,
              "end": 0
           },
          "match-type": "exact",
          "name": "string",
          "value": "string"
        }    
      ]
    }
  ],
  "serviceName": "5g-sbi-notification",
  "httpMethods":  [ "PUT", "POST" ]
  "nfType": "5G_EIR",
  "triggerPoints": [
    "requestEgress"
  ],
  "messageType": [
    "notification-message"
  ],
  "action": {
      "actionType": "forwardToMediationService"
    }
}

Resource Definition

GET REST API

This resource retrieves all the Mediation trigger point configurations.

Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config

Table 2-290 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationTriggerPointConfig M 1..N 200 OK Indicates Mediation trigger point configurations.

This resource retrieves all the Mediation trigger point configurations based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}

Table 2-291 Path Parameters Supported by the GET Response Body on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Fetches configurations on ruleName

Table 2-292 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationTriggerPointConfig M 1 200 OK Indicates Mediation trigger point configurations.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example

Success response for GET and GET ALL

curl -X 'GET'   'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config'   -H 'accept: application/json' -v
Note: Unnecessary use of -X or --request, GET is already inferred.
*   Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 32484 (#0)
> GET /ocscp/scpc-configuration/v1/mediation-trigger-point-config HTTP/1.1
> Host: <localhost>:8081
> User-Agent: curl/8.1.2
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Mon, 23 Sep 2024 14:16:25 GMT
<
[
  {
    "ruleName": "Mediation_rule1",
    "nfType": "UDR",
    "serviceName": "nudr-group-id-map",
    "httpMethods": [
      "GET",
      "PUT"
    ],
    "match": [
      {
        "headers": [
          {
            "name": "api-version",
            "value": "v2",
            "match-type": "exact"
          }
        ],
        "body": [
          {
            "name": "/supiorSuciList/supiorsuci",
            "value": "suci-",
            "match-type": "prefix"
          }
        ]
      }
    ],
    "triggerPoints": [
      "requestEgress"
    ],
    "groupId": "group1",
    "messageType": [
      "notification-message"
    ]
  },
  {
    "ruleName": "R1",
    "serviceName": "nudm-sdm",
    "httpMethods": [
      "GET",
      "PUT"
    ],
    "match": [
      {
        "headers": [
          {
            "name": "api-version",
            "value": "v2",
            "match-type": "exact"
          }
        ],
        "body": [
          {
            "name": "/supiorSuciList/supiorsuci",
            "value": "suci-",
            "match-type": "prefix"
          }
        ]
      }
    ],
    "triggerPoints": [
      "requestEgress"
    ],
    "groupId": "group1",
    "messageType": [
      "notification-message"
    ],

   "action": {

    "actionType": "forwardToMediationService"

    }
  }
]

Success response 2

curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1' \
  -H 'accept: application/json' -v
Note: Unnecessary use of -X or --request, GET is already inferred.
*   Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 32484 (#0)
> GET /ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1 HTTP/1.1
> Host: <localhost>:8081
> User-Agent: curl/8.1.2
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Mon, 23 Sep 2024 14:20:08 GMT
<
{
  "ruleName": "Mediation_rule1",
  "nfType": "UDR",
  "serviceName": "nudr-group-id-map",
  "httpMethods": [
    "GET",
    "PUT"
  ],
  "match": [
    {
      "headers": [
        {
          "name": "api-version",
          "value": "v2",
          "match-type": "exact"
        }
      ],
      "body": [
        {
          "name": "/supiorSuciList/supiorsuci",
          "value": "suci-",
          "match-type": "prefix"
        }
      ]
    }
  ],
  "triggerPoints": [
    "requestEgress"
  ],
  "groupId": "group1",
  "messageType": [
    "notification-message"
  ],

  "action": {

   "actionType": "forwardToMediationService"

   }
}

Failure response

curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med' \
  -H 'accept: application/json' -v
Note: Unnecessary use of -X or --request, GET is already inferred.
*   Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 32484 (#0)
> GET /ocscp/scpc-configuration/v1/mediation-trigger-point-config/med HTTP/1.1
> Host: <localhost>:8081
> User-Agent: curl/8.1.2
> accept: application/json
>
< HTTP/1.1 404 Not Found
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/problem+json
< Date: Mon, 23 Sep 2024 14:23:52 GMT
<
{
  "title": "Not Found",
  "status": 404,
  "detail": "Mediation_Configuration for given ruleName not found . Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource configures Mediation trigger points for the specified data.

Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}

Table 2-293 Data Structures Supported by the PUT Request Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Description
MediationTriggerPointConfig M 1 Indicates Mediation trigger point configurations to be added.

Table 2-294 Data Structures Supported by the PUT Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationTriggerPointConfig M 1 200 OK Indicates Mediation trigger point configurations.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.
ProblemDetails M 1 400 BAD REQUEST Returns the ProblemDetails structure as defined in 3GPP TS 29.571.
Example

Success response

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "ruleName": "Mediation_rule1",
      "nfType": "UDR",
    "serviceName": "nudr-group-id-map",
    "httpMethods": [
      "GET",
      "PUT"
    ],
    "match": [
      {
        "headers": [
          {
            "name": "api-version",
            "value": "v2",
            "match-type": "exact"
          }
        ],
        "body": [
          {
            "name": "/supiorSuciList/supiorsuci",
            "value": "suci-",
            "match-type": "prefix"
          }
        ],
        "userDefinedVariables": [
          {
            "name": "udv-1",
            "value": "376",
            "match-type":"exact"
          }
        ]
      }
    ],
    "triggerPoints": [
      "requestEgress"
    ],
    "groupId": "group1",
    "messageType": [
      "notification-message"
    ],
    "action": {
    "actionType": "forwardToMediationService"
    }
  }'

Failure response

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "ruleName": "Mediation_rule1",
      "nfType": "UDR",
    "serviceName": "nudr-group-id-map",
    "httpMethods": [
      "GET",
      "PUT"
    ],
    "match": [
      {
        "headers": [
          {
            "name": "api-version",
            "value": "v2",
            "match-type": "exact"
          }
        ],
        "body": [
          {
            "name": "/supiorSuciList/supiorsuci",
            "value": "suci-",
            "match-type": "prefix"
          }
        ],
        "userDefinedVariables": [
          {
            "name": "udv-1",
            "value": "376",
            "match-type":"exact"
          }
        ]
      }
    ],
    "triggerPoints": [
      "requestEgress"
    ],
    "groupId": "group1",
    "messageType": [
      "notification-message"
    ],
    "action": {
    "actionType": "setTriggerPointsInvocation",
    "triggerPointList": [
      "responseIngress"
    ]
    }
  }' -v

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-295 Data Structures Supported by the PATCH Request Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Description
string M 1 The patch body in the string format that must be updated.

Table 2-296 Data Structures Supported by the PATCH Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationTriggerPointConfig M 1 200 OK Indicates Mediation trigger point configurations.
ProblemDetails M 1 400 BAD REQUEST Returns the ProblemDetails structure as defined in 3GPP TS 29.571.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example

Success response:



curl -X PATCH "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -H "Content-Type: application/merge-patch+json" -d '[{ "op": "replace", "path": "/match/0/headers/0/name", "value":"amfId" }]

HTTP/1.1 200 OK
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/json
Date: Tue, 24 May 2022 12:26:55 GMT

* Connection #0 to host <localhost> left intact
{"ruleName":"Mediation_rule1","nfType":"UDR","serviceName":"nudr-group-id-map","httpMethods":["PUT"],"match":[{"headers":[{"name":"amfId","value":"v2","match-type":"exact"}],"body":[{"name":"amfId","value":"100","match-type":"prefix"}]}],"triggerPoints":["requestEgress","requestIngress","responseEgress"],"groupId":"group1"}


Failure response -1

curl -X PATCH "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -H "Content-Type: application/merge-patch+json" -d '[{ "op": "replace", "path": "/match/0/headers/0/name", "value":"amfId" }]

 HTTP/1.1 404 Not Found
 Connection: keep-alive
 Transfer-Encoding: chunked
 Content-Type: application/problem+json
 Date: Tue, 24 May 2022 12:23:18 GMT

* Connection #0 to host <localhost> left intact
{"title":"Not Found","status":"404","detail":"Mediation_Configuration for given RuleName not found . Please refer to the User Guide.'ruleName': Mediation_rule1","instance":"/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1","cause":"DATA_NOT_FOUND"}

Failure response -2

curl -X PATCH "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1" -H "Content-Type: application/merge-patch+json" -d '[{ "op": "replace", "path": "match/0/headers/match-type", "value":"prefix" }] 

HTTP/1.1 400 Bad Request
Connection: keep-alive
Transfer-Encoding: chunked
Content-Type: application/problem+json
Date: Tue, 24 May 2022 12:26:21 GMT

* Connection #0 to host <localhost> left intact
{"title":"Bad Request","status":"400","detail":"Invalid Patch Document","instance":"/ocscp/scpc-configuration/v1/mediation-trigger-point-config/Mediation_rule1","cause":"INVALID_REQUEST_BODY"}

DELETE REST API

This resource retrieves all the Mediation trigger point configuration based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/mediation-trigger-point-config/{ruleName}

Table 2-297 Path Parameters Supported by the DELETE Response Body on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Removes configurations on ruleName

Table 2-298 Data Structures Supported by the DELETE Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
ProblemDetails M 1 400 BAD REQUEST Returns the ProblemDetails structure as defined in 3GPP TS 29.571.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example

Success response

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med1" -H "accept: application/json"

HTTP/1.1 204 No Content
Date: Tue, 24 May 2022 12:22:00 GMT

Failure response

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med1" -H "accept: application/json"

 HTTP/1.1 404 Not Found
 Connection: keep-alive
 Transfer-Encoding: chunked
 Content-Type: application/problem+json
 Date: Tue, 24 May 2022 12:05:38 GMT

{
  "title": "Not Found",
  "status": "404",
  "detail": "Mediation_Configuration for given RuleName not found . Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/mediation-trigger-point-config/med1",
  "cause": "DATA_NOT_FOUND"
}

2.29 Configuring Mediation Rule

This section describes the configuration of mediation rules for creating, modifying, and deleting Mediation rules using the Rest API.

Resources

The following table describes the resource name to retrieve, add, update, and remove Mediation rules.

Table 2-299 Resource Name

Resource Name Resource URI HTTP Method Description
HTTP Mediation
  • ${mediationConfig.baseUrl}/mediation/v1/rules
  • ${mediationConfig.baseUrl}/mediation/v1/rules/
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

The following table describes the supported data type.

Table 2-300 MediationRulesConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String M 1 Unique rule name for each mediation rule.

It is a unique primary key.

format String M 1 Indicates the Format in which the rules are defined, such as DRL.
status String M 1 Indicates the status of the rule. It can have the following values:
  • DRAFT
  • APPLIED

The following fields are allowed to be modified in DRAFT status: Mediation Mode, Code, and State. The valid values for state are SAVE, CLONE, COMPILE, and APPLY.

The following fields are allowed to be modified in APPLIED status: Mediation Mode and State. The valid values for state are SAVE, CLONE, and DRAFT.

mode String M 1
Indicated whether the rule applies to mediation active or mediation test.
  • Mediation Active allows actual messages to be manipulated according to configured mediation rules.
  • Mediation Test executes the mediation rule on message copy instead of the actual message and verifies the behavior of the mediation rule.
state String M 1 Indicates the action to be applied to the rule.

The default value is SAVE.

Note: The DRAFT state is an invalid transition that could lead to an error. The valid values for state are DRAFT, SAVE, CLONE, COMPILE, and APPLY. The state of a Mediation rule is applicable to change as per the status field.

code String M 1 Indicates the configurable drool expression that matches the request/response headers and body sent by SCP.
New Rule Name String M 1 Indicates the new name of the rule.

This field appears when a CLONE state is selected.

Note:

For each mediation rule configuration, the rule name must be unique. No new rules can be added with the same name.
Request Body JSON Format
{
    "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"
}
Response Body JSON Format
{
    "name": "string",
    "format": "DRL",
    "mode": ["MEDIATION_ACTIVE","MEDIATION_TEST"],
    "status": ["DRAFT","APPLIED"],
    "code": "string"
}

Example

{
    "name": "ruleTest1",
    "format": "DRL",
    "mode": "MEDIATION_ACTIVE",
    "status": "DRAFT",
    "code": "package com.oracle.cgbu.ocmediation.nfmediation;\n  \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"ruleTest1\"\nwhen\n   req : Request(headers.has(\"Header1\") == true)\nthen \n   req.headers.add(\"NewHeader1\",\"132465\")\nend"
}

Resource Definition

GET REST API

This resource retrieves all the Mediation rules.

Resource URI: /ocscp/scpc-configuration/mediation/v1/rules

Table 2-301 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationRules M 1..N 200 OK Indicates Mediation rules.

This resource retrieves all the Mediation rules based on ruleName.

Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}

Table 2-302 Path Parameters Supported by the GET Response Body on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Fetches rule by ruleName

Table 2-303 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationRule M 1 200 OK Indicates Mediation rules.
ProblemDetails M 1 404 NOT FOUND Indicates that there is no matching entry found.

Example

Success response for GET ALL

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules"
    -H "accept: application/json"
[
    {
        "name": "ruleTest0",
        "format": "DRL",
        "mode": "MEDIATION_ACTIVE",
        "status": "DRAFT",
        "code": "package com.oracle.cgbu.ocmediation.nfmediation; import com.oracle.cgbu.ocmediation.factdetails.Request; dialect \"mvel\" rule \"ruleTest0\" when req : Request(headers.has(\"NewTest0\") == true) then req.headers.add(\"Test0\",\"0\") end"
    },
    {
        "name": "ruleTest1",
        "format": "DRL",
        "mode": "MEDIATION_ACTIVE",
        "status": "DRAFT",
        "code": "package com.oracle.cgbu.ocmediation.nfmediation; import com.oracle.cgbu.ocmediation.factdetails.Request; dialect \"mvel\" rule \"ruleTest1\" when req : Request(headers.has(\"NewTest1\") == true) then req.headers.add(\"Test1\",\"1\") end"
    }
]

Success response for GET

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
    "accept: application/json"
{
    "name": "ruleTest0",
    "format": "DRL",
    "mode": "MEDIATION_ACTIVE",
    "status": "DRAFT",
    "code": "package com.oracle.cgbu.ocmediation.nfmediation; import com.oracle.cgbu.ocmediation.factdetails.Request; dialect \"mvel\" rule \"ruleTest0\" when req : Request(headers.has(\"NewTest0\") == true) then req.headers.add(\"Test0\",\"0\") end"
}

Failure response

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest$" -H
      "accept: application/json"
{
    "title": "NOT_FOUND",
    "status": 404,
    "detail": "Rule: ruleTest$  was not found",
    "cause": "com.oracle.cgbu.ocmediationconfig.service.RulesConfigService.lambda$findByName$0(RulesConfigService.java:45)\njava.base/java.util.Optional.orElseThrow(Optional.java:403)\ncom.oracle.cgbu.ocmediationconfig.service.RulesConfigService.findByName(RulesConfigService.java:45)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.getRuleByName(RulesConfigController.java:45)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\norg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:497)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:584)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)\nio.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)\nio.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:387)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)\norg.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)\norg.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}

PUT REST API

This resource modifies the Mediation rules for the specified data.

Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}

Table 2-304 Path Parameters Supported by the PUT Response Body on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Modify rule by ruleName

Table 2-305 Data Structures Supported by the PUT Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationRule M 1 200 OK Modify Mediation rules.
ProblemDetails M 1 400 BAD REQUEST Indicates that there is no matching entry found.

Example

Success response for PUT

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
    "accept: application/json
{
    "name": "ruleTest0",
    "format": "DRL",
    "mode": "MEDIATION_ACTIVE",
    "status": "DRAFT",
    "code": "package com.oracle.cgbu.ocmediation.nfmediation;\n  \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"rule_test456\"\nwhen\n   req : Request(headers.has(\"OtherStuff\") == true)\nthen \n   req.headers.add(\"TEST\",\"132465\")\nend"
}

Failure response

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
      "accept: application/json" -d  '{"name": "ruleTest0","format":
    "DRL","status": "DRAFT","mode": "MEDIATION_TEST","state":
     "SAVE"}'
{
    "title": "BAD_REQUEST",
    "status": 400,
    "detail": "Fields: [code], are required and missing for rules with state: SAVE",
    "cause": "com.oracle.cgbu.ocmediationconfig.validator.RuleConfigValidator.validateRequiredFields(RuleConfigValidator.java:40)\ncom.oracle.cgbu.ocmediationconfig.service.RulesConfigService.saveRuleByName(RulesConfigService.java:59)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.saveRuleByName(RulesConfigController.java:67)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\norg.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:520)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:584)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)\nio.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)\nio.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:387)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)\norg.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)\norg.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}

POST REST API

This resource creates Mediation rules based on ruleName.

Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}

Table 2-306 Path Parameters Supported by the POST Response Body on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Modify Mediation rules by ruleName

Table 2-307 Data Structures Supported by the POST Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationRule M 1 201 CREATED Creates Mediation rule.
ProblemDetails M 1 404 Indicates that there is no matching entry found.

Example

Success response for POST
curl -X POST "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0"  -H
    "accept: application/json" -d  '{"name": "ruleTest0","format":  "DRL","status":
    "DRAFT","mode": "MEDIATION_TEST","state":   "SAVE","code": "package
    com.oracle.cgbu.ocmediation.nfmediation;\n   \nimport
    com.oracle.cgbu.ocmediation.factdetails.Request;\nimport
    com.oracle.cgbu.ocmediation.factdetails.Response;\nimport  java.util.Map;\nimport
    java.util.HashMap; \ndialect \"mvel\"\n\nrule  \"rule_test456\"\nwhen\n   req :
    Request(headers.has(\"OtherStuff\") ==  true)\nthen \n  
    req.headers.add(\"TEST\",\"132465\")\nend"}'
{
    "name": "ruleTest0",
    "format": "DRL",
    "mode": "MEDIATION_ACTIVE",
    "status": "DRAFT",
    "code": "package com.oracle.cgbu.ocmediation.nfmediation;\n  \nimport com.oracle.cgbu.ocmediation.factdetails.Request;\nimport com.oracle.cgbu.ocmediation.factdetails.Response;\nimport java.util.Map;\nimport java.util.HashMap; \ndialect \"mvel\"\n\nrule \"rule_test456\"\nwhen\n   req : Request(headers.has(\"OtherStuff\") == true)\nthen \n   req.headers.add(\"TEST\",\"132465\")\nend"
}
Failure response for POST
curl -X POST "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest0" -H
      "accept: application/json" -d  '{"name": "ruleTest0","format":
    "DRL","status": "DRAFT","mode": "MEDIATION_TEST","state":
     "SAVE"}'
{
  "title": "BAD_REQUEST",
  "status": 400,
  "detail": "Rule: ruleTest0  already exists in database.",
  "cause": "com.oracle.cgbu.ocmediationconfig.service.RulesConfigService.validateCreationRule(RulesConfigService.java:89)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.createRuleByName(RulesConfigController.java:74)\njdk.internal.reflect.GeneratedMethodAccessor840.invoke(Unknown Source)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)\norg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)\njakarta.servlet.http.HttpServlet.service(HttpServlet.java:547)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)\njakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:109)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:393)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859)\norg.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)\norg.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}

DELETE REST API

This resource deletes all the Mediation rules based on ruleName.

Resource URI: /ocscp/scpc-configuration/mediation/v1/rules/{ruleName}

Table 2-308 Path Parameters Supported by the DELETE Response Body on this Resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M Deletes Mediation rules by ruleName

Table 2-309 Data Structures Supported by the DELETE Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
MediationRule M 1 204 Deleted Mediation rule.
ProblemDetails M 1 404 Indicates that there is no matching entry found.

Example

Success response for DELETE

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest999" -H
    "accept: application/json"

Failure response

curl -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/rules/ruleTest$" -H
      "accept: application/json"
{
    "title": "NOT_FOUND",
    "status": 404,
    "detail": "Rule: ruleTest$  was not found",
    "cause": "com.oracle.cgbu.ocmediationconfig.service.RulesConfigService.lambda$deleteByName$1(RulesConfigService.java:52)\njava.base/java.util.Optional.orElseThrow(Optional.java:403)\ncom.oracle.cgbu.ocmediationconfig.service.RulesConfigService.deleteByName(RulesConfigService.java:52)\ncom.oracle.cgbu.ocmediationconfig.controller.RulesConfigController.deleteRuleByName(RulesConfigController.java:52)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:568)\norg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\norg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\norg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\norg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\norg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\norg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)\norg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)\norg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\norg.springframework.web.servlet.FrameworkServlet.doDelete(FrameworkServlet.java:931)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:523)\norg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\njavax.servlet.http.HttpServlet.service(HttpServlet.java:584)\nio.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)\norg.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\norg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\norg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\nio.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)\nio.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)\nio.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)\nio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\nio.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)\nio.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\nio.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)\nio.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)\nio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)\nio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\nio.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\nio.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\nio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)\nio.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)\nio.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)\nio.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)\nio.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\nio.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\nio.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)\nio.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)\nio.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)\nio.undertow.server.Connectors.executeRootHandler(Connectors.java:387)\nio.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)\norg.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)\norg.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)\norg.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)\norg.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)\njava.base/java.lang.Thread.run(Thread.java:842)"
}

2.30 Configuring Mediation Log Level

This section describes how to configure mediation and mediation-test services at the log level using the REST API.

Resources

The following table describes the resource name to retrieve, add, and update the log level of mediation and mediation-test services.

Table 2-310 Resource Name

Resource Name Resource URI HTTP Method Description
loglevel /mediation/v1/mediation-config/ GET ALL

Retrieves the log level of the mediation and mediation-test services and its library log levels.

loglevel /mediation/v1/mediation-config/{serviceName} GET Retrieves the log level of a specific service and its library log level.
loglevel

/mediation/v1/mediation-config/{serviceName}

PUT Updates log levels of mediation, mediation-test service, and its library log levels.

Data Model

The following table describes the supported data type.

Table 2-311 LoggingLevels

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
appLogLevel String M WARN Indicates the type of log level.
The following are the supported log levels:
  • WARN: Designates potentially harmful situations.
  • INFO: Designates informational messages that highlight the progress of the application at coarse-grained level.
  • ERROR: Designates error events that might still allow the application to continue running.
  • DEBUG: Designates fine-grained informational events that are most useful to debug an application.
serviceType String M NA Indicates the name of the type of service. For examples, mediation and mediation-test
packageLogLevel List(PackageLogLevel) M NA

Indicates the package level log information.

logRateControl LogRateCntrol O NA Indicates the log rate control information.

Table 2-312 PackageLogLevel

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
packageName String M Library Indicates the name of the package. It should be a valid library name.
  • The valid package names are org, io, springfox, com.zaxxer, reactor, validator, and library.
logLevelForPackage String M INFO Indicates the type of package log level.
The following are the supported log levels:
  • WARN: Designates potentially harmful situations.
  • INFO: Designates informational messages that highlight the progress of the application at a coarse-grained level.
  • ERROR: Designates error events that might still allow the application to continue running.
  • DEBUG: Designates fine-grained informational events that are most useful to debug an application
  • OFF: Designates to turn off logging.

Table 2-313 LogRateControl

Field Name Data Type Range Default Value Description
rate Integer 1-10000 1 Indicates the average number of logs allowed per second.
logLevel String NA OFF Indicates the type of log level where rate control is applied.

The following are the supported log levels:

  • WARN: Designates potentially harmful situations.
  • INFO: Designates informational messages that highlight the progress of the application at a coarse-grained level.
  • ERROR: Designates error events that might still allow the application to continue running.
  • DEBUG: Designates fine-grained informational events that are most useful to debug an application
  • OFF: Designates to turn off logging.

Response codes

The following table provides response codes and their descriptions.

Table 2-314 Response codes

Response Code Category Description
200 Success Successfully retrieves the log level of mediation.
400 Failure Bad requests occur when invalid log-level data is provided during the PUT operation.
404 Failure No log-level record was found for mediation.

Examples

Sample JSON body for PUT request API

Example to update mediation log level:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/mediation' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "serviceType": "mediation",
  "appLogLevel": "info",
  "packageLogLevel": [
    {
      "packageName": "library",
      "logLevelForPackage": "OFF"
    }
  ],
  "logRateControl": {
    "rate": 1,
    "logLevel": "OFF"
  }
}'
Response:
{
  "headers": {},
  "body": {
    "appLogLevel": "INFO",
    "packageLogLevel": [
      {
        "packageName": "library",
        "logLevelForPackage": "OFF"
      }
    ],
    "logRateControl": {
      "rate": 1,
      "logLevel": "OFF"
    },
    "serviceType": "mediation"
  },
  "statusCode": "OK",
  "statusCodeValue": 200
}

Sample JSON body for GET API response

Example to get log level for specific service:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/mediation' \
  -H 'accept: application/json'
Response :
{
  "appLogLevel": "INFO",
  "packageLogLevel": [
    {
      "packageName": "library",
      "logLevelForPackage": "OFF"
    }
  ],
  "logRateControl": {
    "rate": 1,
    "logLevel": "OFF"
  },
  "serviceType": "mediation"
}
Example to get log level for specific service:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/mediation-test' \
  -H 'accept: application/json'
Response:
{
  "appLogLevel": "WARN",
  "packageLogLevel": [
    {
      "packageName": "library",
      "logLevelForPackage": "OFF"
    }
  ],
  "logRateControl": {
    "rate": 1,
    "logLevel": "OFF"
  },
  "serviceType": "mediation-test"
}
Example to get all mediation config log levels:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/mediation/v1/mediation-config/' \
  -H 'accept: application/json'
Response:
[
  {
    "appLogLevel": "WARN",
    "packageLogLevel": [
      {
        "packageName": "library",
        "logLevelForPackage": "OFF"
      }
    ],
    "logRateControl": {
      "rate": 1,
      "logLevel": "OFF"
    },
    "serviceType": "mediation-test"
  },
  {
    "appLogLevel": "INFO",
    "packageLogLevel": [
      {
        "packageName": "library",
        "logLevelForPackage": "OFF"
      }
    ],
    "logRateControl": {
      "rate": 1,
      "logLevel": "OFF"
    },
    "serviceType": "mediation"
  }
]

2.31 Configuring Mediation Support for User Defined Variables

This section describes the configuration of user-defined variables for creating, modifying, and deleting them using the REST API.

Resources

The following table describes the resource name to retrieve, add, update, and remove user defined variables.

Table 2-315 Resource Name

Resource Name Resource URI HTTP Method Description
HTTP Mediation
  • ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables
  • ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/
GET

Retrieves a record of all configured user-defined variables.

HTTP Mediation ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} GET

Retrieves a specific record based on a user-defined variable provided as a path parameter.

For example: where variableName is user-category/prepaid-user, and so on.

HTTP Mediation ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} PUT

Updates the user-defined variables.

HTTP Mediation ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} POST

Creates the user-defined variables and generates the primary key before performing the PUT operation.

HTTP Mediation ${mediationConfig.baseUrl}/mediation/v1/user-defined-variables/{variableName} DELETE

Deletes the user-defined variables.

Data Model

The following table describes the supported data type:

Table 2-316 UserDefinedVariables Attribute Details

Field Name Data Type Mandatory (M)/Optional (O) Description
name String M

A unique variable name as per the user's requirement.

data VariableData M

Data object for the user-defined variable.

Table 2-317 VariableData Attribute Details

Field Name Data Type Mandatory (M)/Optional (O) Description
type ENUM M The data type of the variable (for example, STRING, LONG, JSON, BOOLEAN).
size Integer M

The minimum and maximum size (in Bytes) of the variable value that can be accepted.

The allowed size range is between 1 and 1024 bytes only.
description String O

The description of the user-defined variable.

Request Body JSON Format
{
    "name": "custom_var1",
    "data": {
      "type": "string",
      "size": 128,
      "description": "string"
    }
}

Response Body

The response body data model varies based on the status of the REST operation.

Table 2-318 Response Body Data Model

Data Type Mandatory (M)/Optional (O) Cardinality Description and Response Code
UserDefinedVariables M 1 User-defined variable (userDefinedVariable) matching criteria.

Response Code: 200 OK

ProblemDetails M 1 Returns when no data is found for the given query parameters.

404 NOT FOUND

ProblemDetails M 1 Returns a "Bad Request" response when parameter validation fails.

400 BAD REQUEST

Resource Definition

GET REST API

This resource fetches user-defined variables (userDefinedVariable) based on the query parameters. This resource returns all user-defined variables if no query parameters are provided.

Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}

Table 2-319 Path Parameters Supported by the GET Response Body on this Resource

Field Name Data Type Mandatory (M)/Optional (O) Description
Name String O

The identity of the user-defined variable name for which the configured user-defined variables are being fetched.

Table 2-320 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
UserDefinedVariables M 1 200 OK Indicates userDefinedVariable for fetching a specific record based on path parameters.
ProblemDetails M 1 404 NOT FOUND Returns a response when no data is found for the given path parameters.

Example

Success response for GET

curl -X GET "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/user-category" -H "accept: application/json“


Response->

    Response Code: 200    
    Response Body:
    {

       "name": "user-category",   
       "data":
        {
           "type": "string",
           "size": 128,
           "description": "string"
        }
    }

Failure response 1

curl -X GET "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/prepaid-user" -H "accept: application/json“


Response->
    Response Code: 404

    Response Body:
    {

      "title": "NOT_FOUND",
      "status": 404,
      "detail": "User-Defined-Variable: prepaid-user was not found. Please refer the User Guide",
      "cause": "USER_DEFINED_VARIABLE_NOT_FOUND"
    }

Failure response 2

curl -X GET "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/ " -H "accept: application/json“


   Response Code: 400

    Response Body:
   {

     "title": "BAD_REQUEST",
     "status": 400,
     "detail": "User-Defined-Variable body contains null or empty value. Please provide valid name. Please refer the User Guide",
     "cause": "INVALID_NAME"
   }

POST REST API

This resource creates the user-defined variables configuration using the request body.

Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}

Table 2-321 Data Structures Supported by the POST Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
UserDefinedVariables M 1 200 OK Creates the user-defined variables configuration data.
ProblemDetails M 1 400 BAD REQUEST Returns the structure of ProblemDetails.

Example

Success response for POST
curl -X POST "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Request →
        Request body:  

{

       "name": "user-category",   
       "data":
        {
           "type": "string",
           "size": 128,
                      "description": "string"
                 }
         }

Response->
    Response Code: 200    
    Response Body:
    {

       "name": "user-category",   
       "data":
        {
           "type": "string",
           "size": 128,
                      "description": "string"
                 }
    }
Failure response 1 for POST
curl -X POST "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/prepaid-user" -H "accept: application/json“
Request body: 

{

       "name": "user-category",   
       "data":
        {
           "type": "string",
           "size": 1209,
                      "description": "string"
                 }
         }

 
Response->
    Response Code: 400

    Response Body:

{
  "title": "BAD_REQUEST",
  "status": 400,
  "detail": "Request body User-Defined-VariableName: user-category does not match with param User-Defined-VariableName: user-imsi. Please refer the User Guide",
  "cause": "INVALID_KEY_COMBINATION"
}
Failure response 2
curl -X POST "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Request →
        Request body: 

{

       "name": ,   
       "data":
        {
           "type": "string",
           "size": 1209,
                      "description": "string"
                 }
         }

 
Response->
    Response Code: 400

    Response Body:

{
  "title": "BAD_REQUEST",
  "status": 400,
  "detail": "User-Defined-Variable body contains null or empty value for Name field. Please provide valid name. Please refer the User Guide",
  "cause": "INVALID_NAME"
}

PUT REST API

This resource updates the user-defined variables configuration using the request body.

Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}

Table 2-322 Data Structures Supported by the PUT Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
UserDefinedVariables M 1 200 OK

Modifies the user-defined variable configuration data.

ProblemDetails M 1 400 BAD REQUEST Returns the structure of ProblemDetails.
ProblemDetails M 1 404 Not Found Returns the structure of ProblemDetails.

Example

Success response for PUT

curl -X PUT "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Request body:  

{

       "name": "user-category",   
       "data":
        {
           "type": "string",
           "size": 128,
                      "description": "string"
                 }
         }

Response->
    Response Code: 200    
    Response Body:
    {

       "name": "user-category",   
       "data":
        {
           "type": "string",
           "size": 128,
                      "description": "string"
                 }
    }
Failure Response
curl -X PUT "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Request body: 

{

       "name": "user-category",   
       "data":
        {  
                      "description": "string"
                 }
         }

 
Response->
    Response Code: 400

    Response Body:

{
  "title": "BAD_REQUEST",
  "status": 400,
  "detail": "Fields: [size, type], are required and missing for User-Defined-Variable: user-category. Please refer the User Guide",
  "cause": "MANDATORY_IE_MISSING"
}

DELETE REST API

This resource deletes the user-defined variables configuration using the request body.

Resource URI: /ocscp/scpc-configuration/mediation/v1/user-defined-variables/{variableName}

Table 2-323 Data Structures Supported by the DELETE Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
userDefinedVariablesWrapper M 1 200 OK Indicates the user-defined variable configuration data.
MediationConfigControllerAdvice M 1 400 BAD REQUEST Returns the mediationConfigControllerAdvice structure.
MediationConfigControllerAdvice M 1 404 Not Found Returns the mediationConfigControllerAdvice structure.

Example

Success response for DELETE

curl -X DELETE "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/user-defined-variables/user-category" -H "accept: application/json“
Response Code: 200 Response Body: OK

Failure response

curl -X DELETE "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/userDefinedVariables/user-category" -H "accept: application/json“
    Response Code: 404

    Response Body:

{
  "title": "NOT_FOUND",
  "status": 404,
  "detail": "User-Defined-Variable: user-category was not found. Please refer the User Guide",
  "cause": "USER_DEFINED_VARIABLE_NOT_FOUND"
}

Failure Response 2

curl -X DELETE "http://<configuration-fqdn>:<configuration-port>/ocscp/scpc-configuration/

mediation/v1/userDefinedVariables/user-category" -H "accept: application/json“
Response Code: 400

    Response Body:

{
  "title": "BAD_REQUEST",
  "status": 400,
  "detail": "User-Defined-Variable: userDefined-var is being used at Mediation Trigger Point Configuration in 13 RuleName(s). List of 10 out of 13 RuleName(s) are as follows: [rule-trigger18, rule-trigger, rule-trigger181, rule-trigger98, rule3, rule-trigger8, rule-trigger7, rule-trigger4, rule-trigger3, rule-trigger6]. Please refer the User Guide",
  "cause": "USER_DEFINED_VARIABLE_ALREADY_IN_USE"
}

2.32 Configuring Route Groups

This section describes REST API configurations required for Route Groups. The static alternate route feature prioritizes the settings in the static routing configuration over any NF profile for the alternate destination.

Resources

The following table describes the resource URIs and the corresponding HTTP methods for the route-groups resource type.

Table 2-324 Resource Name

Resource Name Resource URI HTTP Method Description
route-groups /ocscp/scpc-configuration/v1/route-groups GET
  • Reads a collection of route groups.
  • Reads the route group configuration of a given route group name.
  • Retrieves configured route groups based on the supplied query parameters as filtering criteria.
route-groups /ocscp/scpc-configuration/v1/route-groups PUT

Configures a new route group or replaces the configuration of an existing route group by providing a route group configuration in the request body.

route-groups /ocscp/scpc-configuration/v1/route-groups DELETE

Removes the configuration of an existing route group.

Resource: route-groups

Resource URI: /ocscp/scpc-configuration/v1/route-groups

Resource Definition

This section describes GET, PUT, and DELETE resource types supported by Route Group.

GET REST API

The following table describes the URI query parameters supported by the GET method on this resource.

Note:

  • The names of the query parameters in the following tables are case sensitive.
  • The combination of query parameters are not supported. If no query parameter is specified, it retrieves all the records. Otherwise, only one query parameter at a time is supported.

Table 2-325 URI Query Parameters Supported by the GET Method

Field Name DataType Mandatory (M) or Optional(O) Cardinality Description
routeGroupId string O

0..1

Indicates the unique route group ID.

routeGroupType RouteGroupType O

0..1

Indicates all route groups configured using specified addressing parameters such as fqdn, nfInstanceId, ipv4address, or ipv6address.
primaryRoute PrimaryRoute O

0..1

Indicates specific route group configuration for the specified fqdn, nfInstanceId, ipv4address, or ipv6address.

For IP, only the primaryRoute query parameter with only one element (ipv4Address and port) in the list is supported.

Note: As this query parameter considers the JSON format as an input string, you must use the "data-urlencode" annotation in the curl command.

Note:

To get all route groups, do not provide any query parameters.

The following table describes the data structure supported by the GET response body on this resource:

Table 2-326 Data Structure Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description

array(routeGroupRecord)

M 1

200 OK

The response body contains a list of route group configuration equivalent to the criteria for received requests.

ProblemDetails M 1 404 NOT FOUND

This data structure is sent when no matching entry is found.

For information about the ProblemDetails structure, see 3GPP TS 29.571.

Note:

All the supported HTTP error status is applicable with a ProblemDetails data type as described in Oracle Communications Cloud Native Core, Service Communication Proxy User Guide. For more information, see Clause 5.2.7 of 3GPP TS 29.500.

The following example is of a successful response.

curl -v -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/route-groups" -H  "accept: */*" -H  "Content-Type: application/json" -d'{"routeGroupId":"udm1","routeGroupType":"IPV4","primaryRoute":{"ipEndPoints":[{"ipv4Address":"200.200.200.210","port":80}]},"alternateRouteList":[{"apiPrefix":"USEast","capacity":10,"ipv4Addresses":["200.200.200.220"],"port":80,"priority":10,"scheme":"http"},{"apiPrefix":"USEast","capacity":10,"ipv4Addresses":["200.200.200.230","200.200.200.235"],"port":80,"priority":10,"scheme":"http"}]}'
 
Response:
 
201 OK
 
{"routeGroupId":"udm1","routeGroupType":"IPV4","primaryRoute":{"ipEndPoints":[{"ipv4Address":"200.200.200.210","port":80}]},"alternateRouteList":[{"ipv4Addresses":["200.200.200.220"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"},{"ipv4Addresses":["200.200.200.230","200.200.200.235"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"}]}

PUT REST API

There are no URI query parameters supported by the PUT method on this resource.

The following table describes the data structure supported by the PUT request body on this resource:

Table 2-327 Data Structure Supported by the PUT Request Body

Data Type Mandatory (M) or Optional(O) Cardinality Description
routeGroupRecord M 1 Indicates the route group configuration data.

The following table describes the data structures supported by the PUT response body on this resource:

Table 2-328 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
routeGroupRecord M 1

200 OK

Indicates the updated or replaced existing route group configuration data equivalent to the criteria for received requests.

routeGroupRecord M 1 201 Created Indicates the successful creation of new route group configuration data as per received requests.
ProblemDetails M 1 400 BAD REQUEST

This response is used when the request body validation fails. For example, when serviceProtoName is missing in the request body.

For information about the ProblemDetails structure, see 3GPP TS 29.571.

Note:

All supported HTTP error status is applicable with a ProblemDetails data type. For more information, see Clause 5.2.7 of 3GPP TS 29.500.

The following example is of a successful response.

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/route-groups" -H  "accept: application/json"
 
Response:
 
200 OK
[{"routeGroupId":"udm1","routeGroupType":"IPADDRESS","primaryRoute":{"ipEndPoints":[{"ipv4Address":"200.200.200.210","port":80}]},"alternateRouteList":[{"ipv4Addresses":["200.200.200.220"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"},{"ipv4Addresses":["200.200.200.230","200.200.200.235"],"port":80,"priority":10,"capacity":10,"apiPrefix":"USEast","scheme":"http"}]}]

DELETE REST API

The following table describes the URI query parameters supported by the DELETE method on this resource:

Table 2-329 URI Query Parameters Supported by the DELETE Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
routeGroupId string M 1 Indicates the unique route group ID.

Note:

All the supported HTTP error status is applicable with a ProblemDetails data type. For more information, see Clause 5.2.7 of 3GPP TS 29.500.

The following example is of a successful response.

curl -v -X DELETE "http://<localhost>:8081/ocscp/scpc-configuration/v1/route-groups?routeGroupId=udm1" -H  "accept: application/json"
 
204 No Content

Data Model

The following tables describe different data models required for configuring Route Group.

Table 2-330 routeGroupRecord

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
routeGroupId string M 1 Indicates the unique route group name or ID.
routeGroupType RouteGroupType M 1 Addresses parameters such as fqdn, nfInstanceId, ipv4address, or ipv6address, used in route group configuration.
primaryRoute PrimaryRoute C 1

Indicates the target endpoint information for the first routing attempt of 5G SBI message.

  • At least one of the first attempt route information parameters is included in the route configuration.
  • If the primaryRoute parameter is present, then the alternateRouteList parameter is also present.
  • If the primaryRouteList parameter is present, then the alternateRouteList parameter is absent.
  • The valid combinations are primaryRoute and alternateRouteList, primaryRouteList, All other combinations are invalid.
alternateRouteList array(RouteRecord) C 0..N Indicates the route (target endpoint info) information to be used in alternate NF selection and load-balancing at SCP in alternate routing of 5G SBI message.

Table 2-331 PrimaryRoute

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
fqdn Fqdn C 0..1 Indicates the FQDN of primary route, that is, for the first routing attempt of a 5G SBI message request.
port integer C 0..1 Indicates the port number. The minimum value is 0 and the maximum value is 65535.Port is defined if FQDN is present.
nfInstanceId NfInstanceId C 0..1 Indicates the NF instance ID of primary route, that is, for the first routing attempt of a 5G SBI message request.
ipEndPoints array(IpEndPoint) C 0..1 Indicates the list of all IPv4 addresses of primary route, that is, for the first routing attempt of a 5G SBI message request.

Note:

  • At least one of the primary route addressing parameters such as fqdn, nfInstanceId, or ipEndPoints must be included in the route configuration.
  • The primary route has the authority, FQDN or IP and port information, which is matched with ":authority" pseudo header of the first routing attempt to select a producer NF. Note that the scheme and apiPrefix are not considered.
  • The port is defined if FQDN is present.

Table 2-332 IpEndPoint

Attribute Name Data Type Mandatory (M) or Optional(O) Cardinality Description

ipv4Address

Ipv4Addr

C

0..1

Indicates the IPv4 address.

ipv6Address

Ipv6Addr

C

0..1

Indicates the IPv6 address.
port

integer

M 1 Indicates the port number. The minimum value is 0 and the maximum value is 65535.

Note:

In this data structure, only one occurrence of either ipv4Address or ipv6Address shall be included.

Table 2-333 RouteRecord

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
fqdn Fqdn C 0..1 Indicates the FQDN of primary route, that is, for the first routing attempt of a 5G SBI message request.
nfInstanceId NfInstanceId C 0..1 Indicates the NF instance ID of primary route, that is, for the first routing attempt of a 5G SBI message request.
ipv4Addresses array(Ipv4Addr) C 0..N Indicates the list of all IPv4 addresses of primary route, that is, for the first routing attempt of a 5G SBI message request.
ipv6Addresses array(Ipv6Addr) C 0..N Indicates the list of all IPv6 addresses of primary route, that is, for the first routing attempt of a 5G SBI message request.
port integer O 0..1 Indicates the port number. The minimum value is 0 and the maximum value is 65535.
priority integer O 0..1

Indicates the priority (relative to other NFs of the same route list) within the range of 0 to 65535 for NF selection and alternate routing. The lower values indicate a higher priority.

capacity integer O 0..1

Indicates the static capacity information within the range of 0 to 65535. It is expressed as a weight relative to other NF instances of the same route list.

apiPrefix string O 0..1 Indicates the optional path segments to construct the {apiRoot} variable of the different API URIs as described in Clause 4.4.1 of 3GPP TS 29.501.
scheme UriScheme M 1 Indicates the URI scheme, for example, "http" or "https".

Note:

  • At least one of the primary route addressing parameters such as fqdn, nfInstanceId, ipv4address, or ipv6address, must be included in the route configuration.
  • If the port number is absent, SCP uses the default HTTP port number, that is, TCP port 80 for "http" URIs or TCP port 443 for "https" URIs as specified in Internet Engineering Task Force (IETF) Request for Comments (RFC) 7540.

Table 2-334 Enumeration: RouteGroupType

Enumeration Value Description
"FQDN" Route group with FQDN in route group configuration.
"NFINSTANCEID" Route group with NF instance ID in route group configuration.
"IPADDRESS" Route group can have either IPv4 or IPv6 or both addresses in route group configuration.

In case both IPv4 and IPv6 addresses are present, the load balancing mechanism is used to route the traffic between IPv4 and IPv6.

Table 2-335 Simple Data Types

Type Name Type Definition Description
Fqdn

string

Indicates the FQDN of the NF service.

Ipv4Addr

string

Indicates the string identifying an IPv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166.

Pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'

NfInstanceId

string

Indicates the string uniquely identifying an NF instance.

The format of the NF Instance ID is a Universally Unique Identifier (UUID) version 4 as described in IETF RFC 4122.

Table 2-336 ProblemDetails

Attribute Name Data Type Mandatory (M) or Optional(O) Cardinality Description
type Uri O 0..1 Identifies the problem type. A URI reference according to IETF RFC 3986.
title string O

0..1

Indicates a short human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem.

status integer O

0..1

Indicates the HTTP status code for the occurrence of the problem.

detail string O

0..1

Indicates a human-readable explanation specific to the occurrence of the problem.

instance

Uri

O

0..1

Indicates a URI reference that identifies the specific occurrence of the problem.

cause

string

C

0..1

Indicates a machine-readable application error cause specific to the occurrence of the problem. It should be present and provide application-related error information if available.

invalidParams

array(InvalidParam)

O

1..N

Indicates the description of invalid parameters for a request rejected due to invalid parameters.

For more information about the ProblemDetails structure, see Section 5.2.4.1 of 3GPP TS 29.571.

2.33 Configuring Consumer NF Info

This section describes Consumer NF Info parameters that are used to determine the identity of consumer NFs that send message requests to SCP.

Resources

The following table describes the resource URIs and the corresponding HTTP methods for the ConsumerInfo resource type.

Table 2-337 Resources

Resource Name Resource URI HTTP Method Description
ConsumerInfo /ocscp/scpc-configuration/{version}/consumerNfInfo/headerInfo GET Retrieves consumerInfo data
ConsumerInfo /ocscp/scpc-configuration/{version}/consumerNfInfo/headerInfo PUT Configures ConsumerInfo data

Data Model

Request Body

The following table describes ConsumerInfo name and data type.

Table 2-338 ConsumerInfo

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
primaryHeaderName String M 1 The header name to identify the consumer NF according to the ingress rate limiting configurations.

This is a mandatory parameter. This parameter is given priority over the secondaryHeaderName parameter.

The default value is "X-Forwarded-Client-Cert".

It can use the following values:
  • "User-Agent"
  • "X-Forwarded-Client-Cert"
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:
  • "User-Agent"
  • "X-Forwarded-Client-Cert"
userAgentHeaderFormat String M 1 The header format to identify the consumer NF according to the ingress rate limiting configurations.
It supports the following formats:
  • Format1: NFTYPE-NFINSTANCEID FQDN or NFTYPE-NFINSTANCEID-FQDN
  • Format2: NFTYPE-FQDN NFINSTANCEID or NFTYPE-FQDN-NFINSTANCEID
  • Format3: NFTYPE-NFINSTANCEID
  • Format4: NFTYPE-FQDN
  • Format5: NFTYPE
Where,
  • NFTYPE indicates the type of consumer NF.
  • NFINSTANCEID indicates the instance ID of the consumer NF.
  • FQDN indicates the FQDN of the consumer NF.
In the aforementioned example, "-" is a separator and NFInstanceID, FQDN, and Hostname are supported IDs.

Note: userAgentHeaderFormat should have values separated by commas irrespective of userAgentHeaderSeparator for PUT requests, and the expected format will be retrieved from GET requests as per userAgentHeaderSeparator.

The input and output values for the PUT request are defined in the Table 2-339.

userAgentHeaderSeparator String M 1 This is the separator that the User-Agent header uses to separate NFINSTANCEID and FQDN.

The default value is SPACE.

The supported values are SPACE and HYPHEN.

Note: NULL is not allowed.

xfccHeaderCertExtractIndex String M 1 The certificate extract index contains certificate information in the XFCC header.

This parameter is used to decode "X-Forwarded-Client-Cert" for the FQDN.

The default value is 0.

xfccHeaderExtractField String M 1 This is the name of the field that has to be retrieved from the XFCC header.

The default value is DNS.

xfccHeaderExtractIndex String M 1 Index where the Field configured in 'extractField' is present in the XFCC header for extraction.

The default value is 0.

The following table describes input and output values for the PUT request:

Table 2-339 PUT Request Input and Output Values

Input (PUT) Output (GET) The values in this column use the "-" separator.
NFTYPE,NFINSTANCEID,FQDN NFTYPE-NFINSTANCEID-FQDN
NFTYPE,FQDN,NFINSTANCEID NFTYPE-FQDN-NFINSTANCEID
NFTYPE,NFINSTANCEID NFTYPE-NFINSTANCEID
NFTYPE,FQDN NFTYPE-FQDN
NFTYPE NFTYPE
Json Format:
[
  {
    "primaryHeaderName": "string",
    "secondaryHeaderName": "string",
    "userAgentHeaderFormat": "string",
    "userAgentHeaderSeparator": "string",
    "xfccHeaderCertExtractIndex": "string",
    "xfccHeaderExtractField": "string",
    "xfccHeaderExtractIndex": "string"   
  }
]

Response Body

Response body data model:

Data Type Description
ConsumerInfo Determines the header type such as XFCC or User-Agent, in the ingress message request.
ProblemDetails Returns when an invalid combination or more than two query parameters are provided.

Resource Definition:

This section describes GET and PUT resource types supported by ConsumerInfo.

GET API

This section describes the resource to fetch the existing ConsumerInfo configuration.

Resource URI: /ocscp/scpc-configuration/v1/consumerNFInfo/headerInfo

Table 2-340 Data structures supported by the GET Response Body on this resource

Field Name Mandatory (M) or Optional(O) Cardinality Response Code Description
consumerInfo M 1 200 OK Determines the header type such as XFCC or User-Agent, in the ingress message request.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than two query parameters are provided.
curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/consumerNfInfo/headerInfo" -H  "accept: application/json"
{
  "primaryHeaderName": "User-Agent",
  "secondaryHeaderName": "X-Forwarded-Client-Cert",
  "userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN",
  "userAgentHeaderSeparator": "string",
  "xfccHeaderCertExtractIndex": "0",
  "xfccHeaderExtractField": "DNS",
  "xfccHeaderExtractIndex": "0"
}

PUT API

This resource configures the use of Ingress Rate Limiting Configuration header using the Request Body.

Resource URI: /ocscp/scpc-configuration/v1/consumerNFInfo/headerInfo

Table 2-341 Data Structures Supported by the PUT Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
consumerInfo M 1 200 OK Determines the header type such as XFCC or User-Agent, in the ingress message request.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or more than two query parameters are provided.
Success Response
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/consumerNfInfo/headerInfo" -H  "accept: */*" -H  "Content-Type: application/json" -d "{\"
Request Body:

{
  "primaryHeaderName": "X-Forwarded-Client-Cert",
  "secondaryHeaderName": "User-Agent",
  "userAgentHeaderFormat": "NFTYPE,NFINSTANCEID,FQDN",
  "userAgentHeaderSeparator": "string",
  "xfccHeaderCertExtractIndex": "0",
  "xfccHeaderExtractField": "DNS",
  "xfccHeaderExtractIndex": "0"
}

Response body

[
  {
    "primaryHeaderName": "X-Forwarded-Client-Cert",
    "secondaryHeaderName": "User-Agent",
    "userAgentHeaderFormat": "NFTYPE-NFINSTANCEID FQDN",
    "userAgentHeaderSeparator": "string",
    "xfccHeaderCertExtractIndex": "0",
    "xfccHeaderExtractField": "DNS",
    "xfccHeaderExtractIndex": "0"
  }
]

2.34 Configuring SCP Services

This section provides configuration information about thread watchdog and queue alerts threshold required for SCP microservices.

Resources

The following table describes the resource name to retrieve and update configuration at the SCP microservices level.

Table 2-342 Resource Name

Resource Name Resource URI HTTP Method Description
scp-service-config /ocscp/scpc-configuration/{version}/scp-service-config GET ALL Retrieves all the SCP microservices configurations.
scp-service-config /ocscp/scpc-configuration/{version}/scp-service-config/{serviceName} GET Retrieves SCP microservices configurations based on servicename.
scp-service-config /ocscp/scpc-configuration/{version}/scp-service-config/{serviceName} PUT Updates all the SCP microservices configurations based on servicename.

Data Model

This REST API is used to update microservice level configurations for SCP, therefore the data model is generic.

Generic Data Model

Table 2-343 ScpServiceConfigs

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values
serviceName String M 1 Indicates the SCP microservice name. Valid microservice names of SCP, for example,
  • scpc-notification
  • scp-worker
  • scp-nrfproxy
  • scpc-subscription
  • scpc-alternate-resolution
  • scpc-audit
  • scpc-configuration
  • scp-cache
  • scp-load-manager
  • scp-nrfproxy-oauth
scpServiceConfigs Map<String, IScpServiceConfigValue> M 1 Contains microservice level configurations provided with the type of configurations and value in the JSON structure. -

Specific Data Model

TaskInfoScpConfig

The following data model is defined to specify thread related configurations.

Table 2-344 ScpServiceConfigValue

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Values
type Type M 1 Indicates the type of configuration to identify whether the value is single or range. VALUE VALUE
value List<TaskInfoScpConfig> M 1 Indicates the list of values that specify the thread information configurations. List of TaskInfoScpConfig. For more information, see Table 2-345. For default values, see Table 2-345.

Table 2-345 TaskInfoScpConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Value Default Value
queueName String NA 1 Indicates the name of the queue for which these configurations are applicable. The set of allowed values for each supported micro-service, for example, serviceName, is as follows:
serviceName: scpc-notification
  • notificationQueue
  • waitingQueue
  • runQueue
serviceName: scp-worker
  • scpDownstreamExecutorQueue
  • scpNrfProxyDownstreamExecutorQueue
  • scpUpstreamExecutorQueue
  • scpClientExecutorQueue
  • scpUpdateSSLCertsQueue
  • scpMediationDownstreamExecutorQueue
  • scpReconfigureEgressRLExecutorQueue
  • scpTrafficFeedExecutorQueue
serviceName: scp-nrfproxy
  • scpDownstreamExecutorQueue
  • scpUpstreamExecutorQueue
serviceName: scp-cache
  • accessTokenCohEvExecutorQueue
  • accessTokenAppEvExecutorQueue
  • scpCacheExecutorQueue
serviceName: scp-load-manager
  • sutLciCohEvExecutorQueue
  • sutLciAppEvExecutorQueue
  • peerLciCohEvExecutorQueue
  • peerLciAppEvExecutorQueue
  • loadCohEvExecutorQueue
  • loadAppEvExecutorQueue
The set of default values for each supported micro-service, for example, serviceName, is as follows:
serviceName: scpc-notification
  • notificationQueue
  • waitingQueue
  • runQueue
serviceName: scp-worker
  • scpDownstreamExecutorQueue
  • scpNrfProxyDownstreamExecutorQueue
  • scpUpstreamExecutorQueue
  • scpClientExecutorQueue
  • scpUpdateSSLCertsQueue
  • scpMediationDownstreamExecutorQueue
  • scpReconfigureEgressRLExecutorQueue
  • scpTrafficFeedExecutorQueue
serviceName: scp-nrfproxy
  • scpDownstreamExecutorQueue
  • scpUpstreamExecutorQueue
serviceName: scp-cache
  • accessTokenCohEvExecutorQueue
  • accessTokenAppEvExecutorQueue
  • scpCacheExecutorQueue
serviceName: scp-load-manager
  • sutLciCohEvExecutorQueue
  • sutLciAppEvExecutorQueue
  • peerLciCohEvExecutorQueue
  • peerLciAppEvExecutorQueue
  • loadCohEvExecutorQueue
  • loadAppEvExecutorQueue
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%
Queue names and Usages

The following lists the queue names and their usages:

Worker queue names
  • 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
NRF Proxy Queue Names
  • scpDownstreamExecutorQueue: Downstream(message received from Worker) message handling thread pool queue
  • scpUpstreamExecutorQueue: Upstream (response received) message handling thread pool queue
Notification Queue Names
  • 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.
Cache Queue Names
  • 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.
Load Manager Names
  • sutLciCohEvExecutorQueue: A queue the Load Manager service uses to service LCI coherence event requests.
  • sutLciAppEvExecutorQueue: A queue the Load Manager service uses to service LCI application event requests.
  • peerLciCohEvExecutorQueue: A queue that the Load Manager service uses to service requests for peer LCI coherence events.
  • peerLciAppEvExecutorQueue: A queue that the Load Manager service uses to service requests for peer LCI application event services.
  • loadCohEvExecutorQueue: A queue that the Load Manager service uses to service load coherence event requests.
  • loadAppEvExecutorQueue: A queue that the Load Manager service uses to service load application event requests.

Note:

All queue capacities are 10,000 for worker and NRF queues. These queue capacities are not configurable and only allow threshold value updates.

The following data model is defined to specify thread related configurations.

Table 2-346 ThreadWatchDogScpServiceConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Values
type Type M 1 Indicates the type of configuration to identify whether the value is single or range. VALUE VALUE
value List<ThreadWatchDogConfig> M 1 Indicates the list of values that specify the thread information configurations. List of ThreadwatchDogConfig. For more information, see Table 2-346. For information about default values, see Table 2-346.

Table 2-347 ThreadWatchDogConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Value
enableThreadWatchDog Boolean M 1 Specifies whether to enable or disable liveliness failures.

If this parameter is set to true, liveliness fails whenever the watchdog reports a stuck or deadlocked thread.

true or false true
watchDogMonitoringInterval int O 1 Indicates the time interval used by watchdog to monitor if any threads are stuck.The time interval is in milliseconds. 500-10000 3000
watchDogInterval int O 1 Indicates the maximum time allowed for threads to be nonresponsive. Watchdog uses this time to determine if a thread is stuck. The time interval is in milliseconds.

For example, if watchDogInterval is 10s and a thread does not respond for 10s, then watchdog marks that thread as stuck or nonresponsive.

5000-900000 9000

Note: Default value for scpc-notification micro-service for r15 deployment is 15m, for example, 900000

watchDogFailureCount int O 1

Indicates the maximum number of times threadWatchDog attempts to check if a thread is stuck before marking the thread as hung or stuck.

For instance, if this value is 3, then the watchdog will check if a thread is stuck for 3 times continuously before marking it as stuck/hung.

1-25 5

The following data model is defined to specify inter pod resiliency configurations.

Table 2-348 ConnectivityWatchDogServiceConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Values
type Type M 1 Indicates the type of configuration to identify whether the value is single or range. VALUE VALUE
value List<ConnectivityWatchDogConfig> M 1 Indicates the list of values that specify the pod resiliency configurations. List of ConnectivityWatchDogConfig. For more information, see Table 2-348. For information about default values, see Table 2-348.

Table 2-349 ConnectivityWatchDogConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Value
enableConnectivityWatchDog Boolean M 1 Specifies whether to enable or disable interpod resiliency check. true or false true
connectivitytMonitoringInterval int O 1 Indicates the time interval for resiliency in milliseconds. 500-10000 1000
connectivityRetryThreshold int O 1 Indicates the maximum number of attempts to be made if any pod is not reachable. 0-5 2
connectivityResponseTimeout int O 1

Indicates the maximum response timeout in milliseconds for the client to error out.

500-10000 2000
connectivityRetryInterval int O 1 Indicated the time interval between retries in milliseconds 500-10000 500

The following data model is defined to specify routing options configurations.

Table 2-350 RoutingOptionsScpServiceConfig

Field Name Data Type Mandatory (M) or Optional(O) Cardinality Description Allowed Values Default Values
type Type M 1 Indicates the type of configuration to identify whether the value is single or range. VALUE VALUE
value List<RoutingOptionsConfig> M 1 Indicates the list of values that specify the pod resiliency configurations. List of RoutingOptionsConfig. For more information, see Table 2-351. For information about default values, see Table 2-351.

Table 2-351 RoutingOptionsConfig

Field Name Data Type Mandatory (M) or Optional (O) Cardinality Description Allowed Values Default Value
responseTimeout int M 1 Indicates the maximum response timeout in seconds. 0-10 1
maxRetryAttempts int M 1 Indicates the maximum number of attempts to establish the connection. 0-5 0

Micro-service data model

The list of service specific data model is as follows:

SCPC-NOTIFICATION
The SCP service configuration API uses the following data models for scpc-notification service:
  • ScpServiceConfigValue
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
Request Body
{
  "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
      }
    }
  }
}  
Response Body
{
  "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
      }
    }
  }
}
SCPC-WORKER
The SCP service configuration API uses the following data models for the scp-worker service:
  • ScpServiceConfigValue
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
  • RoutingOptionsScpServiceConfig
Request Body
{
  "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
      }
    }  
  }
}
Response Body
{
  "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
      }
    }  
  }
}
SCPC-NRFPROXY
The SCP service configuration API uses the following data models for scp-nrfproxy service:
  • ScpServiceConfigValue
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
Request Body
{
  "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
      }
    }
  }
}
Response Body
{
  "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
      }
    }
  }
}
SCPC-CONFIGURATION
The SCP service configuration API uses the following data models for scp-nrfproxy service:
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
Request Body
{
  "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
      }
    }
  }
}
Response Body
{
  "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
      }
    }
  }
}
SCPC-SUBSCRIPTION
The SCP service configuration API uses the following data models for scpc-subscription service:
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
Request Body
{
  "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
      }
    }
  }
}
Response Body
{
  "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
      }
    }
  }
}
SCPC-AUDIT
The SCP service configuration API uses the following data models for scpc-subscription service:
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
Request Body
{
  "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
      }
    }
  }
}
Response Body
{
  "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
      }
    }
  }
}
SCPC-ALTERNATE-RESOLUTION
The SCP service configuration API uses the following data models for scp-nrfproxy service:
  • ThreadWatchDogScpServiceConfig
  • ConnectivityWatchDogServiceConfig
Request Body
{
  "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
      }
    }
  }
}
Response Body
{
  "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
      }
    }
  }
}
SCP-CACHE
The SCP service configuration API uses the following data models for scp-cache service:
  • ScpServiceConfigValue
Request Body
{
  "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%"
        }
      ]
    }
  }
}
Response Body
{
  "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%"
        }
      ]
    }
  }
}
SCP-LOAD-MANAGER
The SCP service configuration API uses the following data models for scp-load-manager service:
  • ScpServiceConfigValue
Request Body
{
  "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%"
        }
      ]
    }
  }
}
Response Body
{
  "serviceName": "scp-load-manager",
  "scpServiceConfigs": {
    "taskInfo": {
      "type": "VALUE",
      "value": [
        {
          "queueName": "sutLciCohEvExecutorQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        },
        {
          "queueName": "sutLciAppEvExecutorQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        },
        {
          "queueName": "peerLciCohEvExecutorQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        },
        {
          "queueName": "peerLciAppEvExecutorQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        },
        {
          "queueName": "loadCohEvExecutorQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        },
        {
          "queueName": "loadAppEvExecutorQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        }
      ]
    }
  }
}

Resource Definition

GET REST API

This resource retrieves routing options for all the applications.

Resource URI: /ocscp/scpc-configuration/{version}/scp-service-config

Table 2-352 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
scpServiceConfigs M 1..N 200 OK Retrieves configurations for SCP microservices.

This resource retrieves routing options for the application specified by serviceName.

Resource URI: /ocscp/scpc-configuration/{version}/scp-service-config/{serviceName}

Table 2-353 Path Parameters

Name Data Type Mandatory (M) or Optional(O) Description
serviceName String M Retrieves configurations on microserviceName. The supported values are worker, notification, and nrfproxy.

Table 2-354 Data Structures Supported by the GET Response Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
scpServiceConfigs M 1 200 OK Indicates service configurations for SCP microservices.
ProblemDetails M 1 404 Returns when an invalid combination or more than two query parameters are provided.

Curl GET/GET ALL command

GET ALL

Success Response

curl -X GET   http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config  -H 'accept: application/json' -v
* About to connect() to <localhost>:8081 port 31343 (#0)
*   Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 31343 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config HTTP/1.1
> User-Agent: curl/7.29.0
> Host: <localhost>:8081
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Thu, 17 Nov 2022 06:12:26 GMT
<
 
 
 [{"serviceName":"scp-nrfproxy","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"scpDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"nrfThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}},{"serviceName":"scp-worker","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"scpDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpNrfProxyDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpClientExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpdateSSLCertsQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpMediationDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpReconfigureEgressRLExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"routingOptions":{"value":{"scpc-notification":{"responseTimeout":"1s","maxRetryAttempts":0}}},"threadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}},{"serviceName":"scpc-alternate-resolution","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"alternateResolutionThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}},{"serviceName":"scpc-audit","scpServiceConfigs":{"auditThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}},{"serviceName":"scpc-configuration","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"configurationThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}},{"serviceName":"scpc-notification","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"notificationQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"waitingQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"runQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"notificationThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}},{"serviceName":"scpc-subscription","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"subscriptionThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}}]

GET Command

Success Response

curl -X GET   http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/scp-worker  -H 'accept: application/json' -v
* About to connect() to <localhost> port <port number> (#0)
*   Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 31343 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config/scp-worker HTTP/1.1
> User-Agent: curl/7.29.0
> Host: <localhost>:8081
> accept: application/json
>
< HTTP/1.1 200 OK
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/json
< Date: Thu, 17 Nov 2022 06:17:08 GMT
<
{"serviceName":"scp-worker","scpServiceConfigs":{"taskInfo":{"type":"VALUE","value":[{"queueName":"scpDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpNrfProxyDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpClientExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpUpdateSSLCertsQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpMediationDownstreamExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"},{"queueName":"scpReconfigureEgressRLExecutorQueue","criticalQLogThreshold":"85%","majorQLogThreshold":"75%","minorQLogThreshold":"65%"}]},"routingOptions":{"value":{"scpc* Connection #0 to host <localhost> left intact
-notification":{"responseTimeout":"1s","maxRetryAttempts":0}}},"threadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}},"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}}}}

Failure Response

curl -X 'GET'   'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/Worker1'   -H 'accept: application/json' -v
* About to connect() to <localhost> port <port number> (#0)
*   Trying <localhost>:8081...
* Connected to <localhost>:8081 (<localhost>:8081) port 31368 (#0)
> GET /ocscp/scpc-configuration/v1/scp-service-config/Worker1 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: <localhost>:8081
> accept: application/json
>
< HTTP/1.1 404 Not Found
< Connection: keep-alive
< Transfer-Encoding: chunked
< Content-Type: application/problem+json
< Date: Thu, 18 Aug 2022 09:08:36 GMT
<
* Connection #0 to host <localhost> left intact
{"title":"Not Found","status":"404","detail":"Scp_Service_Configuration for given serviceName not found . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/scp-service-config/Worker1","cause":"DATA_NOT_FOUND"}

PUT REST API

This resource configures routing options for the application.

Resource URI: /ocscp/scpc-configuration/{version}/scp-service-config/{appname}

Table 2-355 Data Structures Supported by the PUT Request Body on this Resource

Data Type Mandatory (M) or Optional(O) Cardinality Description
scpSserviceConfigs 1 M scp-service-configs for the application.

Table 2-356 Data structures supported by the PUT Response Body on this resource

Data Type Mandatory (M) or Optional(O) Cardinality Response Code Description
scpServiceConfigs M 1 200 OK Indicates service configurations for SCP microservices.
ProblemDetails M 1 400/404 Returns when an invalid combination or more than two query parameters are provided.

Curl PUT Command

Success Response

curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/scpc-alternate-resolution' \
        "connectivityRetryInterval": 1000
>   -H 'accept: application/json' \
>   -H 'Content-Type: application/json' \
>   -d '{
>   "serviceName": "scpc-alternate-resolution",
>   "scpServiceConfigs": {
>     "connectivityWatchDogInfo": {
>       "value": {
>         "connectivitytMonitoringInterval": 1000,
>         "enableConnectivityWatchDog": true,
>         "connectivityRetryThreshold": 3,
>         "connectivityResponseTimeout": 5000,
>         "connectivityRetryInterval": 1000
>       }
>     },
>     "alternateResolutionThreadWatchDogInfo": {
>       "value": {
>         "enableThreadWatchDog": true,
>         "watchDogMonitoringInterval": 1000,
>         "watchDogInterval": 9000,
>         "watchDogFailureCount": 1
>       }
>     }
>   }
> }'
{"serviceName":"scpc-alternate-resolution","scpServiceConfigs":{"connectivityWatchDogInfo":{"value":{"connectivitytMonitoringInterval":1000,"enableConnectivityWatchDog":true,"connectivityRetryThreshold":3,"connectivityResponseTimeout":5000,"connectivityRetryInterval":1000}},"alternateResolutionThreadWatchDogInfo":{"value":{"enableThreadWatchDog":true,"watchDogMonitoringInterval":1000,"watchDogInterval":9000,"watchDogFailureCount":1}}}}

Failure Response 1

curl -X 'PUT'   'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/Notification'   -H 'accept: application/json'   -H 'Content-Type: application/json'   -d '{
  
"serviceName": "NOTIFICATION",
  "scpServiceConfigs": {
    "TaskInfoScpConfig": {
      "type": "VALUE",
      "value": [
        {
          "queueName": "notificationQueue",
          "criticalQLogThreshold": "86%",
          "majorQLogThreshold": "76%",
          "minorQLogThreshold": "66%"
        },
        {
          "queueName": "waitingQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        },
        {
          "queueName": "runQueue",
          "criticalQLogThreshold": "85%",
          "majorQLogThreshold": "75%",
          "minorQLogThreshold": "65%"
        }
      ]
    }
  }
>
> '
{"timestamp":"2022-08-18T09:13:28.253+00:00","status":400,"error":"Bad Request","path":"/ocscp/scpc-configuration/v1/scp-service-config/Notification"}

Failure Response 2

 curl -X 'PUT' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-service-config/Subscription' \
>   -H 'accept: application/json' \
>   -H 'Content-Type: application/json' \
>   -d '{
>   "serviceName": "subscription",
>   "scpServiceConfigs": {
>     "TaskInfoScpConfig": {
>       "type": "VALUE",
>       "value": [
>         {
>           "queueName": "notificationQueue",
>           "criticalQLogThreshold": "86%",
>           "majorQLogThreshold": "76%",
>           "minorQLogThreshold": "66%"
>         },
>         {
>           "queueName": "waitingQueue",
      ]
    }
>           "criticalQLogThreshold": "85%",
>           "majorQLogThreshold": "75%",
>           "minorQLogThreshold": "65%"
>         },
>         {
>           "queueName": "runQueue",
>           "criticalQLogThreshold": "85%",
>           "majorQLogThreshold": "75%",
>           "minorQLogThreshold": "65%"
>         }
>       ]
>     }
>   }
> }'
{"title":"Not Found","status":"404","detail":"Scp_Service_Configuration for given serviceName not found . Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/scp-service-config/Subscription","cause":"DATA_NOT_FOUND"}

2.35 Configuring Load Control Information

This section describes REST API configurations required for the Load Control based on the Load Control Information (LCI) Header feature:

Resource

The following table describes the resource URIs and the corresponding HTTP methods for the to retrieve, add, or update SCP features.

Table 2-357 Resources

Resource Name Resource URI HTTP Method Description
scp-features /ocscp/scpc-configuration/v1/scp-features/lci GET Retrieves records based on featureName as a path variable.
scp-features /ocscp/scpc-configuration/v1/scp-features/lci PUT To enable/disable the scp feature and its parameters.

Data Model

Request Body

The following table describes LCISpecificConfig data types.

Table 2-358 LCISpecificConfig

Field Name Data Type Mandatory (M) or Optional(O) Default Value Range Description
scpLciConveyanceEnable Boolean M false NA This parameter enables or disables the addition of SCP LCI.
relayPeerLci Boolean M true NA This parameter enables or disables the relay of the peer's LCI.
scpLciConveyanceInterval Integer O 5000 milliseconds 1000 miliseconds - 3600000 miliseconds This parameter governs the periodicity of LCI conveyence. After the duration specified in this parameter, SCP LCI is transmitted to peers.
scpLciConveyanceMinLoadChange Integer M 5 5 - 25 This parameter indicates the minimum eligible change in load while conveying LCI.
scpLciConveyanceMinLoadThreshold Integer M 30 0-60 This parameter allows SCP to define a minimum load change threshold that can trigger the generation of an LCI header and report it to peers if allowed.
scpLciConveyancetoUnknownPeer Boolean M false NA This parameter indicates whether SCP can send its LCI to an unknown peer NF.
peerLciProcessingMinLoadChange Integer M 5 0-25 This parameter allows SCP to define a minimum load change in a peer NF's load as indicated in LCI, which can trigger a re-evaluation of routing rules.
unknownPeerLciExpiry Integer M 300 seconds 30 seconds - 900 seconds This parameter specifies the minimum number of seconds required to remove an unknown peer's LCI from cache.

Response Body

The following table describes response body data models that vary based on the REST operation status.

Table 2-359 Response Body Data Type

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(SCPFeaturesWrapper) M 1 200 OK Indicates the list of SCP features (SCPFeaturesWrapper) matching criteria.
ProblemDetails M 1 404 NOT FOUND Returns when the data is not found for given query parameters.
JSON Format

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

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-360 Parameters Supported by the GET Method

Field Name Data Type Mandatory (M) or Optional(O) Description
featureName String O Specifies the identity of featureName for which SCP features are fetched.

Note:

featureName is a valid combination of query parameter or path variable.

Table 2-361 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(SCPFeaturesWrapper) M 1 200 OK Indicates the list of of LCI header Info (SCPFeaturesWrapper) (or) Get specific record based on query parameters.
ProblemDetails M 1 404 NOT FOUND Returns when the data is not found for given query parameters.

Example

Successful response - 1

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lci" -H "accept: application/json“

Code: 200 {   {
  "featureName": "lci",
  "enabled": false,
  "featureSpecificConfig": {
    "scpLciConveyanceEnable": false,
    "relayPeerLci": true,
    "scpLciConveyanceInterval": 2000,
    "scpLciConveyanceMinLoadChange": 5,
    "scpLciConveyanceMinLoadThreshold": 30,
    "scpLciConveyancetoUnknownPeer": false,
    "peerLciProcessingMinLoadChange": 5,
    "unknownPeerLciExpiry": 300
  }
}

Failure case 1

curl -X GET "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lciheader_1" -H "accept: application/json“
   Response Body:
{
  "title": "Not Found",
  "status": "404",
  "detail": "SCP Features configuration data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/scp-features/lciheader_1",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API

This resource adds or updates the SCP feature interplmn routing configuration using the request body.

Resource URI: ocscp/scpc-configuration/v1/scp-features/lci

Table 2-362 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
SCPFeaturesWrapper M 1 200 OK Indicates the SCP feature lciheader configuration data.
ProblemDetails M 1 400 BAD REQUEST

Returns the ProblemDetails structure as defined in 3GPP TS 29.571 section 5.2.4.1.

Example
Successful response:
curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lciheader" -H "accept: */*" -H "Content-Type: application/json" -d “    {
  "featureName": "lci",
  "enabled": false,
  "featureSpecificConfig": {
    "scpLciConveyanceEnable": false,
    "relayPeerLci": true,
    "scpLciConveyanceInterval": 2000,
    "scpLciConveyanceMinLoadChange": 5,
    "scpLciConveyanceMinLoadThreshold": 30,
    "scpLciConveyancetoUnknownPeer": false,
    "peerLciProcessingMinLoadChange": 5,
    "unknownPeerLciExpiry": 300
  }
}  200 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://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lci"-H "accept: */*"-H "Content-Type:
      application/json"-d "
{
"title": "Bad Request",
"status": "400",
"detail": "Unknown Feature: lxi not supported. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/scp-features/lxi",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Bad Request

Failure case 2:

curl -X PUT "http://<localhost>:8081/ocscp/scpc-configuration/v1/scp-features/lci"-H "accept: */*"-H "Content-Type:
      application/json"-d "
{
"title": "Bad Request",
"status": "400",
"detail": "SCP conveyance interval range should be between 100ms to 3600ms",
"instance": "/ocscp/scpc-configuration/v1/scp-features/lci",
"cause": "MANDATORY_IE_INCORRECT"
}
400 Bad Request

2.36 Message Feed Configurations

This section provides information about message feed Data Director configurations at SCP.

2.36.1 Configuring Traffic Feed Data Director

This section describes the Traffic Feed Data Director configurations.

Table 2-363 Resources

Resource name Resource URI HTTP method or custom operation Description
5gsbi-traffic-feed/data-director-config /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config GET Retrieves Traffic Feed Data Director Config configured at SCP.
5gsbi-traffic-feed/data-director-config /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config PUT Adds Traffic Feed Data Director Config configured at SCP.
5gsbi-traffic-feed/data-director-config /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config PATCH Updates Traffic Feed Data Director Config configured at SCP.

Data Model

Request Body

Table 2-364 trafficFeedDataDirectorConfig

Field Name Data Type Default Value Description
kafkaPartitionSelectionLogic String RoundRobin Indicates the logic to select Kafka partitions to route messages.

RoundRobin: All the messages are distributed across all the available partitions in a round-robin order.

KeyBased: Messages with the same correlation-id are routed to the same partition. This ensures the same transaction messages are routed to the same partition.

deliveryTimeoutMs Integer 5000 milliseconds Indicates an upper bound on the time to report success or failure to the SCP application from the Kafka Producer Library When this period expires, the Kafka producer reports a failure to application. The value of this configuration should be greater than or equal to the sum of requestTimeoutMs and lingerMs.
trafficFeedBootStrapServer Object with host and port info

host String

port Integer

NA A list of host or port pairs to use for establishing the initial connection to the Kafka cluster.
topic String NA Topic name that SCP uses to write on Kafka Broker.
securityProtocol String None Protocol used to communicate with brokers. The values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.
saslMechanism String None

Recommended: PLAIN

SASL mechanism used for client connections.

The values are: PLAIN.

keySerializer String Json Key serialization

Two Serialization option supported: JSON and STRING.

valueSerializer String Json Value serialization

Two Serialization option Supported

JSON,STRING

acks String 0 The number of acknowledgments the producer NF requires the leader to have received before considering a request complete.
Available options:
  • 0 - The producer NF never waits for an acknowledgment from the server at all.
  • 1 - The producer NF responds after the leader write without waiting for acknowledgment from all the followers.
  • all - The producer NF waits for the full set of in-sync replicas to acknowledge the record.

Note: Parameter to change the behavior of underlying kafka library.

retryCount Integer 0 Number of times producer NFs send data to broker in case of error.

Note: Parameter to change the behavior of underlying kafka library.

retryBackoffMs Long 100 The amount of time to wait before attempting to retry a failed request to a given topic partition.

Note: Parameter to change the behavior of underlying kafka library.

requestTimeoutMs Integer 1000 The maximum amount of time the client waits for the response of a request.

Note: Parameter to change the behavior of underlying kafka library. Oracle Support shall be consulted before modifying the default value. The value of this parameter must not be more than the threadWatchDog time of the scp-worker microservice.

trafficfeedBlockingSendTimeoutMs Integer 500 The amount of time for which the producer will block sending messages to the broker when the producer is not able to connect to the broker.

maxValue: 200000, minValue: 100

Note: Parameter to change the behavior of underlying kafka library. Increasing this value more than the threadWatchDog time of the worker microservice can result in a worker pod crash.

trafficfeedDegradationperiod Integer 1000 The amount of time the producer waits before sending to the broker when a previous attempt to connect to the broker has failed.

maxValue: 10000, minValue: 10

Note: Parameter to change the behavior of underlying kafka library.

trafficfeedConsecutiveFailures Integer 10 The number of consecutive failures allowed by SCP before blocking the producer from sending messages.

maxValue: 100, minValue: 1

Note: Parameter to change the behavior of underlying kafka library.

batchSize Integer 16384 It specifies the batch size in bytes based on which records are collected together into fewer requests and sent.

Note: Parameter to change the behavior of underlying kafka library.

lingerMs Long 2 It specifies the amount of time for which the producer will wait to allow other records to be sent so that the sends can be batched together.

Note: Parameter to change the behavior of underlying kafka library.

trafficfeedMaxBlockMsConfig Long 10 The configuration controls how long the KafkaProducer's send() method will block.

Note: Parameter to change the behavior of underlying kafka library.

bufferMemory Long 33554432 The total bytes of memory the producer can use to buffer records waiting to be sent to the server.

Note: Parameter to change the behavior of underlying kafka library.

Response body data model varies based on Rest operation status. Details can be found in the subsequent sections.

Response Body

Table 2-365 Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
trafficFeedDataDirectorConfig M 1 200 OK List of Producer Configuration matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when invalid input are provided.
JSON Format
{
  "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.

Resource URI: /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config

Table 2-366 Data structures supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
trafficFeedDataDirectorConfig M 1 200 OK Producer Configuration Info Data

PUT REST API:

Resource to add or update the Traffic server of Producer Configuration using the Request Body.

Resource URI: /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config

Table 2-367 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
trafficFeedDataDirectorConfig(json) M 1 200 OK A list of host or port pairs to use for establishing the initial connection to the Kafka cluster.
String M 1 400 BAD REQUEST Returns Problem description when invalid input is provided.

PATCH REST API:

Resource to add or update the Traffic server Configuartion using the Request Body.

Resource URI: /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/data-director-config

Table 2-368 URI Query Parameters Supported by the PATCH Method

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
patchDocument String M 1

patchDocument need to be send

Example: [{"op":"add","path": "/keySerializer", "value": "JSON"}],

[{"op":"add","path": "/topic", "value": "scpTopic1"}],

[ { "op":"replace", "path":"/trafficFeedBootStrapServer", "value":[{ "host":"12.11.11.11", "port":8095 } } ]

String M 1 400 BAD REQUEST Returns Problem description when invalid input is provided.

2.36.2 Configuring Traffic Feed Trigger Point Config

This section describes the Traffic Feed Trigger Point configurations.

Table 2-369 Resources

Resource name Resource URI HTTP method or custom operation Description
5gsbi-traffic-feed/trigger-point /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point GET Retrieves all the Traffic Feed Trigger Point configuration at SCP.
5gsbi-traffic-feed/trigger-point /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} GET Retrieves Traffic Feed Trigger Point configurations at SCP for given ruleName.
5gsbi-traffic-feed/trigger-point /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} PUT Updates Traffic Feed Trigger Point configuration at SCP for given ruleName.
5gsbi-traffic-feed/trigger-point /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} PATCH Updates Traffic Feed Trigger Point configuration at SCP for given ruleName.
5gsbi-traffic-feed/trigger-point /ocscp/scpc-configuration/{version}/5gsbi-traffic-feed/trigger-point/{ruleName} DELETE Removes Traffic Feed Trigger Point configurations at SCP for given ruleName.

Data Model

Request Body

Table 2-370 trafficFeedTriggerPointConfig

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M The rule's name must be in string format.It must have a unique rule name.
serviceName String O The name of the services for which rule is applied: nnrf-nfm, nnrf-disc, nudm-sdm, nudm-uecm, nudm-ueau, nudm-ee, nudm-pp, namf-comm, namf-evts, namf-mt, namf-loc, nsmf-pdusession, nsmf-event-exposure, nausf-auth, nausf-sorprotection, nausf-upuprotection, nnef-pfdmanagement, npcf-am-policy-control, npcf-smpolicycontrol, npcf-policyauthorization, npcf-bdtpolicycontrol, nsmsf-sms, nnssf-nsselection, nnssf-nssaiavailability, nudr-dr, nudr-group-id-map, nlmf-loc, n5g-eir-eic, nbsf-management, nchf-spendinglimitcontrol, nnwdaf-eventssubscription, nnwdaf-analyticsinfonpcf-eventexposure, npcf-ue-policy-control, nchf-convergedcharging, 5g-sbi-notification, nnef-eventexposure, nnef-afsessionwithqos
nfType String M Either 3GPP defined NFType as per TS29.510 custom NFType or *.
allowedtrafficPercentage Integer M 0-100% of traffic can be sent to traffic feed.
triggerPoints Array(TriggerPoint) M List of trigger points to be enabled if matches. One or more of following:
  • RxRequest
  • TxRequest
  • RxResponse
  • TxResponse
messageType Set(MessageType) M The allowed message type is [svc-request-message], [notification-message], or both [notification-message, svc-request-message].

Response Body

Response body data model varies based on Rest operation status. Details can be found in the subsequent sections.

Table 2-371 Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
array (trafficFeed TriggerPoint config) M 1 200 OK List of traffic Feed configuration matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when invalid input are provided.
JSON Format
{
  "ruleName": "string",
  "trafficFeedTriggerPointConfigData": {
    "allowedTrafficPercentage": 100,
    "triggerPoints": [
      "RxRequest"
    ],
    "nfType": "string",
    "serviceName": "string",
    "messageType": [
      "notification-message"
    ]
  }
}

Resource Definition

GET REST API

Resource to fetch the message-copy-traffic-config details based on the json version.

Resource URI: /ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point

Table 2-372 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
trafficFeedTriggerPointConfig M 1 200 OK configuration for Traffic Feed

PUT REST API

Resource to put the message-copy-traffic-config details based on the json version.

Resource URI: /ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/ruleName

Successful Response:

curl -X 'PUT' \
  'http://<SCP configuration FQDN>:32209/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/nef_trafficfeed_rule' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "ruleName": "nef_trafficfeed_rule",
  "trafficFeedTriggerPointConfigData": {
    "allowedTrafficPercentage": 100,
    "triggerPoints": [
      "RxRequest"
    ],
    "nfType": "nef",
    "serviceName": "nnef-eventexposure",
    "messageType": [
      "notification-message"
    ]
  }
}'

Failure response:

curl -X 'PUT' \
  'http://localhost:1106/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/rule5' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
    "ruleName": "rule5",
    "trafficFeedTriggerPointConfigData": {
      "allowedTrafficPercentage": 100,
      "triggerPoints": [
        "RxRequest"
      ],
      "nfType": "UDM",
      "serviceName": "nudm-sdm",
      "messageType": [
        "notification-message",
        "svc-request-message"
      ]
    }
  }'
 
{
  "title": "Bad Request",
  "status": 400,
  "detail": "Rule for the given combination already exists.",
  "instance": "/ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point/rule5",
  "cause": "MANDATORY_IE_MISSING"
}

Table 2-373 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
trafficFeedTriggerPointConfig M 1 200 OK configuration for Traffic Feed

PATCH REST API

Resource to add or update the message-copy-traffic-config using the Request Body.

Resource URI: /ocscp/scpc-configuration/v1/5gsbi-traffic-feed/trigger-point

Table 2-374 Data Structures Supported by the PATCH Response Body

Name Data Type Mandatory (M) or Optional(O) Cardinality Description
ruleName String M 1 Rule name for which Ingress and Egress Traffic configuration can be modified.
serviceName String O 1 Update serviceName for provided ruleName

[{ "op": "replace", "path": "/serviceName", "value": "nausf-auth" }]

trafficFeedTriggerPointConfig Json O 1 patchDocument need to be send

example:

[{ "op": "replace", "path": "/trafficFeedTriggerPointConfigData/allowedTrafficPercentage", "value": "50" }]

[{ "op": "replace", "path": "/trafficFeedTriggerPointConfigData/triggerPoints", "value": ["RxRequest","TxRequest"] }]

2.37 Congestion Control Configurations

This REST API is used to configure the congestion control configuration rules. The user uses this API to configure congestion control configurations, and the name of this rule is provided in Routing Options at the service level.

Resources

The following table describes the resource name to retrieve, add, update, and remove the congestion control configuration based on the query parameters.

Table 2-375 Resource Name

Resource Name Resource URI HTTP Method Description
congestion-control ocscp/scpc-configuration/{version}/congestion-control/{ruleName} GET Retrieves congestion control configuration rules for a given rulename.
congestion-control ocscp/scpc-configuration/{version}/congestion-control GET Retrieves all congestion control configuration rules.
congestion-control ocscp/scpc-configuration/{version}/congestion-control/{ruleName} PUT Updates the congestion control configuration rule.
congestion-control ocscp/scpc-configuration/{version}/congestion-control/{ruleName} DELETE Deletes the congestion control configuration rule.

Data Model

Request Body

The following table describes the field names of the CongestionControlConfig data type.

Table 2-376 CongestionControlConfig

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
ruleName String M "ruleName": "defaultRule" Name of the rule to identify the congestion control configuration.
congestionControlConfigData NFServiceLoadBasedCongestionControl M - NFServiceLoadBasedCongestionControl

Table 2-377 NFServiceLoadBasedCongestionControl

Field Name Data Type Mandatory (M) or Optional(O) Allowed Value Description
alternateRoutingOnsetThresholdPercent Integer M 0-100 This field indicates the threshold percentage for onset of reselection of equivalent NF.
alternateRoutingAbatementThresholdPercent Integer M 0-100 This field indicates the threshold percentage for reselection abatement.
throttleOnsetThresholdPercent Integer M 0-100 This field indicates threshold percentage for onset throttling.
throttleAbatementThresholdPercent Integer M 0-100 This field indicates the threshold percentage for throttle abatement.
sbiMsgPriorityDiscardFrom Integer M 0-31 This field indicates the priority of the message, after which the message is discarded. For example, if the value is 30, then messages with priority 0-29 are high priority, and other low-priority messages are throttled.
errorProfileConfiguration ErrorProfileConfiguration M   -

Table 2-378 ErrorProfileConfiguration

Field Name Data Type Mandatory (M) or Optional(O) Default Value Allowed Value Description
ErrorCode Integer M - Valid HTTP status codes like 5xx, 4xx error codes. Indicates configurable error codes to be sent by SCP to consumer NFs.
errorCause String O - - Indicates the error cause that is specific to the occurrence of the problem.
errorTitle String O - - Indicates the title of the error.
errorDescription String O - - Indicates an explanation specific to the occurrence of the problem.
retryAfter String O - - Indicates the retry interval.

Note: The retryAfter header is applicable only for 429, 503, and 307 errors.

redirectUrl String O - - Indicates the absolute URL of the resource to which the message is redirected.

Request/Response Body JSON Format (GET)

Response Body, Example:
    {
 "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)

Request Body, 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": ""
        }
    }
 } 
Response body, 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": ""
        }
    }
 }

Resource Definition

GET REST API:

This resource fetches all the congestion control configurations rules.

Resource URI: /ocscp/scpc-configuration/{version}/congestion-control/

The following table describes the data structure supported by the GET method on this resource.

Table 2-379 Data structures supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
List<CongestionControlConfig> M 1 200 OK The congestion control configuration with a rule name.

Example

{
 "ruleName": defaultRule
 "congestionControlConfigData": {
        "alternateRoutingOnsetThresholdPercent": 80,
        "alternateRoutingAbatementThresholdPercent": 75,
        "throttleOnsetThresholdPercent": 90,
        "throttleAbatementThresholdPercent": 85,
        "sbiMsgPriorityDiscardFrom": 24,
        "errorProfileConfiguration": {
            "errorCode": 503,
            "errorCause": "NF_CONGESTION",
            "errorTitle": "NF service is overloaded/congested",
            "errorDescription": "NF service is overloaded/congested",
            "retryAfter": "5",
            "redirectUrl": ""
        }
    }
 }

GET REST API:

This resource fetches the congestion control configurations for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/congestion-control/{ruleName}

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-380 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the congestion control rule used to retrieve the respective configurations.
The following table describes the data structure supported by the GET method on this resource.

Table 2-381 Data structures supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
CongestionControlConfig M 1..N 200 OK The congestion control configuration with a rule name.
Problem details M 1 404 NOT Found Problem details

Curl Example for GET

Successful response
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": ""
    }
  }
}
Failure case
curl -v -H "Content-Type: application/json" --request GET  http://localhost:8081/ocscp/scpc-configuration/v1/congestion-control/rx
 
 HTTP/1.1 404 Not Found
 
{
  "title": "Not Found",
  "status": "404",
  "detail": "Congestion control configuration data not found for provided ruleName in path parameter(s)",
  "instance": "/ocscp/scpc-configuration/v1/congestion-control/rx",
  "cause": "DATA_NOT_FOUND"
}

PUT REST API:

This resource adds or updates the congestion control configurations for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/congestion-control/{ruleName}

Table 2-382 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the congestion control rule used to add the respective configurations.

Table 2-383 Data structures

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
CongestionControlConfig M 1 200 OK CongestionControlConfiguration with the rule name when an existing record is updated.
CongestionControlConfig M 1 201 CongestionControlConfiguration with the rule name when an existing record is updated.
Problem details M 1 404 NOT Found Problem details

Curl Example for PUT

Success response:
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": ""
        }
    }
}
Failure case 1
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/congestion-control/r2' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "ruleName": "r1",
  "congestionControlConfigData": {
    "alternateRoutingOnsetThresholdPercent": 30,
    "alternateRoutingAbatementThresholdPercent": 20,
    "throttleOnsetThresholdPercent": 50,
    "throttleAbatementThresholdPercent": 60,
    "sbiMsgPriorityDiscardFrom": 20,
    "errorProfileConfiguration": {
      "errorCause": "string",
      "errorTitle": "string",
      "errorDescription": "string",
      "retryAfter": "string",
      "redirectUrl": "string"
    }
  }
}'
HTTP/1.1 400 Bad Request
{
  "title": "Bad Request",
  "status": "400",
  "detail": "Rule name should be same in path parameter and request body.",
  "instance": "/ocscp/scpc-configuration/v1/congestion-control/r1",
  "cause": "INVALID_KEY"
}
Failure case 2
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/congestion-control/r1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "ruleName": "r1",
  "congestionControlConfigData": {
    "alternateRoutingOnsetThresholdPercent": 30,
    "alternateRoutingAbatementThresholdPercent": 20,
    "throttleOnsetThresholdPercent": 50,
    "throttleAbatementThresholdPercent": 60,
    "sbiMsgPriorityDiscardFrom": 20,
    "errorProfileConfiguration": {
      "errorCause": "string",
      "errorTitle": "string",
      "errorDescription": "string",
      "retryAfter": "string",
      "redirectUrl": "string"
    }
  }
}'
HTTP/1.1 400 Bad Request
{
  "title": "Bad Request",
  "status": "400",
  "detail": "Invalid errorCode configured in section errorProfileConfiguration. Please refer user guide.",
  "instance": "/ocscp/scpc-configuration/v1/congestion-control/r1",
  "cause": "MANDATORY_IE_INCORRECT"
}

DELETE REST API:

This resource deletes the congestion control configurations for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/congestion-control/{ruleName}

Table 2-384 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the congestion control rule that needs to be deleted.

Table 2-385 Data structures supported by the Delete Response Body on this resource

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
Default M 1 204 OK -
ProblemDetails M 1 400/404 Problem details.

Curl Example for Delete

Successful response
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
Failure case
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.38 Circuit Breaking Configurations

This REST API is used to configure the circuit-breaking configuration rules. The user will use this API to configure CB configurations, and the name of this rule will be provided in Routing Options at the service level and System Options at the global level for inter-SCP and SEPP.

Resources

The following table describes the resource name to retrieve, add, update, and remove the circuit breaking configuration based on the query parameters.
  • Resource URI Structure: http://<authority>:<port>/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}
  • Authority: loadbalancer or fqdn
  • Port: nodeport(Ip address) or internal port (For fqdn)
  • loadbalancerip: 10.75.225.111
  • Example : http://10.75.225.111:32456/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} or

    http://ocscp-scpc-configuration:8081/ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}

Table 2-386 Resource Name

Resource Name Resource URI HTTP Method Description
circuit-breaking ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} GET Retrieves the circuit breaking configuration rule.
circuit-breaking ocscp/scpc-configuration/{version}/circuit-breaking GET Retrieves all circuit breaking configuration rules.
circuit-breaking ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} PUT creates a circuit breaking configuration rule if not present; otherwise, it updates the existing one.
circuit-breaking ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName} DELETE Deletes the circuit breaking configuration rule.

Data Model

Request Body

The following table describes the field names of the CircuitBreakingConfig data type.

Table 2-387 CircuitBreakingConfig

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
ruleName String M - The rule name to identify the circuit breaker configuration.
CircuitBreakingConfig CircuitBreakingConfig M - Provides http2MaxRequests to configure maximum number of requests SCP routes to an NF service instance.

Table 2-388 CircuitBreakingConfigData

Field Name Data Type Mandatory (M) or Optional(O) Default Value Description
http2MaxRequests Integer M 1000 Maximum number of requests SCP routes to an NF service instance (peer destination) and waiting for their responses before stopping further routing requests to it.

Request/Response Body JSON Format (GET)

Response Body, Example:
    {
  "ruleName": "newCBRule",
  "circuitBreakingConfigData": {
    "http2MaxRequests": 1200
  }
}

Request/Response Body JSON Format (PUT)

Request Body, Example:
   {
  "ruleName": "newCBRule",
  "circuitBreakingConfigData": {
    "http2MaxRequests": 1200
  }
}
Response body, Example:
{
  "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}

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-389 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the circuit breaking rule used to retrieve the respective configurations.
The following table describes the data structure supported by the GET method on this resource.

Table 2-390 Data structures supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
CircuitBreakingConfig M 1 200 OK The circuit breaking configuration with a rule name.
ProblemDetails M 1 404 Problem details

Example

Success response
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
    }
  }
Failure case
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

The following table describes the data structure supported by the GET method on this resource.

Table 2-391 Data structures supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
CircuitBreakingConfig M 1..N 200 OK The circuit breaking configuration with a rule name.
Example of Congestion Control Configuration for GET
Command : curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/circuit-breaking' \
  -H 'accept: application/json'
 
Response:
 
[
  {
    "ruleName": "defaultRule",
    "circuitBreakingConfigData": {
      "http2MaxRequests": 1000
    }
  }
]

PUT REST API:

This resource adds or updates the circuit breaking configurations for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}

Table 2-392 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the circuit breaking rule using which the respective configurations will be retrieved.

Table 2-393 Data structures

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
CircuitBreakingConfig M 1 200 OK This response is generated when an existing record is updated.
CircuitBreakingConfig M 1 201 This response is generated when a new record is created.
CircuitBreakingConfig M 1 404 Problem details

Example of Congestion control configuration for PUT

Success response:
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}}
Failure case 1
curl -v -H "Content-Type: application/json" -X PUT http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule1 -d '{
  "ruleName": "defaultRule",
  "circuitBreakingConfigData": {
    "http2MaxRequests": 1000
  }
}'
 
HTTP/1.1 400 Bad Request
 
{"title":"Bad Request","status":"400","detail":"Please provide same ruleName in Path Variable and Request Body. Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule1","cause":"MANDATORY_IE_MISSING"}

DELETE REST API:

This resource deletes the circuit breaking configurations for the specified rules.

Resource URI: /ocscp/scpc-configuration/{version}/circuit-breaking/{ruleName}

Table 2-394 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the circuit breaking rule that needs to be deleted.

Table 2-395 Data structures supported by the Delete Response Body on this resource

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
Default M 1 204 OK -
ProblemDetails M 1 403/404 Problem details.

Example

Successful response
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
Failure case 1
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"}
Failure case 2
curl -v -H "Content-Type: application/json" -X DELETE  http://localhost:8081/ocscp/scpc-configuration/v1/circuit-breaking/defaultRuleqq
HTTP/1.1 404 Not Found
{"title":"Not Found","status":"404","detail":"Circuit Breaking Configuration data not found against given query parameter(s). Please refer to the User Guide.","instance":"/ocscp/scpc-configuration/v1/circuit-breaking/defaultRule111","cause":"DATA_NOT_FOUND"}

2.39 NRF SRV Configuration

This section provides the following NRF SRV Configuration Rest API:

  • Resource URIs for the nrfsrvconfig resource type.
  • Types of data model.
  • URI query parameters supported by GET, PUT, and DELETE methods.

Resources

The following table describes the resource URIs and the corresponding HTTP methods for the nrfsrvconfig resource type.

Table 2-396 nrfsrvconfig Resource Type

Resource Name Resource URI HTTP Method Description
nrfsrvconfig /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn} PUT Creates the new NRF SRV configuration for the given nrfSrvFqdn or updates the existing NRF SRV configuration.
nrfsrvconfig /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn} GET Get the NRF SRV configuration for the given NRF SRV FQDN.
nrfsrvconfig /ocscp/scpc-configuration/{version}/nrfsrvconfig GET Get all the NRF SRV configuration available in the database.
nrfsrvconfig /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn} DELETE Removes the NRF SRV configuration for the given NRF SRV FQDN.

Note:

  • Use the Configure Alternate NF Group section to refresh the NRF SRV FQDN.
  • Set "spnlist" with NRF SRV in SPN format, and set 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-397 Data Structures Supported by the PUT Request Body

Data Type Description
NRFSRVConfigData Indicates the data type of the NRF SRV configuration.

For more information, see Table 2-401.

Table 2-398 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
NRFSRVConfigData M 1 200 OK This response is used when an existing record is updated.
NRFSRVConfigData M 1 201 CREATED This response is used when a new entry is created.
ProblemDetails M 1 400 BAD REQUEST This response is used when request body validation fails.

The following example is of NRF SRV Configuration REST API for PUT method.

Response:

curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "nrfSrvFqdn": "nrf2svc.scpsvc.svc.cluster.local",
  "nrfSrvConfig": {
    "nfSetIdList": [
      "setnrfk2.nrfset.5gc.mnc012.mcc345"
    ],
    "performSubscription": true,
    "performAudit": true,
    "registerScp": true,
    "apiPrefix": "USEast",    
    "scheme": "http",
    "versions": [
      {
        "apiVersionInUri": "v1",
        "apiFullVersion": "1.0.0"
      }
    ],
    "serviceNames": [
      "nnrf-nfm",
      "nnrf-disc",
      "nnrf-oauth2"
    ],
   "isInterPlmnFqdn": true
}
}'

Example of NRF SRV Configuration REST API for PUT Method Bad Request

Use case: A configuration where no entry contains 'v1' in apiVersionInUri.
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
   "nrfSrvConfig":{
      "apiPrefix":"USEast",
      "isInterPlmnFqdn":"false",
      "nfSetIdList":[
         "setnrfl1.nrfset.5gc.mnc012.mcc346"
      ],
      "performAudit":"false",
      "performSubscription":"false",
      "plmnList":[
         {
            "mcc":"410",
            "mnc":"213"
         }
      ],
      "registerScp":"false",
      "scheme":"http",
      "serviceNames":[
         "nnrf-nfm",
         "nnrf-disc",
         "nnrf-oauth2"
      ],
      "versions":[
         {
            "apiFullVersion":"1.0.0",
            "apiVersionInUri":"v2"
         }
      ]
   },
   "nrfSrvFqdn":"nrf1svc.scpsvc.svc.cluster.local"
}
}'
 
Response
{
   "title":"Bad Request",
   "status":400,
   "detail":"Atleast one entry in the version list must have its apiVersion set as v1. Please refer to the User Guide.",
   "instance":"/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf1svc.scpsvc.svc.cluster.local",
   "cause":"MANDATORY_IE_INCORRECT"
}

GET API

This resource fetches the NRF SRV configuration based on the supplied nrfSrvFqdn or fetches all the records.

Resource URI: /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn}

Table 2-399 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
NRFSRVConfigData M 1..N 200 OK This response is used when a record is fetched.
ProblemDetails M 1 404 NOT FOUND This response is used when no matching entry is found.
ProblemDetails M 1 400 BAD REQUEST This response is used when query parameter validation fails.

The following example is of NRF SRV Configuration REST API for GET method.

Response:

curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
  -H 'accept: application/json'

DELETE API

This resource removes the NRF SRV configuration for the given nrfSrvFqdn.

Resource URI: /ocscp/scpc-configuration/{version}/nrfsrvconfig/{nrfSrvFqdn}

Table 2-400 Data Structures Supported by the DELETE Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
None - - 204 NO CONTENT This response is used when the query is successful.
Problem Details M 1 404 NOT FOUND This response is used when no matching entry is found.
Problem Details M 1 400 BAD REQUEST This response is used when query parameter validation fails.

The following example is of NRF SRV Configuration REST API for DELETE method.

Response:

curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrfsrvconfig/nrf2svc.scpsvc.svc.cluster.local' \
  -H 'accept: application/json'

Data Model

The following tables describe different data models required for configuring NRF SRV data.

Table 2-401 NRFSRVConfigData

Name Data Type Mandatory (M) or Optional(O) Default Value Description
nrfSrvFqdn String M NA The data type of NRF SRV FQDN for the corresponding NRF SRV configuration.
nrfSrvConfig NRFSRVConfig M NA This is the NRF SRV configuration data.

Table 2-402 NRFSRVConfig

Name Data Type Mandatory (M) or Optional(O) Default Value Description
plmnList List O NA List of the NRF serving PLMN.
nfSetIdList List M NA This is the SetId list for this NRF SRV configuration.

You can configure multiple nfSetIds, but the NRF profile and rule creation will only take into account the nfSetId from the 0th index.

This setId must be unique for each NRF SRV configuration; that is, this setId must not be present in any other NRF SRV configuration.

performSubscription boolean O true This field allows to decide whether NRF from this NRF SRV should be used for a subscription or not.

The possible values are true or false.

performAudit boolean O true This field allows to decide whether NRF from this NRF SRV should be used for a audit or not.

The possible values are true or false.

registerScp boolean O false This field allows to decide whether to register SCP with the NRF from the NRF Set.

The possible values are true or false.

scheme UriScheme M NA This field is used for the URI Scheme. The supported value is http/https.
versions array(NFServiceVersion) M NA This field lists the NFServiceVersion.

Configuring multiple API versions is permissible, but at least one entry in the version list must have its apiVersionInUri set to "v1." This is because SCP currently utilizes "v1" for its self-generated requests towards NRF.

apiPrefix String O NA This field is used in the URI while communicating with NRF.
serviceNames array(ServiceName) M "nnrf-nfm","nnrf-disc","nnrf-oauth2"

Indicates the service name of the NRF SRV configuration.

The nnrf-nfm and nnrf-disc are mandatory for NRF SRV configurations.

The supported value is nnrf-nfm/nnrf-disc/nnrf-oauth2.
isInterPlmnFqdn boolean O false This field allows you to choose whether or not to map the NRF from this NRF SRV resolution to the InterPlmn Fqdn.

Table 2-403 NFServiceVersion

Name Data Type Mandatory (M) or Optional(O) Default Value Description
apiVersionInUri String M NA The apiVersionInUri is used in the URI while communicating with NRF. The supported value is v1/v2.
apiFullVersion String M NA The apiFullVersion should be in format x.y.z.

Allowed or Not Allowed API operations

Table 2-404 Different Types of Scenarios

Scenario Allowed or Not Allowed Notes
If performAudit is true, and the nnrf-nfm service is configured as a service for audit (global helm configuration), user can remove its entry from the NRF SRV configuration. Not Allowed nnrf-nfm service is mandatory
If inserting or updating nfSetId with a value that already exists in another nfSetId configuration. Not Allowed -
If performAudit is true, and the nnrf-disc service is configured as a service for audit (global helm configuration), user can remove its entry from the NRF SRV configuration. Not Allowed nnrf-disc service is mandatory
If nrfServiceForAudit is nnrf-disc and supported NRF services should have disc and user can change performAudit to true Allowed -
If nrfServiceForAudit is nnrf-nfm and supported NRF services should have mgmt and user can change performAudit to true Allowed -
If model-D is enabled and nrfSetID (or nrfInstanceId) is present in the NRF_CONFIG table for nnrf-disc, and user can remove the nnrf-disc service from the NRF SRV configuration. Not Allowed nnrf-disc service is mandatory
If OAuth2 is enabled and nrfSetID (or nrfInstanceId) is present in the NRF_CONFIG table for nnrf-oauth2, and user can remove the nnrf-oauth2 service from the NRF SRV configuration. Not Allowed -
The registerScp can be set from false to true when nrfset has mgmt service configured in the supported NRF service list. Allowed -
The performSubscription can be set from false to true when nrfset has mgmt service configured in the supported NRF service list. Allowed -
Configuring the version with the "apiVersionInUri" value as v2 only. Not Allowed Configuring multiple API versions is permissible, but at least one entry in the version list must have its apiVersionInUri set to "v1". This is because SCP currently utilizes "v1" for its self-generated requests towards NRF.

Note:

Service types nnrf-nfm and nnrf-disc are mandatory for Table 2-402 table configurations. Deletion of nnrf-nfm and nnrf-disc service types from the NRF SRV profile is not supported.

2.40 NRF FQDN InstanceId Mapping

This section describes REST API configurations required for the mapping the NRF FQDN InstanceId.

Resources

The following table describes the resource URIs and the corresponding HTTP methods for the nrffqdninstanceidmapping resource type.

Table 2-405 nrffqdninstanceidmapping Resource Type

Resource Name Resource URI HTTP Method Description
nrffqdninstanceidmapping /ocscp/scpc-configuration/{version}/nrffqdninstanceidmapping GET Fetches the NRF FQDN and corresponding instanceid mapping details.

Resource Definition

This section describes GET resource types supported by NRF FQDN InstanceId Mapping.

GET API

This resource fetches the NRF FQDN and corresponding instanceid mapping details.

Resource URI: /ocscp/scpc-configuration/{version}/nrffqdninstanceidmapping

Table 2-406 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
NRFFQDNInstanceIdMappingData M 1..N 200 OK This response is used when a record is fetched.

The following example is of NRF FQDN InstanceId Mapping REST API for GET method.

Response:

curl -X 'GET' 
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nrffqdninstanceidmapping' 
  -H 'accept: application/json'

[
  {
    "nrfFqdn": "nrf2svc.scpsvc.svc.cluster.local",
    "data": {
      "v1": {
        "nfInstanceId": "e12013b2-590d-39ab-9aba-dac025f69a65",
        "nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
        "svcNameSvcNfInstanceId": {
          "nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
          "nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
          "nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
        }
      }
    }
  },
  {
    "nrfFqdn": "nrf3svc.scpsvc.svc.cluster.local",
    "data": {
      "v1": {
        "nfInstanceId": "4ca42748-72e2-3dd7-b4a0-4e664b021312",
        "nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
        "svcNameSvcNfInstanceId": {
          "nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
          "nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
          "nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
        }
      }
    }
  },
  {
    "nrfFqdn": "nrf4svc.scpsvc.svc.cluster.local",
    "data": {
      "v1": {
        "nfInstanceId": "91b26862-b80f-3607-a8ef-43b429cf3b30",
        "nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
        "svcNameSvcNfInstanceId": {
          "nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
          "nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
          "nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
        }
      }
    }
  },
  {
    "nrfFqdn": "ocnrf-ingressgateway.ocnrf.svc.cluster.local",
    "data": {
      "v1": {
        "nfInstanceId": "85e3cce9-d6f1-3af6-abbb-1419cfb38e1d",
        "nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
        "svcNameSvcNfInstanceId": {
          "nnrf-nfm": "fe137ab7-740a-46ee-aa5c-951806d77b01",
          "nnrf-disc": "fe137ab7-740a-46ee-aa5c-951806d77b02",
          "nnrf-oauth2": "fe137ab7-740a-46ee-aa5c-951806d77b03"
        }
      }
    }
  }
]

Data Model

The following tables describe different data models required for mapping NRF FQDN InstanceId data.

Table 2-407 NRFFQDNInstanceIdMappingData

Name Data Type Mandatory (M) or Optional(O) Default Value Description
nrfFqdn String M NA This is the NRF FQDN received from DNS server.
data JSON M NA This is the mapping detail of instanceid corresponding to the NRF FQDN.

2.41 Discovery Cache Response Configuration

This REST API is used to retrieve, create, update, and delete NF discovery response cache configurations.

Resources

The following table describes the resource name to retrieve, add, update, and remove NF discovery response cache configurations based on the query parameters.

Table 2-408 Resources

Resource Name Resource URI HTTP Method Description
nfdiscovery-response-cache-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg GET Retrieves the NF discovery response cache configuration for the given discoveryCacheCfgName
nfdiscovery-response-cache-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName} GET Retrieves NF discovery response cache configuration for given discoveryCacheCfgName
nfdiscovery-response-cache-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName} PUT Creates or updates the NF discovery response cache configuration for the given discoveryCacheCfgName
nfdiscovery-response-cache-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName} DELETE Deletes the NF discovery response cache configuration for the given discoveryCacheCfgName

Data Model

The following table describes the field names of the DiscoveryCacheCfgWrapper data type:

Table 2-409 DiscoveryCacheCfgWrapper

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M

Indicates the unique rule name for each delegated discovery configuration that is considered as a primary key.

data DiscoveryCacheCfgData M Specific data for each discovery cache response configuration type. For more information, see DiscoveryCacheCfgData table.

Table 2-410 DiscoveryCacheCfgData

Field Name Data Type Mandatory (M) or Optional(O) Description
targetNfType String M

This is the NF type of producer for which delegated discovery is being made.

The allowed values for this field are:
  • * : This value denotes all the valid NF types.

    or

  • a valid NF type that SCP supports.
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:
  • * : This value denotes all the service names for that target NF type.

    or

  • a valid NF service that a NF type supports.
excludeDiscoveryQueryParams array(ExcludeQueryInfo) M This is a list of ExcludeQueryInfo objects. ExcludeQueryInfo has one field called queryHeader.
  • The value of this query header is one of the query parameters that is forwarded along with the discovery request to NRF.
  • If multiple query parameters are configured, the response will be cached if any one of the query parameters is matched.
  • Maximum size of this list is 20.
For more information, see Table 2-411 table.

Note:

For more information about valid NF types and services supported by SCP, see the "Supported NF Types" chapter in the Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Table 2-411 ExcludeQueryInfo

Field Name Data Type Mandatory (M) or Optional(O) Description
queryHeader String M

It is the query parameters that are forwarded along with the discovery request to NRF, for which responses will not be cached.

The allowed values for this field are:
  • None: This value denotes that caching is done for all the discovery responses.
  • *: This value denotes that caching will not be done for all the discovery responses.
  • SubscriberIds: An UE ID-related NF discovery query parameters.
  • Supported Query Parameters: The query parameters that is forwarded along with the discovery request to NRF. For more information, see "Supported Query Parameters" chapter in the Oracle Communications Cloud Native Core, Service Communication Proxy User Guide.

Default Rules for this API

Following are the default rules configured automatically after a fresh SCP deployment takes place:
  • defaultNFTypeDiscovery: This rule is applicable to any Model D request where discovery is happening without service names (in these requests, the 3gpp-sbi-discovery-service-names header is not present) and no other custom rule match is found. For this rule, caching will not happen for the list of query headers mentioned in the ExcludeQueryInfo.
  • defaultNFServiceDiscovery: This rule is applicable to a Model D request where the request 3gpp-sbi-discovery-service-names header is also present in the incoming request and no other custom rule match is found. For this rule, caching will not happen for the list of query headers mentioned in the ExcludeQueryInfo.
    For both of the above rules, excludeDiscoveryQueryParams has the following values:
    • In case of install: [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}] indicates that the caching of responses will be done for all the query headers except the SubscriberIds (refer to SubscriberIds )
    • In case of upgrade: [{"excludeQueryInfo":{"queryHeader":"None"}}] indicates that the caching of responses will be done for all the query headers so as to be backward compatible with older releases.

Note:

By default, users can configure up to 100 rules using this API.

Table 2-412 Default Rule Names Configuration

ruleName targetNfType serviceNames excludeDiscoveryQueryParams
defaultNFTypeDiscovery * absent [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}]
defaultNFServiceDiscovery * * [{"excludeQueryInfo":{"queryHeader":"SubscriberIds"}}]
The following default rules are configured automatically during the upgrade:

Table 2-413 Default Rule Name Configuration

ruleName targetNfType serviceNames excludeDiscoveryQueryParams
defaultNFTypeDiscovery * absent [{"excludeQueryInfo":{"queryHeader":"None"}}]
defaultNFServiceDiscovery * * [{"excludeQueryInfo":{"queryHeader":"None"}}]

The string SubscriberIds is a custom string, which is a group of 8 query parameters. SubscriberIds are UE ID-related NF discovery query parameters.

The following table lists the eight subscriber IDs covered by the keyword "SubscriberIds":

Table 2-414 SubscriberIds

SubscriberIds Description
supi If included, this Information Element (IE) shall contain the SUPI of the requester UE to search for an appropriate NF. SUPI may be included if the target NF type is "PCF," "CHF," "AUSF," "UDM," or "UDR.".
ue-ipv4-address The IPv4 address of the UE for which a BSF or P-CSCF needs to be discovered.
ip-domain The IPv4 address domain of the UE for which a BSF needs to be discovered.
ue-ipv6-prefix The IPv6 prefix of the UE for which a BSF or P-CSCF needs to be discovered.
gpsi If included, this IE shall contain the GPSI of the requester UE to search for an appropriate NF. GPSI may be included if the target NF type is "CHF," "PCF," "UDM," or "UDR.".
external-group-identity If included, this IE shall contain the external group identifier of the requester UE to search for an appropriate NF. This may be included if the target NF type is "UDM" or "UDR".
routing-indicator

Routing indicator information that allows to route network signaling with SUCI (see 3GPP 23.003 [12]) to an AUSF and UDM instance capable of serving the subscriber. May be included if the target NF type is "AUSF" or "UDM.".

Pattern: "^[0-9]{1,4}$"

msisdn If included, this IE shall contain the external group identifier of the requester UE to search for an appropriate NF. This may be included if the target NF type is "UDM" or "UDR".

Resource Definition

GET REST API:

The resource fetches the discovery response cache configuration (discoveryCacheCfgWrapper) based on the query parameters. If no query parameter is given, all the data is returned.

Resource URI for GET All: ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg

Resource URI for GET: ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/{ruleName}

The following table describes the URI query parameters supported by the GET method on this resource.

Table 2-415 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O
  • If this query parameter is present, then it will fetch the record for that rule name.
  • If this query parameter is not present, then it will fetch all the records present in the database.
The following table describes the data structures supported by the GET Response Body on this resource.

Table 2-416 Data Structures Supported by the GET Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response Codes Description
array(discoveryCacheCfgWrapper) M 1 200 OK List of discovery response cache configurations (discoveryCacheCfgWrapper) matching criteria.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or query parameter is provided.
ProblemDetails M 1 404 Not Found Returns when no record is found for the given query.
ProblemDetails M 1 405 Method Not Allowed Returns when an incorrect method or the server is configured to disallow the said method.

Examples

Successful response
[
{
    "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"
  }
]
Failure Case 1: 400 Bad Request
Request(Input given as v5 wrong version):
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/rule1' -H 'accept: application/json'
  
Response:
connection: keep-alive
 content-length: 0
 date: Fri,02 Feb 2024 09:43:00 GMT
 
400 Error: Bad Request
Failure Case 2: 404 Not Found
Request:
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr' -H 'accept: application/json'
 
Response:
{
  "title": "Not Found",
  "status": "404",
  "detail": "Discovery Cache Configuration data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr",
  "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found
Failure Case 3: 405 Method Not Allowed
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://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/rule1' -H 'accept: application/json'
 
Response:
{"timestamp":"2024-02-02T11:08:01.059+00:00","status":405,"error":"Method Not Allowed","path":"/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/rule1"}

PUT REST API:

This resource adds one discovery response cache configuration (discoveryCacheCfgWrapper) using the Request Body.

Resource URI: ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName}

Table 2-417 URI query parameters

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String M The unique string that works as an ID.
data DiscoveryCacheCfgData M The specific data for the discovery response configuration type.
The following table describes the data structures supported by the PUT Response Body on this resource.

Table 2-418 Data Structures Supported by the PUT Response Body

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
array(discoveryCacheCfgWrapper) M 1 201 OK If a new record in the table is created.
array(discoveryCacheCfgWrapper) M 1 200 OK If an existing record in the table is updated.
ProblemDetails M 1 400 BAD REQUEST Returns problem details.
ProblemDetails M 1 405 Method Not Allowed Returns when an incorrect method or the server is configured to disallow the said method.

Examples

Successful response
HttpStatus : 400
Request:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d ' {
    "ruleName": "Rule1",
    "data": {
      "targetNfType": "UDRR",
      "excludeDiscoveryQueryParams": [
        {
          "excludeQueryInfo": {
            "queryHeader": "SubscriberIds"
          }
        }
      ]
    }
}'
 
Response:
{
  "title": "Bad Request",
  "status": "400",
  "detail": "TargetNfType is invalid, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/RULE5",
  "cause": "INVALID_REQUEST_BODY"
}
 
 
Reuest:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/newRule' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d ' {
    "ruleName": "newRule",
    "data": {
      "targetNfType": "AMF",
      "excludeDiscoveryQueryParams": [
        {
          "excludeQueryInfo": {
            "queryHeader": "SubscriberIds"
          }
        }
      ]
    }
}'
 
Response:
HttpStatus : 201
{
  "ruleName": "newRule",
  "data": {
    "targetNfType": "AMF",
    "excludeDiscoveryQueryParams": [
      {
        "excludeQueryInfo": {
          "queryHeader": "SubscriberIds"
        }
      }
    ]
  }
}
 
Request:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/newRule' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d ' {
    "ruleName": "newRule",
    "data": {
      "targetNfType": "AMF",
      "excludeDiscoveryQueryParams": [
        {
          "excludeQueryInfo": {
            "queryHeader": "supi"
          }
        }
      ]
    }
}'
 
Response:
HttpStatus : 200
{
  "ruleName": "newRule",
  "data": {
    "targetNfType": "AMF",
    "excludeDiscoveryQueryParams": [
      {
        "excludeQueryInfo": {
          "queryHeader": "supi"
        }
      }
    ]
  }
}
 
HttpStatus : 405 - This can be seen through curl command when instead of PUT we are requesting for any other method in this example POST.
 
Request:
curl -X 'POST' \
>   'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' \
>   -H 'accept: application/json' \
>   -H 'Content-Type: application/json' \
>   -d ' {
>     "ruleName": "Rule1",
>     "data": {
>       "targetNfType": "UDR",
>       "excludeDiscoveryQueryParams": [
>         {
>           "excludeQueryInfo": {
>             "queryHeader": "SubscriberIds"
>           }
>         }
>       ]
>     }
> }'
 
Response:
{"timestamp":"2024-02-02T10:10:19.204+00:00","status":405,"error":"Method Not Allowed","path":"/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1"}

DELETE REST API:

This resource deletes one Discovery Response Cache configuration (discoveryCacheCfgWrapper) based on query parameters.

Resource URI: ocscp/scpc-configuration/{version}/nfdiscovery-response-cache-cfg/{ruleName}

Table 2-419 URI query parameters supported by the DELETE method on this resource

Field Name Data Type Mandatory (M) or Optional(O) Description
ruleName String O The name of the rule name configuration which needs to be deleted.

Table 2-420 Data structures supported by the Delete Response Body on this resource

Data Type Mandatory (M) or Optional(O) Cardinality Response codes Description
None M 1 200 OK Returns the successful response. Only response code is returned.
ProblemDetails M 1 404 NOT FOUND Returns when no matching entry is found.
ProblemDetails M 1 400 BAD REQUEST Returns when an invalid combination or query parameter is provided.
ProblemDetails M 1 405 Method Not Allowed Returns when an incorrect method or the server is configured to disallow the said method.

Examples

Successful response:
Request : curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule1' -H 'accept: application/json'
 
Response: 204 OK
Failure response: 404 NOT FOUND
Request:
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr' -H 'accept: application/json'
 
Response:
{
  "title": "Not Found",
  "status": "404",
  "detail": "Discovery Cache Configuration data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/pqr",
  "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found
Failure response: 400 Bad Request
Request(Input given as wrong version v5):
curl -X 'DELETE' 'http://<localhost>:8081/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/pqr' -H 'accept: application/json'
 
Response:
connection: keep-alive
 content-length: 0
 date: Fri,02 Feb 2024 09:43:00 GMT
 
400 Error: Bad Request
Failure response: 405 Method Not Allowed
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://<localhost>:8081/ocscp/scpc-configuration/v1/nfdiscovery-response-cache-cfg/Rule4' -H 'accept: application/json'
 
Response:
{"timestamp":"2024-02-02T11:13:13.951+00:00","status":405,"error":"Method Not Allowed","path":"/ocscp/scpc-configuration/v5/nfdiscovery-response-cache-cfg/Rule4"}

2.42 Configuring TLS Version and Ciphers

This section provides the following TLS Version and Ciphers configuration Rest API:
  • Resource URIs for the tls-config resource type.
  • Types of data model.
  • URI query parameters supported by GET, PUT, and DELETE methods.

Resources

The following table describes the resource URIs and corresponding HTTP methods for the tls-config resource type.

Table 2-421 tls-config Resource Type

Resource name Resource URI HTTP Method Description
tls-config /ocscp/scpc-configuration/{version}/tls-config GET Retrieves the TLS ciphers and versions for all interfaces.
tls-config /ocscp/scpc-configuration/{version}/tls-config/{interfaceName} GET Retrieves the TLS ciphers and version for a given interface.
tls-config /ocscp/scpc-configuration/{version}/tls-config/{interfaceName} PUT
  • Create new TLS cipher configurations for the given interface if the records do not already exist.
  • Update existing TLS cipher configurations if a record for the interface is found.

Resource Definition

This section describes GET, PUT, and DELETE resource types supported by TLS Ciphers configuration.

GET ALL API

This resource fetches all the TLS Ciphers configuration.

Resource URI: /ocscp/scpc-configuration/{version}/tls-config

Table 2-422 Data Structures Supported by the GET Request Body

Data Type Mandatory(M)/Optional(O) Cardinality Response Codes Description
TLSConfigurationWrapper M 1 200 OK Indicates that all TLSConfigurationWrapper objects were successfully fetched.

The following example is of TLS Configuration REST API for GET method.

Request:
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config' -H 'accept: application/json'
Response:
[
  {
    "interfaceName": "sbiIngressCiphers",
    "tlsCiphersConfigData": {
      "tlsVersion": "TLSv1.3",
      "terminateExistingConn": false,
      "tls13Ciphers": [
        "TLS_CHACHA20_POLY1305_SHA256",
        "TLS_AES_256_GCM_SHA384",
        "TLS_AES_128_GCM_SHA256"
      ]
    }
  }
]

GET ALL API

This resource fetches the TLS Ciphers and version configuration.

Resource URI: /ocscp/scpc-configuration/{version}/tls-config/{interfaceName}

Table 2-423 Data Structures Supported by the GET Request Body

Data Type Mandatory(M)/Optional(O) Cardinality Response Codes Description
TLSConfigurationWrapper M 1 200 OK Indicates the successful fetch of TLSConfigurationWrapper configurations.
ProblemDetails M 1 400 Indicates that the request failed because the given interface name is not present.

The following example is of TLS Configuration REST API for GET method.

Successful sample of GET API
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiEgress' -H 'accept: application/json'
{
  "interfaceName": "sbiEgress",
  "tlsConfigData": {
    "tlsVersion": "TLSv1.2",
    "terminateExistingConn": false,
    "tls12Ciphers": [
      "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
      "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
      "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
      "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
    ]
  }
}
Failure sample of GET API
curl -X 'GET' 'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiEgress1' -H 'accept: application/json'
{
  "title": "Bad Request",
  "status": 400,
  "detail": "Invalid Tls Interface Name, Allowed interfaceName names are sbiIngress, sbiEgress, sbiTrafficFeed",
  "instance": "/ocscp/scpc-configuration/v1/tls-config/sbiEgress1",
  "cause": "INVALID_QUERY_PARAM"
}

PUT API

This resource creates new TLS cipher configurations for the specified interface.

Resource URI: /ocscp/scpc-configuration/{version}/tls-config/{interfaceName}

Table 2-424 Data Structures Supported by the PUT Request Body

Path Params Data Type Mandatory(M)/Optional(O) Description
interfaceName String M Retrieves configurations for the specified interfaceName.

Table 2-425 Data Structures Supported by the PUT Request Body

Data Type Mandatory(M)/Optional(O) Cardinality Description
TLSConfigurationWrapper M 1 Indicates that a TLSConfigurationWrapper is to be added or updated.

Table 2-426 Data Structures Supported by the PUT Request Body

Data Type Mandatory(M)/Optional(O) Cardinality Response Codes Description
TLSConfigurationWrapper M 1 200 Indicates that the nfServiceConfig configurations were successfully updated.
TLSConfigurationWrapper M 1 201 Indicates that the nfServiceConfig configurations were successfully created.
Problem Details M 1 400 Indicates that the request failed due to one of the following reasons:
  • An invalid TLS version is configured.
  • Invalid ciphers are configured.
  • An invalid interface name is configured.

The following example is of TLS Configuration REST API for PUT method.

Successful sample of GET API
curl -X 'PUT' \
'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiIngressCiphers' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"interfaceName": "sbiIngressCiphers",
"tlsCiphersConfigData": {
"tlsVersion": "TLSv1.3",
"terminateExistingConn": false,
"tls13Ciphers": [
"TLS_CHACHA20_POLY1305_SHA256", "TLS_AES_256_GCM_SHA384", "TLS_AES_128_GCM_SHA256"
]
}
}'
{
  "interfaceName": "sbiIngressCiphers",
  "tlsCiphersConfigData": {
    "tlsVersion": "TLSv1.3",
    "terminateExistingConn": false,
    "tls13Ciphers": [
      "TLS_CHACHA20_POLY1305_SHA256",
      "TLS_AES_256_GCM_SHA384",
      "TLS_AES_128_GCM_SHA256"
    ]
  }
}

Failure sample of PUT API

Request
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/tls-config/sbiIngress' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
    "interfaceName": "sbiIngress",
    "tlsConfigData": {
      "tlsVersion": "TLSv1.3,TLSv1.4",
      "terminateExistingConn": true,
      "tls12Ciphers": [
        "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
        "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
        "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
        "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
        "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
        "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"
      ],
      "tls13Ciphers": [
        "TLS_AES_128_GCM_SHA256",
        "TLS_AES_256_GCM_SHA384",
        "TLS_CHACHA20_POLY1305_SHA256"
      ]
    }
  }
Response
{
  "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

The following table lists the data model for request or response.

Table 2-427 TLSConfigurationWrapper Details

Parameter Name Data Type Mandatory (M) / Optional (O) Default Values Value Range Description and Validation
interfaceName String M NA Only the configured interfaces with non-null values are allowed. These interfaces are:
  • sbiIngress
  • sbiEgress
  • sbiTrafficFeed
Indicates the interface that requires updating with the TLS version and ciphers.
Validation
  • Non null values.
  • Only configured TLS versions are allowed
tlsVersion String M NA The following are the allowed values:
  • TLS 1.3
  • TLS 1.2
  • TLS 1.3,TLS 1.2

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
  • sbiIngress: false
  • sbiEgress: true
  • sbiTrafficFeed: true
true or false
  • Allowed Values:

    • sbiIngress: false
    • sbiEgress: true
    • sbiTrafficFeed: 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
  • 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
Specifies the TLS 1.2 ciphers to be configured.
Validation
  • Non null values based on TLS version.
  • Only configured Ciphers are allowed.
tls13Ciphers List<String> C NA
  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
Specifies the TLS 1.3 ciphers to be configured.
Validation
  • Non null values based on TLS version.
  • Only configured Ciphers are allowed

The following sample request illustrates how to configure TLS settings for secure communication:
{
  "interfaceName": "sbiIngressCiphers",
  "tlsCiphersConfigData": {
    "tlsVersion": "TLSv1.3, TLSv1.2",
    "terminateExistingConn": false,
    "tls12Ciphers": [
      "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
      "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"
    ],
    "tls13Ciphers": [
      "TLS_AES_128_GCM_SHA256",
      "TLS_AES_256_GCM_SHA384",
      "TLS_CHACHA20_POLY1305_SHA256"
    ]
  }
}

2.43 Configuring NF Profile Level Attribute

This section describes the nfProfile-level-attribute-config REST API parameters required to configure NF profile level attributes that may be unavailable in a registered NF profile. You can configure NF profile level attributes based on NF types or combinations of NF types and NF instances. This API refers to a configured instance of NF profile level attribute configuration data REST API to obtain specific NF profile level attributes.

Resources

The following table describes the resource name to retrieve, add, or update nfProfile-level-attribute-config configuration data:

Table 2-428 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
nfProfile-level-attribute-config ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config GET Retrieves all existing NF profile level attribute configuration.
nfProfile-level-attribute-config ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName} GET Retrieves NF profile level attribute configuration for a config name.
nfProfile-level-attribute-config /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName} PUT
  • Creates a new NF profile level attribute configuration.
  • Updates an existing NF profile level attribute configuration record.
nfProfile-level-attribute-config /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName} DELETE Removes an existing NF profile level attribute configuration.

Resource Definition

GET ALL

This resource fetches all the NF profile level attribute configuration.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config

The following table describes data structures supported by the GET response body on this resource:

Table 2-429 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigWrapper objects are fetched.

The following table describes data structures supported by the GET response body on these resources:

Table 2-430 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigWrapper configurations are fetched.

Sample GET API

Request:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config' \
  -H 'accept: application/json'
 
Response:
[
  {
    "configName": "defaultNfProfileLevelAttrConfig",
    "nfProfileLevelAttrConfig": {
      "nfType": "*",
      "nfInstanceIdsList": [
        "*"
      ],
      "nfProfileLevelAttrConfigDataName": "defaultNfProfileLevelAttrConfigData"
    },
    "createdTimestamp": "2025-01-09 05:24:11.0",
    "updatedTimestamp": "2025-01-09 05:24:11.0"
  }
]

GET

This resource fetches NF profile level attribute configuration.

Resource URI: ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName}

The following table describes data structures supported by the GET response body on this resource:

Table 2-431 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigWrapper objects are fetched.

The following table describes data structures supported by the GET response body on these resources:

Table 2-432 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigWrapper configurations are fetched.
ProblemDetails M 1 404 Retrieves records based on non-existing configName.

Sample of a Successful GET API

Request:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/defaultNfProfileLevelAttrConfig' \
  -H 'accept: application/json'
   

Response: 
{
  "configName": "defaultNfProfileLevelAttrConfig",
  "nfProfileLevelAttrConfig": {
    "nfType": "*",
    "nfInstanceIdsList": [
      "*"
    ],
    "nfProfileLevelAttrConfigDataName": "defaultNfProfileLevelAttrConfigData"
  },
  "createdTimestamp": "2025-04-11 14:41:21",
  "updatedTimestamp": "2025-04-14 14:48:12"
}

Sample of an Error GET API

Request:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test123' \
  -H 'accept: application/json'
   
Response: 
{
  "title": "Not Found",
  "status": 404,
  "detail": "Nf Profile Level Attribute Configuration not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test123",
  "cause": "DATA_NOT_FOUND"
}

PUT

This resource configures NF profile level attribute configuration.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName}

The following table describes data structures supported by the PUT request body on this resource:

Table 2-433 Path Parameters

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configurations of configName.

Table 2-434 NfProfileLevelAttrConfigWrapper

Data Type Mandatory (M) or Optional (O) Cardinality Description
NfProfileLevelAttrConfigWrapper M 1 Adds or updates NfProfileLevelAttrConfigWrapper.

The following table describes data structures supported by the PUT response body on this resource:

Table 2-435 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigWrapper M 1 200 Indicates successful update of NF profile level attribute configurations.
NfProfileLevelAttrConfigWrapper M 1 201 Indicates successful creation of NF profile level attribute configurations.
ProblemDetails M 1 400

Scenarios:

  • Attempts to insert or update records when configName does not match in the query parameter and request body.
  • Attempts to insert or update records with special characters in nfInstanceIdList.
  • Attempts to insert or update records with special characters in configName.
  • Attempts to insert a new record when DB tables reach their maximum limit.
  • Attempts to insert or update records when the nfInstanceId list reaches its maximum limit.
  • Attempts to insert or update records with exact existing (nfType and instanceidList) configuration.
  • Attempts to insert or update records with an invalid nfType.
  • Attempts to insert or update records with a non-existing nfProfileLevelAttrConfigDataName value.

Sample of a Successful PUT API

Request:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test-config2' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "configName": "test-config2",
  "nfProfileLevelAttrConfig": {
    "nfType": "PCF",
    "nfInstanceIdsList": [
      "231-sfds-2e234"
    ],
    "nfProfileLevelAttrConfigDataName": "test"
  }
}'
   
Response: 
{
  "configName": "test-config2",
  "nfProfileLevelAttrConfig": {
    "nfType": "PCF",
    "nfInstanceIdsList": [
      "231-sfds-2e234"
    ],
    "nfProfileLevelAttrConfigDataName": "test"
  },
  "createdTimestamp": "Mon Jan 13 14:26:59 UTC 2025",
  "updatedTimestamp": "Mon Jan 13 14:26:59 UTC 2025"
}

Sample of an Error PUT API

Request:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test-config2' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "configName": "test-config21",
  "nfProfileLevelAttrConfig": {
    "nfType": "PCF",
    "nfInstanceIdsList": [
      "231-sfds-2e234"
    ],
    "nfProfileLevelAttrConfigDataName": "test"
  }
}'
   

Response: 
{
  "title": "Bad Request",
  "status": 400,
  "detail": "Config Name mismatch in Query params and Request body params, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/test-config2",
  "cause": "MANDATORY_QUERY_PARAM_INCORRECT"
}

DELETE

This resource removes NF profile level attribute configuration for a given configName.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config/{configName}

The following table describes data structures supported by the PUT request body on this resource:

Table 2-436 Path Parameters

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Fetches configurations of configName.

The following table describes data structures supported by the DELETE response body on this resource:

Table 2-437 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
None - - 204 Indicates successful removal of NF profile level attribute configuration.
ProblemDetails M 1 400

Scenarios:

  • Attempts to remove the default configuration.
  • Attempts to remove a non-existing configuration.

Sample of a Successful DELETE API

Request:
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/testData' \
  -H 'accept: application/json'
   
Response:
{}
 
Successfully deleted Nf Profile Config Set Data

Sample for an Error DELETE API

Request:
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config/testDataaa' \
  -H 'accept: application/json'
   
Response:
{
  "title": "Not Found",
  "status": 404,
  "detail": "Nf Profile Level Attribute Configuration not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfProfile-config-set-data/testDataaa",
  "cause": "DATA_NOT_FOUND"
}

Data Model

The following table describes data model for request or response:

Table 2-438 NfProfileConfigSetDataWrapper

Field Name Data Type Mandatory (M) or Optional (O) Default Value Description
configName String M defaultNfProfileLevelAttrConfig Indicates unique configuration name to configure the NF profile level attribute configuration.

The allowed values must be alphanumeric with hyphen and underscore special characters.

nfType String M * Describes NfType to which this configuration is applicable.

* indicates all valid NF types.

nfinstanceidList

Array<String>

O * Indicates configuration list of nfInstance IDs separated by comma.

When nfInstaceId is provided, it is used with nfType to extract the missing profile level data to be used while processing NF profiles for creating rules.

When nfInstanceId is not provided, it is automatically set to '*'. Then, this configuration is applicable for any NF instance of a given NfType.

The allowed values must be alphanumeric with hyphen and underscore special characters.

* indicates all valid NF instance IDs.

nfProfileLevelAttrConfigDataName String O defaultNfProfileLevelAttrConfigData Indicates an NF profile level attribute configuration data item that is already configured.

When SCP processes NF profiles, relevant NF profile level attribute configuration data items are selected based on nfType or nfInstanceID combinations, and they are used for creating default rules. Then, those default rules will be used for routing and alternate routing of notification requests when the service name is unknown.

2.44 Configuring NF Profile Level Attribute Configuration Data

This section describes the nfProfile-level-attribute-config-data REST API parameters required to configure NF profile level attribute configurations data. This includes notification attributes that are used for alternate routing of notification requests and DNS SRV attributes for the DNS SRV feature. The data configured in this API is referred by NF profile level attribute configuration REST API.

Resources

The following table describes the resource name to retrieve, add, or update nfProfile-level-attribute-config-data configuration data:

Table 2-439 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
nfProfile-level-attribute-config-data ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data GET Retrieves all the existing NF profile level attribute configuration data items.
nfProfile-level-attribute-config-data ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName} GET Retrieves NF profile level attribute configuration data for a config name.
nfProfile-level-attribute-config-data /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName} PUT
  • Creates a new NF profile level attribute configuration data item.
  • Updates an existing NF profile level attribute configuration data record.
nfProfile-level-attribute-config-data /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data{configName} DELETE Removes an existing NF profile level attribute configuration data item.

Resource Definition

GET ALL

This resource fetches all the NF profile level attribute configuration data.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data

The following table describes data structures supported by the GET response body on this resource:

Table 2-440 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigDataWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigDataWrapper objects are fetched.

The following table describes data structures supported by the GET response body on these resources:

Table 2-441 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigDataWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigDataWrapper configurations are fetched.

Sample GET API

Request:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data' \
  -H 'accept: application/json'
   
Response:  
[
  {
    "configName": "defaultNfProfileLevelAttrConfigData",
    "dnsSrv": {
      "scheme": "https",
      "portPreference": "SRV_RECORD"
    },
    "notificationAttributes": {
      "scheme": "http",
      "port": 80,
      "capacity": 65535,
      "priority": 1
    },
    "createdTimestamp": "2025-03-21 06:15:36",
    "updatedTimestamp": "2025-03-21 06:15:36"
  }
]

GET

This resource fetches NF profile level attribute configuration data.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName}

The following table describes data structures supported by the GET response body on this resource:

Table 2-442 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigDataWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigDataWrapper objects are fetched.

The following table describes data structures supported by the GET response body on these resources:

Table 2-443 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigDataWrapper M 1 200 Indicates that all the NfProfileLevelAttrConfigDataWrapper configurations are fetched.
ProblemDetails M 1 400 Retrieves records based on the 'configName', which does not exist.

Sample of a Successful GET API

Request:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/defaultNfProfileLevelAttrConfigData' \
  -H 'accept: application/json'
   
Response:  
{
  "configName": "defaultNfProfileLevelAttrConfigData",
  "dnsSrv": {
    "scheme": "https",
    "portPreference": "SRV_RECORD"
  },
  "notificationAttributes": {
    "scheme": "http",
    "port": 80,
    "capacity": 65535,
    "priority": 1
  },
  "createdTimestamp": "2025-03-21 06:15:36",
  "updatedTimestamp": "2025-03-21 06:15:36"
}

Sample of an Error GET API

Request:
curl -X 'GET' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/test12' \
  -H 'accept: application/json'
   
Response:  
{
  "title": "Not Found",
  "status": 404,
  "detail": "Nf Profile Level Attribute Config data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/test12",
  "cause": "DATA_NOT_FOUND"
}

PUT

This resource adds or updates NF profile level attribute configuration data.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName}

The following table describes data structures supported by the PUT request body on this resource:

Table 2-444 Path Parameters

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Indicates the name of the configurations to be added or updated.

Table 2-445 NfProfileLevelAttrConfigWrapper

Data Type Mandatory (M) or Optional (O) Cardinality Description
NfProfileLevelAttrConfigDataWrapper M 1 Adds or updates NfProfileLevelAttrConfigDataWrapper.

The following table describes data structures supported by the PUT response body on this resource:

Table 2-446 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NfProfileLevelAttrConfigDataWrapper M 1 200 Indicates successful update of NF profile level attribute configuration data item.
NfProfileLevelAttrConfigDataWrapper M 1 201 Indicates successful creation of NF profile level attribute configuration data item.
ProblemDetails M 1 400 Scenarios:
  • Attempts to insert or update a record when configName in the query parameter does not match with the configName in the request body.
  • Attempts to insert or update records with an invalid notification attribute scheme.
  • Attempts to insert or update records with an invalid notification attribute port value.
  • Attempts to insert or update records with an invalid notification attribute capacity value.
  • Attempts to insert or update records with special characters in configName.
  • Attempts to insert a new record when the DB table reaches its maximum limit.
  • Attempts to insert or update records with an invalid DnsSrv scheme value.

Sample of a Successful PUT API

Request:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "configName": "chk-config-data",
  "dnsSrv": {
    "scheme": "https",
    "portPreference": "SRV_RECORD"
  },
  "notificationAttributes": {
    "scheme": "http",
    "port": 10,
    "capacity": 9877,
    "priority": 10
  }
}'
   
Response:  
{
  "configName": "chk-config-data",
  "dnsSrv": {
    "scheme": "https",
    "portPreference": "SRV_RECORD"
  },
  "notificationAttributes": {
    "scheme": "http",
    "port": 10,
    "capacity": 9877,
    "priority": 10
  },
  "createdTimestamp": "2025-04-04 05:52:03",
  "updatedTimestamp": "2025-04-04 05:52:03"
}

Sample of an Error PUT API

Request:
curl -X 'PUT' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "configName": "chk-config-data",
  "dnsSrv": {
    "scheme": "https",
    "portPreference": "SRV_RECORD"
  },
  "notificationAttributes": {
    "scheme": "http",
    "port": 10,
    "capacity": 9877,
    "priority": 10
  }
}'
   
Response:  
{
  "title": "Bad Request",
  "status": 400,
  "detail": "Config Name mismatch in Query params and Request body params, Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data1",
  "cause": "MANDATORY_QUERY_PARAM_INCORRECT"
}

DELETE

This resource removes NF profile level attribute configuration data for a given configName.

Resource URI: /ocscp/scpc-configuration/{version}/nfProfile-level-attribute-config-data/{configName}

The following table describes data structures supported by the PUT request body on this resource:

Table 2-447 Path Parameters

Name Data Type Mandatory (M) or Optional (O) Description
configName String M Indicates the name of the configuration to be removed.

The following table describes data structures supported by the DELETE response body on this resource:

Table 2-448 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
None - - 204 Indicates successful removal of the NF profile level attribute configuration data item.
ProblemDetails M 1 400 Scenarios:
  • Attempts to remove the default configuration.
  • Attempts remove a configuration by config name, which is absent.

Sample of a Successful DELETE API

Request:
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data' \
  -H 'accept: application/json'
   
Response: 
{}
 
Successfully deleted NF Profile Level Attribute Configuration Data

Sample for an Error DELETE API

Request:
curl -X 'DELETE' \
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data12' \
  -H 'accept: application/json'
   
Response:  
{
  "title": "Not Found",
  "status": 404,
  "detail": "Nf Profile Level Attribute Config data not found against given query parameter(s), Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfProfile-level-attribute-config-data/chk-config-data12",
  "cause": "DATA_NOT_FOUND"
}

Data Model

The following table describes data model for request or response:

Table 2-449 NfProfileLevelAttrConfigDataWrapper

Field Name Data Type Mandatory (M) or Optional (O) Default Value Description
configName String M defaultNfProfileLevelAttrConfigData Indicates unique configuration name to configure the NF profile level attribute configuration data.

The default value cannot be deleted, but it can be modified.

The allowed values must be alphanumeric with hyphen and underscore special characters.

dnsSrv.scheme String O https Defines the default scheme to form the query for DNS SRV profile level FQDN.

Range: http or https

dnsSrv.portPreference String O SRV_RECORD

Defines the path to retrieve the port values either from the DNS SRV record or from the configured notification attributes.

Range: SRV_RECORD or STATIC_CONFIG

  • STATIC_CONFIG: Uses static configuration defined in notificationAttributes.port
  • SRV_RECORD: Uses port from the DNS SRV record.
notificationAttributes.scheme String M http

Defines the scheme to be used while creating default routing rules for notification requests when the scheme is not provided in the NF profile at profile level.

Range: http or https

notificationAttributes.port Integer O 80

Defines the port to be used while creating default routing rules for notification request when the port is not provided in the NF profile at profile level.

Range: 1-65535

notificationAttributes.capacity Integer O 65535

Defines the capacity to be used while creating default routing rules for notification requests when the capacity is not provided in the NF profile at profile level.

Range: 0-65535

notificationAttributes.priority Integer O 1

Defines the priority to be used while creating default routing rules for notification requests when the priority is not provided in the NF profile at profile level.

Range: 0-65535

2.45 Configuring SCP Feature Status

This section describes SCP Feature Status REST API parameters to fetch the runtime status of NRF migration tasks.

Resources

The following table describes the resource name to retrieve scpfeaturestatus configuration data:

Table 2-450 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
scpfeaturestatus /ocscp/scpc-configuration/{version}/scpfeaturestatus GET Retrieves the runtime status of a feature.

Resource Definition

GET

This resource fetches the runtime status of a feature based on the query parameters.

Resource URI: /ocscp/scpc-configuration/{version}/scpfeaturestatus

The following table describes the data structures supported by the GET response body on this resource:

Table 2-451 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
SCPFeatureStatusData M 1 200 OK 200 OK is used when a record is fetched.

Example of SCP Feature Status REST API for GET Method:

curl -X 'GET' 
  'http://<localhost>:8081/ocscp/scpc-configuration/v1/scpfeaturestatus' 
  -H 'accept: application/json'

[
  {
    "feature": "nrf_bootstrap_info",
    "admin": "ENABLED",
    "status": "ENABLED"
  }
]

Data Model

The following table describes data model for request or response:

Table 2-452 SCPFeatureStatusData

Field Name Data Type Mandatory (M) or Optional (O) Description
featureName String M Displays the names of the features, such as nrf_bootstrap_info.

Default value: Feature Name

adminState String M Displays the admin state of the feature. Possible statuses are mentioned below:
  • ENABLED: This indicates that the user has enabled the feature.
  • DISABLED: This indicates that the user has disabled the feature.

Default value: DISABLED

runtimeStatus String M Displays the current runtime status of the feature. Possible statuses are mentioned below:
  • DISABLED: This indicates that the feature is disabled.

    For example, in the nrf_bootstrap_info feature, this state means SCP is running with a statically configured NRF. If the user has changed the 'Admin State' from ENABLED to DISABLED, this state means the feature is successfully disabled.

  • IN_PROGRESS: This indicates the enabling or disabling of the feature is currently is in progress when the 'Admin State' is set to ENABLED or DISABLED.

    For example, in the nrf_bootstrap_info feature, when the 'Admin State' is ENABLED, the migration from static to DNS SRV based NRF topology is in progress. In the nrf_bootstrap_info feature, when the 'Admin State' is DISABLED, the migration from a DNS SRV based NRF topology to static NRF topology is in progress.

  • FAILED_RETRY: This indicates that the process of enabling or disabling the feature (as indicated by the 'Admin State') has encountered failure and is undergoing retries.

    For example, in the nrf_bootstrap_info feature, this state means either of the migration tasks has failed and going through retries.

  • ENABLED: This indicates the feature is successfully enabled.

    For example, in the nrf_bootstrap_info feature, this state means the migration from static to a DNS SRV based NRF topology is successful.

Default value: DISABLED

creationTimestamp Date M Displays the time of creation of the event, for example, creationTimestamp": "2021-05-26T01:17:15.000+00:00
updatedTimestamp Date M Displays the time of updation of the event, for example, creationTimestamp": "2021-05-26T06:24:15.000+00:00

2.46 Configuring NF Topology On-demand Audit

In SCP 25.2.100 and earlier releases, the NF topology audit was performed automatically at set intervals. You can initiate an on-demand NF topology audit with NRF by using this REST API. It provides an option to manually refresh and reprocess all NF profiles.

Resources

The following table describes the resource name to initiate nf-topology-audit configuration data:

Table 2-453 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description

nf-topology-audit

/ocscp/scpc-configuration/{version}/nf-topology-audit PUT Initiates an on-demand NF topology audit on specified NF types with optional NRF Set IDs and optional force refresh.

Resource Definition

PUT

This resource performs an on-demand NF topology audit on specified NF types with optional NRF Set IDs and optional force refresh based on the query parameters.

Resource URI: /ocscp/scpc-configuration/{version}/nf-topology-audit

The following table describes the data structures supported by the PUT request body on this resource:

Table 2-454 Request Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Description
OnDemandAuditDetailsWrapper M 1 Indicates nf-topology-audit configuration used to submit the NF topology audit request to SCP.

The following table describes the data structures supported by the PUT response body on this resource:

Table 2-455 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
OnDemandAuditDetailsWrapper M 1 200 OK Successfully submitted nf-topology-audit request.
ProblemDetails M 1 400 Bad Request Problem details

Sample of a successful PUT API

Request:
curl -X 'PUT' \
  'http://localhost:31411/ocscp/scpc-configuration/v1/nf-topology-audit' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "nfTypeList": [
    "SMF","UDM"
  ],
  "nrfSetIdList": [
    "setnrfl1.nrfset.5gc.mnc012.mcc345"
  ],
  "forceRefresh": true
}'


Response:
{
  "nfTypeList": [
    "SMF",
    "UDM"
  ],
  "nrfSetIdList": [
    "setnrfl1.nrfset.5gc.mnc012.mcc345"
  ],
  "forceRefresh": true,
  "message": "OnDemand Audit has been accepted for SMF,UDM"
}

Sample of an Error PUT API

Request:
curl -X 'PUT' \
  'http://localhost:31411/ocscp/scpc-configuration/v1/nf-topology-audit' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "nfTypeList": [
    "SMF","UDMd"
  ],
  "nrfSetIdList": [
    "setnrfl1.nrfset.5gc.mnc012.mcc345"
  ],
  "forceRefresh": true
}'

Response:
{
  "title": "Bad Request",
  "status": 400,
  "detail": "UDMD NFType(s) not configured in NFTypes-NFServices (Resource name is nftypes-nfservices). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nf-topology-audit",
  "cause": "INVALID_REQUEST_BODY"
}

Data Model

The following table describes data model for request or response:

Table 2-456 OnDemandAuditDetailsWrapper

Field Name Data Type Mandatory (M) or Optional (O) Description
nfTypeList

List<String>

M This parameter configures valid NFTypes on which topology refresh is required.

Default value: NA

Range: Valid nfTypes/*

nrfSetIdList

List<String>

O This parameter configures NRF Set IDs on which topology refresh is required. If not provided, all the configured NRF Set IDs are audited.

Default value: Empty List

Range: Provisioned NRF Set IDs in deployment

forceRefresh

Boolean

O This parameter indicates whether to force NF profile mismatch in the SCP-Audit microservice.

It has the following values:

true: Enables force NF profile mismatch in the SCP-Audit microservice. SCP-Notification processes NF profiles even if it is already learnt by SCP.

false: Performs usual audit process. NF profiles are processed by SCP-Notification only if there is a mismatch between the learnt NF profile and the NF profile fetched from NRF during audit.

Default value: false

Range: true/false

Note:

You must provide at least one NFType/*. When * is provided, audit is initiated for all the NFs except NRF, where TSI is either NRF or NRF_AND_LOCAL.

2.47 Configuring NF Profile

The NF Profile REST API retrieves and updates NF profile configuration in SCP based on the topology source information of that NF.

The resource URI has been updated to include topology source information.

The combination of topology and nf-instance-id determines a unique NF profile. The CNC Console configuration screen and its structured data fields have been removed, and only JSON-based GET and PUT operations are supported.

REST API for NRF or LOCAL learned profiles:

  • GET: ocscp/scpc-configuration/v1/nf-instances and ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds
  • GET: ocscp/scpc-configuration/v1/nf-instances/{nfinstnceid}
  • PUT: ocscp/scpc-configuration/v1/nf-instances/{nfinstnceid}
  • DELETE: ocscp/scpc-configuration/v1/nf-instances/{nfinstnceid}

REST API for the NRF learned profile:

  • GET: ocscp/scpc-configuration/v1/nf-instances/NRF
  • DELETE: ocscp/scpc-configuration/v1/nf-instances/NRF

REST API for the Static (LOCAL) configured profiles:

  • GET: ocscp/scpc-configuration/v1/nf-instances/LOCAL
  • PUT: ocscp/scpc-configuration/v1/nf-instances/LOCAL
  • DELETE: ocscp/scpc-configuration/v1/nf-instances/LOCAL

REST API for the NRF or LOCAL learned profiles:

  • GET: ocscp/scpc-configuration/v1/nf-instances
  • GET: ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds

It retrieves NF profiles for all supported types and applies filters based on query parameters. Additional query parameters have been introduced to refine profile retrieval.

Supported query parameters are:

  • nf-type
  • service-names
  • nf-instance-id
  • limit
  • max-payload-size
  • topologySource
  • isActive
  • profileOwnership

It retrieves the "_links" object containing the URI of each NF in SCP, or an empty object if no NFs match the query parameters such as nf-type or service-names.

Existing value:

{
"href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b"}

New value:

{
 "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b"
}

Static or Local profiles can be configured in the following Topology Source Info mode:

  • LOCAL
  • NRF_AND_LOCAL

Profiles from NRF can be learned in following TSI modes:

  • NRF
  • NRF_AND_LOCAL

The retrieved NF profile includes metadata along with the NF profile data. PATCH support has been removed, and local modification of NRF-learned profiles is no longer supported.

Resources and Methods Overview

Retrieves NF profile for all supported NFs and applies filters based on query parameters:

 GET : ocscp/scpc-configuration/v1/nf-instances Collapse source
Request:
curl -X 'GET' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b&max-payload-size=123' \
  -H 'accept: application/json'

Response:
[
  {
    "nfInstanceId": "3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
    "nfType": "NRF",
    "nfStatus": "REGISTERED",
    "plmnList": [
      {
        "mcc": "410",
        "mnc": "215"
      },
      {
        "mcc": "410",
        "mnc": "216"
      }
    ],
    "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
    "priority": 10,
    "capacity": 10000,
    "locality": "Loc2r2",
    "nfServicePersistence": false,
    "nfServices": [
      {
        "serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b01",
        "serviceName": "nnrf-nfm",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
        "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "priority": 1,
        "capacity": 5000,
        "load": 0
      },
      {
        "serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b02",
        "serviceName": "nnrf-disc",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
        "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "priority": 1,
        "capacity": 5000,
        "load": 0
      },
      {
        "serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b03",
        "serviceName": "nnrf-oauth2",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
        "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "priority": 1,
        "capacity": 5000,
        "load": 0
      }
    ],
    "nrfRegionOrSetId": "setnrfr1.nrfset.5gc.mnc012.mcc345",
    "nfSetIdList": [
      "setnrfr1.nrfset.5gc.mnc012.mcc345"
    ],
    "olcHSupportInd": false,
    "topologySource": "LOCAL",
    "isActive": true,
    "profileOwnerShip": "USER"
  }
]

Retrieves the URI list for all supported NFs based on topology source:

 GET : ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds Collapse source
Request:
curl -X 'GET' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds?nf-type=NRF' \
  -H 'accept: application/json'

Response:
{
  "_links": [
    {
      "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b"
    },
    {
      "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-b14ef8e1bc7a"
    },
    {
      "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf3bbc-6e4a-2828-a507-a14ef8e1bc6a"
    },
    {
      "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf3bbc-6e4a-2828-a507-a14ef8e1bc6b"
    },
    {
      "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=6faf1bbc-6e4a-2828-a507-a14ef8e1bc5a"
    },
    {
      "href": "http://ocscp-scpc-configuration.scpsvc.svc.cluster.local:8081/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=6faf1bbc-6e4a-2828-a507-a14ef8e1bc5b"
    }
  ]
}

Retrieves NF profile for all supported or specific NFs having topology as LOCAL:

 GET : ocscp/scpc-configuration/v1/nf-instances/LOCAL Collapse source
Request:
curl -X 'GET' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b' \
  -H 'accept: application/json'

Response:
[
  {
    "nfInstanceId": "3faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
    "nfType": "NRF",
    "nfStatus": "REGISTERED",
    "plmnList": [
      {
        "mcc": "410",
        "mnc": "215"
      },
      {
        "mcc": "410",
        "mnc": "216"
      }
    ],
    "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
    "priority": 10,
    "capacity": 10000,
    "locality": "Loc2r2",
    "nfServicePersistence": false,
    "nfServices": [
      {
        "serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b01",
        "serviceName": "nnrf-nfm",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
        "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "priority": 1,
        "capacity": 5000,
        "load": 0
      },
      {
        "serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b02",
        "serviceName": "nnrf-disc",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
        "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "priority": 1,
        "capacity": 5000,
        "load": 0
      },
      {
        "serviceInstanceId": "fe137ab7-740a-46ee-aa5c-951806d77b03",
        "serviceName": "nnrf-oauth2",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "nrfr2l2svc.scpsvc.svc.cluster.local",
        "interPlmnFqdn": "nrfr2l2.5gc.mnc215.mcc410.3gppnetwork.org",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "priority": 1,
        "capacity": 5000,
        "load": 0
      }
    ],
    "nrfRegionOrSetId": "setnrfr1.nrfset.5gc.mnc012.mcc345",
    "nfSetIdList": [
      "setnrfr1.nrfset.5gc.mnc012.mcc345"
    ],
    "olcHSupportInd": false,
    "topologySource": "LOCAL",
    "isActive": true,
    "profileOwnerShip": "USER"
  }
]

Updates or creates the NF profile record for a given NF instance ID having topology as LOCAL:

 PUT : ocscp/scpc-configuration/v1/nf-instances/LOCAL Collapse source
Request:
curl -X 'PUT' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/LOCAL' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "nfInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a27",
    "nfType": "NEF",
    "nfStatus": "REGISTERED",
    "nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
    "nfSetIdList": [
      "setocnef.nefset.5gc.mnc012.mcc345"
    ],
    "plmnList": [
      {
        "mcc": "310",
        "mnc": "14"
      }
    ],
    
    "priority": 5,
    "load": 20,
    "capacity": 1000,
    "locality": "Loc7",
    "nfServices": [
      {
        "serviceName": "nnef-eventexposure",
        "nfServiceStatus": "REGISTERED",
        "serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a11",
        "apiPrefix": "USWest",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "load": 20,
        "ipEndPoints": [
          {
            "port": null
          }
        ]
      },
      {
        "serviceName": "3gpp-as-session-with-qos",
        "nfServiceStatus": "REGISTERED",
        "serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a22",
        "apiPrefix": "USWest",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "load": 20,
        "ipEndPoints": [
          {
            "port": 8080
          }
        ]
      },
      {
        "serviceName": "3gpp-traffic-influence",
        "nfServiceStatus": "REGISTERED",
        "serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a33",
        "apiPrefix": "USWest",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "load": 20,
        "ipEndPoints": [
          {
            "port": 8080
          }
        ]
      }
    ]
  }'

Response:
201 CREATED

Deletes NF profile record for a given NF instance ID having topology as LOCAL:

 DELETE : ocscp/scpc-configuration/v1/nf-instances/LOCAL Collapse source
Request:
curl -X 'DELETE' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/LOCAL?nf-instance-id=8faf1bbc-6e4a-4454-a507-aef01a101a27' \
  -H 'accept: application/json'

Response:
204 NO_CONTENT

Retrieves NF profile for all supported or specific NFs having topology as NRF:

 GET : ocscp/scpc-configuration/v1/nf-instances/NRF Collapse source
Request:
curl -X 'GET' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/NRF' \
  -H 'accept: application/json'

Response:
[
  {
    "nfInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a27",
    "nfType": "NEF",
    "nfStatus": "REGISTERED",
    "plmnList": [
      {
        "mcc": "310",
        "mnc": "014"
      }
    ],
    "priority": 5,
    "capacity": 1000,
    "load": 20,
    "locality": "Loc7",
    "nfServicePersistence": false,
    "nfServices": [
      {
        "serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a11",
        "serviceName": "nnef-eventexposure",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "ipEndPoints": [
          {
            "port": 80
          }
        ],
        "apiPrefix": "USWest",
        "load": 20
      },
      {
        "serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a22",
        "serviceName": "3gpp-as-session-with-qos",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "apiPrefix": "USWest",
        "load": 20
      },
      {
        "serviceInstanceId": "8faf1bbc-6e4a-4454-a507-aef01a101a33",
        "serviceName": "3gpp-traffic-influence",
        "versions": [
          {
            "apiVersionInUri": "v1",
            "apiFullVersion": "1.0.0"
          }
        ],
        "scheme": "http",
        "nfServiceStatus": "REGISTERED",
        "fqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "interPlmnFqdn": "ocnefnsgateway.ocnef.svc.us.lab.oracle.com",
        "ipEndPoints": [
          {
            "port": 8080
          }
        ],
        "apiPrefix": "USWest",
        "load": 20
      }
    ],
    "nrfRegionOrSetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
    "nfSetIdList": [
      "setocnef.nefset.5gc.mnc012.mcc345"
    ],
    "olcHSupportInd": false,
    "topologySource": "NRF",
    "isActive": true,
    "profileOwnerShip": "NRF"
  }
]

Deletes NF profile record for a given NF instance ID having topology as NRF:

 DELETE : ocscp/scpc-configuration/v1/nf-instances/NRF Collapse source
Request:
curl -X 'DELETE' \
  'http://10.75.224.47:32740/ocscp/scpc-configuration/v1/nf-instances/NRF?nf-instance-id=8faf1bbc-6e4a-4454-a507-aef01a101a27' \
  -H 'accept: application/json'

Response:
204 NO_CONTENT

Resources

The following table describes the resource name to retrieve, add, update, or remove the NF profile configuration data:

Table 2-457 Resources

Resource Name Resource URI HTTP Method or Custom Operation Request Body and Query Parameters Description
nf-instances (Store) /ocscp/scpc-configuration/v1/nf-instances/ GET Query parameters:
  • NFType
  • ServiceName
  • NF instance ID
  • Maximum number of NF profiles
  • Maximum payload size
  • topologySource
  • isActive
  • profileOwnership
Retrieves NF profile for all supported NFs and applies filters based on the query parameters.

Response status code:

  • 200, OK, SearchResult, See below SearchResult section.
  • 400 Bad Request, ProblemDetails
  • 500 Internal server error, ProblemDetails
/ocscp/scpc-configuration/v1/nf-instances/nfInstanceIds GET Query parameters:
  • NFType (M)
  • array(ServiceName) (O)
Retrieves URI list for all supported NFs based on nfType and topology source.

Response status code:

  • 200, OK, UriList

    The response body contains a "_links" object with the URI of each NF in the SCP, or an empty object if there are no learned or configured NFs, or if no NFs match the specified "nf-type" query parameter.

  • 400 Bad Request, ProblemDetails
  • 500 Internal server error, ProblemDetails
nf-instances (Document) /ocscp/scpc-configuration/v1/nf-instances/LOCAL GET Query parameters:
  • nf-instance-id(O)

    Body

  • n/a
Retrieves NF profile for all supported or specific NFs having topology as LOCAL

Response status code: 200 OK, NFProfileWrapper

PUT Body: NFProfile Updates or creates NF profile record for a given NF instance ID having topology as LOCAL

The PUT method is not supported when topology source is set to NRF.

Response status code: 200 OK, 201 Created

DELETE Query parameter:
  • nf-instance-id(M)

    Body

  • n/a
Removes NF profile record for a given NF instance ID having topology as LOCAL.

The DELETE method is not supported when topology source is set to NRF.

Response status code: 204, NO content

nf-instances (Document) /ocscp/scpc-configuration/v1/nf-instances/NRF GET Query parameter:
  • nf-instance-id(O)

    Body

  • n/a
Retrieves NF profile for all supported or specific NFs having topology as NRF.

Response status code: 200 OK, NFProfileWrapper

DELETE Query parameter:
  • nf-instance-id(M)

    Body

  • n/a

Removes NF profile record for a given NF instance ID having topology as NRF.

The DELETE method is not supported when topology source is set to NRF or NRF_AND_LOCAL.

Response status code: 204, NO content

Table 2-458 Query Parameters

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
nf-type NFType M 1 This Information Element (IE) specifies the NF type of the NF service producer being queried.
service-names array(ServiceName) O 1..N If included, this IE contains an array of service names for which SCP is queried to provide NF profiles. The SCP returns NF profiles that have at least one NF service matching the service names in this list. If not included, SCP returns all NF service names registered in the NF profile.
nf-instance-id NfInstanceId O 0..1 Identifies the NF instance being queried.
limit integer O 0..1 Specifies the maximum number of NF profiles to be returned in the response.
max-payload-size integer O 0..1 Specifies the maximum payload size (before compression, if any) of the response, expressed in kilobytes. When present, SCP limits the number of NF profiles returned so that the response does not exceed the indicated maximum payload size.
topologySource TopologySource O 1 Specifies the topology source from which the NF is learned. Allowed values for topologySource are LOCAL and NRF.
isActive Boolean O 1 Indicates whether to retrieve eligible active NF profiles for routing. Allowed values for isActive are true and false.
profileOwnership ProfileOwnership O 1 Specifies the source responsible for managing the NF profile. Allowed values for profileOwnership are SCP, NRF, and USER.
  • SCP: Represents SCP owned copy of NRF learned profiles created when localNfTopologyCfgMode is set to AUTO in the Topology Source Info REST API.
  • NRF: Represents profile learned through notification.
  • USER: Represents profile learned at SCP statically through the NF Profile Configuration REST API.

Table 2-459 SearchResult

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
nfInstances array(NFProfileWrapper) M

1..N

Contains an array of NF instance profiles along with associated metadata, matching the search criteria specified by the query parameters. An empty array indicates that no NF instances match the search criteria.

Table 2-460 UriList

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
_links map(LinksValueSchema) O

1..N

Added into the JSON hypermedia object definition.

2.48 Configuring NF Discovery Mode

The nfdiscovery-mode-cfg REST API creates, updates, and removes the NF discovery mode configuration in SCP. It determines the source of NF discovery for Model D delegated discovery requests or Model C discovery requests in SCP when the nf-discovery-enhancement parameter is enabled.

If nf-discovery-enhancement is disabled, NRF becomes the default discovery source. If nf-discovery-enhancement is enabled but no matching rule is found in the NF discovery mode REST API, NRF becomes the discovery source in those scenarios.

The following matching keys can be configured in this REST API:

  • taregetNfTypes
  • requesterNfTypes
  • serviceNames
  • targetPlmnList
  • requesterPlmnList
  • apiRoothdrPresnt
  • groupIdList

targetNfTypes is the only mandatory key to configure in the rules. The above mentioned matching keys are compared with the NF discovery headers for Model D indirect discovery communication or with the NF query parameters for Model C indirect discovery communication.

The NfDiscoverySource parameter is used to generate the discovery response using the following options:

  • NRF: Generates the discovery response by querying the NRF.
  • SCP: Generates the discovery response locally based on the NF discovery rule configuration API.
  • SCP_FOLLOWED_BY_NRF: Generates the discovery response locally. If no matching rule is found and ruleNotFound is configured in discoveryModeFallbackCriteria, it falls back to NRF.
  • NRF_FOLLOWED_BY_SCP: Generates the discovery response by querying NRF. If discovery fails and the error codes are in the configured error list (discoveryModeFallbackCriteria), it falls back to SCP.

You can configure routeToNrf to explicitly configure NRF to discover NF profiles for Model D indirect discovery communication or Model C indirect discovery communication.

This REST API provides a mechanism to enhance the NF discovery response from the NRF for both Model D indirect discovery communication and Model C indirect discovery communication by configuring enhanceNfDiscoveryRspCfg.

Resources

The following table describes the resource name to retrieve, add, update, or remove the nfdiscovery-mode-cfg configuration data:

Table 2-461 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description

nfdiscovery-mode-cfg

/ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg GET Retrieves all NF discovery mode configurations.
nfdiscovery-mode-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName} GET Retrieves NF discovery mode configuration for a given ruleName.
nfdiscovery-mode-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName} PUT Creates or updates the NF discovery mode configuration for a given ruleName.

A maximum of 250 records can be configured.

nfdiscovery-mode-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName} DELETE

Deletes NF discovery mode configuration for given ruleName.

Resource Definition

GET

This resource fetches all the nfdiscovery-mode-cfg configuration.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg

The following table describes the data model supported by the GET response body on this resource:

Table 2-462 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
nFDiscoveryModeConfigWrapper M 1..N 200 OK Indicates nFDiscoveryModeConfig configuration.
ProblemDetails M 1 500 Internal Server Error Indicates database access error.

This resource fetches the nfdiscovery-mode-cfg configuration based on resourceName.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-463 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for nFDiscoveryModeConfig. It is a unique string used to identify the record.

The following table describes data structures supported by the GET response body on these resources:

Table 2-464 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
nFDiscoveryModeConfigWrapper M 1 200 OK Indicates the nFDiscoveryModeConfig configurations.
ProblemDetails M 1 404 Not Found Returns 404 error code with problem details if no record is present with specified ruleName.
ProblemDetails M 1 500 Internal Server Error Indicates database access error.

Sample of a Successful GET API

curl -X 'GET' \
  'http://10.75.212.69:31111/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule1' \
  -H 'accept: application/json'

{
  "ruleName": "rule1",
  "data": {
    "apiRoothdrPresent": true,
    "targetNfTypes": [
      "UDM",
      "PCF"
    ],
    "requesterNfTypes": [
      "SMF"
    ],
    "serviceNames": [
      "nudm-uecm"
    ],
    "targetPlmnList": [
      {
        "mcc": "141",
        "mnc": "744"
      }
    ],
    "requesterPlmnList": [
      {
        "mcc": "361",
        "mnc": "839"
      }
    ],
    "nfDiscoverySource": "SCP",
    "routeToNrf": {
      "nfInstanceIdList": [
        {
          "nfInstanceId": "7Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
          "priority": 3,
          "capacity": 65535
        },
        {
          "nfInstanceId": "8Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
          "priority": 9,
          "capacity": 65535
        }
      ],
      "nfSetIdList": [
        {
          "nfsetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
          "priority": 1,
          "capacity": null
        }
      ],
      "hostList": {
        "fqdnList": [
          {
            "fqdn": "nrf2svc.scpsvc.svc.cluster.local",
            "priority": 655,
            "capacity": 6
          }
        ],
        "ipv4AddressList": [
          {
            "ipAddress": "12.87.76.90",
            "priority": null,
            "capacity": 65
          }
        ],
        "ipv6AddressList": null
      }
    },
    "discoveryModeFallbackCriteria": [
      "304",
      "ruleNotFound"
    ],
    "enhanceNfDiscoveryRspCfg": {
      "enabled": false,
      "includeAllNfsOfNfSet": false,
      "addedNfPriorityCapacityInfo": [
        {
          "localities": [
            "loc1"
          ],
          "priority": 10,
          "capacity": 1
        },
        {
          "localities": [
            "loc2"
          ],
          "priority": 0,
          "capacity": null
        }
      ],
      "allNfPriorityCapacityInfo": null
    }
  },
  "createdTimestamp": "2025-04-24 08:05:38",
  "updatedTimestamp": "2025-04-24 08:05:38"
}

Sample of an Error GET API

curl -X 'GET' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/noRule' \
  -H 'accept: application/json'

{
  "title": "Not Found",
  "status": 404,
  "detail": "NF Discovery mode configuration data not found for the given ruleName. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/noRule",
  "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

PUT

This resource configures nfdiscovery-mode-cfg for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName}

The following table describes the path parameter supported by this resource:

Table 2-465 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for nFDiscoveryModeConfig. It is a unique string used to identify the record.

The following table describes the data model supported by the PUT request body on this resource:

Table 2-466 Request Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Code Description
nFDiscoveryModeConfigWrapper M 1 200 OK Indicates successful update or replacement of the nFDiscoveryModeConfig configurations with the specified ruleName.
nFDiscoveryModeConfigWrapper M 1 201 Created Indicates the successful update or replacement of the nFDiscoveryModeConfig settings for the specified ruleName.
ProblemDetails M 1 400 Bad Request Returns 400 error code with problem details if any validation fails in the request body.
ProblemDetails M 1 500 Internal Server Error Indicates the database access error.

Sample of a Successful PUT API

curl -X 'PUT' \
  'http://10.75.212.69:31111/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d 
'{
  "ruleName": "rule1",
  "data": {
    "apiRoothdrPresent": true,
    "targetNfTypes": [
      "UDM",
      "PCF"
    ],
    "requesterNfTypes": [
      "SMF"
    ],
    "serviceNames": [
      "nudm-uecm"
    ],
    "targetPlmnList": [
      {
        "mcc": "141",
        "mnc": "744"
      }
    ],
    "requesterPlmnList": [
      {
        "mcc": "361",
        "mnc": "839"
      }
    ],
    "nfDiscoverySource": "SCP",
    "routeToNrf": {
      "nfInstanceIdList": [
        {
          "priority": 3,
          "nfInstanceId": "7Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
          "capacity": 65535
        },
        {
          "priority": 9,
          "nfInstanceId": "8Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
          "capacity": 65535
        }
      ],
      "nfSetIdList": [
        {
          "priority": 1,
          "nfsetId": "setnrfl1.nrfset.5gc.mnc012.mcc345"
        }
      ],
      "hostList": {
        "fqdnList": [
          {
            "priority": 655,
            "capacity": 6,
            "fqdn": "nrf2svc.scpsvc.svc.cluster.local"
          }
        ],
        "ipv4AddressList": [
          {
            "capacity": 65,
            "ipAddress": "12.87.76.90"
          }
        ]
      }
    },
    "discoveryModeFallbackCriteria": [
      "304",
      "ruleNotFound"
    ],
    "enhanceNfDiscoveryRspCfg": {
      "enabled": false,
      "includeAllNfsOfNfSet": false,
      "addedNfPriorityCapacityInfo": [
        {
          "priority": 10,
          "localities": [
            "loc1"
          ],
          "capacity": 1
        },
        {
          "priority": 0,
          "localities": [
            "loc2"
          ]
        }
      ]
    }
  }
}'

Response:
{
  "ruleName": "rule1",
  "data": {
    "apiRoothdrPresent": true,
    "targetNfTypes": [
      "UDM",
      "PCF"
    ],
    "requesterNfTypes": [
      "SMF"
    ],
    "serviceNames": [
      "nudm-uecm"
    ],
    "targetPlmnList": [
      {
        "mcc": "141",
        "mnc": "744"
      }
    ],
    "requesterPlmnList": [
      {
        "mcc": "361",
        "mnc": "839"
      }
    ],
    "nfDiscoverySource": "SCP",
    "routeToNrf": {
      "nfInstanceIdList": [
        {
          "nfInstanceId": "7Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
          "priority": 3,
          "capacity": 65535
        },
        {
          "nfInstanceId": "8Ad8448d-7Db9-cD3f-2809-bBF9D2faCbD3",
          "priority": 9,
          "capacity": 65535
        }
      ],
      "nfSetIdList": [
        {
          "nfsetId": "setnrfl1.nrfset.5gc.mnc012.mcc345",
          "priority": 1,
          "capacity": null
        }
      ],
      "hostList": {
        "fqdnList": [
          {
            "fqdn": "nrf2svc.scpsvc.svc.cluster.local",
            "priority": 655,
            "capacity": 6
          }
        ],
        "ipv4AddressList": [
          {
            "ipAddress": "12.87.76.90",
            "priority": null,
            "capacity": 65
          }
        ],
        "ipv6AddressList": null
      }
    },
    "discoveryModeFallbackCriteria": [
      "304",
      "ruleNotFound"
    ],
    "enhanceNfDiscoveryRspCfg": {
      "enabled": false,
      "includeAllNfsOfNfSet": false,
      "addedNfPriorityCapacityInfo": [
        {
          "localities": [
            "loc1"
          ],
          "priority": 10,
          "capacity": 1
        },
        {
          "localities": [
            "loc2"
          ],
          "priority": 0,
          "capacity": null
        }
      ],
      "allNfPriorityCapacityInfo": null
    }
  },
  "createdTimestamp": "2025-04-24 08:05:38",
  "updatedTimestamp": "2025-04-24 08:05:38"
}

Sample of an Error PUT API

curl -X 'PUT' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule2' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{"ruleName":"rule2"}'   
{
  "title": "Bad Request",
  "status": 400,
  "detail": "Field data must not be null or empty. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule2",
  "cause": "OPTIONAL_IE_INCORRECT"
}

400 Error: Bad Request

DELETE

This resource removes the nfdiscovery-mode-cfg configuration based on resourceName.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-mode-cfg/{ruleName}

The following table describes the path parameter supported by this resource:

Table 2-467 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for nFDiscoveryModeConfig. It is a unique string used to identify the record.

The following table describes the data model supported by the DELETE response body on this resource:

Table 2-468 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
NA M 1 204 No Content Indicates the successful deletion of the nFDiscoveryModeConfig record.
ProblemDetails M 1 404 Not Found Returns a 404 error code with problem details if no record exists for the specified ruleName.
ProblemDetails M 1 403 Forbidden Returns a 403 error code with problem details if the user tries to delete the default record.
ProblemDetails M 1 500 Internal Server Error Indicates the database access error.

Sample of a Successful of DELETE API

curl -X 'DELETE' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule1' \
  -H 'accept: */*'
Response: 204 No Content

Sample of an Error DELETE API

curl -X 'DELETE' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule101' \
  -H 'accept: */*'

{
  "title": "Not Found",
  "status": 404,
  "detail": "NF Discovery mode configuration data not found for the given ruleName. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-mode-cfg/rule101",
  "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found

Data Model

The following table describes data model for request or response:

Table 2-469 NFDiscoveryModeConfigWrapper

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for nFDiscoveryModeConfig. It is a unique string used to identify the record.

Allowed character combinations should be alpha-numeric, hyphen, and underscore.

data Json (nFDiscoveryModeConfig) M Indicates a JSON structure that holds different NF discovery mode configurations.
createdTimestamp String Read Only Indicates the timestamp when the record is created in the database. It is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Indicates the timestamp when the record is last updated in the database. It is not required in the request, but it is present in the response.

A default entry is created with the default key and the JSON structure. Deleting the defaultRule is not allowed, although it can be modified.

{
  "ruleName": "defaultRule",
  "data": {
    "targetNfTypes": [
      "*"
    ],
    "nfDiscoveryMode": "NRF"
  }
}

JSON Schema

Table 2-470 NFDiscoveryModeConfig

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
targetNfTypes List<String> M Indicates the list of any valid NfType configured in Configuring NFTypes-NFServices.

For default rule, "*" is allowed for targetNfTypes. "*"indicates all nftypes

These NF discovery criteria are matched with the query parameters in the NF discovery request from the consumer in Model C indirect communication. They are also matched with the discovery headers of the Model D delegated service request in Model D indirect communication.

If any attribute is absence, it indicates that it is applicable for all.

Either 3GPP-defined NFType as per TS29.510 or custom NFType.

requesterNfTypes List<String> O
apiRoothdrPresent Boolean O Manages the configuration of NF discovery request.

If this parameter is set to true, the configuration applies only when the NF discovery request contains the 3gpp-Sbi-Target-Apiroot header.

If this parameter is set to false, the configuration applies only when the NF discovery request does not contain the 3gpp-Sbi-Target-Apiroot header.

If this parameter is not configured in a rule, the configuration applies to every NF discovery request.

Allowed values: true or false

serviceNames

List<String>

O Indicates the list of any valid NF service-name configured in Configuring NFTypes-NFServices.

Either 3GPP-defined serviceName as per TS29.510 or user-defined custom service names pointing to a targetNfType.

targetPlmnList List<PlmnId> O Indicates the list of valid target PLMN IDs.

Validate if all the PLMN IDS are in the correct format.

mcc or mnc cannot be null.

"mcc" must be three digits, and "mnc" must 2 or 3 digits.

requesterPlmnList List<PlmnId> O Indicates the list of valid PLMN IDs.

Validate if all the PLMN IDS are in the correct format.

mcc or mnc cannot be null.

"mcc" must be three digits, and "mnc" must 2 or 3 digits.

groupIdList

List<String>

O Provides the identity of the groups of NFs of the target NF type to be discovered.
nfDiscoverySource

Enumeration (NfDiscoverySource)

M Defines the source of NF discovery for Model D delegated discovery requests and Model C discovery requests to obtain the discovery response.

Allowed values:

  • SCP: Performs NF discovery locally. It uses the NF static discovery REST API to perform discovery.
  • NRF: Generates the discovery response by querying the NRF. This is the existing behavior.
  • SCP_FOLLOWED_BY_NRF: Generates the discovery response locally. If no matching rule exists in the NF static discovery API and ruleNotFound, a custom error string, is configured in discoveryModeFallbackCriteria, it falls back to the NRF to perform discovery.
  • NRF_FOLLOWED_BY_SCP: Generates the discovery response by querying NRF. If discovery fails and the error codes in the response are in the configured error list in discoveryModeFallbackCriteria, it falls back to SCP to discover the profiles.

If NfDiscoverySource is SCP_FOLLOWED_BY_NRF or NRF_FOLLOWED_BY_SCP, it is mandatory to configure discoveryModeFallbackCriteria.

routeToNrf Object (RouteToNrfConfig) O Indicates which NRF to use for NF discovery.
This configuration is applicable in the following nfDiscoveryMode values:
  • NRF
  • SCP_FOLLOWED_BY_NRF
  • NRF_FOLLOWED_BY_SCP

The RouteToNRF configuration overrides the NRF selection from the consumer NF as received in the 3gpp-Sbi-Target-Apiroot header.

If this attribute is not configured, the 3gpp-Sbi-Target-Apiroot header is used to discover NF profiles.

If the 3gpp-Sbi-Target-Apiroot header is not present in the incoming request, NF discovery uses the local NRF.

Local NRF information is fetched from the nrf-configuration API.

curl -X 'GET' 'http://10.75.213.60:32673/ocscp/scpc-configuration/v1/nrf-configuration' -H 'accept: application/json'

If any combination of nfInstanceIdList, nfSetIdList, and hostList is configured in routeToNrf, SCP tries all configured NRFs for discovery based on priority and capacity when an error occurs with a previously tried NRF. If SCP receives error responses from all configured NRFs, it does not fall back to the local NRF.

If none of the NRFs configured in routeToNrf is known to SCP, SCP tries to perform discovery using routing information, including NRF information if available. If routing information is not available, SCP falls back to the local NRF to perform discovery.

The preference order to get NRF details is as follows:
  1. routeToNrf
  2. 3gpp-Sbi-Target-Apiroot header
  3. Local NRF
discoveryModeFallbackCriteria List<String> C Indicates the list of HTTP error codes and custom error strings for which fallback applies.

It lists all allowed rerouting codes in the routing options.

The following custom error strings are added as part of this feature:
  • "emptyResponseFromNRF"
  • "ruleNotFound"

These NF discovery fallback conditions are used by SCP-Worker when NfDiscoverySource is SCP_FOLLOWED_BY_NRF or NRF_FOLLOWED_BY_SCP.

emptyResponseFromNRF: 200 OK with empty response is received from NRF when nfDiscoverySource is NRF.

ruleNotFound: If no matching rules is found in NF static discovery API when nfDiscoverySource is SCP.

5xx is not allowed to be configured along with any valid status code starting from 5.

Allowed error codes:

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,426428,429,431,5xx,500,501502,503,504,505,506,507,508,510,511,"connectionError,"timeout","emptyResponseFromNRF","ruleNotFound"
enhanceNfDiscoveryRspCfg Object (EnhanceNfDiscoveryRspCfg) O Defines the configuration to enhance the delegated discovery response received from NRF. As part of this enhancement, the following can occur:
  • Adds additional NFs to the delegated discovery response by performing a reverse lookup based on the nfSetId of the NFs in the discovery response.
  • Updates the priority or capacity of either all the NFs in the discovery response or only the NFs added as a process of reverse lookup.

Table 2-471 EnhanceNfDiscoveryRspCfg

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
enabled Boolean M Indicates whether an enhancement to the received delegated discovery response from NRF should be applied.
includeAllNfsOfNfSet Boolean M Manages the addition of NFs to the NF discovery responses.

If enabled, additional NFs are added to the NF discovery response based on the set ID of the NF profile received in the delegated discovery response.

If disabled, no additional NFs are added to the NF discovery response, and routing is performed based on the received delegated discovery response.

addedNfPriorityCapacityInfo List<NFLocalityInfo> C Overrides or assigns the priority and capacity of additionally added NFs based on the locality of the NFs received in the delegated discovery response.
allNfPriorityCapacityInfo List<NFLocalityInfo> C Overrides or assigns the priority and capacity of all NFs based on the locality of the NFs received in the discovery response.

Note:

  • Either addedNfPriorityCapacityInfo or allNfPriorityCapacityInfo can be configured at a time.
  • If includeAllNfsOfNfSet is set to false, you can configure only allNfPriorityCapacityInfo.

Table 2-472 NFLocalityInfo

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
priority Integer C Indicates any valid integer between 0 and 65,535. If configured, the NF’s priority is updated to this value (if the locality matches) during routing or during delegated discovery response creation.

At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535.

capacity Integer C Indicates any valid integer between 0 and 65,535. If configured, the NF’s capacity is updated to this value (if the locality matches) during routing or during delegated discovery response creation.

At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535.

localities List<String> O Indicates the list of localities.

Overlapping localities are not allowed. More than one empty locality list is not allowed.

Note: If the locality parameter is empty, the priority or capacity update is applied to all profiles.

Table 2-473 RouteToNrfConfig

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nfInstanceIdList List<NfInstanceIdInfo> C Indicates the list of NfInstanceIdInfo objects. These objects should contain the instance IDs of NRFs to which discovery must be performed.

At least one of nfInstanceIdList, nfSetIdList, or hostList must be present.

The maximum size of nfInstanceIdList is 9.

nfSetIdList List<NfSetIdInfo> C Indicates the list of NfSetIdInfo objects. These objects should contain the set IDs of NRFs to which discovery must be performed.

At least one of nfInstanceIdList, nfSetIdList, or hostList must be present. The maximum size of the setId list is 3.

hostList HostInfo C Indicates custom HostInfo object to hold the FQDN, IPv4, or IPv6 of NFs, along with their priority and capacity information. It should contain the host information of NRFs to which discovery must be performed.

At least one of nfInstanceIdList, nfSetIdList, or hostList must be present. The maximum size of the hostList is 9.

Table 2-474 NfInstanceIdInfo

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nfInstanceId String M Indicates NF instance ID of NRF to which the discovery request should be forwarded.

You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed in the NfInstanceIdInfo object. The priority and capacity must be in the range 0 to 65535.

priority Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s priority is updated to this value.

You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed in the NfInstanceIdInfo object. The priority and capacity must be in the range 0 to 65535.

capacity Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s capacity is updated to this value.

You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed in the NfInstanceIdInfo object. The priority and capacity must be in the range 0 to 65535.

Table 2-475 NfSetIdInfo

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nfSetId String M Indicates NF Set ID of NRF to which the discovery request should be forwarded.

You must validate nfsetId. Overlapping nfSetId values are not allowed in the NfSetIdInfo object. The priority and capacity must be in the range 0 to 65535.

priority Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s priority is updated to this value.

You must validate nfsetId. Overlapping nfSetId values are not allowed in the NfSetIdInfo object. The priority and capacity must be in the range 0 to 65535.

capacity Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s capacity is updated to this value.

You must validate nfsetId. Overlapping nfSetId values are not allowed in the NfSetIdInfo object. The priority and capacity must be in the range 0 to 65535.

Table 2-476 HostInfo

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
fqdnList List<FqdnInfo> C Indicates the list of FqdnInfo objects.

At least one of fqdnList, ipv4AddressList, or ipv6AddressList must be present.

ipv4AddressList List<IpAddressInfo> C Indicates the list of IpAddressInfo objects.

At least one of fqdnList, ipv4AddressList, or ipv6AddressList must be present.

ipv6AddressList List<IpAddressInfo> C Indicates the list of IpAddressInfo objects.

At least one of fqdnList, ipv4AddressList, or ipv6AddressList must be present.

Table 2-477 FqdnInfo

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
fqdn String M Indicates the FQDN of NRF to which the discovery request should be forwarded.

You must validate fqdn. Overlapping fqdn values are not allowed in the fqdninfo object. The priority and capacity must be in the range 0 to 65535.

priority Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s priority is updated to this value.

You must validate fqdn. Overlapping fqdn values are not allowed in the fqdninfo object. The priority and capacity must be in the range 0 to 65535.

capacity Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s capacity is updated to this value.

You must validate fqdn. Overlapping fqdn values are not allowed in the fqdninfo object. The priority and capacity must be in the range 0 to 65535.

Table 2-478 IpAddressInfo

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ipAddress String M Indicates the IP address of NRF to which the discovery request should be forwarded.

You must validate the IP address format based on whether it is IPv4 or IPv6. Overlapping IP addresses are not allowed within an ipAddressInfo object. The priority and capacity must be in the range 0 to 65,535.

priority Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s priority is updated to this value.

You must validate the IP address format based on whether it is IPv4 or IPv6. Overlapping IP addresses are not allowed within an ipAddressInfo object. The priority and capacity must be in the range 0 to 65,535.

capacity Integer O Indicates any valid integer between 0 and 65535. If configured, the NF’s capacity is updated to this value.

You must validate the IP address format based on whether it is IPv4 or IPv6. Overlapping IP addresses are not allowed within an ipAddressInfo object. The priority and capacity must be in the range 0 to 65,535.

The matching keys are compared with the NF discovery headers in the following sequence to determine the source of NF discovery:

  1. targetNfTypesList
  2. apiRoothdrPresnt
  3. requesterNfTypes
  4. serviceNames
  5. targetPlmnList
  6. requesterPlmnList
  7. groupIdList

2.49 Configuring Static NF Discovery

The Static NF Discovery REST API defines the criteria for creating NF discovery response at SCP when the discovery source is set to SCP in nfdiscovery-mode-cfg and the nf-discovery-enhancement parameter is enabled.
  • Multiple discovery parameters can be configured as static matching criteria, but only target-nf-type and requester-nf-type are mandatory.
  • There is no default rule for this REST API.
  • If any discovery parameter is not configured in a static rule, that parameter is not considered when matching the rule even if it is present in the discovery request (it is treated as a don’t care condition). The NF discovery criteria is present in:
    • query parameters of NF discovery request received from consumer NFs in Model C indirect communication.
    • discovery headers of Model D delegated service request in Model D indirect communication.
  • SCP creates the NF discovery response based on static NF discovery configuration and learned NF topology available at SCP and forwards the created NF discovery response to consumer NF for Model C indirect communication.
  • For Model D indirect communication, SCP uses static NF discovery configuration to obtain the list of producer NFs (nfInstanceIdList, nfSetIdList, and hostList) for routing.
  • This REST API supports configuration of additional query parameters beyond the static parameters dynamically at runtime. To add a dynamic query parameter from the CNC Console, do the following:
    1. On the CNC Console, click NF Discovery Enhancement and select the Discovery Query Param Binding Info option.
    2. In the Dynamic IE List section, add the required query parameter for static discovery.

      The added parameters can be used in Static NF Discovery REST API as a match criterion. This configuration can be done as defined in Provision of Dynamic Key Addition Through ie-binding-info.

  • Managing query parameters such as Limit, max-payload-size, and max-payload-size-ext:
    • These query parameters cannot be used directly in the Static NF Discovery REST API and cannot be configured statically. This configuration is restricted.
    • These parameters are applicable only for Model C indirect communication requests.
    • In a Model C NF discovery request, if any of these parameters are included as query parameters, they are applied implicitly when generating the discovery response locally.
    • These parameters are not applicable for Model D delegated discovery in the case of static discovery.
    • The preferred-api-versions is a string formatted as {operator}+{API Version}. Eg: "=1.2.4.operator-ext" , ">1.2.4" , "^2.3.0".
    • If preferred-api-versions is used as matching criteria in the Static NF Discovery REST API, during rule matching the value of this discovery header in the incoming SBI request is matched as an exact string against the configured rule.
    • The value "=1.2.4" and "1.2.4" of preferred-api-version is considered for the same during rule match.

Resources

The following table describes the resource name to retrieve, add, or update the nfdiscovery-cfg configuration data:

Table 2-479 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
nfdiscovery-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-cfg GET Retrieves all static NF discovery rules from the database.
nfdiscovery-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName} GET Retrieves static NF discovery rule from database for the given ruleName.
nfdiscovery-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName} PUT Creates or updates static NF discovery rule for the given ruleName.

A maximum of 1000 records are allowed to be configured.

nfdiscovery-cfg /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName} DELETE

Removes static NF discovery rule for given ruleName.

Resource Definition

GET

This resource fetches all the nfdiscovery-cfg configuration.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-cfg

The following table describes the data model supported by the GET response body on this resource:

Table 2-480 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
staticNfDiscoveryCfgWrapper M 1..N 200 OK Indicates staticNfDiscCfg configuration.

This resource fetches the nfdiscovery-cfg configuration based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-481 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for staticNfDiscCfg. It is a unique string used to identify the record.

The following table describes data structures supported by the GET response body on these resources:

Table 2-482 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
staticNfDiscCfgWrapper M 1 200 OK Indicates staticNfDiscCfg configurations.
ProblemDetails M 1 404 Not Found Returns 404 error code with problem details if no record exists for the specified ruleName.

Sample of a Successful GET API

curl -X 'GET' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule2V3' \
  -H 'accept: application/json'
{
  "ruleName": "rule2V3",
  "data": {
    "target-nf-type": "PCF",
    "requester-nf-type": "AMF",
    "target-nf-instance-id": null,
    "target-nf-fqdn": null,
    "service-names": [
      "npcf-am-policy-control",
      "npcf-policyauthorization",
      "npcf-bdtpolicycontrol"
    ],
    "target-plmn-list": [
      {
        "mcc": "127",
        "mnc": "115"
      },
      {
        "mcc": "123",
        "mnc": "789"
      }
    ],
    "requester-plmn-list": [
      {
        "mcc": "227",
        "mnc": "215"
      }
    ],
    "snssais": null,
    "requester-snssais": null,
    "nsi-list": null,
    "dnn-list": null,
    "group-id-list": [
      "group1-v2",
      "g1-v2"
    ],
    "supi-ranges": [
      {
        "start": "1500",
        "end": "3000"
      },
      {
        "start": "1234567890000",
        "end": "1234567890050"
      }
    ],
    "gpsi-ranges": [
      {
        "start": "1234567890000",
        "end": "1234567890050"
      },
      {
        "start": "1130",
        "end": "2000"
      }
    ],
    "routing-indicators": null,
    "imsi-ranges": null,
    "msisdn-ranges": null,
    "supported-data-sets": null,
    "notification-type-list": [
      "N1_MESSAGES",
      "LOCATION_NOTIFICATION"
    ],
    "n1-msg-class": null,
    "n2-info-class": null,
    "access-type-list": null,
    "external-group-identity": "extgroupid-group@host",
    "internal-groupid-range-list": null,
    "preferred-api-versions": null,
    "preferred-locality-list": null,
    "serving-scope": null,
    "requester-nf-instance-id": null,
    "requester-nf-instance-fqdn": null,
    "tai-range-list": null,
    "guami-list": null,
    "ipv4-address-ranges": null,
    "ipv6-prefix-ranges": null,
    "pgw": null,
    "serving-client-types": null,
    "serving-rat-types": null,
    "remote-plmn-list": null,
    "nf-discovery-result": {
      "nfInstanceIdList": null,
      "nfSetIdList": null,
      "nfGroupId": "12345678W",
      "hostList": null,
      "validityPeriod": "12h57s"
    }
  },
  "createdTimestamp": "2025-11-03 08:53:59",
  "updatedTimestamp": "2025-11-03 08:53:59"
}

Sample of an Error GET API

curl -X 'GET' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/noRule' \
  -H 'accept: application/json'
{
  "title": "Not Found",
  "status": 404,
  "detail": "Static NF Discovery configuration data not found for the given ruleName. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-cfg/noRule",
  "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found

PUT

This resource configures nfdiscovery-cfg for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName}

The following table describes the path parameter supported by this resource:

Table 2-483 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for staticNfDiscCfg. It is a unique string used to identify the record.

The following table describes the data model supported by the PUT request body on this resource:

Table 2-484 Request Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
staticNfDiscCfgWrapper M 1 Adds or updates staticNfDiscCfgWrapper.

The following table describes the data stricture supported by the PUT response body on this resource:

Table 2-485 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
staticNfDiscCfgWrapper M 1 200 OK Indicates successful update or replacement of staticNfDiscCfg configurations with the given ruleName.
staticNfDiscCfgWrapper M 1 201 Created Indicates successful creation of staticNfDiscCfg configurations with ruleName.
ProblemDetails M 1 400 Bad Request Returns 404 error code with problem details if no record is present with specified ruleName.

Note:

To create distinct rules, see Criteria for Overlapping Rules.

Sample of a Successful PUT API

curl -X 'PUT' \
  'http://10.75.224.47:31046/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule1111' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "ruleName": "rule1111",
  "data": {
    "target-nf-type": "PCF",
    "requester-nf-type": "AMF",
    "requester-nf-instance-id": "11111113-aaaa-aaaa-aaaa-111111111111",
    "target-nf-set-id": "set1.pcfset.5gc.mnc012.mcc345",
    "service-names": [
      "npcf-smpolicycontrol","npcf-am-policy-control"
    ],
    "target-plmn-list": [{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}],
    "requester-plmn-list": [{"mcc":"227","mnc":"215"}],
    "preferred-locality-list": [
      "USEast","Loc1"
    ],
    "nsi-list": [
      "slice-1",
      "slice-2"
    ],
    "routing-indicators": [
      "7665",
      "1234"
    ],
    "nf-discovery-result": {
      "nfSetIdList": [{"nfsetId":"set1.pcfset.5gc.mnc012.mcc345"},{"nfsetId":"set2.pcfset.5gc.mnc012.mcc345"},{"nfsetId":"set3.pcfset.5gc.mnc012.mcc345"}],
      "nfGroupId": "12345678W",
      "validityPeriod": "12h57s"
    }
  }
}'

{
  "ruleName": "rule1111",
  "data": {
    "target-nf-type": "PCF",
    "requester-nf-type": "AMF",
    "target-nf-instance-id": null,
    "target-nf-fqdn": null,
    "service-names": [
      "npcf-smpolicycontrol",
      "npcf-am-policy-control"
    ],
    "target-plmn-list": [
      {
        "mcc": "127",
        "mnc": "115"
      },
      {
        "mcc": "123",
        "mnc": "789"
      }
    ],
    "requester-plmn-list": [
      {
        "mcc": "227",
        "mnc": "215"
      }
    ],
    "snssais": null,
    "requester-snssais": null,
    "nsi-list": [
      "slice-1",
      "slice-2"
    ],
    "dnn-list": null,
    "group-id-list": null,
    "supi-ranges": null,
    "gpsi-ranges": null,
    "routing-indicators": [
      "7665",
      "1234"
    ],
    "imsi-ranges": null,
    "msisdn-ranges": null,
    "supported-data-sets": null,
    "notification-type-list": null,
    "n1-msg-class": null,
    "n2-info-class": null,
    "access-type-list": null,
    "external-group-identity": null,
    "internal-groupid-range-list": null,
    "preferred-api-versions": null,
    "preferred-locality-list": [
      "USEast",
      "Loc1"
    ],
    "serving-scope": null,
    "requester-nf-instance-id": "11111113-aaaa-aaaa-aaaa-111111111111",
    "requester-nf-instance-fqdn": null,
    "tai-range-list": null,
    "guami-list": null,
    "ipv4-address-ranges": null,
    "ipv6-prefix-ranges": null,
    "pgw": null,
    "serving-client-types": null,
    "serving-rat-types": null,
    "remote-plmn-list": null,
    "nf-discovery-result": {
      "nfInstanceIdList": null,
      "nfSetIdList": [
        {
          "nfsetId": "set1.pcfset.5gc.mnc012.mcc345",
          "priority": null,
          "capacity": null
        },
        {
          "nfsetId": "set2.pcfset.5gc.mnc012.mcc345",
          "priority": null,
          "capacity": null
        },
        {
          "nfsetId": "set3.pcfset.5gc.mnc012.mcc345",
          "priority": null,
          "capacity": null
        }
      ],
      "nfGroupId": "12345678W",
      "hostList": null,
      "validityPeriod": "12h57s"
    },
    "target-nf-set-id": "set1.pcfset.5gc.mnc012.mcc345"
  },
  "createdTimestamp": "2025-11-06 06:32:50",
  "updatedTimestamp": "2025-11-06 06:32:50"
}

Sample of an Error PUT API

curl -X 'PUT' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule2' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{"ruleName":"rule2","data":{"target-nf-type":"UDM","requester-nf-type":"SMF","service-names":["npcf-smpolicycontrol"],"nf-discovery-result":{"nfSetIdList":["set5.udmset.5gc.mnc015.mcc327"],"nfGroupId":"12345678W","validityPeriod":100}}}'   


{
  "title": "Bad Request",
  "status": 400,
  "detail": "One or more combinations of nfType and serviceName are not configured in the nftypes-nfservices resource API. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule2",
  "cause": "OPTIONAL_IE_INCORRECT"
}

400 Error: Bad Request

DELETE

This resource removes the nfdiscovery-cfg configuration based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/nfdiscovery-cfg/{ruleName}

The following table describes the path parameter supported by this resource:

Table 2-486 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for staticNfDiscCfg. It is a unique string to identify the record.

The following table describes the data stricture supported by the DELETE response body on this resource:

Table 2-487 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
NA M 1 204 No Content Indicates successful removal of the staticNfDiscCfg record.
ProblemDetails M 1 404 Not Found Returns 404 error code with problem details if no record is present with specified ruleName.

Sample of a Successful of DELETE API

curl -X 'DELETE' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule1' \
  -H 'accept: */*'
204 No Content

Sample of an Error DELETE API

curl -X 'DELETE' \
  'http://10.75.212.69:30411/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule101' \
  -H 'accept: */*'

{
  "title": "Not Found",
  "status": 404,
  "detail": "Static NF Discovery configuration data not found for the given query parameter(s). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfdiscovery-cfg/rule101",
  "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found

Data Model

The following table describes data model for request or response:

Table 2-488 StaticNfDiscoveryCfgWrapper

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for staticNfDiscCfg. It is a unique string to identify the record.

Allowed character combinations should be alpha-numeric, hyphen, and underscore.

data Json (StaticNfDiscoveryData) M Indicates JSON structure to hold different static NF discovery request configurations.
createdTimestamp String Read Only Indicates the timestamp when the record is created in the database. It is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Indicates the timestamp when the record is last updated in the database. It is not required in the request, but it is present in the response.

Json Schema

Table 2-489 StaticNfDiscoveryData

Match Order Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
1 target-nf-type String M Indicates any valid NF type as defined in Configuring NFTypes-NFServices.
2 requester-nf-type String M Contains the NF type of the requester NF that is invoking the Nnrf_NFDiscovery service.

All NFTypes configured in Configuring NFTypes-NFServices can be used.

3 target-nf-instance-id String O Provides identity of the NF instance being discovered.
NfInstanceId:
      type: string
      format: uuid
4 target-nf-fqdn String O Indicates the FQDN of the target NF instance being discovered.
5 service-names List<String> O Indicates the list of any valid NF service-name configured in Configuring NFTypes-NFServices pointing to configured target-nf-type.
6 target-plmn-list List<PlmnId> O Indicates the list of valid target PLMN IDs. These are validated as per the following data model:
PlmnId:
      type: object
      properties:
        mcc:
          $ref: '#/components/schemas/Mcc'
        mnc:
          $ref: '#/components/schemas/Mnc'
      required:
        - mcc
        - mnc
Mcc:
      type: string
      pattern: '^\d{3}$'

    Mnc:
      type: string
      pattern: '^\d{2,3}$'
7 requester-plmn-list List<PlmnId> O Indicates the list of valid requester PLMN IDs. These are validated as per the following data model:
PlmnId:
      type: object
      properties:
        mcc:
          $ref: '#/components/schemas/Mcc'
        mnc:
          $ref: '#/components/schemas/Mnc'
      required:
        - mcc
        - mnc
Mcc:
      type: string
      pattern: '^\d{3}$'

    Mnc:
      type: string
      pattern: '^\d{2,3}$' 
8 snssais List<Snssai> O Contains the list of S-NSSAIs that are served by the NF (Service) instances being discovered.
Snssai:
      type: object
      properties:
        sst:
          type: integer
          minimum: 0
          maximum: 255
        sd:
          type: string
          pattern: '^[A-Fa-f0-9]{6}$'
      required:
        - sst
9 requester-snssais

List<Snssai>

O Contain the list of S-NSSAI of the requester NF.
Snssai:
      type: object
      properties:
        sst:
          type: integer
          minimum: 0
          maximum: 255
        sd:
          type: string
          pattern: '^[A-Fa-f0-9]{6}$'
      required:
        - sst
10 nsi-list List<String> O Contains the list of NSI IDs that are served by the services being discovered.
nsi-list
          in: query
          description: NSI IDs that are served by the services being discovered
          schema:
            type: array
            items:
              type: string
            minItems: 1
          style: form
          explode: false
11 dnn-list List<String> O Contains the network identifier of DNN, and it may additionally contain an operator identifier.
Dnn:
      type: string
12 group-id-list List<String> O Indicates the identity of the groups of the NFs of the target NF type to be discovered.
NfGroupId:
      type: string
13 supi-ranges List<SupiRange> O Indicates the list of ranges of SUPIs whose profile data is available.

Supports only start and end with condition start <= end and no overlapping SUPI ranges are allowed to be configured in a single rule.

SupiRange:
      description: A range of SUPIs (subscriber identities), either based on a numeric range, or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string
14 gpsi-ranges List<IdentityRange> O Indicates the list of ranges of GPSI's whose profile data is available.

Supports only start and end with condition start <= end and no overlapping identity ranges are allowed to be configured in a single rule.

 IdentityRange:
      description: A range of GPSIs (subscriber identities), either based on a numeric range, or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string
15 routing-indicators List<String> O Indicates the list of routing indicator information that allows network signaling to be routed using SUCI.
routingIndicators:
          type: array
          items:
            type: string
            pattern: '^[0-9]{1,4}$'
          minItems: 1
16 imsi-ranges List<ImsiRange> O Indicates the list of IMSI ranges for which profile data is available.

Supports start and end with condition start <= end and no overlapping IMSI ranges are allowed to configured in a single rule.

ImsiRange:
      description: A range of IMSIs (subscriber identities), either based on a numeric range, or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string

Note: Either the start and end attributes, or the pattern attribute, must be present.

17 msisdn-ranges List<IdentityRange> O Indicates the list of MSISDN ranges for which profile data is available.

Supports start and end with condition start <= end and no overlapping identity ranges are allowed to configured in a single rule.

IdentityRange:
      description: A range of GPSIs (subscriber identities), either based on a numeric range, or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string

Note: Either the start and end attributes, or the pattern attribute, must be present.

18 supported-data-sets List<DataSetId> O Indicates the list of supported data sets.
DataSetId:
      description: Types of data sets and subsets stored in UDR
      anyOf:
        - type: string
          enum:
            - SUBSCRIPTION
            - POLICY
            - EXPOSURE
            - APPLICATION
            - A_PFD
            - A_AFTI
            - A_IPTV
            - A_BDT
            - A_SPD
            - A_EASD
            - A_AMI
            - P_UE
            - P_SCD
            - P_BDT
            - P_PLMNUE
            - P_NSSCD
            - P_MBSCD
        - type: string
19 notification-type-list List<NotificationType> O Indicates the types of notifications used in the default notification URIs in the NF Profile of an NF instance.
NotificationType:
      description: Types of notifications used in Default Notification URIs in the NF Profile of an NF Instance
      anyOf:
        - type: string
          enum:
             - N1_MESSAGES
            - N2_INFORMATION
            - LOCATION_NOTIFICATION
            - DATA_REMOVAL_NOTIFICATION
            - DATA_CHANGE_NOTIFICATION
            - LOCATION_UPDATE_NOTIFICATION
            - NSSAA_REAUTH_NOTIFICATION
            - NSSAA_REVOC_NOTIFICATION
            - MATCH_INFO_NOTIFICATION
            - DATA_RESTORATION_NOTIFICATION
            - TSCTS_NOTIFICATION
            - LCS_KEY_DELIVERY_NOTIFICATION
            - UUAA_MM_AUTH_NOTIFICATION
20 n1-msg-class N1MessageClass O Contains the N1 message class of default notification subscriptions that must be registered in the NF profile or NF service of the NF instances being discovered.
N1MessageClass:
      anyOf:
      - type: string
        enum:
          - 5GMM
          - SM
          - LPP
          - SMS
          - UPDP
          - LCS
      - type: string
21 n2-info-class N2InformationClass O Contains the notification type of default notification subscriptions that must be registered in the NF profile or NF service of the NF instances being discovered.
N2InformationClass:
      description: Enumeration for N2 Information Class
      anyOf:
      - type: string
        enum:
          - SM
          - NRPPa
          - PWS
          - PWS-BCAL
          - PWS-RF
          - RAN
          - V2X
          - PROSE
      - type: string
22 access-type-list List<AccessType> O Indicates whether access is through 3GPP or non-3GPP.
AccessType:
      type: string
      enum:
        - 3GPP_ACCESS
        - NON_3GPP_ACCESS
23 external-group-identity

String

O Contains the external group identifier of the requester UE, used to search for an appropriate NF.

ExtGroupId:
type: string
pattern: '^extgroupid-[^@]+@[^@]+$'
24 internal-groupId-range-list List<InternalGroupIdRange> O Indicates the list of ranges of internal group identifiers for which profile data is available.
InternalGroupIdRange:
      description: A range of Group IDs (internal group identities), either based on a numeric range, or based on regular-expression matching
      type: object
      properties:
        start:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
        end:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
        pattern:
          type: string

Note: Either the start and end attributes, or the pattern attribute, must be present.

GroupId:
      type: string
      pattern: '^[A-Fa-f0-9]{8}-[0-9]{3}-[0-9]{2,3}-([A-Fa-f0-9][A-Fa-f0-9]){1,10}$'
25 preferred-api-versions List<PreferredApiVersionsMap> O Indicates the preferred API version of the services supported by the target NF instances. The key of the map is the serviceName for which the preferred API version is provided. Each element contains the API version indication for the service identified by the key.

An API version indication is a string formatted as {operator}+{API Version}.

The supported operators are: "=" ">" ">=" "<" "<=" "^"

If no operator is provided in the API version indication, "=" operator is applied.

Example of an API version indication:

">1.2.4" , "^2.3.0"

Note: When matching preferred-api-version with the configured rules, an exact match is performed with the incoming request.

26 preferred-locality-list List<String> O Indicates preferred target NF's location.
27 serving-scope List<String> O Contains the list of areas that can be served by the NF instances to be discovered.
name: serving-scope
          in: query
          description: areas that can be served by the target NF
          schema:
            type: array
            items:
              type: string
            minItems: 1
28 requester-nf-instance-id String O Contains the NF instance ID of the requester NF.
NfInstanceId:
      type: string
      format: uuid
29 requester-nf-instance-fqdn String O Contains the FQDN of the requester NF that invokes the Nnrf_NFDiscovery service.
Fqdn:
      description: Fully Qualified Domain Name
      type: string
30 tai-range-list List<TaiRange> O Indicates the range of Tracking Area Identity.
TaiRange:
      description: Range of TAIs (Tracking Area Identities)
      type: object
      required:
        - plmnId
        - tacRangeList
      properties:
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        tacRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TacRange'
          minItems: 1
        nid:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Nid'
TacRange:
      description: Range of TACs (Tracking Area Codes)
      type: object
      properties:
        start:
          type: string
          pattern: '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'
        end:
          type: string
          pattern: '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'
        pattern:
          type: string

Note: Either the start and end attributes, or the pattern attribute, must be present.

Nid:
      type: string
      pattern: '^[A-Fa-f0-9]{11}$'
31 guami-list List<Guami> O Indicates Guamis of the NF instances for which status is requested to be monitored.
Guami:
      type: object
      properties:
        plmnId:
          $ref: '#/components/schemas/PlmnIdNid'
        amfId:
          $ref: '#/components/schemas/AmfId'
      required:
        - plmnId
        - amfId
PlmnIdNid:
      type: object
      required:
        - mcc
        - mnc
      properties:
        mcc:
          $ref: '#/components/schemas/Mcc'
        mnc:
          $ref: '#/components/schemas/Mnc'
        nid:
          $ref: '#/components/schemas/Nid'
AmfId:
      type: string
      pattern: '^[A-Fa-f0-9]{6}$
32 ipv4-address-ranges List<Ipv4AddressRange> O Indicates the range of IPv4 address of the UE.
Ipv4AddressRange:
      description: Range of IPv4 addresses
      type: object
      properties:
        start:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        end:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
Ipv4Addr:
      type: string
      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])$'
      example: '198.51.100.1'
      description: >
        String identifying a IPv4 address formatted in the 'dotted decimal' notation
        as defined in RFC 1166.
33 ipv6-prefix-ranges List<Ipv6PrefixRange> O Indicates the range of IPv6 prefixes.
Ipv6PrefixRange:
      description: Range of IPv6 prefixes
      type: object
      properties:
        start:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        end:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
Ipv6Prefix:
      type: string
      allOf:
        - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$'
        - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$'
      example: '2001:db8:abcd:12::0/64'
      description: >
        String identifying an IPv6 address prefix formatted according to clause 4 of RFC 5952.
        IPv6Prefix data type may contain an individual /128 IPv6 address.
34 pgw String O Contains the PGW FQDN received by the AMF from the MME, used to find the combined SMF or PGW.
name: pgw
          in: query
          description: PGW FQDN of a combined PGW-C and SMF
          schema:
            $ref:'TS29571_CommonData.yaml#/components/schemas/Fqdn'
35 serving-client-types List<ExternalClientType> O Indicates that NFs dedicated to serving the specified client type must be discovered.
ExternalClientType:
      anyOf:
        - type: string
          enum:
            - EMERGENCY_SERVICES
            - VALUE_ADDED_SERVICES
            - PLMN_OPERATOR_SERVICES
            - LAWFUL_INTERCEPT_SERVICES
            - PLMN_OPERATOR_BROADCAST_SERVICES
            - PLMN_OPERATOR_OM
            - PLMN_OPERATOR_ANONYMOUS_STATISTICS
            - PLMN_OPERATOR_TARGET_MS_SERVICE_SUPPORT
        - type: string
36 serving-rat-types List<RatType> O Contains the RAT type that the target NF must support.
RatType:
      anyOf:
        - type: string
          enum:
            - NR
            - EUTRA
            - WLAN
            - VIRTUAL
            - NBIOT
            - WIRELINE
            - WIRELINE_CABLE
            - WIRELINE_BBF
            - LTE-M
            - NR_U
            - EUTRA_U
            - TRUSTED_N3GA
            - TRUSTED_WLAN
            - UTRA
            - GERA
            - NR_LEO
            - NR_MEO
            - NR_GEO
            - NR_OTHER_SAT
            - NR_REDCAP
            - WB_E_UTRAN_LEO
            - WB_E_UTRAN_MEO
            - WB_E_UTRAN_GEO
            - WB_E_UTRAN_OTHERSAT
            - NB_IOT_LEO
            - NB_IOT_MEO
            - NB_IOT_GEO
            - NB_IOT_OTHERSAT
            - LTE_M_LEO
            - LTE_M_MEO
            - LTE_M_GEO
            - LTE_M_OTHERSAT
        - type: string
      description: Indicates the radio access used.
37 remote-plmn-list List<Plmnid> O Contains the remote PLMN ID that must be reachable through SCP.
PlmnId:
      type: object
      properties:
        mcc:
          $ref: '#/components/schemas/Mcc'
        mnc:
          $ref: '#/components/schemas/Mnc'
      required:
        - mcc
        - mnc
Mcc:
      type: string
      pattern: '^\d{3}$'

    Mnc:
      type: string
      pattern: '^\d{2,3}$'
38 nf-discovery-result Json (StaticNfDiscoveryResult) M Contains information of producer NFs.

Note:

  • When configuring a rule, validations on the matching keys are applied in accordance with 3GPP specifications.
  • The incoming discovery request includes discovery query parameters as defined in TS 29.510, but the configured rules can use different data types.
  • Only target-nf-type and requester-nf-type discovery query parameters are mandatory. All other parameters are optional and are ignored during matching if they are not configured in the rule. For more information, see Rule Matching Criteria.

Table 2-490 PreferredApiVersionsMap

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
serviceName String M Indicates service name of the target producer NF.
apiVersions List<String> M Indicates supported apiVersions of the target producer NF.

Table 2-491 StaticNfDiscoveryResult

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nfInstanceIdList List<NfInstanceIdInfo> C Indicates the list of NfInstanceIdInfo objects. Each NfInstanceIdInfo can include priority, capacity, and NF instance ID. This means that routing to the NF instance is based on the configured priority or capacity, rather than the published priority or capacity.

At least one of nfInstanceIdList, nfSetIdList, hostList, or nfGroupId must be present.

If an NF profile is included in nfInstanceIdList, nfSetIdList, and hostList, the priority and capacity are applied in the following order:

  1. nfInstanceIdList
  2. hostList
    • fqdn
    • ipv6 address
    • ipv6 address
  3. nfSetIdList
nfSetIdList List<NfSetIdInfo> C Indicates the list of NfSetIdInfo objects. Each NfSetIdInfo can include priority, capacity, and NF set ID. This means that routing to the NF instances in this set is based on the configured priority or capacity, rather than the published priority or capacity.

At least one of nfInstanceIdList, nfSetIdList, hostList, or nfGroupId must be present.

If an NF profile is included in nfInstanceIdList, nfSetIdList, and hostList, the priority and capacity are applied in the following order:
  1. nfInstanceIdList
  2. hostList
    • fqdn
    • ipv6 address
    • ipv6 address
  3. nfSetIdList
hostList HostInfo C Provides the list of following objects:
  • FqdnInfo: It can have priority, capacity, and NF FQDN. It means routing on this NF instance of this FQDN happens as per the configured priority or capacity instead of published priority or capacity.
  • IpAddressInfo: This object can be used to configure priority or capacity and ipv4address or ipv6address. When configured, routing on this NF instance of this IP address happens as per the configured priority or capacity instead of published priority or capacity.

At least one of nfInstanceIdList, nfSetIdList, hostList, or nfGroupId must be present.

If an NF profile is included in nfInstanceIdList, nfSetIdList, and hostList, the priority and capacity are applied in the following order:

  1. nfInstanceIdList
  2. hostList
    • fqdn
    • ipv6 address
    • ipv6 address
  3. nfSetIdList
nfGroupId String C Indicates NF group ID.

At least one of nfInstanceIdList, nfSetIdList, hostList, or nfGroupId must be present.

If an NF profile is included in nfInstanceIdList, nfSetIdList, and hostList, the priority and capacity are applied in the following order:
  1. nfInstanceIdList
  2. hostList
    • fqdn
    • ipv6 address
    • ipv6 address
  3. nfSetIdList
validityPeriod String M Defines the validity of the discovery response.

Indicates the validity of the discovery response. For Model C indirect communication, the SCP generates the discovery response locally and sets this value as the response validity.

This parameter is not relevant for Model D discovery request.

The value is in the pHqMrS format, where p, q, and r are integers, and H, M, and S or h, m, and s denote hours, minutes, and seconds, respectively.

Range: 1 second to 168 hours.

Note:

nfGroupId is not used when generating the NF discovery response.

Table 2-492 NfInstanceIdInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nfInstanceId String M Indicates the NF instance ID of the producer NF that must be included in NF discovery.

You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed within the NfInstanceIdInfo object. Priority or capacity ranges from 0 to 65535.

priority Integer O If configured, the NF instance priority is updated to the configured value in the NF discovery response.

If priority is not configured, the published priority of the NF instance is used.

You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed within the NfInstanceIdInfo object. Priority or capacity ranges from 0 to 65535.

capacity Integer O The NF instance capacity is updated to the configured value in the NF discovery response.

If capacity is not configured, the published capacity of the NF instance is used.

You must validate nfInstanceId. Overlapping nfInstanceId values are not allowed within the NfInstanceIdInfo object. Priority or capacity ranges from 0 to 65535.

Table 2-493 NfSetIdInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
nfSetId String M Includes all producer NF instances of the specified NFSetId in the NF discovery response.

You must validate nfsetId. Overlapping nfsetId values are not allowed within the nfSetIdinfo object. Priority or capacity ranges from 0 to 65535.

priority Integer O Updates the priority of all producer NF instances in the set to the configured value in the NF discovery response.

If priority is not configured, the published priority of the NF instance is used.

You must validate nfsetId. Overlapping nfsetId values are not allowed within the nfSetIdinfo object. Priority or capacity ranges from 0 to 65535.

capacity Integer O Updates the capacity of all NF instances in the set to the configured value in the NF discovery response.

If capacity is not configured, the published capacity of the NF instance is used.

You must validate nfsetId. Overlapping nfsetId values are not allowed within the nfSetIdinfo object. Priority or capacity ranges from 0 to 65535.

Table 2-494 HostInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
fqdnList FqdnInfo C Indicates the list of FqdnInfo objects.

At least one of fqdnList, ipv4AddressList, or ipv6AddressList must be configured if hostList is present.

ipv4AddressList IpAddressInfo C Indicates the list of IpAddressInfo objects.

At least one of fqdnList, ipv4AddressList, or ipv6AddressList must be configured if hostList is present.

ipv6AddressList IpAddressInfo C Indicates the list of IpAddressInfo objects.

At least one of fqdnList, ipv4AddressList, or ipv6AddressList must be configured if hostList is present.

Table 2-495 FqdnInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
fqdn String M Indicates the FQDN of the NF instance.

You must validate fqdns. Overlapping fqdns values are not allowed within the fqdninfo object. Priority or capacity ranges from 0 to 65535.

priority Integer O Indicates the priority of NF instances.

If configured, priority of NF instance is updated with configured value in NF discovery response.

If priority is not configured, then published priority of NF instance is used.

You must validate fqdns. Overlapping fqdns values are not allowed within the fqdninfo object. Priority or capacity ranges from 0 to 65535.

capacity Integer O Updates the capacity of NF instance with configured value in NF discovery response.

If capacity is not configured, then published capacity of NF instance is used.

You must validate fqdns. Overlapping fqdns values are not allowed within the fqdninfo object. Priority or capacity ranges from 0 to 65535.

Table 2-496 IpAddressInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ipAddress String M Indicates valid IPv4 or IPv6 address of the producer NFs.

You must validate ipAddress based on IPv4 or IPv6. Overlapping ipAddress values are not allowed within the ipAddressinfo object. Priority or capacity ranges from 0 to 65535.

priority Integer O Indicates the priority of NF instance.

If configured, priority of NF instance is updated with configured value in NF discovery response.

If priority is not configured, then published priority of NF instance is used.

You must validate ipAddress based on IPv4 or IPv6. Overlapping ipAddress values are not allowed within the ipAddressinfo object. Priority or capacity ranges from 0 to 65535.

capacity Integer O Updates the capacity of NF instance with configured value in NF discovery response.

If capacity is not configured, then published capacity of NF Instance is used.

You must validate ipAddress based on IPv4 or IPv6. Overlapping ipAddress values are not allowed within the ipAddressinfo object. Priority or capacity ranges from 0 to 65535.

Provision of Dynamic Key Addition Through ie-binding-info

The existing discovery query parameter configured in ie-registry is as follows:

{
    "name": "access-type",
    "metaData": {
      "dataType": "AccessType",
      "description": "contain the access type required to be supported by target network function",
      "validationRegex": "3gppDefinedValidation",
      "isActive": true,
      "ieType": "3GPP_DISCOVERY_QUERY_PARAM"
    }
  }

To configure this parameter in the nfdiscovery-cfg resource, configure the record in ie-binding-info as follows:

[
  {
    "resourceName": "nfdiscovery-cfg",
    "ieList": {
      "staticIeList": [
        {
          "ieName": "target-nf-type",
          "cardinality": "SINGLE",
          "ieAlias": "target-nf-type"
        },
        {
          "ieName": "requester-nf-type",
          "cardinality": "SINGLE",
          "ieAlias": "requester-nf-type"
        },
        {
          "ieName": "service-names",
          "cardinality": "LIST",
          "ieAlias": "service-names"
        },
       {.........}
      ],
      "dynamicIeList": [
{
          "ieName": "access-type",
          "cardinality": "LIST",
          "ieAlias": "my-access-type"
        }
]
    },
    
  }
]

In the nfdiscovery-cfg resource, you can create a rule, and the required validations are applied according to the ie-registry configuration:

{
  "ruleName": "rule1",
  "data": {
    "target-nf-type": "UDM",
    "requester-nf-type": "PCF",
    "target-nf-instance-id": "8faf2bbc-6e4a-2828-a507-a14ef8e1bc7b",
    "target-nf-fqdn": "udm1svc.scpsvc.svc.cluster.local",
    "service-names": [
      "nudm-uecm"
    ],
    "target-plmn-list": [
      {
        "mcc": "741",
        "mnc": "25"
      }
    ],
    "requester-plmn-list": [
      {
        "mcc": "505",
        "mnc": "469"
      }
    ],
    "snssais": [
      {
        "sd": "EBa634",
        "sst": 123
      },
      {
        "sd": "90F64c",
        "sst": 156
      }
    ],
    "requester-snssais": [
      {
        "sd": "EBa638",
        "sst": 123
      },
      {
        "sd": "90F64d",
        "sst": 239
      }
    ],
    "my-access-type": [
      "NON_3GPP_ACCESS"
    ].
{.......}
    ],
    "nf-discovery-result": {
      "nfInstanceIdList": null,
      "nfSetIdList": null,
      "nfGroupId": "12345678W",
      "hostList": null,
      "validityPeriod": "12h57s"
    }
  }
}

Criteria for Overlapping Rules

Overlapping rules are not allowed. Two rules are considered overlapping if they satisfy both of the following conditions:

  • The exact same matching keys are present in both rules.
  • The value corresponding to a matching key can be of two types:
    • String: The values for that key must be exactly the same in both rules.
    • List: The intersection of the values for that key must be non-empty.

Matching Keys

All parameter combinations must be unique to define a new rule. This includes all statically defined discovery query parameters (from target-nf-types through remote-plmn-id), along with any dynamic discovery parameters, if applicable.

The discovery response is stored in nf-discovery-result corresponding to a set of matching keys.

Rule Matching Criteria

To match a rule, if an existing rule contains a key, the incoming discovery request must include that key with the same value. Any additional keys in the incoming discovery request that are not present in the existing rule are treated as optional and do not affect matching.

The following examples represent rule match with the received discovery request:

Configured rule:

  {
    "ruleName": "rule3V7",
    "data": {
      "target-nf-type": "PCF",
      "requester-nf-type": "AMF",
      "service-names": [
        "npcf-am-policy-control",
        "npcf-policyauthorization",
        "npcf-bdtpolicycontrol"
      ],
      "target-plmn-list": [
        {
          "mcc": "127",
          "mnc": "115"
        },
        {
          "mcc": "123",
          "mnc": "789"
        }
      ],
      "internal-groupId-range-list": [
        {
          "start": "abcdef12-001-45-a1b2",
          "end": "abcdef12-001-45-a1ff"
        }
      ],
      "preferred-locality-list": [
        "USEast",
        "Loc1"
      ],
      "ipv4-address-ranges": [
        {
          "start": "10.0.0.1",
          "end": "10.0.0.100"
        },
        {
          "start": "20.5.0.1",
          "end": "20.10.0.100"
        },
        {
          "start": "10.70.0.1",
          "end": "10.80.0.100"
        }
      ],
      "imsi-ranges": [
        {
          "start": "3501",
          "end": "6001"
        },
        {
          "start": "9001",
          "end": "10301"
        }
      ],
      "nf-discovery-result": {
        "nfGroupId": "12345678W",
        "validityPeriod": "12h57s"
      }
    }
  }
   

Incoming discovery rule1: It matches rule1 because the exact set of key value pairs defined in rule1 is present.

Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1 Accept=application/json|Content-Type=application/json|Name=Something|3gpp-sbi-discovery-target-nf-type=PCF|3gpp-sbi-discovery-requester-nf-type=AMF|3gpp-Sbi-discovery-preferred-locality=Loc1|3gpp-sbi-discovery-target-plmn-list=[{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}]|3gpp-sbi-discovery-service-names=npcf-policyauthorization|3gpp-sbi-discovery-imsi=3800|3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b7|3gpp-sbi-discovery-ue-ipv4-address=20.7.0.0 /var/lib/jenkins/ocscp_tests/data/SMPolicy.json"
   

Incoming discovery rule2: It does not match rule1 because target-plmn-list is not present in the incoming discovery request.

Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1 Accept=application/json|Content-Type=application/json|Name=Something|3gpp-sbi-discovery-target-nf-type=PCF|3gpp-sbi-discovery-requester-nf-type=AMF|3gpp-Sbi-discovery-preferred-locality=Loc1|3gpp-sbi-discovery-service-names=npcf-policyauthorization|3gpp-sbi-discovery-imsi=3800|3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b7|3gpp-sbi-discovery-ue-ipv4-address=20.7.0.0 /var/lib/jenkins/ocscp_tests/data/SMPolicy.json"
   

Incoming discovery rule3: It matches rule1 because all key value pairs defined in rule1 are present in the incoming discovery request and ue-ipv4-prefix is optional and is therefore ignored.

Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1 Accept=application/json|Content-Type=application/json|Name=Something|3gpp-sbi-discovery-target-nf-type=PCF|3gpp-sbi-discovery-requester-nf-type=AMF|3gpp-Sbi-discovery-preferred-locality=Loc1|3gpp-sbi-discovery-target-plmn-list=[{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}]|3gpp-sbi-discovery-service-names=npcf-policyauthorization|3gpp-sbi-discovery-imsi=3800|3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b7|3gpp-sbi-discovery-ue-ipv4-address=20.7.0.0|3gpp-sbi-discovery-requester-nf-instance-id=8faf2bbc-6e4a-2828-a507-a14ef8e1bc7b /var/lib/jenkins/ocscp_tests/data/SMPolicy.json"
   
The following sample discovery header format to be followed:
Then Run 1 Times "Then Send Message to PCF SMPolicyControl Create SMPolicyAssociation amf1
Accept=application/json
Content-Type=application/json
Name=Something
3gpp-sbi-discovery-target-nf-type=PCF
3gpp-sbi-discovery-requester-nf-type=AMF
3gpp-Sbi-discovery-preferred-locality=Loc1
3gpp-sbi-discovery-requester-nf-instance-id=8faf2bbc-6e4a-2828-a507-a14ef8e1bc7b
3gpp-sbi-discovery-target-nf-instance-id=1faf1bbc-6e4a-3994-a507-a14ef8e1bc01
3gpp-sbi-discovery-target-plmn-list=[{"mcc":"127","mnc":"115"},{"mcc":"123","mnc":"789"}]
3gpp-sbi-discovery-service-names=npcf-policyauthorization
3gpp-sbi-discovery-target-nf-fqdn:udm1svc.scpsvc.svc.cluster.local
3gpp-sbi-discovery-requester-plmn-list=[{"mcc":"227","mnc":"215"}]
3gpp-sbi-discovery-snssais=[{"sd": "abcdef","sst": 124}]
3gpp-sbi-discovery-requester-snssais=[{"sd": "abcdef","sst": 124},{"sd": "ecdef","sst": 29}]
3gpp-sbi-discovery-nsi-list=slice-1,clice2
3gpp-sbi-discovery-dnn=AMF
3gpp-sbi-discovery-group-id-list=group1,group10
3gpp-sbi-discovery-supi=msisdn-1234567890001
3gpp-sbi-discovery-routing-indicator=1234
3gpp-sbi-discovery-imsi=12345
3gpp-sbi-discovery-msisdn=2000
3gpp-sbi-discovery-data-set=SUBSCRIPTION,POLICY
3gpp-sbi-discovery-notification-type=LOCATION_NOTIFICATION
3gpp-sbi-discovery-n1-msg-class=UPDP
3gpp-sbi-discovery-n2-info-class=SM
3gpp-sbi-discovery-access-type=3GPP_ACCESS,NON_3GPP_ACCESS
3gpp-sbi-discovery-external-group-identity=extgroupid-group@host
3gpp-sbi-discovery-internal-group-identity=abcdef12-001-45-a1b2
3gpp-sbi-discovery-preferred-api-versions={"npcf-policyauthorization":">1.2.0"}
3gpp-sbi-discovery-preferred-locality=Loc1
3gpp-sbi-discovery-serving-scope=Loc2
3gpp-Sbi-discovery-requester-nf-instance-fqdn=amf1svc.scpsvc.svc.cluster.local
3gpp-sbi-discovery-tai={"plmnId": {"mnc": "131","mcc": "421"},"tac":"aefd"}
3gpp-sbi-discovery-guami={"plmnId": {"mnc": "131","mcc": "421"},"amfId": "C9CF0d"}
3gpp-sbi-discovery-ue-ipv4-address=100.23.0.0
3gpp-sbi-discovery-ue-ipv6-prefix=240e:006a:0000:0000::/32
3gpp-sbi-discovery-pgw=udm1svc.scpsvc.svc.cluster.local
3gpp-sbi-discovery-client-type=EMERGENCY_SERVICES
3gpp-sbi-discovery-rat-type=VIRTUAL
3gpp-sbi-discovery-remote-plmn-id={"mcc":"227","mnc":"215"}
/var/lib/jenkins/ocscp_tests/data/SMPolicy.json"

2.50 Configuring NF Selection Mode

The NF Selection REST API is used to enhance NF selection and routing in SCP for Model C and Model D indirect communication when the nf-selection-enhancement parameter is enabled.

This configuration is applicable for:

  • Model C SBI requests that carry the 3gpp-target-api-root header, the Routing Binding header, or both.
  • Model D SBI requests that carry the 3gpp-target-api-root header and Discovery headers.

This configuration is not applicable for Model D SBI requests that carry only Discovery headers.

You can configure rules using the following matching keys:

  • targetNfTypeList (mandatory)
  • serviceNamesList
  • requesterNfTypeList
  • targetPlmnList
  • requesterPlmnList

Within a single rule, nfSelectionModeInfoList can be configured to match the NF selection mode based on the presence or absence of incoming request headers.

This REST API provides the following selection modes:
  • CONSUMER_NF_SELECTION: This is the default NF selection mode. If no rules match an incoming SBI request, this mode is selected for the request. In this mode, SCP performs the functionalists from SCP 25.2.100, with no impact on routing.
  • ENHANCED_CONSUMER_NF_SELECTION: This mode provides the capabilities of the NF Selection enhancements. Using this mode, you can override the consumer NF selection as follows:
    • If the 3gpp-target-api-root header is present in the request, the first routing attempt might not be to the producer NF identified by that header. Instead, SCP first routes the request to another NF in the same NF set based on priority and capacity.
    • You can configure priority and capacity based on locality information. In this case, SCP can use the configured priority or capacity instead of the published priority or capacity.
    • You can achieve load balancing across all producer NFs in a set by configuring equal priority and capacity.

There is one default rule for this REST API.

Resources

The following table describes the resource name to retrieve, add, update, or remove the nfselection-mode-config configuration data:

Table 2-497 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
nfselection-mode-config /ocscp/scpc-configuration/{version}/nfselection-mode-config GET Retrieves all records for NF selection mode configurations.
nfselection-mode-config /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName} GET Retrieves NF selection mode configuration for the given ruleName.
nfselection-mode-config /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName} PUT Creates or updates NF selection mode configuration for the given ruleName.
nfselection-mode-config /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName} DELETE Removes NF selection mode configuration for the given ruleName.

Resource Definition

GET

This resource fetches all the nfselection-mode-config configuration.

Resource URI: /ocscp/scpc-configuration/{version}/nfselection-mode-config

The following table describes the data model supported by the GET response body on this resource:

Table 2-498 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
NfSelectionModeWrapper M 1..N 200 OK Returns the records for all NF selection mode configurations.

This resource fetches the nfselection-mode-config configuration based on ruleName.

Resource URI: /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-499 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the databse for nfselection-mode-config. It is a unique string to identify the record.

The following table describes data structures supported by the GET response body on these resources:

Table 2-500 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
NfSelectionModeWrapper M 1 200 OK Returns the nf-selection-mode configuration for the given ruleName.
ProblemDetails M 1 404 Not Found Returns 404 error code with problem details if no record is present with specified ruleName.

Sample of a Successful GET API

curl -X 'GET' \
  'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule1' \
  -H 'accept: application/json'
{
   "ruleName":"rule1",
   "nfSelectionModeCfgData":{
      "targetNfTypeList":[
         "UDM"
      ],
      "serviceNamesList":[
         "nudm-uecm"
      ],
      "nfselectionModeInfoList":[
         {
            "headerMatchList":[
               {
                  "headerName":"3gpp-sbi-apiroot",
                  "headerStatus":"PRESENT"
               },
               {
                  "headerName":"name",	
                  "headerStatus":"PRESENT"
               },
	       {
	          "headerName":"name1",
		  "headerStatus":"ABSENT"
	       }
            ],
            "nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
            "enhancedConsumerNFSelectioninfo":{
               "enabled": "true",
               "includeAllNfs": "true",
               "addedNfPriorityCapacityInfo":[
                  {
                     "priority":1,
                     "capacity":65535,
                     "localities":[
                        "Loc8"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc9"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc11"
                     ]
                  }
               ]
            }
         },
         {
            "headerMatchList":[
               {
                  "headerName":"3gpp-sbi-apiroot",
                  "headerStatus":"PRESENT"
               },
               {
                  "headerName":"name",
                  "headerStatus":"ABSENT"
               },
	       {
	          "headerName":"name1",
		  "headerStatus":"ABSENT"
	       }
            ],
            "nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
            "enhancedConsumerNFSelectioninfo":{
               "enabled": "true",
               "includeAllNfs": "true",
               "allNfPriorityCapacityInfo":[
                  {
                     "priority":1,
                     "capacity":65535,
                     "localities":[
                        "Loc8"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc9"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc11"
                     ]
                  }
               ]
            }
         }
      ]
   }
}

Sample of an Error GET API

curl -X 'GET' \
  'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4' \
  -H 'accept: application/json'
{
  "title": "Not Found",
  "status": 404,
  "detail": " NF Selection configuration data not found for the given ruleName. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4",
  "cause": "DATA_NOT_FOUND"
}
404 Error: Not Found

PUT

This resource configures nfselection-mode-config for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName}

The following table describes the path parameter supported by this resource:

Table 2-501 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the databse for nfselection-mode-config. It is a unique string to identify the record.

The following table describes the data model supported by the PUT request body on this resource:

Table 2-502 Request Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
NfSelectionModeWrapper M 1 Indicates the JSON structure to hold the configuration for nfselection-mode-config for a ruleName.

The following table describes data structures supported by the PUT response body on these resources:

Table 2-503 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
NfSelectionModeWrapper M 1 200 OK Indicates successful update or replacement of NfSelectionModeCfg with the given ruleName.
NfSelectionModeWrapper M 1 201 Created Indicates successful creation of NfSelectionModeCfg with ruleName.
ProblemDetails M 1 400 Bad Request Returns 400 error code with problem details if any validation fails in request body.

Sample of a Successful PUT API

curl -X 'PUT' \
  'http://10.75.212.108:30630/ocscp/scpc-configuration/v1/nfselection-mode-config/rule1' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d

 '{
   "ruleName":"rule1",
   "nfSelectionModeCfgData":{
      "targetNfTypeList":[
         "UDM"
      ],
      "serviceNamesList":[
         "nudm-uecm"
      ],
      "nfselectionModeInfoList":[
         {
            "headerMatchList":[
               {
                  "headerName":"3gpp-sbi-apiroot",
                  "headerStatus":"PRESENT"
               },
               {
                  "headerName":"name",	
                  "headerStatus":"PRESENT"
               },
	       {
	          "headerName":"name1",
		  "headerStatus":"ABSENT"
	       }
            ],
            "nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
            "enhancedConsumerNFSelectioninfo":{
               "enabled": "true",
               "includeAllNfs": "true",
               "addedNfPriorityCapacityInfo":[
                  {
                     "priority":1,
                     "capacity":65535,
                     "localities":[
                        "Loc8"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc9"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc11"
                     ]
                  }
               ]
            }
         },
         {
            "headerMatchList":[
               {
                  "headerName":"3gpp-sbi-apiroot",
                  "headerStatus":"PRESENT"
               },
               {
                  "headerName":"name",
                  "headerStatus":"ABSENT"
               },
	       {
	          "headerName":"name1",
		  "headerStatus":"ABSENT"
	       }
            ],
            "nfSelectionMode":"ENHANCED_CONSUMER_NF_SELECTION",
            "enhancedConsumerNFSelectioninfo":{
               "enabled": "true",
               "includeAllNfs": "true",
               "allNfPriorityCapacityInfo":[
                  {
                     "priority":1,
                     "capacity":65535,
                     "localities":[
                        "Loc8"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc9"
                     ]
                  },
                  {
                     "priority":2,
                     "capacity":65535,
                     "localities":[
                        "Loc11"
                     ]
                  }
               ]
            }
         }
      ]
   }
}'

{
  "ruleName": "rule1",
  "nfSelectionModeCfgData": {
    "targetNfTypeList": [
      "UDM"
    ],
    "requesterNfTypeList": null,
    "serviceNamesList": [
      "nudm-uecm"
    ],
    "targetPlmnList": null,
    "requesterPlmnList": null,
    "nfselectionModeInfoList": [
      {
        "headerMatchList": [
          {
            "headerName": "3gpp-sbi-apiroot",
            "headerStatus": "PRESENT"
          },
          {
            "headerName": "name",
            "headerStatus": "PRESENT"
          },
          {
            "headerName": "name1",
            "headerStatus": "ABSENT"
          }
        ],
        "nfSelectionMode": "ENHANCED_CONSUMER_NF_SELECTION",
        "enhancedConsumerNFSelectioninfo": {
          "enabled": true,
          "includeAllNfs": true,
          "addedNfPriorityCapacityInfo": [
            {
              "localities": [
                "Loc8"
              ],
              "priority": 1,
              "capacity": 65535
            },
            {
              "localities": [
                "Loc9"
              ],
              "priority": 2,
              "capacity": 65535
            },
            {
              "localities": [
                "Loc11"
              ],
              "priority": 2,
              "capacity": 65535
            }
          ],
          "allNfPriorityCapacityInfo": null
        }
      },
      {
        "headerMatchList": [
          {
            "headerName": "3gpp-sbi-apiroot",
            "headerStatus": "PRESENT"
          },
          {
            "headerName": "name",
            "headerStatus": "ABSENT"
          },
          {
            "headerName": "name1",
            "headerStatus": "ABSENT"
          }
        ],
        "nfSelectionMode": "ENHANCED_CONSUMER_NF_SELECTION",
        "enhancedConsumerNFSelectioninfo": {
          "enabled": true,
          "includeAllNfs": true,
          "addedNfPriorityCapacityInfo": null,
          "allNfPriorityCapacityInfo": [
            {
              "localities": [
                "Loc8"
              ],
              "priority": 1,
              "capacity": 65535
            },
            {
              "localities": [
                "Loc9"
              ],
              "priority": 2,
              "capacity": 65535
            },
            {
              "localities": [
                "Loc11"
              ],
              "priority": 2,
              "capacity": 65535
            }
          ]
        }
      }
    ]
  },
  "createdTimestamp": "2025-09-17 09:54:49",
  "updatedTimestamp": "2025-09-17 09:54:49"
}

Sample of an Error PUT API

curl -X 'PUT' \
  'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "ruleName": "rule4"
}'

{
  "title": "Bad Request",
  "status": 400,
  "detail": "Field data must not be null or empty",
  "instance": "/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4",
  "cause": "INVALID_VALUE"
}

DELETE

This resource removes the nfselection-mode-config configuration based on resourceName.

Resource URI: /ocscp/scpc-configuration/{version}/nfselection-mode-config/{ruleName}

The following table describes the path parameter supported by this resource:

Table 2-504 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for nfselection-mode-config. It is a unique string to identify the record.

The following table describes the data model supported by the DELETE response body on this resource:

Table 2-505 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
NA M 1 204 No Content Indicates successful removal of the NfSelectionModeCfg record.
ProblemDetails M 1 403 Forbidden Returns 403 error code with problem details if user try to remove the default record.
ProblemDetails M 1 404 Not Found Returns 404 error code with problem details if no record is present with specified ruleName.

Sample of a Successful of DELETE API

curl -X 'DELETE' \
  'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule3' \
  -H 'accept: */*'
204 No Content

Sample of an Error DELETE API

curl -X 'DELETE' \
'http://10.75.212.108:31878/ocscp/scpc-configuration/v1/nfselection-mode-config/rule4' \
-H 'accept: */*'
"title": "Not Found",
"status": 404,
"detail": " NF Selection configuration data not found for the given query parameter(s). Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/nfselection-mode-config/rule2",
"cause": "DATA_NOT_FOUND"
}
404 Error: Not Found

Default rule:

{
  "ruleName": "defaultRule",
  "nfSelectionModeCfgData": {
    "targetNfTypeList": [
      "*"
    ],
    "nfselectionModeInfoList": [
      {
        "nfSelectionMode": "CONSUMER_NF_SELECTION"
      }
    ]
  }
}

Data Model

The following table describes data model for request or response:

Table 2-506 NfSelectionModeWrapper

Parameter Data Type Mandatory (M), Optional (O), or Conditional (C) Description
ruleName String M Indicates the name of the rule defined in the database for nfselection-mode-config. It is a unique string used to identify the record.

Allowed character combinations should be alpha-numeric, hyphen, and underscore.

nfSelectionModeCfgData NfSelectionModeCfg M Indicates JSON to hold different NF selection mode configurations.
createdTimestamp String Read Only Indicates the timestamp when the record is created in the database. It is not required in the request, but it is present in the response.
updatedTimestamp String Read Only Indicates the timestamp when the record is last updated in the database. It is not required in the request, but it is present in the response.

Table 2-507 NfSelectionModeCfg

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
targetNfTypeList List<String> M Indicates the list of any valid NfType as defined in Configuring NFTypes-NFServices.

For default rule, "*" is allowed.

requesterNfTypeList List<String> O Indicates the list of any valid NfType as defined in Configuring NFTypes-NFServices.
serviceNamesList List<String> O Indicates the list of any valid NF service-name as defined in Configuring NFTypes-NFServices.
targetPlmnList List<PlmnId> O Indicates the list of valid PLMN IDs.
requesterPlmnList List<PlmnId> O
nfSelectionModeInfoList

List<NfSelectionModeInfo>

M Indicates the list of custom objects that define the NF selection mode configuration for initial and subsequent service requests.

Table 2-508 NfSelectionModeInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
headerMatchList List<HeaderInfo> O Indicates a list of headerInfo objects that are used to match the rule with the incoming request headers.

Ensure that duplicate header names are not present in the list.

"headerMatchList": [
          {
            "headerName": "3gpp-sbi-apiroot",
            "headerStatus": "PRESENT"
          },
          {
            "headerName": "name",
            "headerStatus": "ABSENT"
          },
          {
            "headerName": "name1",
            "headerStatus": "ABSENT"
          }
        ]
nfSelectionMode NfSelectionMode M Indicates the NF selection mode for initial and subsequent requests:
  • CONSUMER_NF_SELECTION
  • ENHANCED_CONSUMER_NF_SELECTION

For any request, if no matching rule is present, then the CONSUMER_NF_SELECTION mode becomes the default.

In the CONSUMER_NF_SELECTION mode, existing behavior of SCP take effect.

enhancedConsumerNFSelectioninfo EnhancedConsumerNFSelectionInfo C This is an optional parameter and is applicable when nfSelectionMode is ENHANCED_CONSUMER_NF_SELECTION.

It is a JSON object, which holds the configuration to enhance the producer NF selection for routing.

This parameter is mandatory when the NF selection mode is ENHANCED_CONSUMER_NF_SELECTION.

Table 2-509 HeaderInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
headerName String O Indicates the header name.

headerName must not be null or empty if headerMatchList is configured.

headerStatus Enumeration (HeaderValueMatchEnum) O An ENUM indicating whether the specified header must be present or absent in the request for the configuration to apply.
Allowed values:
  • "PRESENT"
  • "ABSENT"

Table 2-510 EnhancedConsumerNFSelectionInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
enabled Boolean M Indicates whether the enhancement to consumer NF selection should be applied.
includeAllNfs Boolean M Indicates whether reverse lookup based on the set IDs in the routing information received in the request is applicable.

If the value is false, the system finds all producer NFs according to the current SCP behavior.

If it is true, SCP finds producer NFs from both the local NF pool and the foreign NF pool. The final producer NF list may include both local and foreign producers.

addedNFPriorityCapacityInfo List<NFPriorityCapacityInfo> C Indicates the list of custom JSON objects that hold the priority and capacity configuration based on locality.
This configuration applies only to added NFs:
  • NFs apart from the NF sent in the target-api-root header.
  • If only the routing binding header is sent with bl=nfinst, all NFs except the one referenced by nfinst are considered added NFs.
  • If the routing binding header is received with bl other than bl=nfinst, then all NFs are considered added NFs.

In the following example, the allNfPriorityCapacityInfo list has the localities parameter set to null at index 0 and non-null for all other entries, therefore, it is valid. If a producer NF's locality does not match the allNfPriorityCapacityInfo list, the priority or capacity value at index 0 are applied. Routing proceeds based on the updated priority or capacity:

"allNfPriorityCapacityInfo": [
            {
              "priority": 1,
              "capacity": 1000
            },
            {
              "localities": [
                "Loc9"
              ],
              "priority": 2,
              "capacity": 65535
            },
            {
              "localities": [
                "Loc11"
              ],
              "priority": 2,
              "capacity": 65535
            }
          ]

In the following example, the allNfPriorityCapacityInfo list has the localities parameter set to null at both index 0 and index 1, so it is an invalid configuration:

"allNfPriorityCapacityInfo": [
            {
              "priority": 1,
              "capacity": 65535
            },
            {
              "priority": 2,
              "capacity": 65535
            },
            {
              "localities": [
                "Loc11"
              ],
              "priority": 2,
              "capacity": 65535
            }
          ]

If present, addedNfPriorityCapacityInfo must contain at least one element. Either addedNfPriorityCapacityInfo or nfPriorityCapacityInfo can be configured.

allNfPriorityCapacityInfo List<NFPriorityCapacityInfo> C Indicates a list of custom JSON objects that hold the priority and capacity configuration based on locality.

This configuration is applicable for all NFs selected for routing.

Table 2-511 NFPriorityCapacityInfo

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
capacity Integer C Indicates any valid integer between 0 and 65,535. If configured, the NF’s capacity is updated to this value (if the locality matches) during routing or during delegated discovery response creation.

At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535.

priority Integer C Indicates any valid integer between 0 and 65,535. If configured, the NF’s priority is updated to this value (if the locality matches) during routing or during delegated discovery response creation.

At least one of priority or capacity must be present. Allowed values for priority or capacity are 0 to 65,535.

localities List<String> O Indicates the list of localities.

Overlapping localities are not allowed. More than one empty locality list is not allowed.

Note: If the locality parameter is empty, the priority or capacity update is applied to all profiles.

The order of match keys is as follows:

  1. targetNfTypesList
  2. requesterNfTypesList
  3. serviceNamesList
  4. targetPlmnList
  5. requesterPlmnList

2.51 Configuring IE Registry

This section describes the Information Element (IE) Registry REST API parameters used to create, update, and delete discovery parameter records in the registry. Each record in the registry represents a discovery parameter. A discovery parameter can be defined by 3GPP specifications or can be a custom parameter.

Each record contains metadata about the discovery parameter, including the following:

  • Type (3GPP or Custom)
  • Description
  • Validation regex
  • Active status indicator

These records are referenced by other APIs, including the Nf-Discovery-Static API (nf-discovery-static-api).

The different types of discovery parameters are as follows:

  • 3GPP-defined parameters
  • Custom discovery query parameters

This REST API provides separate endpoints for managing the above mentioned parameters.

Resources

The following table describes the resource name to retrieve, add, or update ie-registry configuration data:

Table 2-512 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
3GPP-Defined
ie-registry /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined GET Retrieves the configuration of all 3GPP-defined discovery query parameters from the registry.
ie-registry /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName} GET Retrieves the configuration of 3GPP-defined discovery query parameters from the registry for a given paramName.
ie-registry /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName} PUT Updates the configuration of 3GPP-defined discovery query parameters in the registry for a given paramName.
Custom
ie-registry

/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom

GET Retrieves the configuration of all custom discovery query parameters from the registry.
ie-registry

/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}

GET Retrieves the configuration of custom discovery query parameters from the registry for a given paramName.
ie-registry

/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}

PUT

Creates or updates the configuration of custom discovery query parameters in the registry for a given paramName.
ie-registry

/ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}

DELETE

Removes the configuration of custom discovery query parameters from the registry for a given paramName.

Resource Definition (3GPP-Defined)

GET

This resource fetches all the 3gpp-defined ie-registry configuration.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined

The following table describes the data model supported by the GET response body on this resource:

Table 2-513 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
DiscQPIEWrapper M

1..N

200 OK

Returns the configuration of all 3GPP-defined query parameters defined in the registry.

This resource fetches the 3GPP-defined ie-registry configuration based on paramName.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-514 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
paramName String M Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record.

The following table describes data structures supported by the GET response body on these resources:

Table 2-515 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
DiscQPIEWrapper M 1

200 OK

Returns the configuration for the given 3GPP-defined query parameter, identified by paramName, as defined in the registry.
ProblemDetails M 1

404 Not Found

Returns a 404 error code with problem details if no record exists for the specified paramName.

Sample Successful GET Response:

curl -X 'GET' \ 
        'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type'
        
curl -X 'GET' \ 
        'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type'
        \   -H 'accept: application/json'  {   "name": "target-nf-type",   "metaData": {
        "dataType": "NFType",     "description": "NF type of the target NF being
        discovered.",     "validationRegex": "3gppDefinedValidation",     "isActive": true,
        "ieType": "3GPP_DISCOVERY_QUERY_PARAM"   },   "createdTimestamp": "2025-09-12
        11:09:08",   "updatedTimestamp": "2025-09-12 11:09:08"
    }

Sample Error GET Response:

curl -X 'GET' \
  'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type1' \
  -H 'accept: application/json'
{
  "title": "Not Found",
  "status": 404,
  "detail": "Parameter provided is not 3gpp defined. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type1",
  "cause": "DATA_NOT_FOUND"
}

PUT

This resource configures 3GPP-defined ie-registry for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/3gpp-defined/{paramName}

The following table describes the path parameter supported by this resource:

Table 2-516 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
paramName String M Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record.

The following table describes the data model supported by the PUT response body on this resource:

Table 2-517 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Code Description
DiscQPIEWrapper M 1 200 OK Indicates a successful update of the given 3GPP-defined query parameter identified by paramName.
DiscQPIEWrapper M 1 201 Created Indicates the successful creation of the given 3GPP-defined query parameter identified by paramName.
ProblemDetails M 1 400 Bad Request Returns a 400 error code with problem details if any validation fails in the request body.

Sample Successful PUT Response:

curl -X 'PUT' \
  'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/requester-nf-type' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '
{
  "name": "requester-nf-type",
  "metaData": {
    "dataType": "NFType",
    "description": "NF type of the target NF being discovered12.",
    "validationRegex": "3gppDefinedValidation",
    "isActive": true,
    "ieType": "3GPP_DISCOVERY_QUERY_PARAM"
  }
}'

{
  "name": "requester-nf-type",
  "metaData": {
    "dataType": "NFType",
    "description": "NF type of the target NF being discovered12.",
    "validationRegex": "3gppDefinedValidation",
    "isActive": true,
    "ieType": "3GPP_DISCOVERY_QUERY_PARAM"
  },
  "createdTimestamp": "2025-09-12 11:09:08",
  "updatedTimestamp": "2025-09-19 08:50:00"
}

Sample Error PUT Response:

curl -X 'PUT' \
  'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d 
'{
  "name": "target-nf-type1",
  "metaData": {
    "dataType": "NFType",
    "description": "NF type of the target NF being discovered1.",
    "validationRegex": "3gppDefinedValidation",
    "isActive": true,
    "ieType": "3GPP_DISCOVERY_QUERY_PARAM"
  },
  "createdTimestamp": "2025-09-12 11:09:08",
  "updatedTimestamp": "2025-09-12 11:09:08"
}'

{
  "title": "Bad Request",
  "status": 400,
  "detail": "Please provide same name in Path Variable(paramName) and Request Body(name). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/3gpp-defined/target-nf-type",
  "cause": "INVALID_REQUEST_BODY"
}

Resource Definition (Custom)

GET

This resource fetches all custom ie-registry configuration.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom

The following table describes the data structure supported by the GET response body on this resource:

Table 2-518 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
DiscQPIEWrapper M

1..N

200 OK

Returns the configuration of all custom query parameters defined in the registry.

This resource fetches the 3GPP-defined ie-registry configuration based on paramName.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-519 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
paramName String M Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record.

The following table describes data structures supported by the GET response body on these resources:

Table 2-520 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
DiscQPIEWrapper M 1

200 OK

Returns the configuration for the given custom query parameter, identified by paramName, as defined in the registry.
ProblemDetails M 1

404 Not Found

Returns a 404 error code with problem details if no record exists for the specified paramName.

Sample Successful GET Response:

{
  "name": "access-type1",
  "metaData": {
    "dataType": "String",
    "description": "contain the access type required to be supported by target network function1",
    "validationRegex": null,
    "isActive": true,
    "ieType": "CUSTOM_DISCOVERY_QUERY_PARAM"
  },
  "createdTimestamp": "2025-09-24 08:42:09",
  "updatedTimestamp": "2025-09-24 08:42:09"
}

Sample Error GET Response:

curl -X 'GET' \
  'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/test' \
  -H 'accept: application/json'
{
  "title": "Not Found",
  "status": 404,
  "detail": "Discovery Query Param configuration data not found for the given query parameter(s). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/test",
  "cause": "DATA_NOT_FOUND"
}

PUT

This resource configures custom ie-registry for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}

The following table describes the path parameter supported by this resource:

Table 2-521 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
paramName String M Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record.

The following table describes the data model supported by the PUT response body on this resource:

Table 2-522 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Code Description
DiscQPIEWrapper M 1 200 OK Indicates a successful update of the given custom query parameter identified by paramName.
DiscQPIEWrapper M 1 201 Created Indicates the successful creation of the given custom query parameter identified by paramName.
ProblemDetails M 1 400 Bad Request Returns a 400 error code with problem details if any validation fails in the request body.

Sample Successful PUT Response:

curl -X 'PUT' \
  'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '
{
    "name": "access-type1",
    "metaData": {
      "dataType": "String",
      "description": "contain the access type required to be supported by target network function1",
      "isActive": true,
      "ieType": "3GPP_DISCOVERY_QUERY_PARAM"
    }
  }'

{
  "name": "access-type1",
  "metaData": {
    "dataType": "String",
    "description": "contain the access type required to be supported by target network function1",
    "validationRegex": null,
    "isActive": true,
    "ieType": "CUSTOM_DISCOVERY_QUERY_PARAM"
  },
  "createdTimestamp": "2025-09-24 08:46:45",
  "updatedTimestamp": "2025-09-24 08:46:45"
}

Sample Error PUT Response:

curl -X 'PUT' \
  'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d
 '{
    "name": "access-type1",
    "metaData": {
      "dataType": "nftype",
      "description": "contain the access type required to be supported by target network function1",
      "isActive": true,
      "ieType": "3GPP_DISCOVERY_QUERY_PARAM"
    }
  }'

{
  "title": "Bad Request",
  "status": 400,
  "detail": "Allowed dataType for custom parameters are: String, Boolean, Integer. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1",
  "cause": "INVALID_REQUEST_BODY"
}

DELETE

This resource removes the custom ie-registry configuration based on paramName.

Resource URI: /ocscp/scpc-configuration/{version}/ie-registry/discovery-query-param/custom/{paramName}

The following table describes the path parameter supported by this resource:

Table 2-523 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
paramName String M Indicates the name of the discovery query parameter defined in the configuration. It is a unique identifier for the record.

The following table describes the data model supported by the DELETE response body on this resource:

Table 2-524 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NA M 1 204 No Content Indicates the successful deletion of the custom query parameter identified by paramName.
ProblemDetails M 1 404 Not Found Returns a 404 error code with problem details if no record exists for the specified paramName.

Sample of a Successful DELETE Response:

curl -X 'DELETE' \
  'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type1' \
  -H 'accept: application/json'
Response:
204

Sample of an Error DELETE Response:

curl -X 'DELETE' \
  'http://<localhost>:32740/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type2' \
  -H 'accept: application/json'
{
  "title": "Not Found",
  "status": 404,
  "detail": "Discovery Query Param configuration data not found for the given query parameter(s). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-registry/discovery-query-param/custom/access-type2",
  "cause": "DATA_NOT_FOUND"
}

Data Model

The following table describes data model for request or response:

Table 2-525 DiscQPIEWrapper

Parameter Name Data Type Mandatory (M) or Optional (O) Description
name String M Indicates the discovery query parameter name, defined in the registry, is a unique string that can be either 3GPP-defined or custom and is used to store the associated metadata.
metaData IEInfo M Indicates a JSON structure that holds different metadata for the given query parameter.
createdTimestamp String Read Only Indicates the timestamp of the created record. It is not required in the request, but it is included in the response.
updatedTimestamp String Read Only Indicates the timestamp of the updated record, not required in request, but would be present in the response.

Table 2-526 IEInfo

Parameter Name Data Type Mandatory (M) or Optional (O) Description
dataType String M Indicates the name of the data type of the query parameter, as defined in 3GPP Spec 29510 or in custom query parameters.

3GPP-defined: Defines the name of the data type defined in the 3GPP Spec 29510.

Example:

  • paramName = 'target-nf-type', dataType = 'NfType'
  • paramName = 'requester-nf-instance-id', dataType = 'NfInstanceId'
  • paramName = 'requester-snssais', dataType = 'array(Snssai)'
  • paramName = 'smf-serving-area', dataType = 'string'

Custom: Defines the name of the data type for custom query parameters added to the registry.

For custom query parameters, the data type supports only three values:

  • "Integer"
  • "String"
  • "Boolean"
description String O Describes the query parameters.

3gpp-defined: Allows to update only the description of these query parameters.

Custom: If the parameter is used in other APIs, this updates only the description for custom query parameters. Otherwise, all parameter can be updated.

validationRegex String O Indicates regular expression that defines the query parameters during configuration. This API has the following restrictions on this parameter.

3gpp-defined:

  • You cannot define a validation regular expression for 3GPP-defined query parameters because these parameters are validated according to 3GPP specifications.
  • This parameter has the value "3gppDefinedValidation", and you are not allowed to modify it.

Custom:

  • You can define a validation regular expression for parameters whose data type is either "String" or "Integer".
  • For the "Boolean" data type, you cannot provide a regular expression because the only allowed values are "true" and "false".
  • If validationRegex is present, the parameter value is validated against it. An error is returned if the provided value does not match the pattern.
isActive Boolean M Indicates whether the parameter is active. If it is active, it can be referenced in other APIs. Otherwise, an error is returned.
  • If a parameter is already active and is used in other APIs, it cannot be set to false.
  • Currently, all 3GPP-defined query parameters are inactive.
ieType Enum O The value of this parameter is 3GPP_DISCOVERY_QUERY_PARAM for 3GPP-defined query parameters and CUSTOM_DISCOVERY_QUERY_PARAM for custom query parameters.

Note:

  • You can update only the descriptions of the 3GPP-defined query parameters.
  • You can update the description for custom query parameters only if the parameter is used in the ie-binding-info API.

Default Records

Table 2-527 Default Records

Query Parameters Data Type Description ValidationRegex IsActive ieType
target-nf-type NFType NF type of the target NF being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-nf-type NFType NF type of the consumer NF that is invoking the Nnrf_NFDiscovery service. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-nf-instance-id NfInstanceId The NF instance ID of the consumer NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
service-names array(ServiceName) An array of service names for which the NRF is queried to provide the list of NF profiles. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-nf-instance-fqdn Fqdn The FQDN of the consumer NF that is invoking the Nnrf_NFDiscovery service. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
target-plmn-list array(PlmnId) Contains the PLMN ID of the target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-plmn-list array(PlmnId) The PLMN ID of the consumr NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-snpn-list array(PlmnIdNid) Contains the SNPN ID of the consumer NF. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
target-nf-instance-id NfInstanceId Identity of the NF instance being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
target-nf-fqdn Fqdn FQDN of the target NF instance being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
hnrf-uri Uri Contains the API URI of the NFDiscovery Service of the NRF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
snssais array(Snssai) Contains the list of S-NSSAIs that are served by the NF (Service) instances being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-snssais array(Snssai) Contains the list of S-NSSAI of the consumer NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
plmn-specific-snssai-list array(PlmnSnssai) Contains the list of S-NSSAI that are served by the NF service being discovered for the corresponding PLMN. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
requester-plmn-specific-snssai-list array(PlmnSnssai) Contains the list of S-NSSAI of the requester NF, for each of the PLMNs it supports. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
nsi-list array(string) Contains the list of NSI ID that are served by the services being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
dnn Dnn Contains the network identifier and may additionally contain the operator identifier. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
smf-serving-area string Contains the serving area of SMF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
tai Tai Tracking area identity. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
amf-region-id AmfRegionId AMY region identity. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
amf-set-id AmfSetId AMF set identity. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
guami Guami Used to search for an appropriate AMF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
supi Supi SUPI of the requester UE to search for an appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ue-ipv4-address Ipv4Addr IPv4 address of the UE for which a BSF needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ip-domain string IPv4 address domain of the UE for which a BSF needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ue-ipv6-prefix Ipv6Prefix IPv6 prefix of the UE for which a BSF needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
pgw-ind boolean Indicates whether a combined PGW-C/SMF needs to be discovered or standalone SMF needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
pgw Fqdn Contains the PGW FQDN received by the AMF to find the combined SMF/PGW. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
gpsi Gpsi Contains the GPSI of the requester UE to search for appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
external-group-identity ExtGroupId Contains the external group identifier to search for appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
pfd-data PfdData Contains the application identifiers or application function identifiers in PFD management. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
data-set DataSetId Includes the data set to be supported by the NF to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
routing-indicator string Contains information that allows to route network signaling with SUCI to an AUSF and UDM instance capable to serve the subscriber. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
group-id-list array(NfGroupId) Identity of the groups of the NFs of the target NF type to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
dnai-list array(Dnai) containS the data network access identifiers. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
upf-iwk-eps-ind boolean indicates whether UPF supporting networking with EPS needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
chf-supported-plmn PlmnId containS the PLMN ID that CHF supports. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
preferred-locality string Preferred target NF location (ex-geographic location, data center). 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
access-type AccessType Contains the access type required to be supported by target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
supported-features SupportedFeatures Features required to be supported by the target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
required-features array(SupportedFeatures) List of features required to be supported by the target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
complex-query ComplexQuery Used to override the default logical relationship of query parameters. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
limit integer Maximum number of NFProfiles to be returned in the response. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
max-payload-size integer Maximum payload size of the response, expressed in kilo octets. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
max-payload-size-ext integer Maximum payload size of the response, it is used when consumer support payload size bigger than 2 million octets. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
pdu-session-types array(PduSessionType) List of the PDU session types requested to be supported by target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
event-id-list array(EventId) Contains the list of events requested to be supported by the Nnwdaf AnalyticsInfo Service. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
nwdaf-event-list array(NwdafEvent) Contains the list of events requested to be supported by the Nnwdaf EventsSubscription Service. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
atsss-capability AtsssCapability Indicates the ATSSS capability of the target UPF needs to be supported. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
upf-ue-ip-addr-ind boolean Indicates whether a UPF supporting allocating UE IP addresses needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
client-type ExternalClientType Indicates that NFs serving the specified client type needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
lmf-id LMFIdentification Contain LMF identification to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
an-node-type AnNodeType Contains the AN Node type which is required to be supported by target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
rat-type RatType Contains the RAT type which is required to be supported by target NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
target-snpn PlmnIdNid Included when NF services of a specific SNPN needs to be discovered. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
af-ee-data AfEventExposureData Contain the application events, and optionally application function identifiers, application identifier of the AFs. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
w-agf-info WAgfInfo Contain the W-AGF identifiers of the N3 terminations which is received by the SMF to find the combined W-AGF/UPF. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
tngf-info TngfInfo Contains the TNGF identifiers of the N3 terminations which is received by the SMF to find the combined TNGF/UPF. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
twif-info TwifInfo Contains the TWIF identifiers of the N3 terminations which is received by the SMF to find the combined TWIF/UPF. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
target-nf-set-id NfSetId Contains the target NF Set ID. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
target-nf-service-set-id NfServiceSetId Contains the target NF Service Set ID. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
preferred-tai Tai The NRF shall prefer NF profiles that can serve the TAI. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
nef-id NefId Contains the NEF ID of the NEF to be discovered. 3gppDefinedValidation False 3GPP_DISCOVERY_QUERY_PARAM
preferred-nf-instances array(NfInstanceId) Contains the list of preferred candidate NF Instance IDs. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
notification-type NotificationType Contains the notification type of default notification subscriptions that shall be registered in the NF Profile or NF Services of the NF instances being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
n1-msg-class N1MessageClass Contains the notification type of default notification subscriptions that shall be registered in the NF Profile or NF Services of the NF instances being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
n2-info-class N2InformationClass Contains the notification type of default notification subscriptions that shall be registered in the NF Profile or NF Services of the NF instances being discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
serving-scope array(string) Contains the list of areas that can be served by the NF instances to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
imsi string contain the IMSI of the requester UE to search for an appropriate NF 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ims-private-identity string Contains the IMS private identity of the requester UE to search for an appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ims-public-identity string Contains the IMS public identity of the requester UE to search for an appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
msisdn string Contains the MSISDN of the requester UE to search for an appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
internal-group-identity GroupId Contains the internal group identifier of the UE to search for an appropriate NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
preferred-api-versions map(string) Contains the preferred API version of the services that are supported by the target NF instances. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
v2x-support-ind boolean Indicates whether a PCF supporting V2X policy/parameter provisioning needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
redundant-gtpu boolean Indicates whether a UPF supporting redundant GTP-U path needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
redundant-transport boolean Indicates whether a UPF supporting redundant transport path on the transport layer in the corresponding network slice needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ipups boolean Indicates whether a UPF which is configured for IPUPS is requested to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
scp-domain-list array(string) Contains the SCP domains target NF or SCP belongs to. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
address-domain Fqdn Contains the address domain that shall be reachable through the SCP. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ipv4-addr Ipv4Addr Contains the IPv4 address that shall be reachable through the SCP. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
ipv6-prefix Ipv6Prefix Contains the IPv6 prefix that shall be reachable through the SCP. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
served-nf-set-id NfSetId Contains the NF Set ID that shall be reachable through the SCP. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
remote-plmn-id PlmnId Contains the remote PLMN ID that shall be reachable through the SCP. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
data-forwarding boolean indicates the UPFs configured for data forwarding needs to be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
preferredimsi-full-plmn boolean Indicates that NRF shall prefer NF profiles that can serve the full PLMN. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
requester-features SupportedFeatures Included if at least one feature is supported by the requester NF. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
realm-id string Contains the realm id for which a UDSF shall be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
storage-id string Contains the storage id for the realm id indicated in the realm id IE for which a UDSF shall be discovered. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM
vsmf-support-ind boolean Indicates that target SMFs that supports V-SMF capability are preferred. 3gppDefinedValidation True 3GPP_DISCOVERY_QUERY_PARAM

2.52 Configuring IE Binding Info

The Information Element (IE) Binding Info REST API links parameters defined in the IE-Registry REST API to other APIs. It enables runtime binding of parameters from the IE-Registry to the Nf-discovery-static REST API.

The Nf-discovery-static REST API uses static parameters to configure rules for static NF discovery. These parameters are usually set during deployment and cannot be changed at runtime. However, this REST API allows users to configure parameters for the Nf-discovery-static REST API dynamically at runtime.

Resources

The following table describes the resource name to retrieve, add, or update the ie-binding-info configuration data:

Table 2-528 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description

ie-binding-info

/ocscp/scpc-configuration/{version}/ie-binding-info GET Retrieves ie-binding-info for all resources configured in the database.
ie-binding-info /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName} GET Retrieves ie-binding-info for the specified resourceName.
ie-binding-info /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName} PUT Creates or updates ie-binding-info for the specified resourceName.
ie-binding-info /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName} DELETE Removes ie-binding-info for the specified resourceName.

Default Record

There is one default record for this API that is added during SCP deployment. This default record is for the NF static discovery API resource, that is, nfdiscovery-cfg. You are not allowed to remove this default record.

default-record for ie-binding-info api

[
  {
    "resourceName": "nfdiscovery-cfg",
    "ieList": {
      "staticIeList": [
        {
          "ieName": "target-nf-type",
          "cardinality": "SINGLE",
          "ieAlias": "target-nf-type"
        },
        {
          "ieName": "requester-nf-type",
          "cardinality": "SINGLE",
          "ieAlias": "requester-nf-type"
        },
        {
          "ieName": "service-names",
          "cardinality": "LIST",
          "ieAlias": "service-names"
        },
        {
          "ieName": "target-plmn-list",
          "cardinality": "LIST",
          "ieAlias": "target-plmn-list"
        },
        {
          "ieName": "requester-plmn-list",
          "cardinality": "LIST",
          "ieAlias": "requester-plmn-list"
        },
        {
          "ieName": "target-nf-instance-id",
          "cardinality": "SINGLE",
          "ieAlias": "target-nf-instance-id"
        },
        {
          "ieName": "target-nf-fqdn",
          "cardinality": "SINGLE",
          "ieAlias": "target-nf-fqdn"
        },
        {
          "ieName": "snssais",
          "cardinality": "LIST",
          "ieAlias": "snssais"
        },
        {
          "ieName": "requester-snssais",
          "cardinality": "LIST",
          "ieAlias": "requester-snssais"
        },
        {
          "ieName": "nsi-list",
          "cardinality": "LIST",
          "ieAlias": "nsi-list"
        },
        {
          "ieName": "dnn",
          "cardinality": "LIST",
          "ieAlias": "dnn-list"
        },
        {
          "ieName": "supi",
          "cardinality": "LIST",
          "ieAlias": "supi-ranges"
        },
        {
          "ieName": "gpsi",
          "cardinality": "LIST",
          "ieAlias": "gpsi-ranges"
        },
        {
          "ieName": "external-group-identity",
          "cardinality": "SINGLE",
          "ieAlias": "external-group-identity"
        },
        {
          "ieName": "data-set",
          "cardinality": "LIST",
          "ieAlias": "supported-data-sets"
        },
        {
          "ieName": "routing-indicator",
          "cardinality": "LIST",
          "ieAlias": "routing-indicators"
        },
        {
          "ieName": "group-id-list",
          "cardinality": "LIST",
          "ieAlias": "group-id-list"
        },
        {
          "ieName": "preferred-locality",
          "cardinality": "LIST",
          "ieAlias": "preferred-locality-list"
        },
        {
          "ieName": "access-type",
          "cardinality": "LIST",
          "ieAlias": "access-type-list"
        },
        {
          "ieName": "notification-type",
          "cardinality": "LIST",
          "ieAlias": "notification-type-list"
        },
        {
          "ieName": "n1-msg-class",
          "cardinality": "SINGLE",
          "ieAlias": "n1-msg-class"
        },
        {
          "ieName": "n2-info-class",
          "cardinality": "SINGLE",
          "ieAlias": "n2-info-class"
        },
        {
          "ieName": "serving-scope",
          "cardinality": "LIST",
          "ieAlias": "serving-scope"
        },
        {
          "ieName": "imsi",
          "cardinality": "LIST",
          "ieAlias": "imsi-ranges"
        },
        {
          "ieName": "msisdn",
          "cardinality": "LIST",
          "ieAlias": "msisdn-ranges"
        },
        {
          "ieName": "internal-group-identity",
          "cardinality": "LIST",
          "ieAlias": "internal-groupid-range-list"
        },
        {
          "ieName": "preferred-api-versions",
          "cardinality": "LIST",
          "ieAlias": "preferred-api-versions"
        },
        {
          "ieName": "requester-nf-instance-fqdn",
          "cardinality": "SINGLE",
          "ieAlias": "requester-nf-instance-fqdn"
        },
        {
          "ieName": "requester-nf-instance-id",
          "cardinality": "SINGLE",
          "ieAlias": "requester-nf-instance-id"
        },
        {
          "ieName": "tai",
          "cardinality": "LIST",
          "ieAlias": "tai-range-list"
        },
        {
          "ieName": "guami",
          "cardinality": "LIST",
          "ieAlias": "guami-list"
        },
        {
          "ieName": "ue-ipv4-address",
          "cardinality": "LIST",
          "ieAlias": "ipv4-address-ranges"
        },
        {
          "ieName": "ue-ipv6-prefix",
          "cardinality": "LIST",
          "ieAlias": "ipv6-prefix-ranges"
        },
        {
          "ieName": "pgw",
          "cardinality": "SINGLE",
          "ieAlias": "pgw"
        },
        {
          "ieName": "rat-type",
          "cardinality": "LIST",
          "ieAlias": "serving-rat-types"
        },
        {
          "ieName": "client-type",
          "cardinality": "LIST",
          "ieAlias": "serving-client-types"
        },
        {
          "ieName": "remote-plmn-id",
          "cardinality": "LIST",
          "ieAlias": "remote-plmn-list"
        }
      ],
      "dynamicIeList": null
    },
    "createdTimestamp": "2025-09-12 11:09:09",
    "updatedTimestamp": "2025-09-12 11:09:09"
  }
]

Resource Definition

GET

This resource fetches all the ie-binding-info configuration.

Resource URI: /ocscp/scpc-configuration/{version}/ie-binding-info

The following table describes the data model supported by the GET response body on this resource:

Table 2-529 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
IEBindingInfoBaseWrapper M

1..N

200 OK

Returns all ie-binding-info records in the database.

This resource fetches the ie-binding-info configuration based on resourceName.

Resource URI: /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-530 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
resourceName String M Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record.

The following table describes data structures supported by the GET response body on these resources:

Table 2-531 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
IEBindingInfoBaseWrapper M 1

200 OK

Returns all ie-binding-info records in the database.
ProblemDetails M 1

404 Not Found

Returns a 404 error with problem details if no record exists for the specified resourceName.

Sample Successful GET Response:

Request:curl -X 'GET' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg' \
-H 'accept: application/json'
Response:
{
"resourceName": "nfdiscovery-cfg",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "SINGLE",
"ieAlias": "dnn"
},
{
"ieName": "supi",
"cardinality": "SINGLE",
"ieAlias": "supi"
},
{
"ieName": "gpsi",
"cardinality": "SINGLE",
"ieAlias": "gpsi"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "data-set"
},
{
"ieName": "routing-indicator",
"cardinality": "SINGLE",
"ieAlias": "routing-indicator"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "SINGLE",
"ieAlias": "preferred-locality"
},
{
"ieName": "access-type",
"cardinality": "SINGLE",
"ieAlias": "access-type"
},
{
"ieName": "notification-type",
"cardinality": "SINGLE",
"ieAlias": "notification-type"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "SINGLE",
"ieAlias": "imsi"
},
{
"ieName": "msisdn",
"cardinality": "SINGLE",
"ieAlias": "msisdn"
},
{
"ieName": "internal-group-identity",
"cardinality": "SINGLE",
"ieAlias": "internal-group-identity"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "SINGLE",
"ieAlias": "tai"
},
{
"ieName": "guami",
"cardinality": "SINGLE",
"ieAlias": "guami"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv4-address"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv6-prefix"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "SINGLE",
"ieAlias": "rat-type"
},
{
"ieName": "client-type",
"cardinality": "SINGLE",
"ieAlias": "client-type"
},
{
"ieName": "remote-plmn-id",
"cardinality": "SINGLE",
"ieAlias": "remote-plmn-id"
}
],
"dynamicIeList": null
},
"createdTimestamp": "2025-04-22 08:50:18",
"updatedTimestamp": "2025-04-23 07:03:04"
}

Sample Error GET Response:

Request:curl -X 'GET' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg1' \
-H 'accept: application/json'

Response:
{
  "title": "Not Found",
  "status": 404,
  "detail": "IE Binding Info configuration not found for the given query parameter(s). Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg1",
  "cause": "DATA_NOT_FOUND"
}

PUT

This resource configures ie-binding-info for a given data.

Resource URI: /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName}

The following table describes the path parameter supported by this resource:

Table 2-532 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
resourceName String M Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record.

The following table describes the data model supported by the PUT request body on this resource:

Table 2-533 Request Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Description
IEBindingInfoBaseWrapper M 1 Adds or updates DiscoveryQueryParamSetWrapper.

The following table describes the data model supported by the PUT response body on this resource:

Table 2-534 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Code Description
IEBindingInfoBaseWrapper M 1 200 OK Indicates a successful update or replacement of parameter information for the specified resourceName.
IEBindingInfoBaseWrapper M 1 201 Created Indicates successful creation of parameter information for the specified resourceName.
ProblemDetails M 1 400 Bad Request Returns a 400 error with problem details if validation of the request body fails.

Sample Successful PUT Response:

curl -X 'PUT' \
  'http://<localhost>:31111/ocscp/scpc-configuration/v1/ie-binding-info/test' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d
 '{
  "resourceName": "test",
  "ieList": {
    "staticIeList": [
      {
        "ieName": "target-nf-type",
        "cardinality": "SINGLE",
        "ieAlias": "target-nf-type"
      },
      {
        "ieName": "requester-nf-type",
        "cardinality": "SINGLE",
        "ieAlias": "requester-nf-type"
      },
      {
        "ieName": "service-names",
        "cardinality": "LIST",
        "ieAlias": "service-names"
      },
      {
        "ieName": "target-plmn-list",
        "cardinality": "LIST",
        "ieAlias": "target-plmn-list"
      },
      {
        "ieName": "requester-plmn-list",
        "cardinality": "LIST",
        "ieAlias": "requester-plmn-list"
      },
      {
        "ieName": "target-nf-instance-id",
        "cardinality": "SINGLE",
        "ieAlias": "target-nf-instance-id"
      },
      {
        "ieName": "target-nf-fqdn",
        "cardinality": "SINGLE",
        "ieAlias": "target-nf-fqdn"
      },
      {
        "ieName": "snssais",
        "cardinality": "LIST",
        "ieAlias": "snssais"
      },
      {
        "ieName": "requester-snssais",
        "cardinality": "LIST",
        "ieAlias": "requester-snssais"
      },
      {
        "ieName": "nsi-list",
        "cardinality": "LIST",
        "ieAlias": "nsi-list"
      },
      {
        "ieName": "dnn",
        "cardinality": "LIST",
        "ieAlias": "dnn-list"
      },
      {
        "ieName": "supi",
        "cardinality": "LIST",
        "ieAlias": "supi-ranges"
      },
      {
        "ieName": "gpsi",
        "cardinality": "LIST",
        "ieAlias": "gpsi-ranges"
      },
      {
        "ieName": "external-group-identity",
        "cardinality": "SINGLE",
        "ieAlias": "external-group-identity"
      },
      {
        "ieName": "data-set",
        "cardinality": "LIST",
        "ieAlias": "supported-data-sets"
      },
      {
        "ieName": "routing-indicator",
        "cardinality": "LIST",
        "ieAlias": "routing-indicators"
      },
      {
        "ieName": "group-id-list",
        "cardinality": "LIST",
        "ieAlias": "group-id-list"
      },
      {
        "ieName": "preferred-locality",
        "cardinality": "LIST",
        "ieAlias": "preferred-locality-list"
      },
      {
        "ieName": "access-type",
        "cardinality": "LIST",
        "ieAlias": "access-type-list"
      },
      {
        "ieName": "notification-type",
        "cardinality": "LIST",
        "ieAlias": "notification-type-list"
      },
      {
        "ieName": "n1-msg-class",
        "cardinality": "SINGLE",
        "ieAlias": "n1-msg-class"
      },
      {
        "ieName": "n2-info-class",
        "cardinality": "SINGLE",
        "ieAlias": "n2-info-class"
      },
      {
        "ieName": "serving-scope",
        "cardinality": "LIST",
        "ieAlias": "serving-scope"
      },
      {
        "ieName": "imsi",
        "cardinality": "LIST",
        "ieAlias": "imsi-ranges"
      },
      {
        "ieName": "msisdn",
        "cardinality": "LIST",
        "ieAlias": "msisdn-ranges"
      },
      {
        "ieName": "internal-group-identity",
        "cardinality": "LIST",
        "ieAlias": "internal-groupid-range-list"
      },
      {
        "ieName": "preferred-api-versions",
        "cardinality": "LIST",
        "ieAlias": "preferred-api-versions"
      },
      {
        "ieName": "requester-nf-instance-fqdn",
        "cardinality": "SINGLE",
        "ieAlias": "requester-nf-instance-fqdn"
      },
      {
        "ieName": "requester-nf-instance-id",
        "cardinality": "SINGLE",
        "ieAlias": "requester-nf-instance-id"
      },
      {
        "ieName": "tai",
        "cardinality": "LIST",
        "ieAlias": "tai-range-list"
      },
      {
        "ieName": "guami",
        "cardinality": "LIST",
        "ieAlias": "guami-list"
      },
      {
        "ieName": "ue-ipv4-address",
        "cardinality": "LIST",
        "ieAlias": "ipv4-address-ranges"
      },
      {
        "ieName": "ue-ipv6-prefix",
        "cardinality": "LIST",
        "ieAlias": "ipv6-prefix-ranges"
      },
      {
        "ieName": "pgw",
        "cardinality": "SINGLE",
        "ieAlias": "pgw"
      },
      {
        "ieName": "rat-type",
        "cardinality": "LIST",
        "ieAlias": "serving-rat-types"
      },
      {
        "ieName": "client-type",
        "cardinality": "LIST",
        "ieAlias": "serving-client-types"
      }
    ],
    "dynamicIeList": null
  }}'


Response:
{
  "resourceName": "test",
  "ieList": {
    "staticIeList": [
      {
        "ieName": "target-nf-type",
        "cardinality": "SINGLE",
        "ieAlias": "target-nf-type"
      },
      {
        "ieName": "requester-nf-type",
        "cardinality": "SINGLE",
        "ieAlias": "requester-nf-type"
      },
      {
        "ieName": "service-names",
        "cardinality": "LIST",
        "ieAlias": "service-names"
      },
      {
        "ieName": "target-plmn-list",
        "cardinality": "LIST",
        "ieAlias": "target-plmn-list"
      },
      {
        "ieName": "requester-plmn-list",
        "cardinality": "LIST",
        "ieAlias": "requester-plmn-list"
      },
      {
        "ieName": "target-nf-instance-id",
        "cardinality": "SINGLE",
        "ieAlias": "target-nf-instance-id"
      },
      {
        "ieName": "target-nf-fqdn",
        "cardinality": "SINGLE",
        "ieAlias": "target-nf-fqdn"
      },
      {
        "ieName": "snssais",
        "cardinality": "LIST",
        "ieAlias": "snssais"
      },
      {
        "ieName": "requester-snssais",
        "cardinality": "LIST",
        "ieAlias": "requester-snssais"
      },
      {
        "ieName": "nsi-list",
        "cardinality": "LIST",
        "ieAlias": "nsi-list"
      },
      {
        "ieName": "dnn",
        "cardinality": "LIST",
        "ieAlias": "dnn-list"
      },
      {
        "ieName": "supi",
        "cardinality": "LIST",
        "ieAlias": "supi-ranges"
      },
      {
        "ieName": "gpsi",
        "cardinality": "LIST",
        "ieAlias": "gpsi-ranges"
      },
      {
        "ieName": "external-group-identity",
        "cardinality": "SINGLE",
        "ieAlias": "external-group-identity"
      },
      {
        "ieName": "data-set",
        "cardinality": "LIST",
        "ieAlias": "supported-data-sets"
      },
      {
        "ieName": "routing-indicator",
        "cardinality": "LIST",
        "ieAlias": "routing-indicators"
      },
      {
        "ieName": "group-id-list",
        "cardinality": "LIST",
        "ieAlias": "group-id-list"
      },
      {
        "ieName": "preferred-locality",
        "cardinality": "LIST",
        "ieAlias": "preferred-locality-list"
      },
      {
        "ieName": "access-type",
        "cardinality": "LIST",
        "ieAlias": "access-type-list"
      },
      {
        "ieName": "notification-type",
        "cardinality": "LIST",
        "ieAlias": "notification-type-list"
      },
      {
        "ieName": "n1-msg-class",
        "cardinality": "SINGLE",
        "ieAlias": "n1-msg-class"
      },
      {
        "ieName": "n2-info-class",
        "cardinality": "SINGLE",
        "ieAlias": "n2-info-class"
      },
      {
        "ieName": "serving-scope",
        "cardinality": "LIST",
        "ieAlias": "serving-scope"
      },
      {
        "ieName": "imsi",
        "cardinality": "LIST",
        "ieAlias": "imsi-ranges"
      },
      {
        "ieName": "msisdn",
        "cardinality": "LIST",
        "ieAlias": "msisdn-ranges"
      },
      {
        "ieName": "internal-group-identity",
        "cardinality": "LIST",
        "ieAlias": "internal-groupid-range-list"
      },
      {
        "ieName": "preferred-api-versions",
        "cardinality": "LIST",
        "ieAlias": "preferred-api-versions"
      },
      {
        "ieName": "requester-nf-instance-fqdn",
        "cardinality": "SINGLE",
        "ieAlias": "requester-nf-instance-fqdn"
      },
      {
        "ieName": "requester-nf-instance-id",
        "cardinality": "SINGLE",
        "ieAlias": "requester-nf-instance-id"
      },
      {
        "ieName": "tai",
        "cardinality": "LIST",
        "ieAlias": "tai-range-list"
      },
      {
        "ieName": "guami",
        "cardinality": "LIST",
        "ieAlias": "guami-list"
      },
      {
        "ieName": "ue-ipv4-address",
        "cardinality": "LIST",
        "ieAlias": "ipv4-address-ranges"
      },
      {
        "ieName": "ue-ipv6-prefix",
        "cardinality": "LIST",
        "ieAlias": "ipv6-prefix-ranges"
      },
      {
        "ieName": "pgw",
        "cardinality": "SINGLE",
        "ieAlias": "pgw"
      },
      {
        "ieName": "rat-type",
        "cardinality": "LIST",
        "ieAlias": "serving-rat-types"
      },
      {
        "ieName": "client-type",
        "cardinality": "LIST",
        "ieAlias": "serving-client-types"
      }
    ],
    "dynamicIeList": null
  },
  "createdTimestamp": "2025-09-24 15:34:26",
  "updatedTimestamp": "2025-09-24 15:34:26"
}

Sample Error PUT Response:

Request:curl -X 'PUT' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d
 '{
"resourceName": "nfdiscovery-cfg",
"ieList": {
"staticIeList": [
{
"ieName": "target-nf-type",
"cardinality": "SINGLE",
"ieAlias": "target-nf-type"
},
{
"ieName": "requester-nf-type",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-type"
},
{
"ieName": "service-names",
"cardinality": "LIST",
"ieAlias": "service-names"
},
{
"ieName": "target-plmn-list",
"cardinality": "LIST",
"ieAlias": "target-plmn-list"
},
{
"ieName": "requester-plmn-list",
"cardinality": "LIST",
"ieAlias": "requester-plmn-list"
},
{
"ieName": "target-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "target-nf-instance-id"
},
{
"ieName": "target-nf-fqdn",
"cardinality": "SINGLE",
"ieAlias": "target-nf-fqdn"
},
{
"ieName": "snssais",
"cardinality": "LIST",
"ieAlias": "snssais"
},
{
"ieName": "requester-snssais",
"cardinality": "LIST",
"ieAlias": "requester-snssais"
},
{
"ieName": "nsi-list",
"cardinality": "LIST",
"ieAlias": "nsi-list"
},
{
"ieName": "dnn",
"cardinality": "SINGLE",
"ieAlias": "dnn"
},
{
"ieName": "supi",
"cardinality": "SINGLE",
"ieAlias": "supi"
},
{
"ieName": "gpsi",
"cardinality": "SINGLE",
"ieAlias": "gpsi"
},
{
"ieName": "external-group-identity",
"cardinality": "SINGLE",
"ieAlias": "external-group-identity"
},
{
"ieName": "data-set",
"cardinality": "LIST",
"ieAlias": "data-set"
},
{
"ieName": "routing-indicator",
"cardinality": "SINGLE",
"ieAlias": "routing-indicator"
},
{
"ieName": "group-id-list",
"cardinality": "LIST",
"ieAlias": "group-id-list"
},
{
"ieName": "preferred-locality",
"cardinality": "SINGLE",
"ieAlias": "preferred-locality"
},
{
"ieName": "access-type",
"cardinality": "SINGLE",
"ieAlias": "access-type"
},
{
"ieName": "notification-type",
"cardinality": "SINGLE",
"ieAlias": "notification-type"
},
{
"ieName": "n1-msg-class",
"cardinality": "SINGLE",
"ieAlias": "n1-msg-class"
},
{
"ieName": "n2-info-class",
"cardinality": "SINGLE",
"ieAlias": "n2-info-class"
},
{
"ieName": "serving-scope",
"cardinality": "LIST",
"ieAlias": "serving-scope"
},
{
"ieName": "imsi",
"cardinality": "SINGLE",
"ieAlias": "imsi"
},
{
"ieName": "msisdn",
"cardinality": "SINGLE",
"ieAlias": "msisdn"
},
{
"ieName": "internal-group-identity",
"cardinality": "SINGLE",
"ieAlias": "internal-group-identity"
},
{
"ieName": "preferred-api-versions",
"cardinality": "LIST",
"ieAlias": "preferred-api-versions"
},
{
"ieName": "requester-nf-instance-fqdn",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-fqdn"
},
{
"ieName": "requester-nf-instance-id",
"cardinality": "SINGLE",
"ieAlias": "requester-nf-instance-id"
},
{
"ieName": "tai",
"cardinality": "SINGLE",
"ieAlias": "tai"
},
{
"ieName": "guami",
"cardinality": "SINGLE",
"ieAlias": "guami"
},
{
"ieName": "ue-ipv4-address",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv4-address"
},
{
"ieName": "ue-ipv6-prefix",
"cardinality": "SINGLE",
"ieAlias": "ue-ipv6-prefix"
},
{
"ieName": "pgw",
"cardinality": "SINGLE",
"ieAlias": "pgw"
},
{
"ieName": "rat-type",
"cardinality": "SINGLE",
"ieAlias": "rat-type"
},
{
"ieName": "client-type",
"cardinality": "SINGLE",
"ieAlias": "client-type"
},
{
"ieName": "remote-plmn-id",
"cardinality": "SINGLE",
"ieAlias": "remote-plmn-id"
}
],
"dynamicIeList": [{"name": "remote-plmn-id",
"cardinality": "SINGLE",
"keyNameInRule": "remote-plmn-id"
}]
}
}'


Response:
{
"title": "Bad Request",
"status": 400,
"detail": "Duplicate ieName 'remote-plmn-id' not allowed. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg",
"cause": "INVALID_REQUEST_BODY"
}

DELETE

This resource removes the ie-binding-info configuration based on resourceName.

Resource URI: /ocscp/scpc-configuration/{version}/ie-binding-info/{resourceName}

The following table describes the path parameter supported by this resource:

Table 2-535 Path Parameter

Name Data Type Mandatory (M) or Optional (O) Description
resourceName String M Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record.

The following table describes the data model supported by the DELETE response body on this resource:

Table 2-536 Response Body Parameters

Data Type Mandatory (M) or Optional (O) Cardinality Response Codes Description
NA M 1 204 No Content Indicates successful deletion of the record.
ProblemDetails M 1 404 Not Found Returns a 404 error with problem details if no record exists for the specified resourceName.
ProblemDetails M 1 403 Forbidden Returns a 403 error with problem details if the user attempts to delete the default record.

Sample of a Successful DELETE Response:

curl -X 'DELETE' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg2' \
-H 'accept: application/json'
{}

Sample of an Error DELETE Response:

curl -X 'DELETE' \
'http://<localhost>:32299/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg' \
-H 'accept: application/json'
{
  "title": "Forbidden",
  "status": 403,
  "detail": "User is not allowed to delete record for resourceName nfdiscovery-cfg. Please refer to the User Guide.",
  "instance": "/ocscp/scpc-configuration/v1/ie-binding-info/nfdiscovery-cfg",
  "cause": "DATA_CANT_DELETED"
}

Data Model

The following table describes data model for request or response:

Table 2-537 IEBindingInfoBaseWrapper

Field Name Data Type Mandatory (M) or Optional (O) Description
resourceName String M Indicates the name of the SCP resource for which ie-binding-info is configured in the database. It is a unique identifier for the record.
ieList IEList M Indicates a JSON structure that contains all information for all supported parameters for the specified resource.
createdTimestamp String Read Only Indicates the timestamp of the created record. It is not required in the request, but is included in the response.
updatedTimestamp String Read Only Indicates the timestamp of the updated record. It is not required in the request, but is included in the response.

Table 2-538 IEList

Field Name Data Type Mandatory (M) or Optional (O) Description
staticIeList List<IEBindingMetaData> M Contains a list of predefined discovery query parameters defined for the specified resourceName. This list cannot be updated. It is read only.
dynamicIeList List<IEBindingMetaData> O Contains a list of discovery query parameters that can be added at runtime and used for the specified resourceName. Parameters already present in staticParamList cannot be used again in dynamicParamList.

Table 2-539 IEBindingMetaData

Field Name Data Type Mandatory (M) or Optional (O) Description
ieName String M Indicates the name of the information element defined in the IE-Registry REST API. This information element can be either 3GPP-defined or custom. The value of this parameter must match the paramName defined in the IE-Registry API.

This parameter can be added only if its name is not present in staticIeList or dynamicIeList. It can be added only if the record it references in the IE-Registry exists and its isActive flag is set to true.

cardinality Enumeration M Indicates whether ieName can be configured as a single object or a list of objects. It is the name of the cardinality enumeration.

Allowed values:

  • LIST
  • SINGLE
ieAlias String M Indicates the other name for the same parameter, which can be used as JSON key in response body.

For static parameters, ieName and ieAlias are exactly the same as staticIeList cannot be modified.

For dynamic parameters, ieName and ieAlias can be the same or different depending on what you want to configure.

ieAlias must contain only lowercase letters, digits, hyphen and underscore.

For more information, see dynamic parameters SCP Static NF Discovery Rest API#Provisionofdynamickeyadditionthroughie-binding-info

2.53 Configuring Next Hop Roaming Proxy Routing Config

The Next Hop Roaming Proxy Routing Config REST API configures routing parameters for the next hop roaming proxy.

Resources

The following table describes the resource name to retrieve, add, update, or remove the roaming-proxy-selection-info configuration data:

Table 2-540 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
routing-config/next-hop-roaming-proxy /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy GET Retrieves all nextHopRoamingProxyRoutingConfig records.
routing-config/next-hop-roaming-proxy /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName} GET

Retrieves nextHopRoamingProxyRoutingConfig for the given configName if the record exists.

routing-config/next-hop-roaming-proxy /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName} PUT Creates or updates the nextHopRoamingProxyRoutingConfig record.
routing-config/next-hop-roaming-proxy /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName} DELETE Removes nextHopRoamingProxyRoutingConfig for the given configName. The default record (defaultNextHopRoamingProxyConfig) cannot be removed.

Resource Definition

GET

This resource fetches nextHopRoamingProxyRoutingConfigData configuration.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy

The following table describes the data model supported by the GET response body on this resource:

Table 2-541 Response Body Parameters

Parameter Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
nextHopRoamingProxyRoutingConfigData M 1 200 OK Indicates successful retrieval of all nextHopRoamingProxyRoutingConfigData objects.

This resource fetches nextHopRoamingProxyRoutingConfigData configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-542 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
configName String M Fetches configurations based on configName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-543 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
nextHopRoamingProxyRoutingConfigData M 1 200 OK Indicates successful retrieval of nextHopRoamingProxyRoutingConfigData objects.
ProblemDetails M 1 404 Not Found Indicates problem details.

Sample of a Successful GET API

curl -X 'GET' 'http://10.75.213.61:32586/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config2' -H 'accept: application/json'

{
    "configName": "config2",
    "nextHopRoamingProxyRoutingConfigData": {
      "totalTransactionLifetime": "7s",
      "responseTimeout": "4s",
      "service": {
        "maxRoutingAttempts": 2
      },
      "serviceEndpoint": {
        "maxRoutingAttempts": 1
      },
      "reRouteConditionList": [
        {
          "statusCode": "307"
        },
        {
          "statusCode": "308"
        },
        {
          "statusCode": "429"
        },
        {
          "statusCode": "5xx"
        },
        {
          "statusCode": "timeout"
        },
        {
          "statusCode": "connectionError"
        }
      ],
      "exceptions": [
        {
          "name": "No_Host",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_no_host"
        },
        {
          "name": "Destination_Exhausted",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_destination_exhausted"
        }
      ]
    },
    "createdTimestamp": "2025-08-13 09:09:46",
    "updatedTimestamp": "2025-08-13 09:09:46"
  }

Sample of an Error GET API

curl -X 'GET' 'http://10.75.213.61:32586/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config3' -H 'accept: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "Next Hop Roaming Proxy Routing Configuration data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/c2342v",
    "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found

PUT

This resource configures nextHopRoamingProxyRoutingConfig for the given data.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName}

The following table describes the path parameter supported by this resource:

Table 2-544 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
configName String M Indicates the key for the PUT operation.

The following table describes the data structure supported by the PUT request body on this resource:

Table 2-545 Request Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
nextHopRoamingProxyRoutingConfigData M 1 Adds or updates nextHopRoamingProxyRoutingConfigData.

The following table describes the data structure supported by the PUT response body on this resource:

Table 2-546 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Code Description
nextHopRoamingProxyRoutingConfigData M 1 200 OK Indicates successful update of nextHopRoamingProxyRouting configurations.
nextHopRoamingProxyRoutingConfigData M 1 201 Created Indicates successful creation of nextHopRoamingProxyRouting configurations.
ProblemDetails M 1 400 Bad Request Indicates problem details, for example, invalid exceptions provided inside nextHopRoamingProxy. The name value is invalid.
ProblemDetails M 1 403 Forbidden Updates the default record results.

Sample of a Successful PUT API

curl -X 'PUT' \
  'http://10.75.224.103:32265/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d 
' {
    "configName": "config1",
    "nextHopRoamingProxyRoutingConfigData": {
      "totalTransactionLifetime": "7s",
      "responseTimeout": "4s",
      "service": {
        "maxRoutingAttempts": 2
      },
      "serviceEndpoint": {
        "maxRoutingAttempts": 1
      },
      "reRouteConditionList": [
        {
          "statusCode": "307"
        },
        {
          "statusCode": "308"
        },
        {
          "statusCode": "429"
        },
        {
          "statusCode": "5xx"
        },
        {
          "statusCode": "timeout"
        },
        {
          "statusCode": "connectionError"
        }
      ],
      "exceptions": [
        {
          "name": "No_Host",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_no_host"
        },
        {
          "name": "Destination_Exhausted",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_destination_exhausted"
        }
      ]
    },
    "createdTimestamp": "2025-08-13 09:09:46",
    "updatedTimestamp": "2025-08-13 09:09:46"
  } '  


Response:
  {
    "configName": "config1",
    "nextHopRoamingProxyRoutingConfigData": {
      "totalTransactionLifetime": "7s",
      "responseTimeout": "4s",
      "service": {
        "maxRoutingAttempts": 2
      },
      "serviceEndpoint": {
        "maxRoutingAttempts": 1
      },
      "reRouteConditionList": [
        {
          "statusCode": "307"
        },
        {
          "statusCode": "308"
        },
        {
          "statusCode": "429"
        },
        {
          "statusCode": "5xx"
        },
        {
          "statusCode": "timeout"
        },
        {
          "statusCode": "connectionError"
        }
      ],
      "exceptions": [
        {
          "name": "No_Host",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_no_host"
        },
        {
          "name": "Destination_Exhausted",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_destination_exhausted"
        }
      ]
    },
    "createdTimestamp": "2025-08-13 09:09:46",
    "updatedTimestamp": "2025-08-13 09:09:46"
  }

Sample of an Error PUT API

curl -X 'PUT' \
  'http://10.75.224.103:30937/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/defaultNextHopRoamingProxyConfig' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d

 '   {
   {
    "configName": "defaultNextHopRoamingProxyConfig",
    "nextHopRoamingProxyRoutingConfigData": {
      "totalTransactionLifetime": "7s",
      "responseTimeout": "4s",
      "service": {
        "maxRoutingAttempts": 2
      },
      "serviceEndpoint": {
        "maxRoutingAttempts": 1
      },
      "reRouteConditionList": [
        {
          "statusCode": "307"
        },
        {
          "statusCode": "308"
        },
        {
          "statusCode": "429"
        },
        {
          "statusCode": "5xx"
        },
        {
          "statusCode": "timeout"
        },
        {
          "statusCode": "connectionError"
        }
      ],
      "exceptions": [
        {
          "name": "No_Host",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_no_host"
        },
        {
          "name": "Destination_Exhausted",
          "action": "Send_Answer",
          "error_profile": "default_exception_error_destination_exhausted"
        }
      ]
    },
    "createdTimestamp": "2025-08-13 09:09:46",
    "updatedTimestamp": "2025-08-13 09:09:46"
  }'

Response:
{
    "title": "Forbidden",
    "status": 403,
    "detail": "The default configuration cannot be updated. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/defaultNextHopRoamingProxyConfig",
    "cause": "MODIFICATION_NOT_ALLOWED"
}
 
403 Error: Forbidden

DELETE

This resource removes the nextHopRoamingProxyRoutingConfigData configuration based on the configName.

Resource URI: /ocscp/scpc-configuration/{version}/routing-config/next-hop-roaming-proxy/{configName}

The following table describes the path parameter supported by this resource:

Table 2-547 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
configName String M Indicates the configName to be removed.

The following table describes the data structure supported by the DELETE response body on this resource:

Table 2-548 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
n/a M 1 204 No Content Indicates deletion.
ProblemDetails M 1 404 Not Found Indicates problem details stating that Next Hop Roaming Proxy Routing Config Data is not found for the corresponding configName.
ProblemDetails M 1 403 Forbidden Removes the default record.

Sample of a Successful of DELETE API

curl -X 'DELETE' \
  'http://10.75.224.103:32265/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config1' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
 204 No Content

Sample of an Error DELETE API

curl -X 'DELETE' \
  'http://10.75.224.103:32265/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config5' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json'
{
    "title": "Not Found",
    "status": 404,
    "detail": "Next Hop Roaming Proxy Routing Configuration data not found against given configName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/routing-config/next-hop-roaming-proxy/config5",
    "cause": "DATA_NOT_FOUND"
}
 
404 Error: Not Found

Data Model

The following table describes data model for request or response:

Table 2-549 nextHopRoamingProxyRoutingConfigData

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description Applicable to NF Service Level Applicable to Pod level within NF
totalTransactionLifetime String M Indicates that the time consumed in processing all retries should not exceed the total transaction time.

The total time allowed to forward a request, including initial and all subsequent routing attempts.

Default value: NA

Range: 100 - 240000 ms or 1 - 240 s

Yes Yes
responseTimeout String M Indicates the allotted time to respond to a message request. When the response timeout expires, SCP performs alternate rerouting to the available alternate NF or pod, or sends an error message.

Default value: NA

Range: 100 - 50000 ms or 1 - 50 s

Yes Yes
service NextHopSeppServiceV2 M See Table 2-550

Default value: NA

Range: NA

- -
serviceEndpoint NextHopSeppServiceEndpointV2 M See Table 2-551

Default value: NA

Range: NA

- -
reRouteConditionList Array(ProblemData) O Specifies the HTTP response codes and error conditions under which the SCP attempts alternate routing.

If the upstream server responds with any of the configured response codes, SCP attempts rerouting based on the configured alternate routing mechanism.

If SCP encounters errors such as "connectionError" or "timeout" while routing to the upstream server, and these errors are configured, SCP attempts re-routing based on the configured alternate routing mechanism.

If not provided, it is initialized with the values specified in the default column.

You can add additional entries as applicable, in addition to the default ones.

Default value:

"reRouteConditionList":
[
  {
    "statusCode": "5xx"
  },
  {
    "statusCode": "429"
  },
  {
    "statusCode": "307"
  },
  {
    "statusCode": "308"
  },
  {
    "statusCode": "timeout"
  },
  {
    "statusCode": "connectionError"

  }
]

Range:

301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 405, 406, 407, 408, 409 , 410, 411, 412, 413, 414, 415, 416, 417, 421, 422, 425, 426, 428, 429, 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, 5xx,"connectionError","timeout" 
configured in enginnerging config table.
Yes Yes
exceptions Array(ExceptionErrorResponse) O

Host not found Action

Specifies the action taken when request routing is abandoned because the host FQDN cannot be resolved.

Options are as follows:

  • Abandon with no answer.
  • Sends answer with configured http status code. If error_profile is present, response is created based on parameters present in referred error profile form the ERROR_PROFILE_CONFIG table.

Default value:

Sends answer with configured http status code (Default 400).

Range:

This range is fixed, and you cannot add additional entries to this list. If a fewer than two entries are configured, the missing entries are automatically added as specified in the default value column. If more than two entries are provided, the request is rejected.

Yes No
Destination Exhausted Action O Specifies the action taken when a request cannot be processed due to exhaustion of internal resources.

Options are as follows:

  • Abandon with no Answer
  • Sends a response with the configured http status code. If an error_profile is present, the response is generated based on the parameters defined in the referenced Error Profile from the ERROR_PROFILE_CONFIG table.

Default value: Sends answer with configured http status code (Default 504).

Range:

This range is fixed, and you cannot add additional entries to this list. If a fewer than two entries are configured, the missing entries are automatically added as specified in the default value column. If more than two entries are provided, the request is rejected.

Yes No

Table 2-550 NextHopSeppServiceV2

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description Applicable to NF Service Level Applicable to Pod level within NF
maxRoutingAttempts int M Specifies the number of re-route attempts (retries) at the service level.

This is the maximum number of times SCP is allowed to forward a request message. If the maximum routing attempts value is set to 1 for both service and pod level, the total transaction lifetime parameter value is not required, and if the maximum routing attempts value (including both service and pod level) is greater than 1, total transaction lifetime value is considered in rerouting processing.

Default value: NA

Range: 1 - 5

Yes Yes

Table 2-551 NextHopSeppServiceEndpointV2

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description Applicable to NF Service Level Applicable to Pod level within NF
maxRoutingAttempts int M Specifies the number of re-route attempts (retries) at the NF or pod level.

This is the maximum number of times SCP is allowed to forward a request message. If the maximum routing attempts value is set to 1 for both service and pod level, the total transaction lifetime parameter value is not required, and if the maximum routing attempts value (including both service and pod level) is greater than 1, total transaction lifetime value is considered in rerouting processing.

Default value: NA

Range: 1 - 5

Yes Yes

Table 2-552 ProblemData

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description Applicable to NF Service Level Applicable to Pod level within NF
statusCode String O Specifies the HTTP response codes for which SCP attempts alternate routing. If the upstream server responds with any of the configured response codes, SCP attempts rerouting based on the configured alternate routing mechanism.

SCP attempts to reroute the request in cases such as response timeout, connection failure, refused stream, or receipt of a GOAWAY frame on any connection. These events are not configurable and are inherently supported by SCP.

Default value: NA

Range:

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.

Sample values

"reRouteConditionList":
[
  {
    "statusCode": "5xx"
  },
  {
    "statusCode": "429"
  },
  {
    "statusCode": "307"
  },
  {
    "statusCode": "308"
  },
  {
    "statusCode": "timeout"
  },
  {
    "statusCode": "connectionError"
  }
]
Yes Yes

Table 2-553 ExceptionErrorResponse

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description Applicable to NF Service Level Applicable to Pod level within NF
action string M Indicates the action to be taken when the above mentioned exception name is received. Yes Yes
error_profile string O Indicates the name of error profile referred in ERROR_PROFILE_CONFIG. If provided, response is created based on the error profile parameters. Yes Yes

2.54 Configuring Roaming Proxy Selection Info

The Roaming Proxy Selection Info REST API is used to configure custom roaming proxy selection rules on the SCP. These rules are used to construct discovery queries for roaming proxy selection. For custom roaming proxy NF types, the SCP performs static discovery as the supported discovery source.

Resources

The following table describes the resource name to retrieve, add, update, or remove the roaming-proxy-selection-info configuration data:

Table 2-554 Resources

Resource Name Resource URI HTTP Method or Custom Operation Description
roaming-proxy-selection-info /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info GET Retrieves the roaming proxy selection configuration for the specified query parameter, if a matching record exists.
roaming-proxy-selection-info /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName} GET Retrieves the roaming proxy selection configuration for the specified configName, if a matching record exists.
roaming-proxy-selection-info /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName} PUT Creates a roaming proxy selection configuration using the provided NF discovery parameters.

The nfType parameter cannot be updated for an existing configuration.

The combination of nfType and targetPlmnList must be unique across all records.

roaming-proxy-selection-info /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName} DELETE Removes the roaming proxy selection configuration for the given configName.

Resource Definition

GET

This resource fetches all the roaming-proxy-selection-info configuration.

Resource URI: /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info

The following table describes the data model supported by the GET response body on this resource:

Table 2-555 Response Body Parameters

Parameter Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
roamingProxySelectionCfg M 1..N 200 OK Indicates roaming-proxy-selection-info configuration.

This resource fetches the roaming-proxy-selection-info configuration based on roamingProxyInfoCfg.

Resource URI: /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-routing-info/{roamingProxySelectionCfgName}

The following table describes the path parameter supported by the GET response body on this resource:

Table 2-556 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
roamingProxySelectionCfgName String M Fetches configuration for the corresponding roamingProxySelectionCfgName.

The following table describes data structures supported by the GET response body on these resources:

Table 2-557 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
roamingProxySelectionCfg M 1 200 OK Indicates roaming-proxy-selection-info configuration.
ProblemDetails M 1 404 Not Found Indicates problem details.

Sample of a Successful GET API

curl -X 'GET' 'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/config1'  -H 'accept: application/json'


{
  "configName": "config1",
  "roamingProxySelectionCfgData": {
    "isRoamingRequest": true,
    "targetPlmnList": [
      {
        "mcc": "*",
        "mnc": "*"
      }
    ],
    "nfType": "5GNIF",
    "nfDiscoveryParams": {
      "mandatory": {
        "target-nf-type": {
          "value": "5GNIF"
        },
        "requester-nf-type": {
          "source": "SCP",
          "value": "SCP"
        },
        "preferred-locality": {
          "source": "SCP",
          "value": "Loc1"
        },
        "remote-plmn-id": {
          "source": "CONSUMER",
          "value": "{ \"mcc\": \"123\", \"mnc\": \"456\" }"
        },
        "requester-snssais": {
          "source": "CONSUMER",
          "value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
        },
        "target-nf-fqdn": {
          "source": "CONSUMER",
          "value": "udm1.default.svc.cluster.local"
        },
        "snssais": {
          "source": "CONSUMER",
          "value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
        },
        "target-nf-set-id": {
          "source": "CONSUMER",
          "value": "set1.udmset.5gc.mnc015.mcc327"
        },
        "limit": {
          "value": "5"
        },
        "max-payload-size": {
          "value": "124"
        },
      },
      "optional": {
        "target-nf-instance-id": {
          "source": "CONSUMER",
          "value": "550e8400-e29b-41d4-a716-446655440000"
        },
        "requester-plmn-list": {
          "source": "CONSUMER",
          "value": "[{\"mcc\": \"123\", \"mnc\": \"456\"}]"
        }
      }
    }
  }
}

Sample of an Error GET API

curl -X 'GET' 'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName23'  -H 'accept: application/json'

{
"title": "Not Found",
"status": "404",
"detail": "roaming-proxy-selection-info data not found against given roamingProxySelectionCfgName. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/config23",
"cause": "DATA_NOT_FOUND"
}

404 Error: Not Found

PUT

This resource configures the roaming-proxy-routing-info configuration data.

Resource URI: /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-selection-info/{configName}

The following table describes the path parameter supported by this resource:

Table 2-558 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
configName String M Indicates the key for PUT operation.

The following table describes the data structure supported by the PUT request body on this resource:

Table 2-559 Request Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
roamingProxySelectionCfg M 1 Indicates the roaming-proxy-selection-info configurations to be added or modified.

The following table describes the data structure supported by the PUT response body on this resource:

Table 2-560 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Code Description
roamingProxySelectionCfgWrapper M 1 201 Created Indicates a new roaming-proxy-selection-info configuration creation.
roamingProxySelectionCfgWrapper M 1 200 OK Updates an existing record.
ProblemDetails M 1 400 Bad Request Indicates problem details.
ProblemDetails M 1 403 Forbidden Updates those parameters that cannot be modified.

Sample of a Successful PUT API

curl -X 'PUT' \ 'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/config1'\    -H 'accept: application/json' \    -H 'Content-Type: application/json' \ -d 

'{
  "configName": "config1",
  "roamingProxySelectionCfgData": {
    "isRoamingRequest": true,
    "targetPlmnList": [
      {
        "mcc": "*",
        "mnc": "*"
      }
    ],
    "nfType": "5GNIF",
    "nfDiscoveryParams": {
      "mandatory": {
        "target-nf-type": {
          "value": "5GNIF"
        },
        "requester-nf-type": {
          "source": "SCP",
          "value": "SCP"
        },
        "preferred-locality": {
          "source": "SCP",
          "value": "Loc1"
        },
        "remote-plmn-id": {
          "source": "CONSUMER",
          "value": "{ \"mcc\": \"123\", \"mnc\": \"456\" }"
        },
        "requester-snssais": {
          "source": "CONSUMER",
          "value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
        },
        "target-nf-fqdn": {
          "source": "CONSUMER",
          "value": "udm1.default.svc.cluster.local"
        },
        "snssais": {
          "source": "CONSUMER",
          "value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
        },
        "limit": {
          "value": "5"
        },
        "max-payload-size": {
          "value": "124"
        }
      },
      "optional": {
        "target-nf-set-id": {
          "source": "CONSUMER",
          "value": "set1.udmset.5gc.mnc015.mcc327"
        },
        "requester-plmn-list": {
          "source": "CONSUMER",
          "value": "[{\"mcc\": \"123\", \"mnc\": \"456\"}]"
        }
      }
    }
  }
}'

Response
{
  "configName": "config1",
  "roamingProxySelectionCfgData": {
    "targetPlmnList": [
      {
        "mcc": "*",
        "mnc": "*"
      }
    ],
    "nfType": "5GNIF",
    "nfDiscoveryParams": {
      "mandatory": {
        "target-nf-type": {
          "value": "5GNIF"
        },
        "requester-nf-type": {
          "source": "SCP",
          "value": "SCP"
        },
        "preferred-locality": {
          "source": "SCP",
          "value": "Loc1"
        },
        "remote-plmn-id": {
          "source": "CONSUMER",
          "value": "{ \"mcc\": \"123\", \"mnc\": \"456\" }"
        },
        "requester-snssais": {
          "source": "CONSUMER",
          "value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
        },
        "target-nf-fqdn": {
          "source": "CONSUMER",
          "value": "udm1.default.svc.cluster.local"
        },
        "snssais": {
          "source": "CONSUMER",
          "value": "[{ \"sd\": \"1A3F22\", \"sst\": \"2\" }]"
        },
        "limit": {
          "value": "5"
        },
        "max-payload-size": {
          "value": "124"
        }
      },
      "optional": {
        "target-nf-set-id": {
          "source": "CONSUMER",
          "value": "set1.udmset.5gc.mnc015.mcc327"
        },
        "requester-plmn-list": {
          "source": "CONSUMER",
          "value": "[{\"mcc\": \"123\", \"mnc\": \"456\"}]"
        }
      }
    },
    "isRoamingRequest": true
  },
  "createdTimestamp": "2026-03-18 06:08:18",
  "updatedTimestamp": "2026-03-18 06:08:18"
}

Sample of an Error PUT API

curl -X 'PUT' \
	'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName5'\
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
  	-d 

'{
	"roamingProxySelectionCfgName": "config1",
	"roamingProxySelectionCfgData" : {
		"isRoamingRequest": true,
		"target-plmn-list": [{"mcc": *,"mnc": *}],
		"nfType": "5GNIF",                  									
		"nfDiscoveryParams":{
			"mandatory":{ 
		        "target-nf-type": { 										
		                "value": "5GNIF"    								
		            },
		        "remote-plmn-id": {											
		        		"source": "CONSUMER",        						
		                "value": "{"mcc": *,"mnc": *}"
		            },
		        "routing-indicator":  {     								
		                "source": "CONSUMER",                          
		                "value": "",				
		            },
		        "preferred-locality": {
		                "source": "SCP",   			
		                "value": "Loc1"         	
		            },
		        "requester-nf-type": {
		        		"source": "SCP",
		                "value": "SCP",
		            }
			   },
			"optional":{   
		        "requester-plmn-list": {
		        		"source": "SCP/CONSUMER"
		                "value": "[{"mcc": *,"mnc": *},{"mcc": *,"mnc": *}]"
		            }
		  	 }
		}
}'

Response:
{
"title": "Bad Request",
"status": 400,
"detail": "roamingProxySelectionCfgName in request Body does not match with roamingProxySelectionCfgName provided in API. Please refer to the User Guide.",
"instance": "/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName4",
"cause": "INVALID_KEY_COMBINATION"
}

DELETE

This resource removes the roaming-proxy-selection-info configuration based on configName.

Resource URI: /ocscp/scpc-configuration/{version}/proxy-info/roaming-proxy-proxy-selection-info/{configName}

The following table describes the path parameter supported by this resource:

Table 2-561 Path Parameter

Name Data Type Mandatory (M), Optional (O), or Conditional (C) Description
roamingProxySelectionCfgName String M Removes configurations based on configName.

The following table describes the data structure supported by the DELETE response body on this resource:

Table 2-562 Response Body Parameters

Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Response Codes Description
None - 1 204 No Content Returns only a response code in a successful scenario.
ProblemDetails M 1 404 Not Found Indicates problem details.

Sample of a Successful of DELETE API

curl -X 'DELETE' \
	'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName5' \
   -H 'accept: application/json' \
   -H 'Content-Type: application/json'
204 OK

Sample of an Error DELETE API

curl -X 'DELETE' \
	'http://10.75.225.15:30349/ocscp/scpc-configuration/v1/proxy-info/roaming-proxy-selection-info/CfgName7' \
   -H 'accept: application/json' \
   -H 'Content-Type: application/json'

{
    "title": "Not Found",
    "status": 404,
    "detail": "roaming-proxy-selection-info data not found against given roamingProxySelectionCfgName. Please refer to the User Guide.",
    "instance": "/ocscp/scpc-configuration/v1/proxy-support-info/roaming-proxy-routing-info/CfgName7",
    "cause": "DATA_NOT_FOUND"
}
  
404 Error: Not Found 

Data Model

The following table describes data model for request or response:

Table 2-563 RoamingProxySelectionCfg

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
configName String M 1 This is a unique key to identify records.

Length: 256

Allowed character combinations should be alpha-numeric, hyphen, and underscore.

isRoamingRequest Boolean(true/false) O 1 This is a roaming request.
target-plmn-list array(PlmnId) O 1..N This is target networks' PLMN IDs.
nfType NFType M 1 This is custom roaming proxy or proxy NF type (the role must be CUSTOM_5G_ROAMING_PROXY)
mandatory NfDiscoveryParams M 1 These mandatory custom roaming proxy discovery parameters are used by SCP to construct discovery queries for static discovery of the custom roaming proxy. If SCP is unable to extract values for the configured mandatory parameters, it returns an error to the consumer NF.
optional NfDiscoveryParams O 1 These optional custom roaming proxy discovery parameters are used by SCP when constructing discovery queries for static discovery of the custom roaming proxy. If SCP is unable to extract values for any configured optional parameters, it proceeds with the discovery process without including those parameters.

Table 2-564 NfDiscoveryParams

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Cardinality Description
source String C 1 Indicates the source to retrieve the value of the discovery parameter.
value String C 1 Indicates a fallback value that can be used if the parameter value cannot be extracted on the basis of source.

Table 2-565 List of Supported Discovery Parameters

Parameter Name Data Type Mandatory (M), Optional (O), or Conditional (C) Default Spurce Description
target-nf-type NFType M NA Indicates the NF type of the target NF to be discovered. The "source" is not applicable. target-nf-type can only have "value" configured. "value" must be equal to RoamingProxySelectionCfg NfType

Default value: 5GNIF

requester-nf-type NFType M SCP Indicates the NF type of the requester NF that performs discovery. "source" can be SCP or CONSUMER. "value" must be a valid NF type configured in the nfTypes-nfServices REST API.

Default value: SCP

preferred-locality String O SCP Indicates the preferred target NF location. "source" can be SCP or CONSUMER. "value" can be a locality string.

Default value: SCP

requester-plmn-list array(PlmnId) O - Indicates a list of PLMN IDs of the requester NF. "source" can be SCP or CONSUMER. "value" must be a valid list of PlmnId json string.

Default value: NA

requester-snssais array(Snssai) O - Indicates a list of S-NSSAIs of the requester NF. "source" can be SCP or CONSUMER. "value" must be a valid list of Snssai json string.

Default value: NA

remote-plmn-id PlmnId O CONSUMER Indicates the PLMN ID that is reachable through target NF. "source" can only be CONSUMER. "source" SCP is not applicable. "value" must be a valid PlmnId json string.

Default value: NA

target-nf-instance-id NfInstanceId O CONSUMER Indicates the NF instance of target NF. "source" can only be CONSUMER. "source" SCP is not applicable. "value" must be a valid NF instance ID.

Default value:

target-nf-fqdn Fqdn O CONSUMER Indicates the FQDN of target NF. "source" can only be CONSUMER. "source" SCP is not applicable. "value" must be a valid FQDN.

Default value: NA

target-nf-set-id NfSetId O CONSUMER Indicates the NF set ID of target NF. "source" can only be CONSUMER. "source" SCP is not applicable. "value" must be a valid NF Set ID.

Default value: NA

snssais array(Snssai) O CONSUMER Discovers the target NF belonging to Slices List. "source" can only be CONSUMER. "source" SCP is not applicable. "value" must be a valid Snssai json string.

Default value: NA

limit Integer O - Indicates the maximum number of NFProfiles to be returned in the response. "source" is not applicable. "value" must be a valid integer in the range.

Default value: min:1, max:12

max-payload-size Integer O - Indicates the maximum payload size (before compression if any) of the response, expressed in kilooctets. "source" is not applicable. "value" must be a valid integer in the range. The minimum and maximum values can be configured through Helm.

Default value: min:124, max:2000

max-payload-size-ext Integer O - Indicates the maximum payload size (before compression if any) of the response, expressed in kilooctets. "source" is not applicable. "value" must be a valid integer in the range. The minimum and maximum values can be configured through Helm.

Default value: min:124, max:2000