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