{ "swagger": "2.0", "info": { "description": "These are the APIs for the ONAP VNFSDK Marketplace. VNFSDK helps to package and validate VNFs for onboarding into ONAP. You can find out more about VNFSDK at [http://onap.readthedocs.io](http://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/files/vnfsdk-apis.html).", "version": "1.0.0", "title": "ONAP VNFSDK", "contact": { "email": "onap-discuss@lists.onap.org" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "host": "onap.readthedocs.io", "basePath": "/onapapi/marketplace/v1", "tags": [ { "name": "csars", "description": "VNF CSAR information", "externalDocs": { "description": "Find out more", "url": "http://wiki.onap.org" } }, { "name": "VTP Scenario" }, { "name": "VTP Execution" } ], "schemes": [ "http" ], "paths": { "/csars": { "get": { "summary": "Query VNF Package by conditions", "description": "Query VNF package", "operationId": "queryVnf", "produces": [ "application/json" ], "tags": [ "VNF package" ], "parameters": [ { "name": "conditions", "in": "query", "description": "Conditions that need to be considered for filter", "required": true, "type": "array", "items": { "type": "string" }, "collectionFormat": "multi" } ], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/Csars" } } }, "400": { "description": "Invalid status value" } } }, "post": { "summary": "Upload/Re-Upload VNF Package", "description": "", "operationId": "addVnf", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "VNF package" ], "parameters": [ { "in": "body", "name": "body", "description": "VNF objects to add to the Marketplace", "required": true, "schema": { "$ref": "#/definitions/Csars" } } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/ApiResponse" } } } } }, "/csars/{csarId}": { "get": { "tags": [ "csarId" ], "summary": "Find vnf by CSAR ID", "description": "Returns a single vnf", "operationId": "getVnfByCsarId", "produces": [ "application/xml", "application/json" ], "parameters": [ { "name": "csarId", "in": "path", "description": "CSAR ID of VNF to return", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Csars" } }, "400": { "description": "Invalid ID supplied" }, "404": { "description": "VNF not found" } } }, "post": { "tags": [ "csarId" ], "summary": "Updates a VNF in the Marketplace with form data", "description": "", "operationId": "updateCsar", "consumes": [ "application/x-www-form-urlencoded" ], "produces": [ "application/xml", "application/json" ], "parameters": [ { "name": "csarId", "in": "path", "description": "CSAR ID of VNF that needs to be updated", "required": true, "type": "string" }, { "name": "name", "in": "formData", "description": "Updated name of the VNF", "required": false, "type": "string" }, { "name": "fileNamee", "in": "formData", "description": "Updated filename of the csar", "required": false, "type": "string" } ], "responses": { "405": { "description": "Invalid input" } } }, "delete": { "tags": [ "csarId" ], "summary": "Deletes a VNF", "description": "", "operationId": "deleteVnf", "produces": [ "application/xml", "application/json" ], "parameters": [ { "name": "csarId", "in": "path", "description": "VNF CSAR ID to delete", "required": true, "type": "string" } ], "responses": { "400": { "description": "Invalid ID supplied" } } } }, "/csars/{csarId}/files": { "get": { "tags": [ "csarId" ], "summary": "Download vnf", "description": "Download a single vnf", "operationId": "downloadVnf", "produces": [ "application/xml", "application/json" ], "parameters": [ { "name": "csarId", "in": "path", "description": "CSAR ID of VNF to return", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/Csars" } }, "400": { "description": "Invalid ID supplied" }, "404": { "description": "VNF not found" } } } }, "/vtp/scenarios/{scenario}/testsuites": { "get": { "tags": [ "VTP Scenario" ], "summary": " List available test suties in given scenario", "description": "", "operationId": "listTestSuties", "produces": [ "application/json" ], "parameters": [ { "name": "scenario", "in": "path", "description": "Test scenario name", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/VTPTestSuite" } } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } } }, "/vtp/scenarios/{scenario}/testcases": { "get": { "tags": [ "VTP Scenario" ], "summary": " List available test cases", "description": "", "operationId": "listTestcases", "produces": [ "application/json" ], "parameters": [ { "name": "scenario", "in": "path", "description": "Test scenario name", "required": true, "type": "string" }, { "name": "testSuiteName", "in": "query", "description": "Test suite name", "required": false, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/VTPTestCase" } } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } } }, "/vtp/scenarios/{scenario}/testsuites/{testSuiteName}/testcases/{testCaseName}": { "get": { "tags": [ "VTP Scenario" ], "summary": "Retrieve test cases details like inputs outputs and test suite name", "description": "", "operationId": "getTestcase", "produces": [ "application/json" ], "parameters": [ { "name": "scenario", "in": "path", "description": "Test scenario name", "required": true, "type": "string" }, { "name": "testSuiteName", "in": "path", "description": "Test case name", "required": true, "type": "string" }, { "name": "testCaseName", "in": "path", "description": "Test case name", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/VTPTestCase" } }, "404": { "description": "Test case does not exist", "schema": { "$ref": "#/definitions/VTPError" } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } } }, "/vtp/executions/{executionId}": { "get": { "tags": [ "VTP Execution" ], "summary": " Retrieve test execution complete details", "description": "", "operationId": "getTestExecution", "produces": [ "application/json" ], "parameters": [ { "name": "executionId", "in": "path", "description": "Test execution Id", "required": true, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "$ref": "#/definitions/VTPTestExecution" } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } } }, "/vtp/scenarios": { "get": { "tags": [ "VTP Scenario" ], "summary": " List available test scenarios", "description": "", "operationId": "listTestScenarios", "produces": [ "application/json" ], "parameters": [], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/VTPTestScenario" } } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } } }, "/vtp/executions": { "get": { "tags": [ "VTP Execution" ], "summary": " List test executions", "description": "", "operationId": "listTestExecutions", "produces": [ "application/json" ], "parameters": [ { "name": "requestId", "in": "query", "description": "Test request Id", "required": false, "type": "string" }, { "name": "scenario", "in": "query", "description": "Test scenario name", "required": false, "type": "string" }, { "name": "testsuiteName", "in": "query", "description": "Test suite name", "required": false, "type": "string" }, { "name": "testcaseName", "in": "query", "description": "Test case name", "required": false, "type": "string" }, { "name": "profileName", "in": "query", "description": "Test profile name", "required": false, "type": "string" }, { "name": "startTime", "in": "query", "description": "Test execution start time", "required": false, "type": "string" }, { "name": "endTime", "in": "query", "description": "Test execution end time", "required": false, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/VTPTestExecution" } } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } }, "post": { "tags": [ "VTP Execution" ], "summary": "Execute the test case with given inputs in 'executions' form-data as key-value pair of parameter's name vs parameter's value. If parameter is binary type thenmulti-part form-data 'file' should be used to feed the binary file content and it can be more than once. To use the given file as input parameter, prefix the value with file://.", "description": "", "operationId": "executeTestcases1", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "parameters": [ { "name": "requestId", "in": "query", "description": "Request Id", "required": false, "type": "string" }, { "name": "file", "in": "formData", "description": "Testcase File arguments", "required": false, "type": "array", "items": { "$ref": "#/definitions/FormDataBodyPart" }, "collectionFormat": "multi" }, { "name": "executions", "in": "formData", "required": false, "type": "string" } ], "responses": { "200": { "description": "successful operation", "schema": { "type": "array", "items": { "$ref": "#/definitions/VTPTestExecution" } } }, "500": { "description": "Failed to perform the operation", "schema": { "$ref": "#/definitions/VTPError" } } } } } }, "definitions": { "Csars": { "type": "object", "required": [ "csarId" ], "properties": { "type": { "type": "string", "example": "CSAR" }, "name": { "type": "string", "example": "NanocellGateway" }, "fileName": { "type": "string" }, "creationDate": { "type": "string" }, "modificationDate": { "type": "string" }, "readDate": { "type": "string" }, "size": { "type": "string", "example": "37 MB" }, "provider": { "type": "string", "example": "XYZ" }, "version": { "type": "string", "example": "v1.0.0" }, "createTime": { "type": "string" }, "modifyTime": { "type": "string" }, "downloadUri": { "type": "string", "example": "http://msb_ip:msb_port/files/marketplace/CSAR/XYZ/NanocellGW/v1.0" }, "shortdesc": { "type": "string", "example": "XYZ Nanocell Gateway VNF" }, "details": { "type": "string" }, "csarId": { "type": "string", "example": "78ede6f3-66cc-46ab-b748-38a6c010d272" }, "parameters": { "type": "array", "xml": { "name": "parameters", "wrapped": true }, "items": { "type": "string" } } }, "xml": { "name": "Csars" } }, "ApiResponse": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32" }, "type": { "type": "string" }, "message": { "type": "string" } } }, "VTPTestSuite": { "type": "object", "properties": { "name": { "type": "string" } } }, "VTPError": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "httpStatus": { "type": "integer", "format": "int32" } } }, "VTPTestCase": { "type": "object", "properties": { "scenario": { "type": "string" }, "testCaseName": { "type": "string" }, "testSuiteName": { "type": "string" }, "descripton": { "type": "string" }, "author": { "type": "string" }, "inputs": { "type": "array", "items": { "$ref": "#/definitions/VTPTestCaseInput" } }, "outputs": { "type": "array", "items": { "$ref": "#/definitions/VTPTestCaseOutput" } } } }, "VTPTestCaseInput": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "type": { "type": "string" }, "defaultValue": { "type": "string" }, "isOptional": { "type": "boolean" }, "metadata": "type:object" } }, "VTPTestCaseOutput": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "type": { "type": "string" } } }, "VTPTestExecution": { "type": "object", "properties": { "scenario": { "type": "string" }, "testCaseName": { "type": "string" }, "testSuiteName": { "type": "string" }, "executionId": { "type": "string" }, "requestId": { "type": "string" }, "profile": { "type": "string" }, "parameters": { "$ref": "#/definitions/JsonNode" }, "results": { "$ref": "#/definitions/JsonNode" }, "status": { "type": "string" }, "startTime": { "type": "string" }, "endTime": { "type": "string" } } }, "VTPTestScenario": { "type": "object", "properties": { "name": { "type": "string" } } } }, "externalDocs": { "description": "Find out more about VNFSDK", "url": "https://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/index.html" } }