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