Add SO APIs to Nokia VNFM adapter
[vfc/nfvo/driver/vnfm/svnfm.git] / nokiav2 / driver / src / main / resources / self.swagger.json
1 {
2   "basePath": "/api/NokiaSVNFM/v1",
3   "consumes": [
4     "application/json"
5   ],
6   "produces": [
7     "application/json"
8   ],
9   "schemes": [
10     "http"
11   ],
12   "swagger": "2.0",
13   "info": {
14     "contact": {
15       "email": "onap-discuss@lists.onap.org",
16       "name": "Nokia team",
17       "url": "https://gerrit.onap.org/r/#/admin/projects/vfc/nfvo/lcm"
18     },
19     "description": "ONAP Nokia CBAM Driver API.",
20     "title": "ONAP Nokia CBAM Driver API",
21     "version": "1.1.0"
22   },
23   "definitions": {
24     "JobDetailInfo": {
25       "properties": {
26         "jobId": {
27           "type": "string"
28         },
29         "responseDescriptor": {
30           "properties": {
31             "errorCode": {
32               "type": "string"
33             },
34             "progress": {
35               "description": "The progress of the job. Value between 0 and 100.",
36               "type": "string"
37             },
38             "responseHistoryList": {
39               "items": {
40                 "$ref": "#/definitions/jobResponseInfo"
41               },
42               "type": "array"
43             },
44             "responseId": {
45               "type": "string"
46             },
47             "status": {
48               "$ref": "#/definitions/JobStatus",
49               "description": "The status of the job"
50             },
51             "statusDescription": {
52               "description": "The reason of the current status of the job.",
53               "type": "string"
54             }
55           },
56           "type": "object"
57         }
58       },
59       "type": "object"
60     },
61     "JobInfo": {
62       "properties": {
63         "jobId": {
64           "type": "string"
65         }
66       },
67       "type": "object"
68     },
69     "JobStatus": {
70       "description": "The status of the job",
71       "enum": [
72         "started",
73         "processing",
74         "finished",
75         "error",
76         "timeout"
77       ],
78       "type": "string"
79     },
80     "ScaleDirection": {
81       "description": "The direction of the scaling",
82       "enum": [
83         "SCALE_IN",
84         "SCALE_OUT"
85       ],
86       "type": "string"
87     },
88     "VimInfo": {
89       "properties": {
90         "createTime": {
91           "description": "vim info createTime",
92           "type": "string"
93         },
94         "description": {
95           "description": "vim description",
96           "type": "string"
97         },
98         "name": {
99           "description": "vim name",
100           "type": "string"
101         },
102         "password": {
103           "description": "vim login password",
104           "type": "string"
105         },
106         "sslCacert": {
107           "description": "The collection of trusted certificates towards the VIM connection.",
108           "type": "string"
109         },
110         "sslInsecure": {
111           "description": "Whether to verify VIM's certificate",
112           "type": "string"
113         },
114         "status": {
115           "description": "The status of external system",
116           "type": "string"
117         },
118         "type": {
119           "description": "vim type",
120           "type": "string"
121         },
122         "url": {
123           "description": "vim url",
124           "type": "string"
125         },
126         "userName": {
127           "description": "vim login username",
128           "type": "string"
129         },
130         "vendor": {
131           "description": "vendor name",
132           "type": "string"
133         },
134         "version": {
135           "description": "vim version",
136           "type": "string"
137         },
138         "vimId": {
139           "description": "vim Id",
140           "type": "string"
141         }
142       },
143       "type": "object"
144     },
145     "VnfHealRequest": {
146       "properties": {
147         "action": {
148           "type": "string"
149         },
150         "affectedvm": {
151           "properties": {
152             "vduid": {
153               "type": "string"
154             },
155             "vimid": {
156               "type": "string"
157             },
158             "vmname": {
159               "type": "string"
160             }
161           },
162           "type": "object"
163         }
164       },
165       "type": "object"
166     },
167     "VnfInfo": {
168       "properties": {
169         "version": {
170           "type": "string"
171         },
172         "vnfInstanceDescription": {
173           "type": "string"
174         },
175         "vnfId": {
176           "type": "string"
177         },
178         "vnfInstanceName": {
179           "type": "string"
180         },
181         "vnfPackageId": {
182           "type": "string"
183         },
184         "vnfProvider": {
185           "type": "string"
186         },
187         "vnfStatus": {
188           "type": "string"
189         },
190         "vnfType": {
191           "type": "string"
192         },
193         "vnfdId": {
194           "type": "string"
195         }
196       },
197       "type": "object"
198     },
199     "VnfInstInfo": {
200       "properties": {
201         "vnfId": {
202           "description": "VNF instance ID",
203           "type": "string"
204         },
205         "vnfInstanceName": {
206           "description": "VNF instance name",
207           "type": "string"
208         }
209       },
210       "type": "object"
211     },
212     "VnfInstListInfo": {
213       "items": {
214         "$ref": "#/definitions/VnfInstInfo"
215       },
216       "type": "array"
217     },
218     "VnfInstantiateRequest": {
219       "properties": {
220         "additionalParam": {
221           "type": "object"
222         },
223         "extVirtualLink": {
224           "items": {
225             "$ref": "#/definitions/extVirtualLinkInfo"
226           },
227           "type": "array"
228         },
229         "vnfDescriptorId": {
230           "type": "string"
231         },
232         "vnfInstanceDescription": {
233           "type": "string"
234         },
235         "vnfInstanceName": {
236           "type": "string"
237         },
238         "vnfPackageId": {
239           "type": "string"
240         }
241       },
242       "type": "object"
243     },
244     "VnfInstantiateResponse": {
245       "properties": {
246         "jobId": {
247           "type": "string"
248         },
249         "vnfId": {
250           "type": "string"
251         }
252       },
253       "type": "object"
254     },
255     "VnfScaleRequest": {
256       "properties": {
257         "additionalParam": {
258           "description": "Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled",
259           "type": "object"
260         },
261         "aspectId": {
262           "description": "Identifies the aspect of the VNF that is requested to be scaled",
263           "type": "string"
264         },
265         "numberOfSteps": {
266           "description": "Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number",
267           "type": "string"
268         },
269         "type": {
270           "$ref": "#/definitions/ScaleDirection",
271           "description": "The direction of the scaling."
272         }
273       },
274       "type": "object"
275     },
276     "VnfTerminateRequest": {
277       "properties": {
278         "gracefulTerminationTimeout": {
279           "description": "The time interval(second) to wait for the VNF to be taken out of service during graceful termination.",
280           "type": "string"
281         },
282         "terminationType": {
283           "$ref": "#/definitions/VnfTerminationType",
284           "description": "The type of the termination"
285         }
286       },
287       "type": "object"
288     },
289     "VnfTerminationType": {
290       "description": "The type of the termination.",
291       "enum": [
292         "graceful",
293         "forceful"
294       ],
295       "type": "string"
296     },
297     "extVirtualLinkInfo": {
298       "type": "object",
299       "properties": {
300         "resourceSubnetId": {
301           "type": "string",
302           "description": "The provider id of the subnet"
303         },
304         "vlInstanceId": {
305           "type": "string",
306           "description": "The identifier of the virtual link"
307         },
308         "resourceId": {
309           "type": "string",
310           "description": "The provider id of the network"
311         },
312         "cpdId": {
313           "type": "string",
314           "description": "The identifier of the connection point descriptor"
315         },
316         "vim": {
317           "type": "object",
318           "properties": {
319             "vimid": {
320               "type": "string",
321               "description": "The identifier of the VIM"
322             }
323           }
324         }
325       }
326     },
327     "jobResponseInfo": {
328       "properties": {
329         "errorCode": {
330           "type": "string"
331         },
332         "progress": {
333           "type": "string"
334         },
335         "responseId": {
336           "type": "string"
337         },
338         "status": {
339           "type": "string"
340         },
341         "statusDescription": {
342           "type": "string"
343         }
344       },
345       "type": "object"
346     },
347     "vimInfo": {
348       "properties": {
349         "accessInfo": {
350           "properties": {
351             "password": {
352               "description": "Password of login user",
353               "type": "string"
354             },
355             "tenant": {
356               "description": "Tenant Name of tenant",
357               "type": "string"
358             },
359             "username": {
360               "description": "Username for login",
361               "type": "string"
362             }
363           },
364           "type": "object"
365         },
366         "interfaceEndpoint": {
367           "description": "Information about the interface endpoint. It is a URL",
368           "type": "string"
369         },
370         "interfaceInfo": {
371           "properties": {
372             "apiVersion": {
373               "description": "The api Version Type value will be ",
374               "type": "string"
375             },
376             "protocolType": {
377               "description": "The protocol Type value will be http or https",
378               "type": "string"
379             },
380             "vimType": {
381               "description": "The vim Type value wil be openstack",
382               "type": "string"
383             }
384           },
385           "type": "object"
386         },
387         "vimId": {
388           "type": "string"
389         },
390         "vimInfoId": {
391           "type": "string"
392         }
393       },
394       "type": "object"
395     },
396     "VnfLifecycleChangeNotification": {
397       "type": "object",
398       "description": "The lifecycle change notifications send from CBAM"
399     },
400     "SoMsoRequest": {
401       "type": "object",
402       "properties": {
403         "requestId": {
404           "required": true,
405           "description": "The identifier of the request in SO. Used to track requests.",
406           "type": "string"
407         },
408         "serviceInstanceId": {
409           "required": true,
410           "description": "The identifier of the service instance in A&AI.",
411           "type": "string"
412         }
413       }
414     },
415     "SoV2VnfQueryRequest": {
416       "type": "object",
417       "properties": {
418         "msoRequest": {
419           "required": true,
420           "$ref": "#/definitions/SoMsoRequest"
421         }
422       }
423     },
424     "SoVnfStatus": {
425       "description": "The status of the VNF",
426       "type": "string",
427       "enum": [
428         "ACTIVE",
429         "FAILED",
430         "NOTFOUND",
431         "UNKNOWN"
432       ]
433     },
434     "SoOutput": {
435       "type": "object",
436       "additionalProperties": {
437         "type": "string"
438       }
439     },
440     "SoInput": {
441       "type": "object",
442       "additionalProperties": {
443         "type": "string"
444       }
445     },
446     "SoV2VnfQueryResponse": {
447       "type": "object",
448       "properties": {
449         "status": {
450           "required": true,
451           "description": "The status of the VNF",
452           "$ref": "#/definitions/SoVnfStatus"
453         }
454       }
455     },
456     "SoV2VnfCreateRequest": {
457       "type": "object",
458       "properties": {
459         "cloudOwner": {
460           "required": true,
461           "type": "string",
462           "description": "The owner of cloud in A&AI."
463         },
464         "regionName": {
465           "required": true,
466           "type": "string",
467           "description": "The regionName of cloud in A&AI."
468         },
469         "tenantId": {
470           "required": true,
471           "type": "string",
472           "description": "The identifier of the tenant."
473         },
474         "name": {
475           "required": true,
476           "type": "string",
477           "description": "The name of the VNF."
478         },
479         "inputs": {
480           "required": false,
481           "description": "The inputs of the VNF.",
482           "$ref": "#/definitions/SoInput"
483         },
484         "failIfExists": {
485           "required": false,
486           "description": "Should the VNF creation fail if the VNF already exists. (defaults to false)",
487           "type": "boolean"
488         },
489         "deleteUponFailure": {
490           "required": false,
491           "description": "Delete VNF in case of failure. (defaults to false)",
492           "type": "boolean"
493         },
494         "msoRequest": {
495           "required": false,
496           "$ref": "#/definitions/SoMsoRequest"
497         }
498       }
499     },
500     "SoMsoRollback": {
501       "type": "object",
502       "description": "Generic rollback parameters",
503       "properties": {
504         "deleteIfExists": {
505           "required": true,
506           "description": "Delete the VNF if exists",
507           "type": "boolean"
508         },
509         "vnfIdInAai": {
510           "required": true,
511           "description": "The identifier of the VNF in AAI",
512           "type": "string"
513         },
514         "msoRequest": {
515           "required": true,
516           "description": "The pointer to the original request that triggered the rollback",
517           "$ref": "#/definitions/SoMsoRequest"
518         }
519       }
520     },
521     "OriginalVnfProperties": {
522       "type": "object",
523       "additionalProperties": {
524         "type": "string"
525       }
526     },
527     "SoV2RollbackVnfUpdate": {
528       "allOf": [
529         {
530           "$ref": "#/definitions/SoMsoRollback"
531         },
532         {
533           "type": "object",
534           "properties": {
535             "originalVnfProperties": {
536               "required": false,
537               "description": "The original VNF properties before the operation",
538               "$ref": "#/definitions/OriginalVnfProperties"
539             }
540           }
541         }
542       ]
543     },
544     "SoV2VnfUpdateRequest": {
545       "type": "object",
546       "properties": {
547         "inputs": {
548           "required": false,
549           "description": "The inputs of the VNF.",
550           "$ref": "#/definitions/SoInput"
551         },
552         "msoRequest": {
553           "required": false,
554           "$ref": "#/definitions/SoMsoRequest"
555         }
556       }
557     },
558     "SoV2VnfUpdateResponse": {
559       "allOf": [
560         {
561           "$ref": "#/definitions/SoV2RollbackVnfUpdate"
562         },
563         {
564           "type": "object",
565           "properties": {
566             "successful": {
567               "required": true,
568               "description": "Is the update successful. The operation can be rolled back regardless of this attribute",
569               "type": "boolean"
570             }
571           }
572         }
573       ]
574     },
575     "SoV2VnfDeleteRequest": {
576       "type": "object",
577       "properties": {
578         "msoRequest": {
579           "required": false,
580           "$ref": "#/definitions/SoMsoRequest"
581         }
582       }
583     },
584     "SoV2VfModuleCreateRequest": {
585       "type": "object",
586       "properties": {
587         "scalingAspectId": {
588           "required": true,
589           "description": "The identifier of the scaling aspect",
590           "type": "string"
591         },
592         "inputs": {
593           "required": false,
594           "description": "The inputs of the VNF.",
595           "$ref": "#/definitions/SoInput"
596         },
597         "failIfExists": {
598           "required": false,
599           "description": "Should the VNF creation fail if the VNF already exists. (defaults to false)",
600           "type": "boolean"
601         },
602         "deleteUponFailure": {
603           "required": false,
604           "description": "Delete VF module in case of failure. (defaults to false)",
605           "type": "boolean"
606         },
607         "msoRequest": {
608           "required": false,
609           "$ref": "#/definitions/SoMsoRequest"
610         }
611       }
612     }
613   },
614   "paths": {
615     "/{vnfmId}/vnfs": {
616       "post": {
617         "consumes": [
618           "application/json"
619         ],
620         "description": "VNF create&instantiate Rest API should be provided by the VNFM Driver",
621         "operationId": "vnf_instantiate",
622         "parameters": [
623           {
624             "description": "The value of vnfmid should be the VNFM Instantiate ID",
625             "in": "path",
626             "name": "vnfmId",
627             "required": true,
628             "type": "string"
629           },
630           {
631             "description": "instantiate request param",
632             "in": "body",
633             "name": "body",
634             "required": true,
635             "schema": {
636               "$ref": "#/definitions/VnfInstantiateRequest"
637             }
638           }
639         ],
640         "produces": [
641           "application/json"
642         ],
643         "responses": {
644           "201": {
645             "description": "",
646             "schema": {
647               "$ref": "#/definitions/VnfInstantiateResponse"
648             }
649           }
650         },
651         "summary": "vnf create&instantiate",
652         "tags": [
653           "VNFMDriver"
654         ]
655       }
656     },
657     "/{vnfmId}/vnfs/{vnfId}": {
658       "get": {
659         "consumes": [
660           "application/json"
661         ],
662         "description": "",
663         "operationId": "query_vnf",
664         "parameters": [
665           {
666             "description": "The value of vnfmId should be the VNFM Instantiate ID",
667             "in": "path",
668             "name": "vnfmId",
669             "required": true,
670             "type": "string"
671           },
672           {
673             "description": "The value of vnfId should be the VNF Instantiate ID",
674             "in": "path",
675             "name": "vnfId",
676             "required": true,
677             "type": "string"
678           }
679         ],
680         "produces": [
681           "application/json"
682         ],
683         "responses": {
684           "200": {
685             "description": "successful operation",
686             "schema": {
687               "$ref": "#/definitions/VnfInfo"
688             }
689           },
690           "404": {
691             "description": "the vnf instance id is wrong"
692           },
693           "500": {
694             "description": "the url is invalid"
695           }
696         },
697         "summary": "query the specified vnf info",
698         "tags": [
699           "VNFMDriver"
700         ]
701       }
702     },
703     "/{vnfmId}/vnfs/{vnfId}/heal": {
704       "post": {
705         "consumes": [
706           "application/json"
707         ],
708         "description": "VNF Heal Rest API should be provided by the VNFM Driver",
709         "operationId": "vnf_heal",
710         "parameters": [
711           {
712             "description": "The value of vnfmId should be the VNFM Instantiate ID",
713             "in": "path",
714             "name": "vnfmId",
715             "required": true,
716             "type": "string"
717           },
718           {
719             "description": "The value of vnfId should be the VNF Instantiate ID",
720             "in": "path",
721             "name": "vnfId",
722             "required": true,
723             "type": "string"
724           },
725           {
726             "description": "instantiate request param",
727             "in": "body",
728             "name": "body",
729             "required": true,
730             "schema": {
731               "$ref": "#/definitions/VnfHealRequest"
732             }
733           }
734         ],
735         "produces": [
736           "application/json"
737         ],
738         "responses": {
739           "201": {
740             "description": "",
741             "schema": {
742               "$ref": "#/definitions/JobInfo"
743             }
744           },
745           "404": {
746             "description": "the VNF instance id is wrong"
747           },
748           "500": {
749             "description": "the url is invalid"
750           }
751         },
752         "summary": "vnf heal",
753         "tags": [
754           "VNFMDriver"
755         ]
756       }
757     },
758     "/{vnfmId}/vnfs/{vnfId}/scale": {
759       "post": {
760         "consumes": [
761           "application/json"
762         ],
763         "description": "VNF Scale Rest API should be provided by the VNFM Driver",
764         "operationId": "vnf_scale",
765         "parameters": [
766           {
767             "description": "The value of vnfmId should be the VNFM Instantiate ID",
768             "in": "path",
769             "name": "vnfmId",
770             "required": true,
771             "type": "string"
772           },
773           {
774             "description": "The value of vnfId should be the VNF Instantiate ID",
775             "in": "path",
776             "name": "vnfId",
777             "required": true,
778             "type": "string"
779           },
780           {
781             "description": "instantiate request param",
782             "in": "body",
783             "name": "body",
784             "required": true,
785             "schema": {
786               "$ref": "#/definitions/VnfScaleRequest"
787             }
788           }
789         ],
790         "produces": [
791           "application/json"
792         ],
793         "responses": {
794           "201": {
795             "description": "",
796             "schema": {
797               "$ref": "#/definitions/JobInfo"
798             }
799           },
800           "404": {
801             "description": "the VNF instance id is wrong"
802           },
803           "500": {
804             "description": "the url is invalid"
805           }
806         },
807         "summary": "vnf Scale",
808         "tags": [
809           "VNFMDriver"
810         ]
811       }
812     },
813     "/{vnfmId}/vnfs/{vnfId}/terminate": {
814       "post": {
815         "consumes": [
816           "application/json"
817         ],
818         "description": "VNF terminate&delete Rest API should be provided by the VNFM Driver",
819         "operationId": "terminate_vnf",
820         "parameters": [
821           {
822             "description": "The value of vnfmId should be the VNFM Instantiate ID",
823             "in": "path",
824             "name": "vnfmId",
825             "required": true,
826             "type": "string"
827           },
828           {
829             "description": "The value of vnfId should be the VNF Instantiate ID",
830             "in": "path",
831             "name": "vnfId",
832             "required": true,
833             "type": "string"
834           },
835           {
836             "description": "instantiate request param",
837             "in": "body",
838             "name": "body",
839             "required": true,
840             "schema": {
841               "$ref": "#/definitions/VnfTerminateRequest"
842             }
843           }
844         ],
845         "produces": [
846           "application/json"
847         ],
848         "responses": {
849           "204": {
850             "description": "successful operation",
851             "schema": {
852               "$ref": "#/definitions/JobInfo"
853             }
854           },
855           "404": {
856             "description": "the VNF instance id is wrong"
857           },
858           "500": {
859             "description": "the url is invalid"
860           }
861         },
862         "summary": "terminate&delete vnf",
863         "tags": [
864           "VNFMDriver"
865         ]
866       }
867     },
868     "/{vnfmId}/jobs/{jobId}": {
869       "get": {
870         "tags": [
871           "VNFMDriver"
872         ],
873         "summary": "jobstatus",
874         "description": "Job Infomation API should be provided by VNFM Driver",
875         "operationId": "get_jobstatus",
876         "parameters": [
877           {
878             "required": true,
879             "type": "string",
880             "description": "job Id",
881             "name": "jobId",
882             "in": "path"
883           },
884           {
885             "required": true,
886             "type": "string",
887             "description": "The value of vnfmId should be the VNFM Instantiate ID",
888             "name": "vnfmId",
889             "in": "path"
890           },
891           {
892             "required": true,
893             "type": "string",
894             "description": "job response message id",
895             "name": "responseId",
896             "in": "query"
897           }
898         ],
899         "responses": {
900           "202": {
901             "description": "",
902             "schema": {
903               "$ref": "#/definitions/JobDetailInfo"
904             }
905           }
906         }
907       }
908     },
909     "/lcn": {
910       "get": {
911         "tags": [
912           "SBI"
913         ],
914         "summary": "Test LCN connectivity from CBAM to driver",
915         "description": "Test LCN connectivity from CBAM to driver",
916         "responses": {
917           "204": {
918             "description": "Used for connectivity test"
919           }
920         }
921       },
922       "post": {
923         "tags": [
924           "SBI"
925         ],
926         "consumes": [
927           "application/json"
928         ],
929         "summary": "Send LCN from CBAM",
930         "description": "Test LCN connectivity from CBAM to driver",
931         "parameters": [
932           {
933             "description": "The life cycle change notification",
934             "in": "body",
935             "name": "body",
936             "required": true,
937             "schema": {
938               "$ref": "#/definitions/VnfLifecycleChangeNotification"
939             }
940           }
941         ],
942         "responses": {
943           "204": {
944             "description": "Used for connectivity test"
945           }
946         }
947       }
948     },
949     "/swagger.json": {
950       "get": {
951         "tags": [
952           "Utilities"
953         ],
954         "summary": "The Nokia SVNFM API definition",
955         "description": "The Nokia SVNFM API definition",
956         "responses": {
957           "202": {
958             "description": "The swagger API definition"
959           }
960         }
961       }
962     },
963     "/convert": {
964       "post": {
965         "tags": [
966           "Utilities"
967         ],
968         "consumes": [
969           "multipart/form-data"
970         ],
971         "produces": [
972           "application/octet-stream"
973         ],
974         "parameters": [
975           {
976             "description": "The CBAM VNF package",
977             "in": "formData",
978             "name": "fileToUpload",
979             "type": "file"
980           },
981           {
982             "description": "ONAP version of the package",
983             "in": "formData",
984             "name": "version",
985             "type": "string"
986           }
987         ],
988         "summary": "Converts the Nokia CBAM package to ONAP package",
989         "description": "Converts the Nokia CBAM package to ONAP package",
990         "responses": {
991           "200": {
992             "description": "The converted package",
993             "schema": {
994               "type": "file"
995             }
996           }
997         }
998       },
999       "get": {
1000         "tags": [
1001           "Utilities"
1002         ],
1003         "produces": [
1004           "text/html"
1005         ],
1006         "summary": "UI to convert the Nokia CBAM package to ONAP package",
1007         "description": "UI to convert the Nokia CBAM package to ONAP package",
1008         "responses": {
1009           "200": {
1010             "description": "The converted package"
1011           }
1012         }
1013       }
1014     },
1015     "/so/v2/ping": {
1016       "get": {
1017         "tags": [
1018           "SO VNFM Adaptor V2"
1019         ],
1020         "summary": "Test VNFM driver health",
1021         "description": "Test VNFM driver health",
1022         "responses": {
1023           "204": {
1024             "description": "VNFM adapter is healthy"
1025           }
1026         }
1027       }
1028     },
1029     "/so/v2/vnfs/{vnfIdInAai}/rollback": {
1030       "post": {
1031         "tags": [
1032           "SO VNFM Adaptor V2"
1033         ],
1034         "summary": "Rollback VNF update operation",
1035         "description": "Rollback VNF update operation",
1036         "operationId": "rollback",
1037         "consumes": [
1038           "application/json"
1039         ],
1040         "parameters": [
1041           {
1042             "required": true,
1043             "type": "string",
1044             "description": "The identifier of the VNF",
1045             "name": "vnfIdInAai",
1046             "in": "path"
1047           },
1048           {
1049             "in": "body",
1050             "name": "body",
1051             "description": "Rollback parameters",
1052             "required": true,
1053             "schema": {
1054               "$ref": "#/definitions/SoV2RollbackVnfUpdate"
1055             }
1056           }
1057         ],
1058         "responses": {
1059           "204": {
1060             "description": "Operation has been rolled back"
1061           }
1062         }
1063       }
1064     },
1065     "/so/v2/vnfs/{vnfIdInAai}": {
1066       "get": {
1067         "tags": [
1068           "SO VNFM Adaptor V2"
1069         ],
1070         "summary": "VNF query",
1071         "description": "VNF query",
1072         "operationId": "vnf_query",
1073         "consumes": [
1074           "application/json"
1075         ],
1076         "produces": [
1077           "application/json"
1078         ],
1079         "parameters": [
1080           {
1081             "required": true,
1082             "type": "string",
1083             "description": "The identifier of the VNF in A&AI.",
1084             "name": "vnfIdInAai",
1085             "in": "path"
1086           },
1087           {
1088             "in": "body",
1089             "name": "body",
1090             "description": "VNF creation query parameter",
1091             "required": true,
1092             "schema": {
1093               "$ref": "#/definitions/SoV2VnfQueryRequest"
1094             }
1095           }
1096         ],
1097         "responses": {
1098           "201": {
1099             "description": "",
1100             "schema": {
1101               "$ref": "#/definitions/SoV2VnfQueryResponse"
1102             }
1103           },
1104           "404": {
1105             "descriotion": "The VNF does not exist on the VNFM side"
1106           }
1107         }
1108       },
1109       "post": {
1110         "tags": [
1111           "SO VNFM Adaptor V2"
1112         ],
1113         "summary": "VNF create",
1114         "description": "VNF create",
1115         "operationId": "vnf_create",
1116         "consumes": [
1117           "application/json"
1118         ],
1119         "parameters": [
1120           {
1121             "required": true,
1122             "type": "string",
1123             "description": "The identifier of the VNF",
1124             "name": "vnfIdInAai",
1125             "in": "path"
1126           },
1127           {
1128             "in": "body",
1129             "name": "body",
1130             "description": "VNF creation query parameter",
1131             "required": true,
1132             "schema": {
1133               "$ref": "#/definitions/SoV2VnfCreateRequest"
1134             }
1135           }
1136         ],
1137         "responses": {
1138           "204": {
1139             "description": "The VNF was created on the VNFM side."
1140           },
1141           "400": {
1142             "description": "The VNF could not be instantiated on the VNFM side. Failure has been treated according to deleteUponFailure parameter"
1143           }
1144         }
1145       },
1146       "put": {
1147         "tags": [
1148           "SO VNFM Adaptor V2"
1149         ],
1150         "summary": "VNF update",
1151         "description": "VNF update",
1152         "operationId": "vnf_update",
1153         "consumes": [
1154           "application/json"
1155         ],
1156         "produces": [
1157           "application/json"
1158         ],
1159         "parameters": [
1160           {
1161             "required": true,
1162             "type": "string",
1163             "description": "The identifier of the VNF",
1164             "name": "vnfIdInAai",
1165             "in": "path"
1166           },
1167           {
1168             "in": "body",
1169             "name": "body",
1170             "description": "VNF update parameter",
1171             "required": true,
1172             "schema": {
1173               "$ref": "#/definitions/SoV2VnfUpdateRequest"
1174             }
1175           }
1176         ],
1177         "responses": {
1178           "200": {
1179             "description": "The VNF update has finished. Success is indicated in the success field.",
1180             "schema": {
1181               "$ref": "#/definitions/SoV2VnfUpdateResponse"
1182             }
1183           }
1184         }
1185       },
1186       "delete": {
1187         "tags": [
1188           "SO VNFM Adaptor V2"
1189         ],
1190         "summary": "VNF delete",
1191         "description": "VNF delete",
1192         "operationId": "vnf_delete",
1193         "consumes": [
1194           "application/json"
1195         ],
1196         "parameters": [
1197           {
1198             "required": true,
1199             "type": "string",
1200             "description": "The identifier of the VNF",
1201             "name": "vnfIdInAai",
1202             "in": "path"
1203           },
1204           {
1205             "in": "body",
1206             "name": "body",
1207             "description": "VNF delete parameter",
1208             "required": true,
1209             "schema": {
1210               "$ref": "#/definitions/SoV2VnfDeleteRequest"
1211             }
1212           }
1213         ],
1214         "responses": {
1215           "204": {
1216             "description": "The VNF was successfully deleted."
1217           }
1218         }
1219       }
1220     },
1221     "/so/v2/vfmodule/{vnfIdInAai}/{vfModuleId}": {
1222       "post": {
1223         "tags": [
1224           "SO VNFM Adaptor V2"
1225         ],
1226         "summary": "VF module create",
1227         "description": "VF module create",
1228         "operationId": "vf_module_create",
1229         "consumes": [
1230           "application/json"
1231         ],
1232         "parameters": [
1233           {
1234             "required": true,
1235             "type": "string",
1236             "description": "The identifier of VNF in A&AI.",
1237             "name": "vnfIdInAai",
1238             "in": "path"
1239           },
1240           {
1241             "required": true,
1242             "type": "string",
1243             "description": "The identifier of the VF module in A&AI",
1244             "name": "vfModuleId",
1245             "in": "path"
1246           },
1247           {
1248             "in": "body",
1249             "name": "body",
1250             "description": "VNF creation query parameter",
1251             "required": true,
1252             "schema": {
1253               "$ref": "#/definitions/SoV2VfModuleCreateRequest"
1254             }
1255           }
1256         ],
1257         "responses": {
1258           "201": {
1259             "description": "The VF module has been created"
1260           }
1261         }
1262       },
1263       "put": {
1264         "tags": [
1265           "SO VNFM Adaptor V2"
1266         ],
1267         "summary": "VF module update",
1268         "description": "VF module update",
1269         "operationId": "vf_module_update",
1270         "consumes": [
1271           "application/json"
1272         ],
1273         "produces": [
1274           "application/json"
1275         ],
1276         "parameters": [
1277           {
1278             "required": true,
1279             "type": "string",
1280             "description": "The identifier of VNF in A&AI.",
1281             "name": "vnfIdInAai",
1282             "in": "path"
1283           },
1284           {
1285             "required": true,
1286             "type": "string",
1287             "description": "The identifier of the VF module in A&AI",
1288             "name": "vfModuleId",
1289             "in": "path"
1290           },
1291           {
1292             "in": "body",
1293             "name": "body",
1294             "description": "VNF creation query parameter",
1295             "required": true,
1296             "schema": {
1297               "$ref": "#/definitions/SoV2VnfUpdateRequest"
1298             }
1299           }
1300         ],
1301         "responses": {
1302           "201": {
1303             "schema": {
1304               "$ref": "#/definitions/SoV2VnfUpdateResponse"
1305             }
1306           }
1307         }
1308       },
1309       "delete": {
1310         "tags": [
1311           "SO VNFM Adaptor V2"
1312         ],
1313         "summary": "VF module delete",
1314         "description": "VF module delete",
1315         "operationId": "vf_module_delete",
1316         "consumes": [
1317           "application/json"
1318         ],
1319         "parameters": [
1320           {
1321             "required": true,
1322             "type": "string",
1323             "description": "The identifier of VNF in A&AI.",
1324             "name": "vnfIdInAai",
1325             "in": "path"
1326           },
1327           {
1328             "required": true,
1329             "type": "string",
1330             "description": "The identifier of the VF module in A&AI",
1331             "name": "vfModuleId",
1332             "in": "path"
1333           },
1334           {
1335             "in": "body",
1336             "name": "body",
1337             "description": "VNF delete parameter",
1338             "required": true,
1339             "schema": {
1340               "$ref": "#/definitions/SoV2VnfDeleteRequest"
1341             }
1342           }
1343         ],
1344         "responses": {
1345           "204": {
1346             "description": "The VNF was successfully deleted."
1347           }
1348         }
1349       }
1350     },
1351     "/so/v2/vfmodule/{vnfIdInAai}/{vfModuleId}/rollback": {
1352       "put": {
1353         "tags": [
1354           "SO VNFM Adaptor V2"
1355         ],
1356         "summary": "VF module update rollback",
1357         "description": "VF module update rollback",
1358         "operationId": "vf_module_update rollback",
1359         "consumes": [
1360           "application/json"
1361         ],
1362         "produces": [
1363           "application/json"
1364         ],
1365         "parameters": [
1366           {
1367             "required": true,
1368             "type": "string",
1369             "description": "The identifier of VNF in A&AI.",
1370             "name": "vnfIdInAai",
1371             "in": "path"
1372           },
1373           {
1374             "required": true,
1375             "type": "string",
1376             "description": "The identifier of the VF module in A&AI",
1377             "name": "vfModuleId",
1378             "in": "path"
1379           },
1380           {
1381             "in": "body",
1382             "name": "body",
1383             "description": "VNF update rollback parameter",
1384             "required": true,
1385             "schema": {
1386               "$ref": "#/definitions/SoV2RollbackVnfUpdate"
1387             }
1388           }
1389         ],
1390         "responses": {
1391           "204": {
1392             "description": "Operation has been rolled back"
1393           }
1394         }
1395       }
1396     }
1397   }
1398 }