5 Common Services REST APIs

This chapter provides information about the REST specifications for Common Services used in Oracle Communications Cloud Native Core, Network Slice Selection Function (NSSF).

You can use these APIs to update configurations related to the Overload Control feature. For more information on Overload Control Feature, see Oracle Communications Cloud Native Core, Network Slice Selection Function User Guide.

5.1 Ingress Gateway REST APIs

This section explains REST API configurations required at Ingress Gateway for various features.

5.1.1 serverheaderdetails Configurations to Enable Server Header

This API can be used for adding Server Header in the error responses sent from Ingress Gateway, depending on the values provided in the JSON. By default, this feature is disabled. To enable the feature, invoke the following REST API and update the enable or disable flag.

URI:

/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails

Method: GET, PUT, PATCH

Content-Type: application/json

Request or Response Body Parameters

Table 5-1 Request or Response Body Parameters

Parameter Description Details
enabled

This is a mandatory parameter.

This parameter specifies whether the feature is enabled or disabled.

Data Type: Boolean

Range: true or false

Example Value: false

errorCodeSeriesId

This is an optional parameter.

Specifies the error list IDs

Data Type: String

Range: NA

Example Value: NA

configuration.nfType

This is a mandatory parameter.

Specifies the type of network function

Data Type: String

Range: NA

Example Value: NSSF

configuration.nfInstanceId

This is a mandatory parameter.

This parameter represents the UUID of the NSSF deployment that is used to generate the Server Header.

Data Type: String

Range: NA

Example Value: Valid NSSF Instance ID

Example

Example of Request or Response Body to Enable Server Header:

{
  "enabled": true,
  "errorCodeSeriesId": "E1",
  "configuration": {
    "nfType": "NSSF",
    "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01"
  }
}

Note:

  • In the mentioned configuration, when sending a response to AMF, the Server Header will be appended by the NSSF with the value "NSSF-9faf1bbc-6e4a-4454-a507-aef01a101a01"
  • The values in the above example are samples. Ensure that you update the values of the following parameters according to your deployment:
    • nfType must be NSSF.
    • errorCodeSeriesId: A valid configured value
    • nfInstanceId: Valid NSSF's instance value. It must be same as NSSF's instance ID.
    • Ensure that an errorCodeSeries exists corresponding to the errorCodeSeriesId.

Sample cURL to Enable Server Header:

curl --http2-prior-knowledge -X PUT http://{{host}}:{{port}}/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails -H "Content-Type: application/json" -d '{"enabled":true,"errorCodeSeriesId":"E1","configuration":{"nfType":"NSSF","nfInstanceId":"9faf1bbc-6e4a-4454-a507-aef01a101a01"}}' -v

Example of Request or Response Body to Disable Server Header:

{
  "enabled": false,
  "errorCodeSeriesId": "E1",
  "configuration": {
    "nfType": "NSSF",
    "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01"
  }
}

Sample cURL to Disable Server Header:

curl --http2-prior-knowledge -X PUT http://{{host}}:{{port}}/{nfType}/nf-common-component/v1/{serviceName}/serverheaderdetails -H "Content-Type: application/json" -d '{"enabled":false,"errorCodeSeriesId":"E1","configuration":{"nfType":"NSSF","nfInstanceId":"9faf1bbc-6e4a-4454-a507-aef01a101a01"}}' -v

Note:

  • enabled is used to enable or disable the feature.
  • nfType and nfInstanceId are used to form the Server Header.
  • Ensure that an errorCodeSeries exists corresponding to the errorCodeSeriesId.

5.1.2 Configurations to enable Ingress Gateway Pod Protection

This API is used to enable and configure Ingress Gateway Pod Protection Feature in NSSF. To enable the feature, REST API needs to be invoked and update the enabled flag to true.

URI:

/NSSF/nf-common-component/v1/{serviceName}/podprotection

Method: GET, PUT

Note:

Although NSSF does not fully support the PATCH method, it has been partially implemented. The responsibility lies with the operator to abstain from using PATCH and to adhere strictly to the supported methods outlined in the documentation.

Content-Type: application/json

Request or Response Body Parameters

Table 5-2 Request or Response Body Parameters

Field Name Description Details
enabled

This attribute helps enable or disable the "Pod Protection Defense" feature. Setting this attribute to true triggers resource monitoring in the next schedule.

Data Type: Boolean

Range: true or false

Example Value: false

monitoringInterval

This is the interval (in milliseconds) at which the state of the resource will be checked and updated accordingly.

Data Type: integer

Range: minimum 0

Example Value: 0

congestionControl.enabled

This attribute helps enable or disable the congestionControl mechanism from the next schedule.

Data Type: Boolean

Range: true or false

Example Value: false

congestionControl.stateChangeSampleCount

The number of times the pod has to remain in the same state in order to transition to a different state. For example, if the pod is in the normal state (weight 0) and in order to transition from normal to DOC, the pod has to remain in the DOC state for the specified count or time.

Data Type: integer

Range: minimum 0

Example Value: 0

congestionControl.actionSamplingPeriod

The isSchedulerTimeSensitiveAction action will be executed only at the specified time, actionSamplingPeriod * monitoringInterval.

Data Type: integer

Range: minimum 0

Example Value: 0

congestionControl.states.name

The attribute is used to define different states of congestion.

Data Type: String

Range: Normal, DoC, Congested

Example Value: NA

congestionControl.states.weight

Each state is identified by its weight, which defines the level of criticality. The lower the weight, the lower the criticality. For example, the resource threshold for weight 0 (Normal) should be lower than the resource threshold for weight 1 (DOC).

Data Type: integer

Range: minimum 0

Example Value: 0

congestionControl.actionSamplingPeriod.resourceThreshold

The CPU and pending message thresholds for a given state are listed within this array. If the resource consumption exceeds the listed threshold, the corresponding entry action is triggered.

Data Type: array

Range: NA

Example Value: NA

incrementByActionSamplingPeriod

The value of incrementBy increases at a specific interval, which is determined by incrementByActionSamplingPeriod * monitoringInterval. If the value is not specified, the actionSamplingPeriod value will be used as the default.

Data Type: integer

Range: minimum 0

Example Value: 0

decrementByActionSamplingPeriod

