...
The allowed network type values are: core, access, transport. Network type decides whether you are sending the request for an/cn/tn. Vendor decides which NSSMF the request is sent to.
ESR INFO: Network Type and Vendor, must match with the ESRegistry
(Note: Above block diagram needs update)
Table of Contents
NSMF call NSSMF Adapter APIs
Allocate NSSI:[AN/TN/CN]
Method | URL |
---|---|
POST | {adapter-url}/api/rest/provMns/v1/NSS/SliceProfiles |
Code Block | ||||||
---|---|---|---|---|---|---|
|
...
| ||||||
JSON Viewer | ||||||
---|---|---|---|---|---|---|
| ||||||
| ||||||
{ { "allocateCnNssi": { "nsstId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX", "nssiName "nssiId": "eMBB-001", "NSST-C-001-HDBNJ-NSSMF-01-A-ZX", "nssiName": "eMBB-001", "sliceProfile": { "snssaiListsNSSAIList": [ "001-100001" ], "sliceProfileId": "ab9af40f13f721b5f13539d87484098", "plmnIdListpLMNIdList": [ "460-00", "460-01" ], "perfReq": { "perfReqEmbbList ": [ { { "activityFactor": 50 } ] }, "maxNumberofUEs": 200, "coverageAreaTAList": [ "1", "2", "3", "4" ], "latency": 2, "resourceSharingLevel": "non-shared" }, "endPoint": { "IpAdress": "", "LogicalLinkId": "", "nextHopInfo": "" }, "nsiInfo": { "nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX", "nsiName": "eMBB-001" }, "scriptName": "CN1", "extension": { "XXX": "XXX" } }, "esrInfo": { "vendor": "huawei", "networkType": "core" }, "serviceInfo": { "serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51", "serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b", "globalSubscriberId": "5GCustomer", "serviceTypensiId": "5G" } } NSI-M-001-HDBNJ-NSMF-01-A-ZX", "nssiId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX", "subscriptionServiceType": "5G" } } |
Info:For the value of nsstId, if NSST doesn't contain artifact, the value is NSST UUID, otherwise it is the ID in the artifact file.
Allocate TN NSSI REQ body example:
Attribute | Optional | Description |
---|---|---|
nssiId | Y | When reuse existing NSSI. |
nsstId | Y | NSST artifact ID |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
JSON Viewer | ||||||||
| ||||||||
{ "allocateTnNssi": { "actionTypenetworkSliceInfos": "allocate", "networkSliceInfo": [ { "snssai": "123", "customer": "company_x", "serviceType": "IoT" } ], "transportSliceNetworks": [ { "typeconnectionLinks": "P2P",[ "slaPolicy": { "latencytransportEndpointA": 123, "jitter": 123, "maxBandwidth": 123, "tranportEp_ID_XXX", "reliabilitytransportEndpointB": "1+1_protectiontranportEp_ID_YYY" }, "connectionLinks": [ { "transportEndpointA": "tranportEp_ID_XXXAAA", "transportEndpointB": "tranportEp_ID_YYYBBB" }, ] }, { "connectionLinks": [ { "transportEndpointA": "tranportEp_ID_AAACCC", "transportEndpointB": "tranportEp_ID_BBBDDD" }, ] },{ { "typetransportEndpointA": "MP2MPtranportEp_ID_EEE", "slaPolicytransportEndpointB": {"tranportEp_ID_FFF" "latency": 456, "jitter": 456, "maxBandwidth": 456, "reliability": "unprotected" }, "connectionLinks": [ { "transportEndpointA": "tranportEp_ID_CCC", "transportEndpointB": "tranportEp_ID_DDD" }, { "transportEndpointA": "tranportEp_ID_EEE", "transportEndpointB": "tranportEp_ID_FFF" } ] } ] }, "esrInfo": { "vendor": "huawei", "networkType": "transport" }, "serviceInfo": { "serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51", "serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b", "globalSubscriberId": "5GCustomer", "serviceType": "5G" } } |
Response example:
Status:202
JSON Viewer | ||||
---|---|---|---|---|
| ||||
{"jobId":"db245365e79c47ed88fcd60caa8f6549"} |
Modify NSSI: [AN/TN/CN]
...
}
]
}
]
},
"esrInfo": {
"vendor": "huawei",
"networkType": "transport"
},
"serviceInfo": {
"serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51",
"serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b",
"globalSubscriberId": "5GCustomer",
"subscriptionServiceType": "5G",
"nssiId": "NSST-C-001-HDBNJ-NSSMF-01-A-ZX"
}
} |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
Activate NSSI: [AN/TN/CN]
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/{snssai}/activation |
REQ example:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"actDeActNssi": {
"nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX",
" |
REQ example:
JSON Viewer | ||
---|---|---|
| ||
{ "modifyAnNSSI": { "nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX" }, "nssiName "esrInfo": { "vendor": "eMBB-001huawei", "sNssaiList": [ "001-100001" ], "nsiInfo "networkType": "core/access/transport" }, "serviceInfo": { "nsiId "serviceInvariantUuid": "NSIe75698d9-925a-M4cdd-001-HDBNJ-NSMF-01-A-ZX", "nsiNamea6c0-edacbe6a0b51", "serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b", "globalSubscriberId": "eMBB-0015GCustomer" }, "scriptName, "subscriptionServiceType": "TN15G", "additionalProperties": { "XXX": "XXX" } }, "esrInfo": { "vendor": "huawei", "networkType": "transport" } } |
Response example:
Status:202
JSON Viewer | ||
---|---|---|
| ||
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
...
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
} |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
DeActivate NSSI: [AN/TN/CN]
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/{snssai}/ |
deactivation |
REQ example:
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
| ||||||||
JSON Viewer | ||||||||
| ||||||||
{ "actDeActNssi": { "nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX", "nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX" }, "esrInfo": { "vendor": "huawei", "networkType": "core/access/transport" }, "serviceInfo": { "serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51", "serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b", "globalSubscriberId": "5GCustomer", "serviceTypesubscriptionServiceType": "5G" } } |
Response example:
Status:202
JSON Viewer | ||||||
---|---|---|---|---|---|---|
| ||||||
{"jobId":"db245365e79c47ed88fcd60caa8f6549"} |
...
,
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
} |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
Deallocate NSSI: [AN/TN/CN]
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/nssi/{snssainssiId}/deactivation |
REQ example:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"deAllocateNssi | ||||||||
JSON Viewer | ||||||||
| ||||||||
{ "actDeActNssi": { "nsiId "snssaiList": [ "NSI-001-100001" ], "nsiId": "NSI-M-001-HDBNJ-NSMF-01-A-ZX", "nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX " }, "esrInfo "terminateNssiOption": { "vendor0, "scriptName": "huaweiCN1", "extension": { "XXX": "XXX" } }, "esrInfo": { "vendor": "huawei", "networkType": "core/access/transport" }, "serviceInfo": { "serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51", "serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b", "globalSubscriberId": "5GCustomer", "serviceTypesubscriptionServiceType": "5G", } } |
Response example:
Status:202
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
}
} |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
| ||||||||
JSON Viewer | ||||||||
| ||||||||
{"jobId": "db245365e79c47ed88fcd60caa8f6549" } |
...
Query JOB Status
Method | URL |
POST | {adapter-url}/api/rest/provMns/v1/NSS/nssijobs/{nssiIdjobId} |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
JSON Viewer | ||||||
| ||||||
| ||||||
{ "responseId": "3", "esrInfo{ "deAllocateNssi": { "snssaiListvendor": [ "001-100001huawei" ], "nsiIdnetworkType": "NSIcore/access/transport" }, "serviceInfo": { "nssiId": "NSSI-M-001-HDBNJ-NSMFNSSMF-01-A-ZX", "nssiIdnsiId": "NSSINSI-CM-001-HDBNJ-NSSMFNSMF-01-A-ZX ", "terminateNssiOptionnssiName": 0"eMBB-001", "scriptNamesST": "CN1embb", "extensionPLMNIdList": { "XXX": "XXX" } }, "esrInfo"39-00", "globalSubscriberId": { "vendor": "huawei"5GCustomer", "networkTypesubscriptionServiceType": "core/access/transport" }, "serviceInfo": { 5G" "serviceInvariantUuid": "e75698d9-925a-4cdd-a6c0-edacbe6a0b51", "serviceUuid": "8ee5926d-720b-4bb2-86f9-d20e921c143b", "globalSubscriberId": "5GCustomer", "serviceType": "5G" } } |
Response example:
Status:202
JSON Viewer | ||||||
---|---|---|---|---|---|---|
| ||||||
{"jobId":"db245365e79c47ed88fcd60caa8f6549"} |
Query JOB Status:
...
Method
...
URL
...
POST
...
/api/rest/provMns/v1/NSS/jobs/{jobId}
}
} |
Response Status:200
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"responseDescriptor": {
"status": "processing",
"progress": 20, |
REQ example:
JSON Viewer | ||
---|---|---|
| ||
{ "nsiIdstatusDescription": "NSI-M-001-HDBNJ-NSMF-01-A-ZXInitiating VNF Instance", "responseId": "31", "esrInfo": { "vendornssiId": "huawei", "networkType": "core/access/transport" } } |
...
Attribute |
---|
Status:200
Required | |
---|---|
responseId | N |
Sub-net Capability query
Request can contain the sub-net type. 1 request can be used to fetch capabilities of more than 1 subnet managed by the same NSSMF - for e.g., in case of Transport, a single request can fetch the capabilities of FH, MH and BH subnets managed by the same TN NSSMF.
Method | URL |
---|---|
POST | {adapter-url}/api/rest/provMns/v1/NSS/subnetCapabilityQuery |
REQ example(TN)
JSON Viewer | ||||||
---|---|---|---|---|---|---|
| ||||||
{
"subnetCapabilityQuery": { | ||||||
JSON Viewer | ||||||
| ||||||
{ "responseDescriptor": { "status": "processing", "progress": 20, "statusDescription": "Initiating VNF Instance", "responseId": "1", "nssiIdsubnetTypes": ["TN_FH"] }, "esrInfo": { "vendor": "huawei/ONAP_internal", "networkType": "tn" } } |
Sub-net Capability query
Request can contain the sub-net type. 1 request can be used to fetch capabilities of more than 1 subnet managed by the same NSSMF - for e.g., in case of Transport, a single request can fetch the capabilities of FH, MH and BH subnets managed by the same TN NSSMF.
...
Response example:(TN)
JSON Viewer | ||
---|---|---|
| ||
{
"TN_FH":{
"latency": "",
"maxThroughput": ""
}
} |
Response can be a json blob (or parameter list) containing a minimum set of relevant attributes such as the below (based on 3GPP TS 28.541):
Attribute | AN | CN | TN |
Latency | Yes | Yes | Yes |
maxNumberofUEs | Yes | ||
maxNumberofConns | Yes | ||
Max Throughput | Yes | Yes | Yes |
Terminal density | Yes |
Query NSSI selection capability
Method | URL |
---|---|
POST | {adapter-url}/api/rest/provMns/v1/NSS/NSSISelectionCapability |
REQ example(TN)
JSON Viewer | ||
---|---|---|
| ||
{
"subnetCapabilityQuery": {
"subnetTypes": [
"TN-FH","TN-MH","TN-BH"
]
},
"esrInfo": {
"vendor": "huawei/ONAP",
"networkType": "transport"
}
} |
Response example:(TN)
JSON Viewer | mode | Text
---|
{ "TN-FHesrInfo": { "latencyvendor": "huawei/ONAP_internal", "maxThroughputnetworkType": "transport" }, "TN-MH":{ "latency } |
Response example:
Status:200
JSON Viewer |
---|
{ "selection": "", "maxThroughput": "" }, "TN-BH":{ "latency": "", "maxThroughput": "" } } |
Response can be a json blob (or parameter list) containing a minimum set of relevant attributes such as the below (based on 3GPP TS 28.541):
...
Attribute
...
AN
...
CN
...
TN
...
Latency
...
Yes
...
Yes
...
Yes
...
maxNumberofUEs
...
Yes
...
maxNumberofConns
...
Yes
...
Max Throughput
...
Yes
...
Yes
...
Yes
...
Terminal density
...
Yes
Query NSSI selection capability
...
JSON Viewer |
---|
{
"esrInfo": {
"vendor": "huawei/ONAP",
"networkType": "transport"
}
} |
Response example:
Status:200
JSON Viewer |
---|
{
"selection": "NSMF/NSSMF"
} |
NSSMF Adapter call NSSMF APIs
Allocate NSSI(create NSSI with service): [AN/TN/CN],External NSSMF
...
NSMF/NSSMF"
} |
NSSMF Adapter call NSSMF APIs
Implementation difference
For Jobstatus api, the internal NSSMF needs to update db table resource_operation_status, the external NSSMF needs to provide this api.
External NSSMF
Allocate NSSI (create NSSI with service)
Method | Domain | URL |
---|---|---|
POST | CN | /api/rest/provMns/{apiVersion}/NSS/SliceProfiles |
POST | AN |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"nsstId": "NSST-C-01V-HBBJ-NSSMF-1-A-ZX",
"nssiName": "CN_eMBB_02",
"sliceProfile": {
"sNSSAIList": [
"001-111113"
],
"sliceProfileId": "CN-001-111113",
"pLMNIdList": [
"460-11"
], | ||||||||
JSON Viewer | ||||||||
| ||||||||
{ "nsstId": "NSST-C-01V-HBBJ-NSSMF-1-A-ZX", "nssiName": "CN_eMBB_02", "sliceProfile": { "snssaiListperfReq": [{ "001-111113" perfReqEmbbList": [ ], { "sliceProfileId": "CN-001-111113", "plmnIdList": [ "460-11" ]"activityFactor": 50, "perfReq": { "perfReqEmbbListexpDataRateDL": [1000, { "expDataRateUL": 1000, "activityFactorareaTrafficCapDL": 501000, "expDataRateDLareaTrafficCapUL": 1000, } "expDataRateUL": 1000, ] }, "areaTrafficCapDLmaxNumberofUEs": 1000200, "maxNumberofPDUSession": 200, "totalDataVolume": 100, "areaTrafficCapULupfDeployLocation": 1000"customer", "coverageAreaTAList": [ }"07D300" ], "latency": 30, "ueMobilityLevel": "stationary", "resourceSharingLevel": "non-shared" }, "nsiInfo": { "nsiId": "NSI-C-002-HBBJ-NSMF-1-A-ZX", "nsiName": "eMBB_02" }, "scriptName": "eMBB_02_base_111113" } |
Response Status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX",
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
DeallocateNSSI (deallocate NSSI with service)
Method | Domain | URL |
---|---|---|
DELETE | CN | /api/rest/provMns/{apiVersion}/NSS/SliceProfiles/{sliceProfileId} |
DELETE | AN |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "nsiId" : "4115d3c8-dd59-45d6-b09d-e756dee9b518", "nssiId" : "1a636c4d-5e76-427e-bfd6-241a947224b0", "snssaiList" : [ "01-6A106175" ], "terminateNssiOption": 0, "scriptName": "CN1" } |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
ActivateNSSI(activate NSSI)
Method | URL |
---|---|
PUT | /api/rest/provMns/{apiVersion}/NSS/{snssai}/activation |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"nsiId" : "ed76c0a0-582d-4885-b75e-b544924addf8",
"nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX"
} |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"jobId": "db245365e79c47ed88fcd60caa8f6549"
} |
DeactivateNSSI(slice proflice(S-NSSAI) deactivate)
Method | URL |
---|---|
PUT | /api/rest/provMns/{apiVersion}/NSS/{snssai}/deactivation |
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "nsiId" }: "ed76c0a0-582d-4885-b75e-b544924addf8", "nssiId": "NSSI-C-001-HDBNJ-NSSMF-01-A-ZX" } |
Response status:202
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "maxNumberofUEsjobId": 200, "maxNumberofPDUSession": 200, "totalDataVolume": 100, "upfDeployLocation": "customer", "coverageAreaTAList": [ "07D300" ], "latency": 30, "ueMobilityLevel": "stationary", "resourceSharingLevel": "non-shared" }, "nsiInfo": { "nsiId": "NSI-C-002-HBBJ-NSMF-1-A-ZX", "nsiName": "eMBB_02" }, "scriptName": "eMBB_02_base_111113" }"db245365e79c47ed88fcd60caa8f6549" } |
GetJobStatus (query the operation progress)
Method | URL |
---|---|
GET | /api/rest/provMns/{apiVersion}/NSS/jobs/{jobId}?responseId={responseId} |
Info: responseId is optional, not necessary.
Response status:200
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"responseDescriptor": {
"status": "processing",
"progress": 40,
"statusDescription": "Preparing for Instantiating NSSI",
"responseId": "2",
"responseHistoryList": [
{
"status": "processing",
"progress": 20,
"statusDescription": "Initiating VNF Instance",
"responseId": "1"
}
]
}
} |