update link to upper-constraints.txt
[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": "Additional parameters passed to the NFVO, specific to the VNF and the LCM operation. The currently interpreted keys are the following: vimId"
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": "The name of the 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              "resourceName": {
786                "type": "string",
787                "description": "Name of the resource in the scope of the VIM"
788              }
789            }
790          }
791        }
792     },
793     "VnfCpNotificationType": {
794       "description": "The type of the notification for connection points",
795       "type": "string",
796       "enum": [
797         "added",
798         "removed",
799         "changed"
800       ]
801     },
802     "AffectedCp": {
803        "type": "object",
804        "properties": {
805          "virtualLinkInstanceId": {
806            "type": "string",
807            "description": "Identifier of the VL instance"
808          },
809          "cpInstanceId": {
810            "type": "string",
811            "description": "Identifier of the connection point"
812          },
813          "cpdId": {
814            "type": "string",
815            "description": "Identifier of the connection point in the VNFD"
816          },
817          "ownerType": {
818            "type": "string",
819            "description": "The type of the owner."
820          },
821          "ownerId": {
822            "type": "string",
823            "description": "Identifier of the owner. Mandatory if ownerType is specified."
824          },
825          "changeType": {
826            "$ref": "#/definitions/VnfCpNotificationType",
827            "description": "The type of the change"
828          },
829          "portResource": {
830            "type": "object",
831            "description": "port Resource",
832            "properties": {
833              "vimId": {
834                "type": "string",
835                "description": "Identifier of the VIM"
836              },
837              "resourceId": {
838                "type": "string",
839                "description": "Identifier of the resource in the scope of the VIM"
840              },
841              "resourceName": {
842                "type": "string",
843                "description": "Resource name in the vim"
844              },
845              "tenant": {
846                "type": "string",
847                "description": "The identifier of the tenant"
848              },
849              "ipAddress": {
850                "type": "string",
851                "description": "The IP address of the port"
852              },
853              "macAddress": {
854                "type": "string",
855                "description": "The MAC address of the port"               
856              },
857              "instId": {
858                "type": "string",
859                "description": "The instance id of the server to which the port is attached to"
860              }
861            }
862          }
863        }
864     },
865     "AffectedVirtualStorage" : {
866        "type": "object"
867      },
868    "VnfLcmNotificationStatus" : {
869       "description": "The status of the operation",
870       "type": "string",
871       "enum": [
872         "result",
873         "start"
874       ]
875     },
876    "VNFLCMNotification": {
877       "type": "object",
878       "properties": {
879         "status": {
880           "description" : "The status of the operation that triggered the LCN.",
881           "$ref": "#/definitions/VnfLcmNotificationStatus"
882         },
883         "vnfInstanceId": {
884           "type": "string"
885         },
886         "operation": {
887           "description" : "The type of the operation that tiggered the LCN.",
888           "$ref": "#/definitions/OperationType"
889         },
890         "jobId": {
891           "description" : "The identifier fo the job that triggered the LCN.",
892           "type": "string"
893         },
894         "affectedVnfc": {
895           "type": "array",
896           "description": "The affected VNFCs",
897           "items": {
898             "$ref": "#/definitions/AffectedVnfc"
899           }
900         },
901         "affectedCp": {
902           "type": "array",
903           "description": "The affected Connected Points",
904           "items": {
905             "$ref": "#/definitions/AffectedCp"
906           }
907         },
908         "affectedVl": {
909           "type": "array",
910           "description": "The affected virtual links",
911           "items": {
912             "$ref": "#/definitions/AffectedVirtualLink"
913           }
914         },
915         "affectedVirtualStorage": {
916           "type": "array",
917           "description": "The affected virtual storages. (Not supported)",
918           "items": {
919             "$ref": "#/definitions/AffectedVirtualStorage"
920           }
921         }
922       }
923     },
924     "VnfInstantiateRequest": {
925       "type": "object",
926       "properties": {
927         "vnfInstanceName": {
928           "type": "string"
929         },
930         "vnfPackageId": {
931           "type": "string"
932         },
933         "vnfDescriptorId": {
934           "type": "string"
935         },        
936         "vnfInstanceDescription": {
937           "type": "string"
938         },
939         "extVirtualLink": {
940           "type": "array",
941           "items": {
942               "$ref": "#/definitions/extVirtualLinkInfo"
943           }
944         },
945         "additionalParam": {
946           "type": "object",
947           "description": "Additional parameters passed to the VNFM. The vimId may be passed in the additional parameter section by the NFVO to VNFM."
948         }
949       }
950     },
951     "extVirtualLinkInfo":{
952         "type": "object",
953         "properties": {
954           "resourceSubnetId": {
955             "type": "string",
956             "description": "The provider id of the subnet"
957           },
958           "vlInstanceId": {
959             "type": "string",
960             "description" : "The identifier of the virtual link"
961           },
962           "resourceId": {
963             "type": "string",
964             "description": "The provider id of the network"
965           },
966           "cpdId": {
967             "type": "string",
968             "description": "The identifier of the connection point descriptor"
969           },
970           "vim": {
971             "type": "object",
972             "properties": {
973                "vimid": {
974                   "type": "string",
975                   "description": "The identifier of the VIM"
976                }
977             }
978           }
979         }
980     },
981     "VnfInstantiateResponse": {
982       "type": "object",
983       "properties": {
984         "vnfInstanceId": {
985           "type": "string"
986         },
987         "jobId": {
988           "type": "string"
989         }
990       }
991     },
992     "ScaleDirection" : {
993       "description": "The direction of the scaling",
994       "type": "string",
995       "enum": [
996         "SCALE_IN",
997         "SCALE_OUT"
998       ]
999     },
1000     "VnfScaleRequest":{
1001       "type": "object",
1002       "properties": {
1003         "type": {
1004           "description" : "The direction of the scaling.",
1005           "$ref": "#/definitions/ScaleDirection"
1006         },
1007         "aspectId":{
1008           "type": "string",
1009           "description": "Identifies the aspect of the VNF that is requested to be scaled"          
1010         },
1011         "numberOfSteps": {
1012           "type": "string",
1013           "description": "Number of scaling steps to be executed as part of this ScaleVnf operation. It shall be a positive number" 
1014         },
1015         "additionalParam":{
1016           "type": "object",
1017           "description": "Additional parameters passed by the NFVO as input to the scaling process, specific to the VNF being scaled" 
1018         } 
1019       }
1020     },
1021     "VnfHealRequest":{
1022       "type": "object",
1023       "properties": {
1024         "action": {
1025           "type": "string"
1026         },
1027         "affectedvm": {
1028           "type": "object",
1029           "properties": {
1030             "vimid":{
1031               "type": "string"
1032             },
1033            "vduid": {
1034               "type": "string"
1035            },
1036           "vmname":{
1037               "type": "string"
1038            }
1039           }
1040         }
1041       }
1042     },
1043     "VnfTerminationType": {
1044       "description": "The type of the termination.",
1045       "type": "string",
1046       "enum": [
1047         "graceful",
1048         "forceful"
1049       ]
1050     },
1051     "VnfTerminateRequest":{
1052       "type": "object",
1053       "properties": {
1054         "terminationType": {
1055           "description" : "The type of the termination",
1056           "$ref": "#/definitions/VnfTerminationType"
1057         },
1058         "gracefulTerminationTimeout": {
1059           "description": "The time interval(second) to wait for the VNF to be taken out of service during graceful termination.",
1060           "type": "string"
1061         }
1062       }      
1063     },
1064     "JobInfo": {
1065       "type": "object",
1066       "properties": {
1067         "jobId": {
1068           "type": "string"
1069         }
1070       }
1071     },
1072     "VnfInfo": {
1073       "type": "object",
1074       "properties": {
1075         "vnfInstanceId": {
1076           "type": "string"
1077         },
1078         "vnfInstanceName": {
1079           "type": "string"
1080         },
1081         "vnfInstanceDescription": {
1082           "type": "string"
1083         },
1084         "vnfdId": {
1085           "type": "string"
1086         },        
1087         "vnfPackageId": {
1088           "type": "string"
1089         },   
1090         "version": {
1091           "type": "string"
1092         },   
1093         "vnfProvider": {
1094           "type": "string"
1095         },  
1096         "vnfType": {
1097           "type": "string"
1098         },  
1099         "vnfStatus": {
1100           "type": "string"
1101         }
1102       }
1103     },
1104     "vimInfo": {
1105           "type": "object",
1106           "properties": {
1107             "vimInfoId": {
1108               "type": "string"
1109             },
1110             "vimId": {
1111               "type": "string"
1112             },
1113             "interfaceInfo": {
1114               "type": "object",
1115               "properties": {
1116                 "vimType": {
1117                   "type": "string",
1118                   "description": "The vim Type value wil be openstack"
1119                 },
1120                 "apiVersion": {
1121                   "type": "string",
1122                   "description": "The api Version Type value will be "
1123                 },
1124                 "protocolType": {
1125                   "type": "string",
1126                   "description": "The protocol Type value will be http or https"
1127                 }
1128               }
1129             },
1130             "accessInfo": {
1131               "type": "object",
1132               "properties": {
1133                 "tenant": {
1134                   "type": "string",
1135                   "description": "Tenant Name of tenant"
1136                 },
1137                 "username": {
1138                   "type": "string",
1139                   "description": "Username for login"
1140                 },
1141                 "password": {
1142                   "type": "string",
1143                   "description": "Password of login user"
1144                 }
1145               }
1146             },
1147             "interfaceEndpoint": {
1148               "type": "string",
1149               "description": "Information about the interface endpoint. It is a URL"
1150             }
1151           }
1152     },
1153     "VnfPkgDetailInfo": {
1154       "type": "object",
1155       "properties": {
1156         "csarId": {
1157           "type": "string",
1158           "description": "vnf package id, UUID"
1159         },
1160         "packageInfo": {
1161           "$ref": "#/definitions/VnfPkgInfo"
1162         },
1163         "imageInfo": {
1164           "$ref": "#/definitions/VnfPkgImgListInfo"
1165         },
1166         "vnfInstanceInfo": {
1167           "$ref": "#/definitions/VnfInstListInfo"
1168         }
1169       }
1170     },
1171     "VnfPkgInfo": {
1172       "type": "object",
1173       "description": "vnf package infomation",
1174       "properties": {
1175         "vnfPackageId": {
1176           "type": "string",
1177           "description": "vnf package id (csarId)"
1178         },
1179         "csarName": {
1180           "type": "string",
1181           "description": "The name of the csar"
1182         },
1183         "vnfdId": {
1184           "type": "string",
1185           "description": "VNF descriptor ID"
1186         },
1187         "vnfdProvider": {
1188           "type": "string",
1189           "description": "VNF descriptor vendor ID"
1190         },
1191         "vnfdModel": {
1192           "type": "string",
1193           "description": "The model of the VNF (JSON) encoded to string"
1194         },
1195         "vnfdVersion": {
1196           "type": "string",
1197           "description": "VNF descriptor version"
1198         },
1199         "vnfVersion": {
1200           "type": "string",
1201           "description": "VNF Software version"
1202         },
1203         "downloadUrl":{
1204           "type": "string",
1205           "description": "The URL from which the VNF package can be downloaded"
1206         }
1207       }
1208     },
1209     "VnfInstListInfo": {
1210       "type": "array",
1211       "items": {
1212         "$ref": "#/definitions/VnfInstInfo"
1213       }
1214     },
1215     "VnfInstInfo": {
1216       "type": "object",
1217       "properties": {
1218         "vnfInstanceId": {
1219           "type": "string",
1220           "description": "VNF instance ID"
1221         },
1222         "vnfInstanceName": {
1223           "type": "string",
1224           "description": "VNF instance name"
1225         }
1226       }
1227     },
1228     "VnfPkgImgListInfo": {
1229       "type": "array",
1230       "items": {
1231         "$ref": "#/definitions/VnfPkgImgInfo"
1232       }
1233     },
1234     "VnfPkgImgInfo": {
1235       "type": "object",
1236       "properties": {
1237         "fileName": {
1238           "type": "string",
1239           "description": "image file name"
1240         },
1241         "imageUrl": {
1242           "type": "string",
1243           "description": "image file path in the csar or image url in external repository"
1244         }
1245       }
1246     },
1247     "VnfmInfo": {
1248       "type": "object",
1249       "properties": {
1250         "vnfmId": {
1251           "type": "string",
1252           "description": "vnfm Id"
1253         },
1254         "name": {
1255           "type": "string",
1256           "description": "vnfm name"
1257         },
1258         "type": {
1259           "type": "string",
1260           "description": "vnfm type"
1261         },  
1262         "url": {
1263           "type": "string",
1264           "description": "vnfm url"
1265         },
1266         "userName": {
1267           "type": "string",
1268           "description": "vnfm login username"
1269         },
1270         "password": {
1271           "type": "string",
1272           "description": "vnfm login password"
1273         },  
1274         "vimId": {
1275           "type": "string",
1276           "description": "vim Id"
1277         },
1278         "vendor": {
1279           "type": "string",
1280           "description": "vendor name"
1281         },
1282         "version": {
1283           "type": "string",
1284           "description": "vnfm version"
1285         }, 
1286         "description": {
1287           "type": "string",
1288           "description": "vnfm description"
1289         }, 
1290         "certificateUrl": {
1291           "type": "string",
1292           "description": "vnfm certificate Url"
1293         },
1294         "createTime": {
1295           "type": "string",
1296           "description": "vnfm info createTime"
1297         }
1298       }      
1299     },
1300     "VimInfo": {
1301       "type": "object",
1302       "properties": {
1303         "vimId": {
1304           "type": "string",
1305           "description": "vim Id"
1306         },
1307         "name": {
1308           "type": "string",
1309           "description": "vim name"
1310         },
1311         "type": {
1312           "type": "string",
1313           "description": "vim type"
1314         },  
1315         "url": {
1316           "type": "string",
1317           "description": "vim url"
1318         },
1319         "userName": {
1320           "type": "string",
1321           "description": "vim login username"
1322         },
1323         "password": {
1324           "type": "string",
1325           "description": "vim login password"
1326         },  
1327         "vendor": {
1328           "type": "string",
1329           "description": "vendor name"
1330         },
1331         "version": {
1332           "type": "string",
1333           "description": "vim version"
1334         }, 
1335         "description": {
1336           "type": "string",
1337           "description": "vim description"
1338         }, 
1339         "createTime": {
1340           "type": "string",
1341           "description": "vim info createTime"
1342         },
1343         "sslCacert": {
1344           "type": "string",
1345           "description": "The collection of trusted certificates towards the VIM connection."
1346         },
1347         "sslInsecure": {
1348           "type": "string",
1349           "description": "Whether to verify VIM's certificate"         
1350         },
1351         "status": {
1352           "type": "string",
1353           "description": "The status of external system"
1354         }
1355       }      
1356     }
1357   }
1358 }