The value of decrementBy decreases at a specific interval, which is determined by decrementByActionSamplingPeriod * monitoringInterval. If the value is not specified, the actionSamplingPeriod value will be used as the default.

Data Type: integer

Range: minimum 0

Example Value: 0

Example

Example of Request or Response Body:

Note:

  • For an ASM setup, it is recommend to set the threshold of pendingMessage at DoC state to 500 and at Congested state to 600.
  • As of now, NSSF does not support memory threshold.
{
        "enabled": false,
        "monitoringInterval": 100,
        "congestionControl": {
            "enabled": false,
            "stateChangeSampleCount": 10,
            "actionSamplingPeriod": 3,
            "states": [
                {
                    "name": "Normal",
                    "weight": 0,
                    "entryAction": [
                        {
                            "action": "MaxConcurrentStreamsUpdate",
                            "arguments": {
                                "incrementBy": 30,
                                "incrementByActionSamplingPeriod": 3,
                                "maxConcurrentStreamsPerCon": 100
                            }
                        },
                        {
                            "action": "AcceptIncomingConnections",
                            "arguments": {
                                "accept": true
                            }
                        }
                    ]
                },
                {
                    "name": "DoC",
                    "weight": 1,
                    "resourceThreshold": {
                        "cpu": 60,
                        "pendingMessage": 900
                    },
                    "entryAction": [
                        {
                            "action": "AcceptIncomingConnections",
                            "arguments": {
                                "accept": false
                            }
                        },
                        {
                            "action": "MaxConcurrentStreamsUpdate",
                            "arguments": {
                                "incrementBy": 30,
                                "incrementByActionSamplingPeriod": 3,
                                "decrementBy": 30,
                                "decrementByActionSamplingPeriod": 1,
                                "maxConcurrentStreamsPerCon": 50
                            }
                        }
                    ]
                },
                {
                    "name": "Congested",
                    "weight": 2,
                    "resourceThreshold": {
                        "cpu": 75,
                        "pendingMessage": 1000
                    },
                    "entryAction": [
                        {
                            "action": "AcceptIncomingConnections",
                            "arguments": {
                                "accept": false
                            }
                        },
                        {
                            "action": "MaxConcurrentStreamsUpdate",
                            "arguments": {
                                "decrementBy": 30,
                                "decrementByActionSamplingPeriod": 1,
                                "maxConcurrentStreamsPerCon": 5
                            }
                        }
                    ]
                }
            ]
        }
}

5.1.3 Error Code Profile Configuration in Ingress Gateway

This URI can be used to update the errorCodeProfiles that is used in Overload Control feature for populating details in error responses when a request is discarded. By default, the errorCodeProfiles remains null.

URI:

{apiRoot}/nssf/nf-common-component/v1/igw/errorcodeprofiles

Method:

  • PUT: Update Error Code configuration of the required service.

Content-Type: application/json

Dependency

errorcodeprofiles is used in ocdiscardpolicies to define how different overload levels trigger rejection with specific errors.

Request or Response Body Parameters

Field Name Description Details
name

This is a mandatory parameter.

Error name.

Data Type: string
errorCause

This is an optional parameter.

errorCause field in an errorScenario determines the error cause that needs to be populated in ProblemDetails (Cause field) response from IGW when the exception occurred at IGW matches the configured errorScenario's exceptionType parameter.

Data Type: string
errorCode

This is a mandatory parameter.

errorCode field in an errorScenario determines the HttpStatusCode that needs to be populated in ProblemDetails (HttpStatus field) response from IGW when the exception occurred at IGW matches the configured errorScenario's exceptionType field.

Data Type: integer
errorDescription

This is an optional parameter.

errorDescription field in an errorScenario determines the description that needs to be populated in ProblemDetails (Detail field) response from IGW when the exception occurred at IGW matches the configured errorScenario's exceptionType field.

Data Type: string
errorTitle

This is an optional parameter.

errorTitle field in an errorScenario determines the title that needs to be populated in ProblemDetails (Title field) response from IGW when the exception occurred at IGW matches the configured errorScenario's exceptionType parameter.

Data Type: string
redirectURL

This is an optional parameter.

redirectUrl field in an errorScenario determines the redirection URL, this value is populated in LOCATION header while sending response from IGW. The header is populated only when the exception occurred at IGW matches the configured errorScenario's exceptionType parameter, the errorCode configured for the particular errorScenario lies in 3xx error series and the redirectUrl field for the particular errorScenario is configured appropriately.

Data Type: string
retry-after

This is an optional parameter.

retryAfter field in an errorScenario determines the value in seconds or particular date after which the service should be retried, this value is populated in retry-after header while sending response from IGW. The header is populated only when the exception occurred at IGW matches the configured errorScenario's exceptionType parameter, the errorCode configured for the particular errorScenario lies in 3xx error series and the retryAfter field for the particular errorScenario is configured appropriately in seconds.

Data Type: string

Example

Example of Request or Response Body:
[
    {
        "name": "error429",
        "errorCode": 429,
        "errorCause": "Too many requests",
        "errorTitle": "Too many requests",
        "redirectURL": "",
        "retry-after": "",
        "errorDescription": "Too many requests"
    },
    {
        "name": "error503",
        "errorCode": 503,
        "errorCause": "Backend not able to handle traffic",
        "errorTitle": "Backend not able to handle traffic",
        "redirectURL": "",
        "retry-after": "",
        "errorDescription": "Backend not able to handle traffic"
    }
]
Sample cURL:
curl-i --http2-prior-knowledge-X PUT 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/igw/errorcodeprofiles'-H 'Content-Type: application/json' --data-raw '[{"name":"error429","errorCode":429,"errorCause":"Too many requests","errorTitle":"Too many requests","redirectURL":"","retry-after":"","errorDescription":"Too many requests"},{"name":"error503","errorCode":503,"errorCause":"Backend not able to handle traffic","errorTitle":"Backend not able to handle traffic","redirectURL":"","retry-after":"","errorDescription":"Backend not able to handle traffic"}]'

5.1.4 Discard Policy Configuration in Ingress Gateway

This URI can be used to update discard policies that will be used in overload control to select the appropriate policy from the configured list based on the load level of a particular service. By default, ocDicardPolicies is null.

URI:

{apiRoot}/nssf/nf-common-component/v1/igw/ocdiscardpolicies

  • PUT: Update discard policy configuration of the required service.

