{ "basePath": "/api/NokiaSVNFM/v1", "consumes": [ "application/json" ], "produces": [ "application/json" ], "schemes": [ "http" ], "swagger": "2.0", "info": { "contact": { "email": "onap-discuss@lists.onap.org", "name": "Nokia team", "url": "https://gerrit.onap.org/r/#/admin/projects/vfc/nfvo/lcm" }, "description": "ONAP Nokia CBAM Driver API.", "title": "ONAP Nokia CBAM Driver API", "version": "1.1.0" }, "definitions": { "JobDetailInfo": { "properties": { "jobId": { "type": "string" }, "responseDescriptor": { "properties": { "errorCode": { "type": "string" }, "progress": { "description": "The progress of the job. Value between 0 and 100.", "type": "string" }, "responseHistoryList": { "items": { "$ref": "#/definitions/jobResponseInfo" }, "type": "array" }, "responseId": { "type": "string" }, "status": { "$ref": "#/definitions/JobStatus", "description": "The status of the job" }, "statusDescription": { "description": "The reason of the current status of the job.", "type": "string" } }, "type": "object" } }, "type": "object" }, "JobInfo": { "properties": { "jobId": { "type": "string" } }, "type": "object" }, "JobStatus": { "description": "The status of the job", "enum": [ "started", "processing", "finished", "error", "timeout" ], "type": "string" }, "ScaleDirection": { "description": "The direction of the scaling", "enum": [ "SCALE_IN", "SCALE_OUT" ], "type": "string" }, "VimInfo": { "properties": { "createTime": { "description": "vim info createTime", "type": "string" }, "description": { "description": "vim description", "type": "string" }, "name": { "description": "vim name", "type": "string" }, "password": { "description": "vim login password", "type": "string" }, "sslCacert": { "description": "The collection of trusted certificates towards the VIM connection.", "type": "string" }, "sslInsecure": { "description": "Whether to verify VIM's certificate", "type": "string" }, "status": { "description": "The status of external system", "type": "string" }, "type": { "description": "vim type", "type": "string" }, "url": { "description": "vim url", "type": "string" }, "userName": { "description": "vim login username", "type": "string" }, "vendor": { "description": "vendor name", "type": "string" }, "version": { "description": "vim version", "type": "string" }, "vimId": { "description": "vim Id", "type": "string" } }, "type": "object" }, "VnfHealRequest": { "properties": { "action": { "type": "string" }, "affectedvm": { "properties": { "vduid": { "type": "string" }, "vimid": { "type": "string" }, "vmname": { "type": "string" } }, "type": "object" } }, "type": "object" }, "VnfInfo": { "properties": { "version": { "type": "string" }, "vnfInstanceDescription": { "type": "string" }, "vnfId": { "type": "string" }, "vnfInstanceName": { "type": "string" }, "vnfPackageId": { "type": "string" }, "vnfProvider": { "type": "string" }, "vnfStatus": { "type": "string" }, "vnfType": { "type": "string" }, "vnfdId": { "type": "string" } }, "type": "object" }, "VnfInstInfo": { "properties": { "vnfId": { "description": "VNF instance ID", "type": "string" }, "vnfInstanceName": { "description": "VNF instance name", "type": "string" } }, "type": "object" }, "VnfInstListInfo": { "items": { "$ref": "#/definitions/VnfInstInfo" }, "type": "array" }, "VnfInstantiateRequest": { "properties": { "additionalParam": { "type": "object" }, "extVirtualLink": { "items": { "$ref": "#/definitions/extVirtualLinkInfo" }, "type": "array" }, "vnfDescriptorId": { "type": "string" }, "vnfInstanceDescription": { "type": "string" }, "vnfInstanceName": { "type": "string" }, "vnfPackageId": { "type": "string" } }, "type": "object" }, "VnfInstantiateResponse": { "properties": { "jobId": { "type": "string" }, "vnfId": { "type": "string" } }, "type": "object" }, "VnfScaleRequest": { "properties": { "additionalParam": { "description": "Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled", "type": "object" }, "aspectId": { "description": "Identifies the aspect of the VNF that is requested to be scaled", "type": "string" }, "numberOfSteps": { "description": "Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number", "type": "string" }, "type": { "$ref": "#/definitions/ScaleDirection", "description": "The direction of the scaling." } }, "type": "object" }, "VnfTerminateRequest": { "properties": { "gracefulTerminationTimeout": { "description": "The time interval(second) to wait for the VNF to be taken out of service during graceful termination.", "type": "string" }, "terminationType": { "$ref": "#/definitions/VnfTerminationType", "description": "The type of the termination" } }, "type": "object" }, "VnfTerminationType": { "description": "The type of the termination.", "enum": [ "graceful", "forceful" ], "type": "string" }, "extVirtualLinkInfo": { "type": "object", "properties": { "resourceSubnetId": { "type": "string", "description": "The provider id of the subnet" }, "vlInstanceId": { "type": "string", "description": "The identifier of the virtual link" }, "resourceId": { "type": "string", "description": "The provider id of the network" }, "cpdId": { "type": "string", "description": "The identifier of the connection point descriptor" }, "vim": { "type": "object", "properties": { "vimid": { "type": "string", "description": "The identifier of the VIM" } } } } }, "jobResponseInfo": { "properties": { "errorCode": { "type": "string" }, "progress": { "type": "string" }, "responseId": { "type": "string" }, "status": { "type": "string" }, "statusDescription": { "type": "string" } }, "type": "object" }, "vimInfo": { "properties": { "accessInfo": { "properties": { "password": { "description": "Password of login user", "type": "string" }, "tenant": { "description": "Tenant Name of tenant", "type": "string" }, "username": { "description": "Username for login", "type": "string" } }, "type": "object" }, "interfaceEndpoint": { "description": "Information about the interface endpoint. It is a URL", "type": "string" }, "interfaceInfo": { "properties": { "apiVersion": { "description": "The api Version Type value will be ", "type": "string" }, "protocolType": { "description": "The protocol Type value will be http or https", "type": "string" }, "vimType": { "description": "The vim Type value wil be openstack", "type": "string" } }, "type": "object" }, "vimId": { "type": "string" }, "vimInfoId": { "type": "string" } }, "type": "object" }, "VnfLifecycleChangeNotification": { "type": "object", "description": "The lifecycle change notifications send from CBAM" }, "SoMsoRequest": { "type": "object", "properties": { "requestId": { "required": true, "description": "The identifier of the request in SO. Used to track requests.", "type": "string" }, "serviceInstanceId": { "required": true, "description": "The identifier of the service instance in A&AI.", "type": "string" } } }, "SoV2VnfQueryRequest": { "type": "object", "properties": { "msoRequest": { "required": true, "$ref": "#/definitions/SoMsoRequest" } } }, "SoVnfStatus": { "description": "The status of the VNF", "type": "string", "enum": [ "ACTIVE", "FAILED", "NOTFOUND", "UNKNOWN" ] }, "SoOutput": { "type": "object", "additionalProperties": { "type": "string" } }, "SoInput": { "type": "object", "additionalProperties": { "type": "string" } }, "SoV2VnfQueryResponse": { "type": "object", "properties": { "status": { "required": true, "description": "The status of the VNF", "$ref": "#/definitions/SoVnfStatus" } } }, "SoV2VnfCreateRequest": { "type": "object", "properties": { "cloudOwner": { "required": true, "type": "string", "description": "The owner of cloud in A&AI." }, "regionName": { "required": true, "type": "string", "description": "The regionName of cloud in A&AI." }, "tenantId": { "required": true, "type": "string", "description": "The identifier of the tenant." }, "name": { "required": true, "type": "string", "description": "The name of the VNF." }, "inputs": { "required": false, "description": "The inputs of the VNF.", "$ref": "#/definitions/SoInput" }, "failIfExists": { "required": false, "description": "Should the VNF creation fail if the VNF already exists. (defaults to false)", "type": "boolean" }, "deleteUponFailure": { "required": false, "description": "Delete VNF in case of failure. (defaults to false)", "type": "boolean" }, "msoRequest": { "required": false, "$ref": "#/definitions/SoMsoRequest" } } }, "SoMsoRollback": { "type": "object", "description": "Generic rollback parameters", "properties": { "deleteIfExists": { "required": true, "description": "Delete the VNF if exists", "type": "boolean" }, "vnfIdInAai": { "required": true, "description": "The identifier of the VNF in AAI", "type": "string" }, "msoRequest": { "required": true, "description": "The pointer to the original request that triggered the rollback", "$ref": "#/definitions/SoMsoRequest" } } }, "OriginalVnfProperties": { "type": "object", "additionalProperties": { "type": "string" } }, "SoV2RollbackVnfUpdate": { "allOf": [ { "$ref": "#/definitions/SoMsoRollback" }, { "type": "object", "properties": { "originalVnfProperties": { "required": false, "description": "The original VNF properties before the operation", "$ref": "#/definitions/OriginalVnfProperties" } } } ] }, "SoV2VnfUpdateRequest": { "type": "object", "properties": { "inputs": { "required": false, "description": "The inputs of the VNF.", "$ref": "#/definitions/SoInput" }, "msoRequest": { "required": false, "$ref": "#/definitions/SoMsoRequest" } } }, "SoV2VnfUpdateResponse": { "allOf": [ { "$ref": "#/definitions/SoV2RollbackVnfUpdate" }, { "type": "object", "properties": { "successful": { "required": true, "description": "Is the update successful. The operation can be rolled back regardless of this attribute", "type": "boolean" } } } ] }, "SoV2VnfDeleteRequest": { "type": "object", "properties": { "msoRequest": { "required": false, "$ref": "#/definitions/SoMsoRequest" } } }, "SoV2VfModuleCreateRequest": { "type": "object", "properties": { "scalingAspectId": { "required": true, "description": "The identifier of the scaling aspect", "type": "string" }, "inputs": { "required": false, "description": "The inputs of the VNF.", "$ref": "#/definitions/SoInput" }, "failIfExists": { "required": false, "description": "Should the VNF creation fail if the VNF already exists. (defaults to false)", "type": "boolean" }, "deleteUponFailure": { "required": false, "description": "Delete VF module in case of failure. (defaults to false)", "type": "boolean" }, "msoRequest": { "required": false, "$ref": "#/definitions/SoMsoRequest" } } } }, "paths": { "/{vnfmId}/vnfs": { "post": { "consumes": [ "application/json" ], "description": "VNF create&instantiate Rest API should be provided by the VNFM Driver", "operationId": "vnf_instantiate", "parameters": [ { "description": "The value of vnfmid should be the VNFM Instantiate ID", "in": "path", "name": "vnfmId", "required": true, "type": "string" }, { "description": "instantiate request param", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/VnfInstantiateRequest" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "", "schema": { "$ref": "#/definitions/VnfInstantiateResponse" } } }, "summary": "vnf create&instantiate", "tags": [ "VNFMDriver" ] } }, "/{vnfmId}/vnfs/{vnfId}": { "get": { "consumes": [ "application/json" ], "description": "", "operationId": "query_vnf", "parameters": [ { "description": "The value of vnfmId should be the VNFM Instantiate ID", "in": "path", "name": "vnfmId", "required": true, "type": "string" }, { "description": "The value of vnfId should be the VNF Instantiate ID", "in": "path", "name": "vnfId", "required": true, "type": "string" } ], "produces": [ "application/json" ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/VnfInfo" } }, "404": { "description": "the vnf instance id is wrong" }, "500": { "description": "the url is invalid" } }, "summary": "query the specified vnf info", "tags": [ "VNFMDriver" ] } }, "/{vnfmId}/vnfs/{vnfId}/heal": { "post": { "consumes": [ "application/json" ], "description": "VNF Heal Rest API should be provided by the VNFM Driver", "operationId": "vnf_heal", "parameters": [ { "description": "The value of vnfmId should be the VNFM Instantiate ID", "in": "path", "name": "vnfmId", "required": true, "type": "string" }, { "description": "The value of vnfId should be the VNF Instantiate ID", "in": "path", "name": "vnfId", "required": true, "type": "string" }, { "description": "instantiate request param", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/VnfHealRequest" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "", "schema": { "$ref": "#/definitions/JobInfo" } }, "404": { "description": "the VNF instance id is wrong" }, "500": { "description": "the url is invalid" } }, "summary": "vnf heal", "tags": [ "VNFMDriver" ] } }, "/{vnfmId}/vnfs/{vnfId}/scale": { "post": { "consumes": [ "application/json" ], "description": "VNF Scale Rest API should be provided by the VNFM Driver", "operationId": "vnf_scale", "parameters": [ { "description": "The value of vnfmId should be the VNFM Instantiate ID", "in": "path", "name": "vnfmId", "required": true, "type": "string" }, { "description": "The value of vnfId should be the VNF Instantiate ID", "in": "path", "name": "vnfId", "required": true, "type": "string" }, { "description": "instantiate request param", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/VnfScaleRequest" } } ], "produces": [ "application/json" ], "responses": { "201": { "description": "", "schema": { "$ref": "#/definitions/JobInfo" } }, "404": { "description": "the VNF instance id is wrong" }, "500": { "description": "the url is invalid" } }, "summary": "vnf Scale", "tags": [ "VNFMDriver" ] } }, "/{vnfmId}/vnfs/{vnfId}/terminate": { "post": { "consumes": [ "application/json" ], "description": "VNF terminate&delete Rest API should be provided by the VNFM Driver", "operationId": "terminate_vnf", "parameters": [ { "description": "The value of vnfmId should be the VNFM Instantiate ID", "in": "path", "name": "vnfmId", "required": true, "type": "string" }, { "description": "The value of vnfId should be the VNF Instantiate ID", "in": "path", "name": "vnfId", "required": true, "type": "string" }, { "description": "instantiate request param", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/VnfTerminateRequest" } } ], "produces": [ "application/json" ], "responses": { "204": { "description": "successful operation", "schema": { "$ref": "#/definitions/JobInfo" } }, "404": { "description": "the VNF instance id is wrong" }, "500": { "description": "the url is invalid" } }, "summary": "terminate&delete vnf", "tags": [ "VNFMDriver" ] } }, "/{vnfmId}/jobs/{jobId}": { "get": { "tags": [ "VNFMDriver" ], "summary": "jobstatus", "description": "Job Infomation API should be provided by VNFM Driver", "operationId": "get_jobstatus", "parameters": [ { "required": true, "type": "string", "description": "job Id", "name": "jobId", "in": "path" }, { "required": true, "type": "string", "description": "The value of vnfmId should be the VNFM Instantiate ID", "name": "vnfmId", "in": "path" }, { "required": true, "type": "string", "description": "job response message id", "name": "responseId", "in": "query" } ], "responses": { "202": { "description": "", "schema": { "$ref": "#/definitions/JobDetailInfo" } } } } }, "/lcn": { "get": { "tags": [ "SBI" ], "summary": "Test LCN connectivity from CBAM to driver", "description": "Test LCN connectivity from CBAM to driver", "responses": { "204": { "description": "Used for connectivity test" } } }, "post": { "tags": [ "SBI" ], "consumes": [ "application/json" ], "summary": "Send LCN from CBAM", "description": "Test LCN connectivity from CBAM to driver", "parameters": [ { "description": "The life cycle change notification", "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/VnfLifecycleChangeNotification" } } ], "responses": { "204": { "description": "Used for connectivity test" } } } }, "/swagger.json": { "get": { "tags": [ "Utilities" ], "summary": "The Nokia SVNFM API definition", "description": "The Nokia SVNFM API definition", "responses": { "202": { "description": "The swagger API definition" } } } }, "/convert": { "post": { "tags": [ "Utilities" ], "consumes": [ "multipart/form-data" ], "produces": [ "application/octet-stream" ], "parameters": [ { "description": "The CBAM VNF package", "in": "formData", "name": "fileToUpload", "type": "file" }, { "description": "ONAP version of the package", "in": "formData", "name": "version", "type": "string" } ], "summary": "Converts the Nokia CBAM package to ONAP package", "description": "Converts the Nokia CBAM package to ONAP package", "responses": { "200": { "description": "The converted package", "schema": { "type": "file" } } } }, "get": { "tags": [ "Utilities" ], "produces": [ "text/html" ], "summary": "UI to convert the Nokia CBAM package to ONAP package", "description": "UI to convert the Nokia CBAM package to ONAP package", "responses": { "200": { "description": "The converted package" } } } }, "/so/v2/ping": { "get": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "Test VNFM driver health", "description": "Test VNFM driver health", "responses": { "204": { "description": "VNFM adapter is healthy" } } } }, "/so/v2/vnfs/{vnfIdInAai}/rollback": { "post": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "Rollback VNF update operation", "description": "Rollback VNF update operation", "operationId": "rollback", "consumes": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of the VNF", "name": "vnfIdInAai", "in": "path" }, { "in": "body", "name": "body", "description": "Rollback parameters", "required": true, "schema": { "$ref": "#/definitions/SoV2RollbackVnfUpdate" } } ], "responses": { "204": { "description": "Operation has been rolled back" } } } }, "/so/v2/vnfs/{vnfIdInAai}": { "get": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VNF query", "description": "VNF query", "operationId": "vnf_query", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of the VNF in A&AI.", "name": "vnfIdInAai", "in": "path" }, { "in": "body", "name": "body", "description": "VNF creation query parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VnfQueryRequest" } } ], "responses": { "201": { "description": "", "schema": { "$ref": "#/definitions/SoV2VnfQueryResponse" } }, "404": { "descriotion": "The VNF does not exist on the VNFM side" } } }, "post": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VNF create", "description": "VNF create", "operationId": "vnf_create", "consumes": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of the VNF", "name": "vnfIdInAai", "in": "path" }, { "in": "body", "name": "body", "description": "VNF creation query parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VnfCreateRequest" } } ], "responses": { "204": { "description": "The VNF was created on the VNFM side." }, "400": { "description": "The VNF could not be instantiated on the VNFM side. Failure has been treated according to deleteUponFailure parameter" } } }, "put": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VNF update", "description": "VNF update", "operationId": "vnf_update", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of the VNF", "name": "vnfIdInAai", "in": "path" }, { "in": "body", "name": "body", "description": "VNF update parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VnfUpdateRequest" } } ], "responses": { "200": { "description": "The VNF update has finished. Success is indicated in the success field.", "schema": { "$ref": "#/definitions/SoV2VnfUpdateResponse" } } } }, "delete": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VNF delete", "description": "VNF delete", "operationId": "vnf_delete", "consumes": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of the VNF", "name": "vnfIdInAai", "in": "path" }, { "in": "body", "name": "body", "description": "VNF delete parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VnfDeleteRequest" } } ], "responses": { "204": { "description": "The VNF was successfully deleted." } } } }, "/so/v2/vfmodule/{vnfIdInAai}/{vfModuleId}": { "post": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VF module create", "description": "VF module create", "operationId": "vf_module_create", "consumes": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of VNF in A&AI.", "name": "vnfIdInAai", "in": "path" }, { "required": true, "type": "string", "description": "The identifier of the VF module in A&AI", "name": "vfModuleId", "in": "path" }, { "in": "body", "name": "body", "description": "VNF creation query parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VfModuleCreateRequest" } } ], "responses": { "201": { "description": "The VF module has been created" } } }, "put": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VF module update", "description": "VF module update", "operationId": "vf_module_update", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of VNF in A&AI.", "name": "vnfIdInAai", "in": "path" }, { "required": true, "type": "string", "description": "The identifier of the VF module in A&AI", "name": "vfModuleId", "in": "path" }, { "in": "body", "name": "body", "description": "VNF creation query parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VnfUpdateRequest" } } ], "responses": { "201": { "schema": { "$ref": "#/definitions/SoV2VnfUpdateResponse" } } } }, "delete": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VF module delete", "description": "VF module delete", "operationId": "vf_module_delete", "consumes": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of VNF in A&AI.", "name": "vnfIdInAai", "in": "path" }, { "required": true, "type": "string", "description": "The identifier of the VF module in A&AI", "name": "vfModuleId", "in": "path" }, { "in": "body", "name": "body", "description": "VNF delete parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2VnfDeleteRequest" } } ], "responses": { "204": { "description": "The VNF was successfully deleted." } } } }, "/so/v2/vfmodule/{vnfIdInAai}/{vfModuleId}/rollback": { "put": { "tags": [ "SO VNFM Adaptor V2" ], "summary": "VF module update rollback", "description": "VF module update rollback", "operationId": "vf_module_update rollback", "consumes": [ "application/json" ], "produces": [ "application/json" ], "parameters": [ { "required": true, "type": "string", "description": "The identifier of VNF in A&AI.", "name": "vnfIdInAai", "in": "path" }, { "required": true, "type": "string", "description": "The identifier of the VF module in A&AI", "name": "vfModuleId", "in": "path" }, { "in": "body", "name": "body", "description": "VNF update rollback parameter", "required": true, "schema": { "$ref": "#/definitions/SoV2RollbackVnfUpdate" } } ], "responses": { "204": { "description": "Operation has been rolled back" } } } } } }