Merge "Fix grant response on API"
[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/ns/{vnfmid}/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": "VNFM Instance Id",
361             "name": "vnfmid",
362             "in": "path"
363           },
364           {
365             "required": true,
366             "type": "string",
367             "description": "VNF Instance Id",
368             "name": "vnfInstanceId",
369             "in": "path"
370           },
371           {
372             "in": "body",
373             "name": "vnf Notification",
374             "description": "VNF LCM Notification",
375             "required": true,
376             "schema": {
377               "$ref": "#/definitions/VNFLCMNotification"
378             }
379           }
380         ],
381         "responses": {
382           "202": {
383             "description": ""
384           },
385           "404": {
386             "description": "URL not found"
387           },
388           "500": {
389             "description": "the url is invalid"
390           }
391         }
392       }
393     },
394     "/{vnfmid}/jobs/{jobid}": {
395       "get": {
396         "tags": [
397           "VNFMDriver"
398         ],
399         "summary": "jobstatus",
400         "description": "Job Infomation API should be provided by VNFM Driver",
401         "operationId": "get_jobstatus",
402         "parameters": [
403           {
404             "required": true,
405             "type": "string",
406             "description": "job Id",
407             "name": "jobid",
408             "in": "path"
409           },
410           {
411             "required": true,
412             "type": "string",
413             "description": "The value of vnfmid should be the VNFM Instantiate ID",
414             "name": "vnfmid",
415             "in": "path"
416           },
417           {
418             "required": true,
419             "type": "string",
420             "description": "job response message id",
421             "name": "responseId",
422             "in": "query"
423           }
424         ],
425         "responses": {
426           "202": {
427             "description": "",
428             "schema": {
429               "$ref": "#/definitions/JobDetailInfo"
430             }
431           }
432         }
433       }
434     },
435     "/catalog/v1/vnfpackages/{csarId}": {
436       "get": {
437         "tags": [
438           "Catalog"
439         ],
440         "summary": "query vnf package info",
441         "description": "query one vnf package info via vnf package csarId",
442         "operationId": "query_vnf_package",
443         "consumes": [
444           "application/json"
445         ],
446         "produces": [
447           "application/json"
448         ],
449         "parameters": [
450           {
451             "name": "csarId",
452             "in": "path",
453             "description": "csar id of vnf package",
454             "required": true,
455             "type": "string"
456           }
457         ],
458         "responses": {
459           "200": {
460             "description": "successful operation",
461             "schema": {
462               "$ref": "#/definitions/VnfPkgDetailInfo"
463             }
464           },
465           "500": {
466             "description": "internal error"
467           }
468         }
469       }
470     },
471     "/nslcm/v1/vnfms/{vnfmid}":{
472       "get": {
473         "tags": [
474           "NSLCM"
475         ],
476         "summary": "Query VNFM register info",
477         "description": "query VNFM register info",
478         "operationId": "query_vnfm_info",
479         "consumes": [
480           "application/json"
481         ],
482         "produces": [
483           "application/json"
484         ],
485         "parameters": [
486           {
487             "name": "vnfmid",
488             "in": "path",
489             "description": "vnfm id",
490             "required": true,
491             "type": "string"
492           }
493         ],
494         "responses": {
495           "200": {
496             "description": "successful operation",
497             "schema": {
498               "$ref": "#/definitions/VnfmInfo"
499             }
500           },
501           "404": {
502             "description": "URL not found"
503           },
504           "500": {
505             "description": "internal error"
506           }
507         }
508       }
509     },
510     "/nslcm/v1/vims/{vimid}":{
511       "get": {
512         "tags": [
513           "NSLCM"
514         ],
515         "summary": "Query VIM register info",
516         "description": "query VIM register info",
517         "operationId": "query_VIM_info",
518         "consumes": [
519           "application/json"
520         ],
521         "produces": [
522           "application/json"
523         ],
524         "parameters": [
525           {
526             "name": "vimid",
527             "in": "path",
528             "description": "vim id",
529             "required": true,
530             "type": "string"
531           }
532         ],
533         "responses": {
534           "200": {
535             "description": "successful operation",
536             "schema": {
537               "$ref": "#/definitions/VimInfo"
538             }
539           },
540           "404": {
541             "description": "URL not found"
542           },
543           "500": {
544             "description": "internal error"
545           }
546         }
547       }
548     }
549   },
550   "definitions": {
551     "jobResponseInfo": {
552       "type": "object",
553       "properties": {
554         "status": {
555           "type": "string"
556         },
557         "progress": {
558           "type": "string"
559         },
560         "statusDescription": {
561           "type": "string"
562         },
563         "errorCode": {
564           "type": "string"
565         },
566         "responseId": {
567           "type": "string"
568         }
569       }
570     },
571     "JobStatus" : {
572       "description": "The status of the job",
573       "type": "string",
574       "enum": [
575         "started",
576         "processing",
577         "finished",
578         "error",
579         "timeout"
580       ]
581     },
582     "JobDetailInfo": {
583       "type": "object",
584       "properties": {
585         "jobId": {
586           "type": "string"
587         },
588         "responseDescriptor": {
589           "type": "object",
590           "properties": {
591             "status": {
592               "$ref": "#/definitions/JobStatus",
593               "description": "The status of the job"
594             },
595             "progress": {
596               "type": "string",
597               "description": "The progress of the job. Value between 0 and 100."
598             },
599             "statusDescription": {
600               "type": "string",
601               "description": "The reason of the current status of the job."
602             },
603             "errorCode": {
604               "type": "string"
605             },
606             "responseId": {
607               "type": "string"
608             },
609             "responseHistoryList": {
610               "type": "array",
611               "items": {
612                 "$ref": "#/definitions/jobResponseInfo"
613               }
614             }
615           }
616         }
617       }
618     },
619     "ChangeType" : {
620       "description": "The type of the change",
621       "type": "string",
622       "enum": [
623         "VDU"
624       ]
625     },
626     "ResourceChange" : {
627        "type": "object",
628        "properties": {
629          "type": {
630            "$ref": "#/definitions/ChangeType",
631            "description": "The type of the resource."
632          },
633          "resourceDefinitionId": {
634            "description": "The identifier of the resource within the grant request.",
635            "type": "string"
636          },
637          "vdu": {
638            "description": "The identifier of the VDU.",
639            "type": "string"
640          }
641        }
642     },
643     "OperationType" : {
644       "description": "The type of operation",
645       "type": "string",
646       "enum": [
647         "Terminal",
648         "Instantiate",
649         "Scalein",
650         "Scaleout",
651         "Scaledown",
652         "Scaleup",
653         "Heal"
654       ]
655     },
656     "GrantVNFRequest": {
657       "type": "object",
658       "properties": {
659         "vnfInstanceId": {
660           "type": "string"
661         },
662         "vnfDescriptorId": {
663           "type": "string"
664         },
665         "lifecycleOperation": {
666           "description" : "The type of the operation.",
667           "$ref": "#/definitions/OperationType"
668         },
669         "jobId": {
670           "type": "string"
671         },
672         "addResource": {
673           "type": "array",
674           "items": {
675             "$ref": "#/definitions/ResourceChange"
676           }
677         },
678         "removeResource": {
679           "type": "array",
680           "items": {
681             "$ref": "#/definitions/ResourceChange"
682           }
683         },
684         "additionalParam": {
685           "type": "object",
686           "description": "The data type is KeyValuePair. Additional parameters passed by the NFVO, specific to the VNF and the LCM operation."
687         }
688       }
689     },
690     "GrantVNFResponse": {
691       "type": "object",
692       "properties": {
693         "vim": {
694           "type": "object",
695           "properties": {
696             "vimid": {
697               "type": "string"
698             },
699             "accessinfo": {
700               "type": "object",
701               "properties": {
702                 "tenant": {
703                   "type": "string",
704                   "description": "Tenant Name of tenant"
705                 }
706               }
707             }
708           }
709         }
710       }
711     },
712     "VnfNotificationType": {
713       "description": "The type of the notification",
714       "type": "string",
715       "enum": [
716         "added",
717         "removed",
718         "modified"
719       ]
720     },
721     "AffectedVnfc": {
722        "type": "object",
723        "properties": {
724          "vnfcInstanceId": {
725            "type": "string",
726            "description": "Identifier of the VNFC instance"
727          },
728          "vduId": {
729            "type": "string",
730            "description": "Identifier of the VDU in the VNFD"
731          },
732          "changeType": {
733            "$ref": "#/definitions/VnfNotificationType",
734            "description": "The type of the change"
735          },
736          "vimid": {
737            "type": "string",
738            "description": "Identifier of vim"
739          },
740          "vmid": {
741            "type": "string",
742            "description": "Identifier of virtual machine"
743          },
744          "vmname": {
745            "type": "string",
746            "description": "Name of virtual machine"
747          }
748        }
749     },
750     "AffectedVirtualLinkType": {
751       "description": "The type of the affected virtual link",
752       "type": "string",
753       "enum": [
754         "network",
755         "port"
756       ]
757     },
758     "AffectedVirtualLink":{
759        "type": "object",
760        "properties": {
761          "vlInstanceId": {
762            "type": "string",
763            "description": "Identifier of the VL instance"
764          },
765          "vldid": {
766            "type": "string",
767            "description": "Identifier of the VLD in the VNFD"
768          },
769          "changeType": {
770            "$ref": "#/definitions/VnfNotificationType",
771            "description": "The type of the change"
772          },
773          "networkResource": {
774            "type": "object",
775            "description": "network Resource",
776            "properties": {
777              "resourceType": {
778                "$ref": "#/definitions/AffectedVirtualLinkType",
779                "description": "Must be network"
780              },
781              "resourceId": {
782                "type": "string",
783                "description": "Identifier of the resource in the scope of the VIM"
784              }
785            }
786          }
787        }
788     },
789     "VnfCpNotificationType": {
790       "description": "The type of the notification for connection points",
791       "type": "string",
792       "enum": [
793         "added",
794         "removed",
795         "changed"
796       ]
797     },
798     "AffectedCp": {
799        "type": "object",
800        "properties": {
801          "virtualLinkInstanceId": {
802            "type": "string",
803            "description": "Identifier of the VL instance"
804          },
805          "cpinstanceid": {
806            "type": "string",
807            "description": "Identifier of the connection point"
808          },
809          "cpdid": {
810            "type": "string",
811            "description": "Identifier of the connection point in the VNFD"
812          },
813          "ownerType": {
814            "type": "string",
815            "description": "The type of the owner."
816          },
817          "ownerId": {
818            "type": "string",
819            "description": "Identifier of the owner. Mandatory if ownerType is specified."
820          },
821          "changeType": {
822            "$ref": "#/definitions/VnfCpNotificationType",
823            "description": "The type of the change"
824          },
825          "portResource": {
826            "type": "object",
827            "description": "port Resource",
828            "properties": {
829              "vimid": {
830                "type": "string",
831                "description": "Identifier of the VIM"
832              },
833              "resourceid": {
834                "type": "string",
835                "description": "Identifier of the resource in the scope of the VIM"
836              },
837              "resourceName": {
838                "type": "string",
839                "description": "Resource name in the vim"
840              },
841              "tenant": {
842                "type": "string",
843                "description": "The identifier of the tenant"
844              },
845              "ipAddress": {
846                "type": "string",
847                "description": "The IP address of the port"
848              },
849              "macAddress": {
850                "type": "string",
851                "description": "The MAC address of the port"               
852              },
853              "instId": {
854                "type": "string",
855                "description": "The instance id of the server to which the port is attached to"
856              }
857            }
858          }
859        }
860     },
861     "AffectedVirtualStorage" : {
862        "type": "object"
863      },
864    "VnfLcmNotificationStatus" : {
865       "description": "The status of the operation",
866       "type": "string",
867       "enum": [
868         "result",
869         "start"
870       ]
871     },
872    "VNFLCMNotification": {
873       "type": "object",
874       "properties": {
875         "status": {
876           "description" : "The status of the operation that triggered the LCN.",
877           "$ref": "#/definitions/VnfLcmNotificationStatus"
878         },
879         "vnfInstanceId": {
880           "type": "string"
881         },
882         "operation": {
883           "description" : "The type of the operation that tiggered the LCN.",
884           "$ref": "#/definitions/OperationType"
885         },
886         "jobId": {
887           "description" : "The identifier fo the job that triggered the LCN.",
888           "type": "string"
889         },
890         "affectedVnfc": {
891           "type": "array",
892           "description": "The affected VNFCs",
893           "items": {
894             "$ref": "#/definitions/AffectedVnfc"
895           }
896         },
897         "affectedCp": {
898           "type": "array",
899           "description": "The affected Connected Points",
900           "items": {
901             "$ref": "#/definitions/AffectedCp"
902           }
903         },
904         "affectedVl": {
905           "type": "array",
906           "description": "The affected virtual links",
907           "items": {
908             "$ref": "#/definitions/AffectedVirtualLink"
909           }
910         },
911         "affectedVirtualStorage": {
912           "type": "array",
913           "description": "The affected virtual storages. (Not supported)",
914           "items": {
915             "$ref": "#/definitions/AffectedVirtualStorage"
916           }
917         }
918       }
919     },
920     "VnfInstantiateRequest": {
921       "type": "object",
922       "properties": {
923         "vnfInstanceName": {
924           "type": "string"
925         },
926         "vnfPackageId": {
927           "type": "string"
928         },
929         "vnfDescriptorId": {
930           "type": "string"
931         },        
932         "vnfInstanceDescription": {
933           "type": "string"
934         },
935         "extVirtualLink": {
936           "type": "array",
937           "items": {
938               "$ref": "#/definitions/extVirtualLinkInfo"
939           }
940         },
941         "additionalParam": {
942           "type": "object"
943         }
944       }
945     },
946     "extVirtualLinkInfo":{
947         "type": "object",
948         "properties": {
949           "vlInstanceId": {
950             "type": "string"
951           },
952           "networkId": {
953             "type": "string"
954           },
955           "cpdId": {
956             "type": "string"
957           },
958           "vim": {
959             "$ref": "#/definitions/vimInfo"
960           }
961         }
962     },
963             
964     "VnfInstantiateResponse": {
965       "type": "object",
966       "properties": {
967         "vnfInstanceId": {
968           "type": "string"
969         },
970         "jobId": {
971           "type": "string"
972         }
973       }
974     },
975     "ScaleDirection" : {
976       "description": "The direction of the scaling",
977       "type": "string",
978       "enum": [
979         "SCALE_IN",
980         "SCALE_OUT"
981       ]
982     },
983     "VnfScaleRequest":{
984       "type": "object",
985       "properties": {
986         "type": {
987           "description" : "The direction of the scaling.",
988           "$ref": "#/definitions/ScaleDirection"
989         },
990         "aspectId":{
991           "type": "string",
992           "description": "Identifies the aspect of the VNF that is requested to be scaled"          
993         },
994         "numberOfSteps": {
995           "type": "string",
996           "description": "Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number" 
997         },
998         "additionalParam":{
999           "type": "object",
1000           "description": "Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled" 
1001         } 
1002       }
1003     },
1004     "VnfHealRequest":{
1005       "type": "object",
1006       "properties": {
1007         "action": {
1008           "type": "string"
1009         },
1010         "affectedvm": {
1011           "type": "object",
1012           "properties": {
1013             "vimid":{
1014               "type": "string"
1015             },
1016            "vduid": {
1017               "type": "string"
1018            },
1019           "vmname":{
1020               "type": "string"
1021            }
1022           }
1023         }
1024       }
1025     },
1026     "VnfTerminationType": {
1027       "description": "The type of the termination.",
1028       "type": "string",
1029       "enum": [
1030         "graceful",
1031         "forceful"
1032       ]
1033     },
1034     "VnfTerminateRequest":{
1035       "type": "object",
1036       "properties": {
1037         "terminationType": {
1038           "description" : "The type of the termination",
1039           "$ref": "#/definitions/VnfTerminationType"
1040         },
1041         "gracefulTerminationTimeout": {
1042           "description": "The time interval(second) to wait for the VNF to be taken out of service during graceful termination.",
1043           "type": "string"
1044         }
1045       }      
1046     },
1047     "JobInfo": {
1048       "type": "object",
1049       "properties": {
1050         "jobId": {
1051           "type": "string"
1052         }
1053       }
1054     },
1055     "VnfInfo": {
1056       "type": "object",
1057       "properties": {
1058         "vnfInstanceId": {
1059           "type": "string"
1060         },
1061         "vnfInstanceName": {
1062           "type": "string"
1063         },
1064         "vnfInstanceDescription": {
1065           "type": "string"
1066         },
1067         "vnfdId": {
1068           "type": "string"
1069         },        
1070         "vnfPackageId": {
1071           "type": "string"
1072         },   
1073         "version": {
1074           "type": "string"
1075         },   
1076         "vnfProvider": {
1077           "type": "string"
1078         },  
1079         "vnfType": {
1080           "type": "string"
1081         },  
1082         "vnfStatus": {
1083           "type": "string"
1084         }
1085       }
1086     },
1087     "vimInfo": {
1088           "type": "object",
1089           "properties": {
1090             "vimInfoId": {
1091               "type": "string"
1092             },
1093             "vimId": {
1094               "type": "string"
1095             },
1096             "interfaceInfo": {
1097               "type": "object",
1098               "properties": {
1099                 "vimType": {
1100                   "type": "string",
1101                   "description": "The vim Type value wil be openstack"
1102                 },
1103                 "apiVersion": {
1104                   "type": "string",
1105                   "description": "The api Version Type value will be "
1106                 },
1107                 "protocolType": {
1108                   "type": "string",
1109                   "description": "The protocol Type value will be http or https"
1110                 }
1111               }
1112             },
1113             "accessInfo": {
1114               "type": "object",
1115               "properties": {
1116                 "tenant": {
1117                   "type": "string",
1118                   "description": "Tenant Name of tenant"
1119                 },
1120                 "username": {
1121                   "type": "string",
1122                   "description": "Username for login"
1123                 },
1124                 "password": {
1125                   "type": "string",
1126                   "description": "Password of login user"
1127                 }
1128               }
1129             },
1130             "interfaceEndpoint": {
1131               "type": "string",
1132               "description": "Information about the interface endpoint. It is a URL"
1133             }
1134           }
1135     },
1136     "VnfPkgDetailInfo": {
1137       "type": "object",
1138       "properties": {
1139         "csarId": {
1140           "type": "string",
1141           "description": "vnf package id, UUID"
1142         },
1143         "packageInfo": {
1144           "$ref": "#/definitions/VnfPkgInfo"
1145         },
1146         "imageInfo": {
1147           "$ref": "#/definitions/VnfPkgImgListInfo"
1148         },
1149         "vnfInstanceInfo": {
1150           "$ref": "#/definitions/VnfInstListInfo"
1151         }
1152       }
1153     },
1154     "VnfPkgInfo": {
1155       "type": "object",
1156       "description": "vnf package infomation",
1157       "properties": {
1158         "csarId": {
1159           "type": "string",
1160           "description": "vnf package id, UUID"
1161         },
1162         "vnfdId": {
1163           "type": "string",
1164           "description": "VNF descriptor ID"
1165         },
1166         "vnfdProvider": {
1167           "type": "string",
1168           "description": "VNF descriptor vendor ID"
1169         },
1170         "vnfdVersion": {
1171           "type": "string",
1172           "description": "VNF descriptor version"
1173         },
1174         "vnfVersion": {
1175           "type": "string",
1176           "description": "VNF Software version"
1177         },
1178         "downloadUri":{
1179           "type": "string",
1180           "description": "The download uri of VNF package"
1181         }
1182       }
1183     },
1184     "VnfInstListInfo": {
1185       "type": "array",
1186       "items": {
1187         "$ref": "#/definitions/VnfInstInfo"
1188       }
1189     },
1190     "VnfInstInfo": {
1191       "type": "object",
1192       "properties": {
1193         "vnfInstanceId": {
1194           "type": "string",
1195           "description": "VNF instance ID"
1196         },
1197         "vnfInstanceName": {
1198           "type": "string",
1199           "description": "VNF instance name"
1200         }
1201       }
1202     },
1203     "VnfPkgImgListInfo": {
1204       "type": "array",
1205       "items": {
1206         "$ref": "#/definitions/VnfPkgImgInfo"
1207       }
1208     },
1209     "VnfPkgImgInfo": {
1210       "type": "object",
1211       "properties": {
1212         "fileName": {
1213           "type": "string",
1214           "description": "image file name"
1215         },
1216         "imageUrl": {
1217           "type": "string",
1218           "description": "image file path in the csar or image url in external repository"
1219         }
1220       }
1221     },
1222     "VnfmInfo": {
1223       "type": "object",
1224       "properties": {
1225         "vnfmId": {
1226           "type": "string",
1227           "description": "vnfm Id"
1228         },
1229         "name": {
1230           "type": "string",
1231           "description": "vnfm name"
1232         },
1233         "type": {
1234           "type": "string",
1235           "description": "vnfm type"
1236         },  
1237         "url": {
1238           "type": "string",
1239           "description": "vnfm url"
1240         },
1241         "userName": {
1242           "type": "string",
1243           "description": "vnfm login username"
1244         },
1245         "password": {
1246           "type": "string",
1247           "description": "vnfm login password"
1248         },  
1249         "vimId": {
1250           "type": "string",
1251           "description": "vim Id"
1252         },
1253         "vendor": {
1254           "type": "string",
1255           "description": "vendor name"
1256         },
1257         "version": {
1258           "type": "string",
1259           "description": "vnfm version"
1260         }, 
1261         "description": {
1262           "type": "string",
1263           "description": "vnfm description"
1264         }, 
1265         "certificateUrl": {
1266           "type": "string",
1267           "description": "vnfm certificate Url"
1268         },
1269         "createTime": {
1270           "type": "string",
1271           "description": "vnfm info createTime"
1272         }
1273       }      
1274     },
1275     "VimInfo": {
1276       "type": "object",
1277       "properties": {
1278         "vimId": {
1279           "type": "string",
1280           "description": "vim Id"
1281         },
1282         "name": {
1283           "type": "string",
1284           "description": "vim name"
1285         },
1286         "type": {
1287           "type": "string",
1288           "description": "vim type"
1289         },  
1290         "url": {
1291           "type": "string",
1292           "description": "vim url"
1293         },
1294         "userName": {
1295           "type": "string",
1296           "description": "vim login username"
1297         },
1298         "password": {
1299           "type": "string",
1300           "description": "vim login password"
1301         },  
1302         "vendor": {
1303           "type": "string",
1304           "description": "vendor name"
1305         },
1306         "version": {
1307           "type": "string",
1308           "description": "vim version"
1309         }, 
1310         "description": {
1311           "type": "string",
1312           "description": "vim description"
1313         }, 
1314         "createTime": {
1315           "type": "string",
1316           "description": "vim info createTime"
1317         },
1318         "sslCacert": {
1319           "type": "string",
1320           "description": "The collection of trusted certificates towards the VIM connection."
1321         },
1322         "sslInsecure": {
1323           "type": "string",
1324           "description": "Whether to verify VIM's certificate"         
1325         },
1326         "status": {
1327           "type": "string",
1328           "description": "The status of external system"
1329         }
1330       }      
1331     }
1332   }
1333 }