Content-Type: application/json

Dependency

  • ocdiscardpolicies use errorcodeprofiles to decide the error message when rejecting requests.
  • ocdiscardpolicies are used by ocpolicymapping to associate services with specific overload handling policies.

Request or Response Body Parameters

Field Name Description Details
name

This is a mandatory parameter.

Name of the discarded policy.

Note: name must be the value configured in policyName under ocpolicymapping.

Data Type: string
policies.action

This is an optional parameter.

Defines the action to be taken on selected requests rejection based on error code.

Data Type: string

Example Value: RejectWithErrorCode

policies.errorCodeProfile

This is an optional parameter.

The error code profiles.

Data Type: string
policies.level

This is an optional parameter.

Defines the overload level.

Data Type: string
policies.value

This is a mandatory parameter.

Value of priority above which requests are considered as potential candidates for drop. Percentage of requests to drop in the current sampling period over the calculated rate in the previous sampling period.

Data Type: integer
scheme

This is a mandatory parameter.

Discarded policy scheme based on percentage.

Data Type: string

Example

Example of Request or Response Body:
[

    {

        "name": "nsselectionPolicy",

        "scheme": "PercentageBased",

        "policies": [

            {

                "level": "Warning",

                "value": 0,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error429"

            },

            {

                "level": "Minor",

                "value": 10,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error429"

            },

            {

                "level": "Major",

                "value": 25,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error429"

            },

            {

                "level": "Critical",

                "value": 50,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error503"

            }

        ]

    },

    {

        "name": "nsavailabilityPolicy",

        "scheme": "PercentageBased",

        "policies": [

            {

                "level": "Warning",

                "value": 0,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error429"

            },

            {

                "level": "Minor",

                "value": 10,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error429"

            },

            {

                "level": "Major",

                "value": 25,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error429"

            },

            {

                "level": "Critical",

                "value": 50,

                "action": "RejectWithErrorCode",

                "errorCodeProfile": "error503"

            }

        ]

    }

]
Sample cURL:
curl -i --http2-prior-knowledge -X PUT 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/igw/ocdiscardpolicies' -H 'Content-Type: application/json' --data-raw '[{"name":"nsselectionPolicy","scheme":"PercentageBased","policies":[{"level":"Warning","value":0,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Minor","value":10,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Major","value":25,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Critical","value":50,"action":"RejectWithErrorCode","errorCodeProfile":"error503"}]},{"name":"nsavailabilityPolicy","scheme":"PercentageBased","policies":[{"level":"Warning","value":0,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Minor","value":10,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Major","value":25,"action":"RejectWithErrorCode","errorCodeProfile":"error429"},{"level":"Critical","value":50,"action":"RejectWithErrorCode","errorCodeProfile":"error503"}]}]'

5.1.5 Policy Mapping Configuration to Enable Overload Configuration

This URI can be used to update service names and corresponding policy names for the service which is mapped to "ocDiscardPolicies" based on "policyName" and also to enable or disable the Overload Control feature and the sampling period in overload control. By default, the Overload Control feature is disabled and the sampling period is 6000. To enable the feature, REST API needs to be invoked and update the enabled flag to true.

URI:

{apiRoot}/nssf/nf-common-component/v1/igw/ocpolicymapping

Method:

  • GET: Get Policy mapping value of the required service
  • PUT: Update the Policy mapping value of the required service
  • PACTH: Update specific Policy mapping value of the required service

Content-Type: application/json

Dependency

Depends on ocdiscardpolicies to apply the right rejection policy to each service.

Request or Response Body Parameters

Table 5-3 Request or Response Body Parameters

Field Name Description Details
enabled

This is a mandatory parameter.

To enable or disable the Overload Control feature. Set values to true or false, respectively.

Data Type: boolean
mappings This is an optional parameter.

Note: A value for ocPolicyMapping.mappings is required when ocPolicyMapping.enabled is set to true. If ocPolicyMapping.mappings is empty, the Overload Control feature will behave as if it is disabled.

Data Type: Array
mappings.policyName

This is a conditional parameter.

The discard policy entry determines a mapping between the service and discards policy name per service.

Note: If a value for mappings.svcName is provided, then mappings.policyName is mandatory.

Data Type: string
mappings.svcName

This is a conditional parameter.

The service entry to determine a mapping between service and discard policy name per service.svcName must be added in the following format:

<deployment-name>-<servicename>

Note: servicename is fixed and cannot be changed.

Note: If a value for mappings.policyName is provided, then mappings.svcName is mandatory.

Data Type: string
samplingPeriod

This is a mandatory parameter.

The time frame for each cycle of Overload Control per service. Its value is in milliseconds.

Data Type: integer

Example

Example of Request or Response Body:
{
    "enabled": true,
    "mappings": [
        {
            "svcName": "ocnssf-nsselection",
            "policyName": "nsselectionPolicy"
        },
        {
            "svcName": "ocnssf-nsavailability",
            "policyName": "nsavailabilityPolicy"
        }
    ],
    "samplingPeriod": 6000
}
Sample cURL:
curl -i --http2-prior-knowledge -X PUT 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/igw/ocpolicymapping' -H 'Content-Type: application/json' --data-raw '{"enabled": true, "mappings": [{"svcName": "ocnssf-nsselection", "policyName": "nsselectionPolicy"},{"svcName": "ocnssf-nsavailability","policyName": "nsavailabilityPolicy"}],"samplingPeriod": 6000}'

5.1.6 Error Code Series Configuration in Ingress Gateway

This URI can be used to update the errorcodeserieslist that are used in Overload Control feature and Server Header feature to list the configurable exception or error for an error scenario in Ingress Gateway.

URI:

{apiRoot}/nssf/nf-common-component/v1/igw/errorcodeserieslist

Method: PUT to update Error Code Series configuration of the required service.

Content Type: application/json

Dependency

Not directly linked to other configurations but enhances error handling by classifying errors.

Request or Response Body Parameters

Table 5-4 Request or Response Body Parameters

Parameter Description Details
id

This is a mandatory parameter.

Indicates the error code identifier.

Data Type: string
errorCodeSeries

This is a mandatory parameter.

List the error codes for a specific service.

Note: "ErrorCodeSeries" is configured only if a set of error responses with specific error codes is expected in server header. If it is not configured then all the error responses will have server header.

Data Type: string
exceptionList

This is an optional parameter.

Lists the configurable exception or error for an error scenario in Ingress Gateway.

Data Type: string

Range:

  • ConnectionTimeout
  • RequestTimeout
  • UnknownHostException
  • ConnectException
  • NotFoundException
errorSet

This is a mandatory parameter.

Possible values for "errorSet" attribute: 5xx, 4xx, 3xx

Data Type: string
errorCodes

This is a mandatory parameter.

Possible values include all error codes in the respective HttpSeries value assigned for "errorSet".

Note: Use single value of "-1" if all error codes in that HttpSeries are to be considered.

For example:
  • If the series is 4XX, the values should be between 400-499.
  • If the series is 5XX, the values should be between 500-599.

Onus is on operator to configure the errorCodes properly as explained above.

Data Type: string

Example

Example of Request or Response Body:

[
  {
    "id": "E1",
    "exceptionList": [
      "RequestTimeout",
      "ConnectionTimeout",
      "UnknownHostException",
      "NotFoundException"
    ],
    "errorCodeSeries": [
      {
        "errorSet": "4xx",
        "errorCodes": [
          400,
          408
        ]
      },
      {
        "errorSet": "5xx",
        "errorCodes": [
          500,
          503
        ]
      }
    ]
  }
]
Example with recommended configuration to enable Server Headers for all 5xx and 4xx error codes:

[
    {
        "id": "E1",
        "errorCodeSeries":
        [
            {
                "errorSet": "4xx",
                "errorCodes": [-1]
            },
            {
                "errorSet": "5xx",
                "errorCodes": [-1]
            }
        ]
    }
]

Sample cURL:

curl --http2-prior-knowledge -X PUT http://{{host}}:{{port}}/{nfType}/nf-common-component/v1/{serviceName}/{instanceId}/errorcodeserieslist -H "Content-Type: application/json" -d '[{"id":"E1","exceptionList":["RequestTimeout","ConnectionTimeout","UnknownHostException","NotFoundException"],"errorCodeSeries":[{"errorSet":"4xx","errorCodes":[400,429]},{"errorSet":"5xx","errorCodes":[500,503]}]}]' -v

5.1.7 Routes Configuration in Ingress Gateway

The configuration of "routesconfiguration" is required for Server Header and Overload control feature to map route ID and its corresponding route-level configuration. By default, this configuration is null.

URI:

/{nfType}/nf-common-component/v1/{serviceName}/routesconfiguration

Note:

Ensure that route ID (routesConfig[0].id) used in REST configuration is same as the route ID used in values.yaml file.

Method: GET, PUT, PATCH

Content-Type: application/json

Request or Response Body Parameters

Dependency

routesconfiguration defines routing behaviors and associates services with error code series. It references errorCodeSeriesId which is defined in id attribute in errorcodeserieslist.

Table 5-5 Request or Response Body Parameters

Parameter Description Details
id

This is a mandatory parameter.

Specifies the route IDs for which you need to define server header

Data Type: string

Range: NA

Example Value: "availability_mapping"

serverHeaderDetails.enabled

This is an optional parameter.

Set the value for this parameter to true if you want to define server header at the route level.

Data Type: boolean

Range: true or false

Example Value: true

serverHeaderDetails.errorCodeSeriesId

This is an optional parameter.

Specifies the error list IDs

Note: Ensure that an errorCodeSeries exists corresponding to the errorCodeSeriesId

Data Type: String

Range: NA

Example Value: NA

Example

Example of Request or Response Body

[
  {
    "id": "availability_mapping",
    "serverHeaderDetails": {
      "enabled": true,
      "errorCodeSeriesId": "E2"
    }
  },
  {
    "id": "nsselection_mapping",
    "serverHeaderDetails": {
      "enabled": false,
      "errorCodeSeriesId": "E2"
    }
  }
]

Sample cURL:

curl --http2-prior-knowledge -X PUT http://ocnssf-nsconfig:8080/{nfType}/nf-common-component/v1/igw/routesconfiguration -H "Content-Type: application/json" -d '[ { "id": "availability_mapping", "serverHeaderDetails": { "enabled": true, "errorCodeSeriesId": "E2" } }, { "id": "nsselection_mapping", "serverHeaderDetails": { "enabled": false, "errorCodeSeriesId": "E2" } } ]' -v

5.1.8 Perf-Info REST APIs

This section explains REST API configurations required at Perf-Info to enable Overload control feature:

5.1.8.1 Overload Level Threshold Configuration in Perf-Info

URI:

{apiRoot}/nssf/nf-common-component/v1/perf-info/overloadLevelThreshold

Method:

  • GET: Get the Overload Threshold Value of the required service (Backend service).
  • PUT: Update the Overload Threshold Value of the required service (Backend service).
  • DELETE: Delete the Overload Threshold Value of the required service (Backend service).

Content-Type: application/json

Dependency

Determines when a service is considered overloaded. It triggers ocdiscardpolicies when thresholds are exceeded, causing requests to be rejected with predefined error responses.

Request or Response Body Parameters

Table 5-6 Request or Response Body Parameters

Parameter Description Details
svcName

This is a mandatory parameter.

Name of the backend service.

Data Type: string
metricsThresholdList.metricsName

This is a mandatory parameter.

Name of overload indicator such as cpu, svc_failure_count, svc_pending_count, and memory.

Data Type: string
metricsThresholdList.levelThresholdList.onsetValue

This is a mandatory parameter.

The metricsThresholdList.levelThresholdList.level is considered to be breached if the metricsThresholdList.metricsName value has crossed this onset value.

Data Type: integer
metricsThresholdList.levelThresholdList.level

This is a mandatory parameter.

Specifies the name of the level. The name specified in this parameter must match the level name in Ingress Gateway's ocdiscardpolicies.

Data Type: string
metricsThresholdList.levelThresholdList.abatementValue

This is a mandatory parameter.

The overload condition is considered as cleared this level, if the metricsThresholdList.metricsName is below the abatement value.

Data Type: integer
metricsThresholdList.levelThresholdList

This is a mandatory parameter.

List of threshold values.

Data Type: array
metricsThresholdList

This is a mandatory parameter.

List of criteria used to calculate the load level.

Data Type: array

Example

Example of Request or Response Body:
[
  {
    "svcName": "ocnssf-nsselection",
    "metricsThresholdList": [
      {
        "metricsName": "svc_failure_count",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 250,
            "abatementValue": 200
          },
          {
            "level": "Minor",
            "onsetValue": 400,
            "abatementValue": 350
          },
          {
            "level": "Major",
            "onsetValue": 600,
            "abatementValue": 480
          },
          {
            "level": "Critical",
            "onsetValue": 900,
            "abatementValue": 720
          }
        ]
      },
      {
        "metricsName": "memory",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 87,
            "abatementValue": 85
          },
          {
            "level": "Minor",
            "onsetValue": 90,
            "abatementValue": 87
          },
          {
            "level": "Major",
            "onsetValue": 95,
            "abatementValue": 90
          },
          {
            "level": "Critical",
            "onsetValue": 99,
            "abatementValue": 95
          }
        ]
      },
      {
        "metricsName": "cpu",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 80,
            "abatementValue": 75
          },
          {
            "level": "Minor",
            "onsetValue": 85,
            "abatementValue": 80
          },
          {
            "level": "Major",
            "onsetValue": 90,
            "abatementValue": 85
          },
          {
            "level": "Critical",
            "onsetValue": 95,
            "abatementValue": 90
          }
        ]
      },
      {
        "metricsName": "svc_pending_count",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 100,
            "abatementValue": 60
          },
          {
            "level": "Minor",
            "onsetValue": 200,
            "abatementValue": 125
          },
          {
            "level": "Major",
            "onsetValue": 260,
            "abatementValue": 201
          },
          {
            "level": "Critical",
            "onsetValue": 400,
            "abatementValue": 300
          }
        ]
      }
    ]
  },
  {
    "svcName": "ocnssf-nsavailability",
    "metricsThresholdList": [
      {
        "metricsName": "svc_failure_count",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 65,
            "abatementValue": 60
          },
          {
            "level": "Minor",
            "onsetValue": 130,
            "abatementValue": 120
          },
          {
            "level": "Major",
            "onsetValue": 260,
            "abatementValue": 240
          },
          {
            "level": "Critical",
            "onsetValue": 520,
            "abatementValue": 480
          }
        ]
      },
      {
        "metricsName": "memory",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 60,
            "abatementValue": 55
          },
          {
            "level": "Minor",
            "onsetValue": 65,
            "abatementValue": 60
          },
          {
            "level": "Major",
            "onsetValue": 70,
            "abatementValue": 65
          },
          {
            "level": "Critical",
            "onsetValue": 75,
            "abatementValue": 70
          }
        ]
      },
      {
        "metricsName": "cpu",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 60,
            "abatementValue": 55
          },
          {
            "level": "Minor",
            "onsetValue": 65,
            "abatementValue": 60
          },
          {
            "level": "Major",
            "onsetValue": 70,
            "abatementValue": 65
          },
          {
            "level": "Critical",
            "onsetValue": 75,
            "abatementValue": 70
          }
        ]
      },
      {
        "metricsName": "svc_pending_count",
        "levelThresholdList": [
          {
            "level": "Warning",
            "onsetValue": 3,
            "abatementValue": 1
          },
          {
            "level": "Minor",
            "onsetValue": 6,
            "abatementValue": 3
          },
          {
            "level": "Major",
            "onsetValue": 12,
            "abatementValue": 6
          },
          {
            "level": "Critical",
            "onsetValue": 24,
            "abatementValue": 12
          }
        ]
      }
    ]
  }
]
Sample cURL:
curl -i --http2-prior-knowledge -X GET 'http://ocnssf-nsconfig:{{port}}/nssf/nf-common-component/v1/perf-info/overloadLevelThreshold'

5.1.9 Configuration To Check If Overload Control in Enabled

This section explains REST API to check if overload control is enabled:

5.1.9.1 To Check Current Load Level

This API is used to check current load level on the NSSF services.

API:

http://ocnssf-ingress-gateway:80/igw/load-level?svcName=ocnssf-nsselection

http://ocnssf-ingress-gateway:80/igw/load-level?svcName=ocnssf-nsavailability

Method: GET

Content Type: application/json

cURL Command:

NsSelection:

curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/load-level?svcName=ocnssf-nsselection

NsAvailability:


curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/load-level?svcName=ocnssf-nsavailability

Response: Normal

5.1.9.2 To Check Pending Count

This API is used to check pending counts of requests with the NSSF services.

API:

http://ocnssf-ingress-gateway:80/igw/pending-req-count?svcName=ocnssf-nsselection

http://ocnssf-ingress-gateway:80/igw/pending-req-count?svcName=ocnssf-nsavailability

Method: GET

Content Type: application/json

cURL Command:

NsSelection:



curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/pending-req-count?svcName=ocnssf-nsselection

NsAvailability:

curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/pending-req-count?svcName=ocnssf-nsavailability

Response:

{
  "svc_pending_count": [
    {
      "svcName": "ocnssf-nsselection",
      "count": 52
    }
  ]
}
5.1.9.3 To Check Failure Count

This API is used to check failure counts of requests with the NSSF services.

API:

http://ocnssf-ingress-gateway:80/igw/failed-req-count?svcName=ocnssf-nsselection

http://ocnssf-ingress-gateway:80/igw/failed-req-count?svcName=ocnssf-nsavailability

Method: GET

Content Type: application/json

cURL Command:

NsSelection:

curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/failed-req-count?svcName=ocnssf-nsselection

NsAvailability:

curl -i --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/igw/failed-req-count?svcName=ocnssf-nsavailability

Response:

{
  "svc_failure_count": [
    {
      "svcName": "ocnssf-nsselection",
      "count": 7780
    }
  ]
}
5.1.9.4 To Check NF_CONGESTION_RISK for NsAvailability

This API is used to check the risk of congestion on NsAvailability service.

API:

http://ocnssf-ingress-gateway:80/nnssf-nssaiavailability/v1/nssai-availability/1

Method: PUT

Content Type: application/json

cURL Command:

NsAvailability:

curl -v --http2-prior-knowledge -X PUT http://ocnssf-ingress-gateway:{{port}}/nnssf-nssaiavailability/v1/nssai-availability/12345678-abcd-efAB-CDEF-123456789015 -H 'Content-Type: application/json' -d '{ "supportedNssaiAvailabilityData": [ { "tai": { "plmnId": { "mcc": "100", "mnc": "101" }, "tac": "323052" }, "supportedSnssaiList": [ { "sd": "EABB05", "sst": 5 }, { "sd": "EABB04", "sst": 4 } ] } ] }'

Response:

{
  "type": null,
  "title": "NF_CONGESTION_RISK",
  "status": 429,
  "detail": "Too many requests",
  "instance": null,
  "cause": "NF_CONGESTION_RISK",
  "invalidParams": null
}
5.1.9.5 To Check NF_CONGESTION_RISK for NsSelection

This API is used to check the risk of congestion on NsSelection service.

API:

http://ocnssf-ingress-gateway:80/nnssf-nsselection/v2/network-slice-information

Method: GET

Content Type: application/json

cURL Command:

NsSelection:

curl -v --http2-prior-knowledge -X GET http://ocnssf-ingress-gateway:{{port}}/nnssf-nsselection/v2/network-slice-information?nf-id=12345678-abcd-efAB-CDEF-123456789012&nf-type=AMF&tai=%7B%0A%09%22plmnId%22%3A%0A%09%09%7B%0A%09%09%09%22mcc%22%3A%22100%22%2C%0A%09%09%09%22mnc%22%3A%22101%22%0A%09%09%7D%2C%0A%09%22tac%22%3A%22100001%22%0A%7D&slice-info-request-for-pdu-session=%7B%0A%22sNssai%22%3A%20%0A%09%09%7B%0A%09%09%09%22sst%22%3A%2217656757%22%2C%0A%09%09%09%22sd%22%3A%22EABB01%22%0A%09%09%7D%2C%0A%09%22roamingIndication%22%3A%20%22NON_ROAMING%22%0A%7D

Response:

{
  "type": null,
  "title": "NF_CONGESTION_RISK",
  "status": 429,
  "detail": "Too many requests",
  "instance": null,
  "cause": "NF_CONGESTION_RISK",
  "invalidParams": null
}

5.2 Egress Gateway REST APIs

This section explains REST API configurations required at Egress Gateway for various features.

5.2.1 Peer Configuration

This resource is used in SBIRouting feature. This URI can be used to add or update the list of peers wherein each peer consists of ID, host, port or virtualHost, and apiPrefix. The ID of each peer is mapped to peerIdentifier in "peersetconfiguration" resource. The default value is null.

URI:

{apiRoot}/nssf/nf-common-component/v1/egw/peerconfiguration

Method supported: PUT, PATCH, GET

Resource: array (peerConfiguration)

Table 5-7 PeerConfiguration

Parameter Data Type Constraints Description
id string Unique value in peer configuration. Identifier for Peer
host string NA

Host details of the Peer. In case of SLF, it is SCP.

It can be IPv4, IPv6, and FQDN details.

virtualHost string NA FQDN details of the peer. This FQDN is sent to Alternate Route Service for DNS-SRV resolution.
port string NA Port details for Peer.
apiPrefix string Keep the value as / only for NRF API prefix details for Peer.
healthApiPath string Valid path Parameter to support SCP health check API. It contains path of the health API.

Dependency: It is mandatory to configure peerconfiguration with healthApiPath if you want to enable peermonitoringconfiguration.

Example:

 curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/peerconfiguration" -H  "Content-Type: application/json" -d peer.json
  
Sample peer.json:-
[
  {
    "id": "peer1",
    "host": "scp1",
    "port": "8080",
    "apiPrefix": "/",
    "healthApiPath": "/health/v1"
  },
  {
    "id": "peer2",
    "host": "scp2",
    "port": "8080",
    "apiPrefix": "/",
    "healthApiPath": "/health/v2"
  },
  {
    "id": "peer3",
    "host": "scp3",
    "port": "8080",
    "apiPrefix": "/",
    "healthApiPath": "/health/v3"
  },
  {
    "id": "peer4",
    "host": "scp4",
    "port": "8080",
    "apiPrefix": "/",
    "healthApiPath": "/health/v4"
  },
  {
    "id": "peer5",
    "virtualHost": "xyz.test.com",
    "apiPrefix": "/",
    "healthApiPath": "/health/v5"
  },
  {
    "id": "peer6",
    "virtualHost": "abc.test.com",
    "apiPrefix": "/",
    "healthApiPath": "/health/v6"
  }
]

5.2.2 Peer Set Configuration

This resource is used in SBIRouting feature. This URI can be used to add or update the list of peer sets wherein each peer set consists of ID and list of http or https instances. Each instance consists of priority and peer identifier that is mapped to id in "peerconfiguration" resource. The id of each peer set is mapped to peerSetIdentifier in routesconfiguration resource. The default value is null.

API:

nssf/nf-common-component/v1/egw/peersetconfiguration

Method supported: PUT, PATCH, GET

Resource: array (peerSetConfiguration)

Table 5-8 PeerSetConfiguration

Parameter Data Type Constraints Description
id string Unique value in peerset configuration. Identifier for peer set.
httpConfiguration array(PeerIdentifierConfiguration) Both http and https need to be configured irrespective of which scheme is supported. Configuration for HTTP based peers. This value will be selected if 3GPPAPIRootScheme value is http.
httpsConfiguration array(PeerIdentifierConfiguration) Both http and https need to be configured irrespective of which scheme is supported. Configuration for HTTPs based Peers. This value will be selected if 3GPPAPIRootScheme value is https.

Table 5-9 Peer Identifier Configuration

Parameter Data Type Constraints Description
priority integer Priority should be unique Priority of peer to be used in a peer set.
peerIdentifier string NA Peer Identifier is the value of Peer configured during PeerConfiguration

Dependency: PeerConfiguration must be done before adding PeerSetConfiguration.

Example:

curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/peersetconfiguration" -H  "Content-Type: application/json" -d @peerset.json
 
sample peerset.json
[
  {
    "id": "set0",
    "httpConfiguration": [
      {
        "priority": 1,
        "peerIdentifier": "peer1"
      },
      {
        "priority": 2,
        "peerIdentifier": "peer2"
      },
      {
        "priority": 3,
        "peerIdentifier": "peer3"
      },
      {
        "priority": 4,
        "peerIdentifier": "peer4"
      }
    ],
    "httpsConfiguration": [
      {
        "priority": 1,
        "peerIdentifier": "peer1"
      },
      {
        "priority": 2,
        "peerIdentifier": "peer2"
      },
      {
        "priority": 3,
        "peerIdentifier": "peer3"
      },
      {
        "priority": 4,
        "peerIdentifier": "peer4"
      }
    ]
  },
  {
    "id": "set1",
    "httpConfiguration": [
      {
        "priority": 1,
        "peerIdentifier": "peer5"
      }
    ],
    "httpsConfiguration": [
      {
        "priority": 1,
        "peerIdentifier": "peer6"
      }
    ]
  }
]

5.2.3 Error Criteria Sets

API: nssf/nf-common-component/v1/egw/sbiroutingerrorcriteriasets

Resource: array (sbiroutingerrorcriteriasets)

Table 5-10 Error Criteria Sets

Parameter Data Type Constraints Description
id string Unique value of Route. Unique id for a sbiRoutingErrorCriteriaSet
method array GET, POST, PUT, DELETE, PATCH The type of methods for which the re-route need to be attempted.
exceptions array string NA Specific exceptions for which reroute or retry will be triggered.
statusSeries string 4xx/5xx Http statusSeries for which reroute or retry will be triggered when we get error response from downstream.
status NA 401/404 or -1 Specific HTTP statuses that belongs to above mentioned statusSeries for which reroute/retry has to be triggered. To enable retry or reroute for all the HTTP status belonging to a statusSeries, configure this as -1.

Example:

curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/sbiroutingerrorcriteriasets" -H  "Content-Type: application/json" -d 
 
sample body.json:-
[
  {
    "id": "criteria_0",
    "method": [
      "GET",
      "POST",
      "PUT",
      "DELETE",
      "PATCH"
    ],
    "exceptions": [
      "java.util.concurrent.TimeoutException",
      "java.net.UnknownHostException"
    ]
  },
  {
    "id": "criteria_1",
    "method": [
      "GET",
      "POST",
      "PUT",
      "DELETE",
      "PATCH"
    ],
    "response": {
      "statuses": [
        {
          "statusSeries": "4xx",
          "status": [
            400,
            404
          ]
        },
        {
          "statusSeries": "5xx",
          "status": [
            500,
            503
          ]
        }
      ]
    }
  }
]

5.2.4 Error Action Sets

API: nssf/nf-common-component/v1/egw/sbiroutingerroractionsets

Resource: array (sbiroutingerroractionsets)

Table 5-11 Error Action Sets

Parameter Data Type Constraints Description
id string Unique value of Route Unique id for sbiRoutingErrorActionSet.
action string reroute, retry Action that needs to be taken when specific criteria set is matched. Currently we support only 2 values. reroute or retry
attempts integer NA Maximum no of retries to either same or different peer in case of error or failures from backend.
enabled boolean true,false This flag enables the peer blocklist feature using the server headers received in the response.
duration integer seconds The duration for which the peer will be blocked and no traffic will be routed to that peer for this period.

Example:

curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/sbiroutingerroractionsets" -H  "Content-Type: application/json" -d  
 
sample body.json:-
[
  {
    "id": "action_0",
    "action": "reroute",
    "attempts": 3,
    "blacklist": {
      "enabled": false,
      "duration": 60000
    }
  },
  {
    "id": "action_1",
    "action": "reroute",
    "attempts": 3,
    "blacklist": {
      "enabled": false,
      "duration": 60000
    }
  }
]

5.2.5 Routes Configuration

This URI can be used to add or update list of routes. The ID of each route must match the route ID present in Helm chart only if routeConfigMode is configured as HELM and sbiRoutingConfigMode is configured as REST. The configuration under sbiRoutingConfiguration corresponds to the SBIRouting specific configuration.

API:

nssf/nf-common-component/v1/egw/routesconfiguration

Resource:: array (RoutesConfiguration)

Table 5-12 RoutesConfiguration

Parameter Data Type Constraints Description
id string Unique value of Route

Route configuration identifier.

CAUTION: Default Route with id 'default_route' is configured automatically. Include this route in the message body while adding new routes using PUT operation. Otherwise it will impact the traffic.

uri string NA Provide any dummy URL, or leave the existing URL with existing value.
order integer NA Provide the order of the execution of this route.
sbiRoutingConfiguration SbiRoutingConfiguration details. See Description for child values NA
"sbiRoutingConfiguration": 
{ 
"enabled": true, 
"peerSetIdentifier": "set0" 
}

Keep enabled value to true for SBI routing to work.

peerSetIdentifier is the value configured during PeerSetConfiguration. So, this is mapping of route to Peer Set configuration

httpRuriOnly boolean (true,false) Don't change the value of this Parameter from true. NRF

true: Means scheme of URI is changed to http .

false: Means no change occurred to the scheme.

httpsTargetOnly boolean (true,false) Don't change the value of this Parameter from true. This is required to make SBI routing work for NRF

true: Select SBI instances for https list only (if 3gpp sbi target root header is http).

false: Perform as per provided scheme.

predicates Predicate Structure. See Description NA

Path predicate details for matching SLF path mapped to this SBIRoute rule.

Sample value:

"predicates": [{
"args": {"pattern": "/nudr-group-id-map/v1/nf-group-ids"},
"name": "Path"
}]

All requests with the path indicated in the pattern will be routed to the peers bases on priority. This happens only when sbiRoutingConfiguration is enabled.

Note: Do not change path pattern.

filters Filter Structure. See Description NA Filters can be created for various purposes. Use all of the filters as mentioned in example.

Dependency: Peerconfiguration and Peersetconfiguration must be configured with either set empty list or populated with values before Routes Configuration. These attributes are used for routing only if sbiRoutingConfiguration is enabled for a particular route.

Example:

curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/routesconfiguration" -H  "Content-Type: application/json" -d @header.json
 
sample header.json:-
[
  {
    "id": "egress_scp_proxy1",
    "uri": "http://localhost:32068/",
    "order": 0,
    "metadata": {
      "httpsTargetOnly": false,
      "httpRuriOnly": false,
      "sbiRoutingEnabled": true
    },
    "predicates": [
      {
        "args": {
          "pattern": "/notification/amf2/"
        },
        "name": "Path"
      }
    ],
    "filters": [
      {
        "name": "SbiRouting",
        "args": {
          "peerSetIdentifier": "set0",
          "customPeerSelectorEnabled": true,
          "errorHandling": [
            {
              "errorCriteriaSet": "criteria_1",
              "actionSet": "action_1",
              "priority": 1
            },
            {
              "errorCriteriaSet": "criteria_0",
              "actionSet": "action_0",
              "priority": 2
            }
          ]
        }
      }
    ]
  },
  {
    "id": "default_route",
    "uri": "egress://request.uri",
    "order": 100,
    "filters": [
      {
        "name": "DefaultRouteRetry"
      }
    ],
    "predicates": [
      {
        "args": {
          "pattern": "/**"
        },
        "name": "Path"
      }
    ]
  }
]

5.2.6 Peer Monitoring Configuration

This URI can be used to enable, disable, and configure peer monitoring.

API :

nssf/nf-common-component/v1/{serviceName}/peermonitoringconfiguration

Method supported: PUT, PATCH, GET

Resource: array (peermonitoringconfiguration)

Table 5-13 peermonitoringconfiguration

Attribute Data Type Constraints Description
enabled boolean true or false It is used to enable or disable the peer monitoring feature.
timeout long 300 milliseconds to 10000 milliseconds Attribute to configure the duration of time after which calls to the SCP health API is timed out.
frequency long 300 milliseconds to 10000 milliseconds Indicates the frequency or recurring interval at which Egress Gateway initiates health check calls toward SCP.
failureThreshold integer NA

Indicates the number of failure responses after which a healthy SCP can be marked as unhealthy.

Health API call to given SCP shall fail consecutively to these many attempts before it is marked as "Unavailable" from "Available".

successThreshold integer NA

It indicates the number of successful responses after which an unhealthy SCP can be marked as healthy.

Health API call to given SCP shall succeed consecutively to these many attempts before it is marked as "Available" from "Unavailable".

Dependency: It is mandatory to configure peerconfiguration with healthApiPath if peermonitoringconfiguration is enabled. Enable sbiRoutingConfiguration in RoutesConfig before enabling Peer Monitoring Configuration.

Example:

curl -v -X PUT "http://{{host}}:{{port}}/nssf/nf-common-component/v1/{serviceName}/{instanceId}/peermonitoringconfiguration" -H "Content-Type: application/json" -d @header.json

sample header.json:-
 {
      "enabled":true,
      "timeout":1000,
      "frequency":2000,
      "failureThreshold":3,
      "successThreshold":3
   }

5.2.7 Configurations to Enable or Disable User-Agent Header

To enable the feature, REST API needs to be invoked and the enabled flag needs to be updated to true.

URI:

/{nfType}/nf-common-component/v1/{serviceName}/useragentheader

Method: GET, PUT, PATCH

Content-Type: application/json

Request or Response Body Parameters

Table 5-14 Request or Response Body Parameters

Parameter Description Details
enabled

This is a mandatory parameter.

This parameter specifies whether the feature is enabled or disabled.

Data Type: Boolean

Range: true or false

Example Value: false

nfType

This is a mandatory parameter.

This parameter holds the nfType that is used to generate the User-Agent Header.

Data Type: String

Range: NA

Example Value: NSSF

nfInstanceId

This is a mandatory parameter.

This parameter represents the UUID of the NSSF deployment that is used to generate the User-Agent Header.

Data Type: String

Range: NA

Example Value: Valid NSSF Instance ID

addFqdnToHeader

This is a mandatory parameter.

This parameter specifies if the User-Agent uses the FQDN information under the module to append it when generating the User-Agent Header. The Example Value is set to false meaning that the FQDN information is not encoded into the User-Agent Header during its generation.

Data Type: Boolean

Range: true or false

Example Value: false

nfFqdn

This is an optional parameter.

This is an optional parameter and can be present or not, if operators want to include the FQDN string configured under this section then the parameter userAgentHeader.addFqdnToHeader needs to be enabled.

Data Type: String

Range: NA

Example Value: "nssf.oracle.com"

overwriteHeader

This is a mandatory parameter.

This parameter is used to govern if we want to include the User-Agent Header generated at NSSF Egress Gateway or forward the User-Agent received from service request. Set its value as true.

Note:

When User-Agent Header is enabled but the header information is missing, then it is picked from the OAuthClient module. If the User-Agent Header is present in the request towards AMF or NRF, then the value present in the header is overwritten or forwarded based on the overwriteHeader flag. If the flag is set to true, then the header is overwritten.

Data Type: Boolean

Range: true or false

Example Value: false

Example

Example of Request or Response Body to Enable User-Agent Header:
{
   "enabled": true,
   "nfType": "NSSF",
   "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
"nfFqdn": "nssf.oracle.com",
"addFqdnToHeader": true,
 "overwriteHeader": true
}

Note:

  • In the mentioned configuration, when sending notifications to AMF, the User-Agent Header will be appended by the NSSF with the value "NSSF-9faf1bbc-6e4a-4454-a507-aef01a101a01 nssf.oracle.com."
  • The nfInstanceId and nfFqdn values in the above example are samples. Ensure that you update the values of the nfInstanceId and nfFqdn parameters accordingly.

Sample cURL to enable User-Agent Header:

curl --http2-prior-knowledge -X PUT \
  http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/useragentheader \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "nfType": "NSSF",
    "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
    "nfFqdn": "nssf.oracle.com",
    "addFqdnToHeader": true,
    "overwriteHeader": true
  }' \
  -v
Example of Request or Response Body to Disable User-Agent Header:
{
   "enabled": false,
   "nfType": "NSSF",
   "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
"nfFqdn": "nssf.oracle.com",
"addFqdnToHeader": true,
 "overwriteHeader": true
}

Sample cURL to disable User-Agent Header:

curl --http2-prior-knowledge -X PUT \
  http://{{host}}:{{port}}/nssf/nf-common-component/v1/egw/useragentheader \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": false,
    "nfType": "NSSF",
    "nfInstanceId": "9faf1bbc-6e4a-4454-a507-aef01a101a01",
    "nfFqdn": "nssf.oracle.com",
    "addFqdnToHeader": true,
    "overwriteHeader": true
  }' \
  -v