Updating Communication channels IRC -> Slack
[osm/SOL005.git] / osm-openapi.yaml
1 openapi: 3.0.0
2 servers:
3   - description: OSM NB API
4     url: https://osm.etsi.org/nbapi/v1.0.0
5 info:
6   description: |
7     This is Open Source MANO Northbound API featuring ETSI NFV SOL005.
8     For more information on OSM, you can visit [http://osm.etsi.org](http://osm.etsi.org).
9     You can send us your comments and questions to OSM_TECH@list.etsi.org
10     or join the [OpenSourceMANO Slack Workplace](https://join.slack.com/t/opensourcemano/shared_invite/enQtMzQ3MzYzNTQ0NDIyLWVkNTE4ZjZjNWI0ZTQyN2VhOTI1MjViMzU1NWYwMWM3ODI4NTQyY2VlODA2ZjczMWIyYTFkZWNiZmFkM2M2ZDk)
11   version: "1.0.0"
12   title: OSM NB API featuring ETSI NFV SOL005
13   contact:
14     email: OSM_TECH@list.etsi.org
15   license:
16     name: Apache 2.0
17     url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
18 tags:
19   - name: 'VNF packages'
20     description: Management operations of VNF descriptors and packages
21   - name: 'NS packages'
22     description: Management operations of NS descriptors and packages
23   - name: 'NS instances'
24     description: Management operations of NS instances
25 paths:
26   '/nsd/v1/ns_descriptors':
27     get:
28       tags:
29         - "NS packages"
30       summary: Query information about multiple NS descriptor resources
31       description: Query information about multiple NS descriptor resources
32       operationId: getNSDs
33       security:
34         - bearerAuth: []
35       responses:
36         '200':
37           description: OK
38           content:
39             application/json:
40               schema:
41                 $ref: '#/components/schemas/ArrayOfNsdInfo'
42             application/yaml:
43               schema:
44                 $ref: '#/components/schemas/ArrayOfNsdInfo'
45         '400':
46           $ref: '#/components/responses/BadRequest'
47         '401':
48           $ref: '#/components/responses/Unauthorized'
49         '403':
50           $ref: '#/components/responses/Forbidden'
51         '404':
52           $ref: '#/components/responses/NotFound'
53         '405':
54           $ref: '#/components/responses/MethodNotAllowed'
55         '406':
56           $ref: '#/components/responses/NotAcceptable'
57         '409':
58           $ref: '#/components/responses/Conflict'
59         '422':
60           $ref: '#/components/responses/UnprocessableEntity'
61         '500':
62           $ref: '#/components/responses/InternalServerError'
63         '503':
64           $ref: '#/components/responses/ServiceUnavailable'
65         '5XX':
66           $ref: '#/components/responses/UnexpectedError'
67         default:
68           $ref: '#/components/responses/UnexpectedError'
69     post:
70       tags:
71         - "NS packages"
72       summary: Create a new NS descriptor resource
73       description: Create a new NS descriptor resource
74       operationId: addNSD
75       security:
76         - bearerAuth: []
77       requestBody:
78         $ref: '#/components/requestBodies/CreateNsdInfoRequest'
79       responses:
80         '201':
81           description: Created
82           headers:
83             Location:
84               schema:
85                 type: string
86                 format: uri
87           content:
88             application/json:
89               schema:
90                 $ref: '#/components/schemas/NsdInfo'
91             application/yaml:
92               schema:
93                 $ref: '#/components/schemas/NsdInfo'
94         '400':
95           $ref: '#/components/responses/BadRequest'
96         '401':
97           $ref: '#/components/responses/Unauthorized'
98         '403':
99           $ref: '#/components/responses/Forbidden'
100         '404':
101           $ref: '#/components/responses/NotFound'
102         '405':
103           $ref: '#/components/responses/MethodNotAllowed'
104         '406':
105           $ref: '#/components/responses/NotAcceptable'
106         '409':
107           $ref: '#/components/responses/Conflict'
108         '422':
109           $ref: '#/components/responses/UnprocessableEntity'
110         '500':
111           $ref: '#/components/responses/InternalServerError'
112         '503':
113           $ref: '#/components/responses/ServiceUnavailable'
114         '5XX':
115           $ref: '#/components/responses/UnexpectedError'
116         default:
117           $ref: '#/components/responses/UnexpectedError'
118   '/nsd/v1/ns_descriptors/{nsdInfoId}':
119     get:
120       tags:
121         - "NS packages"
122       summary: Read information about an individual NS descriptor resource
123       description: Read information about an individual NS descriptor resource
124       operationId: getNSD
125       security:
126         - bearerAuth: []
127       responses:
128         '200':
129           description: OK
130           content:
131             application/json:
132               schema:
133                 $ref: '#/components/schemas/NsdInfo'
134             application/yaml:
135               schema:
136                 $ref: '#/components/schemas/NsdInfo'
137         '400':
138           $ref: '#/components/responses/BadRequest'
139         '401':
140           $ref: '#/components/responses/Unauthorized'
141         '403':
142           $ref: '#/components/responses/Forbidden'
143         '404':
144           $ref: '#/components/responses/NotFound'
145         '405':
146           $ref: '#/components/responses/MethodNotAllowed'
147         '406':
148           $ref: '#/components/responses/NotAcceptable'
149         '409':
150           $ref: '#/components/responses/Conflict'
151         '422':
152           $ref: '#/components/responses/UnprocessableEntity'
153         '500':
154           $ref: '#/components/responses/InternalServerError'
155         '503':
156           $ref: '#/components/responses/ServiceUnavailable'
157         '5XX':
158           $ref: '#/components/responses/UnexpectedError'
159         default:
160           $ref: '#/components/responses/UnexpectedError'
161     delete:
162       tags:
163         - "NS packages"
164       summary: Delete an individual NS descriptor resource
165       description: Delete an individual NS descriptor resource
166       operationId: deleteNSD
167       security:
168         - bearerAuth: []
169       responses:
170         '204':
171           description: No Content
172         '400':
173           $ref: '#/components/responses/BadRequest'
174         '401':
175           $ref: '#/components/responses/Unauthorized'
176         '403':
177           $ref: '#/components/responses/Forbidden'
178         '404':
179           $ref: '#/components/responses/NotFound'
180         '405':
181           $ref: '#/components/responses/MethodNotAllowed'
182         '406':
183           $ref: '#/components/responses/NotAcceptable'
184         '409':
185           $ref: '#/components/responses/Conflict'
186         '422':
187           $ref: '#/components/responses/UnprocessableEntity'
188         '500':
189           $ref: '#/components/responses/InternalServerError'
190         '503':
191           $ref: '#/components/responses/ServiceUnavailable'
192         '5XX':
193           $ref: '#/components/responses/UnexpectedError'
194         default:
195           $ref: '#/components/responses/UnexpectedError'
196     patch:
197       tags:
198         - "NS packages"
199       summary: Modify the operational state and/or the user defined data of an  individual NS descriptor resource
200       description: Modify the operational state and/or the user defined data of an  individual NS descriptor resource
201       operationId: updateNSD
202       security:
203         - bearerAuth: []
204       requestBody:
205         $ref: '#/components/requestBodies/NsdInfoModifications'
206       responses:
207         '200':
208           description: OK
209           content:
210             application/json:
211               schema:
212                 $ref: '#/components/schemas/NsdInfoModifications'
213             application/yaml:
214               schema:
215                 $ref: '#/components/schemas/NsdInfoModifications'
216         '400':
217           $ref: '#/components/responses/BadRequest'
218         '401':
219           $ref: '#/components/responses/Unauthorized'
220         '403':
221           $ref: '#/components/responses/Forbidden'
222         '404':
223           $ref: '#/components/responses/NotFound'
224         '405':
225           $ref: '#/components/responses/MethodNotAllowed'
226         '406':
227           $ref: '#/components/responses/NotAcceptable'
228         '409':
229           $ref: '#/components/responses/Conflict'
230         '422':
231           $ref: '#/components/responses/UnprocessableEntity'
232         '500':
233           $ref: '#/components/responses/InternalServerError'
234         '503':
235           $ref: '#/components/responses/ServiceUnavailable'
236         '5XX':
237           $ref: '#/components/responses/UnexpectedError'
238         default:
239           $ref: '#/components/responses/UnexpectedError'
240   '/nsd/v1/ns_descriptors/{nsdInfoId}/nsd_content':
241     get:
242       tags:
243         - "NS packages"
244       summary: Fetch the content of a NSD
245       description: Fetch the content of a NSD
246       operationId: getNSDcontent
247       security:
248         - bearerAuth: []
249       responses:
250         '200':
251           description: OK
252           $ref: '#/components/requestBodies/NsdContent'
253         '206':
254           description: Partial Content
255           headers:
256             Content-Range:
257               schema:
258                 type: string
259           $ref: '#/components/requestBodies/NsdContent'
260         '400':
261           $ref: '#/components/responses/BadRequest'
262         '401':
263           $ref: '#/components/responses/Unauthorized'
264         '403':
265           $ref: '#/components/responses/Forbidden'
266         '404':
267           $ref: '#/components/responses/NotFound'
268         '405':
269           $ref: '#/components/responses/MethodNotAllowed'
270         '406':
271           $ref: '#/components/responses/NotAcceptable'
272         '409':
273           $ref: '#/components/responses/Conflict'
274         '422':
275           $ref: '#/components/responses/UnprocessableEntity'
276         '500':
277           $ref: '#/components/responses/InternalServerError'
278         '503':
279           $ref: '#/components/responses/ServiceUnavailable'
280         '5XX':
281           $ref: '#/components/responses/UnexpectedError'
282         default:
283           $ref: '#/components/responses/UnexpectedError'
284     put:
285       tags:
286         - "NS packages"
287       summary: Upload the content of a NSD
288       description: Upload the content of a NSD
289       operationId: updateNSDcontent
290       security:
291         - bearerAuth: []
292       requestBody:
293         $ref: '#/components/requestBodies/NsdContent'
294       responses:
295         '202':
296           description: Accepted
297         '204':
298           description: No Content
299         '400':
300           $ref: '#/components/responses/BadRequest'
301         '401':
302           $ref: '#/components/responses/Unauthorized'
303         '403':
304           $ref: '#/components/responses/Forbidden'
305         '404':
306           $ref: '#/components/responses/NotFound'
307         '405':
308           $ref: '#/components/responses/MethodNotAllowed'
309         '406':
310           $ref: '#/components/responses/NotAcceptable'
311         '409':
312           $ref: '#/components/responses/Conflict'
313         '422':
314           $ref: '#/components/responses/UnprocessableEntity'
315         '500':
316           $ref: '#/components/responses/InternalServerError'
317         '503':
318           $ref: '#/components/responses/ServiceUnavailable'
319         '5XX':
320           $ref: '#/components/responses/UnexpectedError'
321         default:
322           $ref: '#/components/responses/UnexpectedError'
323   '/vnfpkgm/v1/vnf_packages':
324     get:
325       tags:
326         - "VNF packages"
327       summary: Query information about multiple VNF package resources
328       description: Query information about multiple VNF package resoureces
329       operationId: getVnfPkgs
330       security:
331         - bearerAuth: []
332       responses:
333         '200':
334           description: OK
335           content:
336             application/json:
337               schema:
338                 $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
339             application/yaml:
340               schema:
341                 $ref: '#/components/schemas/ArrayOfVnfPkgInfo'
342         '400':
343           $ref: '#/components/responses/BadRequest'
344         '401':
345           $ref: '#/components/responses/Unauthorized'
346         '403':
347           $ref: '#/components/responses/Forbidden'
348         '404':
349           $ref: '#/components/responses/NotFound'
350         '405':
351           $ref: '#/components/responses/MethodNotAllowed'
352         '406':
353           $ref: '#/components/responses/NotAcceptable'
354         '409':
355           $ref: '#/components/responses/Conflict'
356         '422':
357           $ref: '#/components/responses/UnprocessableEntity'
358         '500':
359           $ref: '#/components/responses/InternalServerError'
360         '503':
361           $ref: '#/components/responses/ServiceUnavailable'
362         '5XX':
363           $ref: '#/components/responses/UnexpectedError'
364         default:
365           $ref: '#/components/responses/UnexpectedError'
366     post:
367       tags:
368         - "VNF packages"
369       summary: Create a new VNF package resource
370       description: Create a new VNF package resource
371       operationId: addVnfPkg
372       security:
373         - bearerAuth: []
374       requestBody:
375         $ref: '#/components/requestBodies/CreateVnfPkgInfoRequest'
376       responses:
377         '201':
378           description: Created
379           headers:
380             Location:
381               schema:
382                 type: string
383                 format: uri
384           content:
385             application/json:
386               schema:
387                 $ref: '#/components/schemas/VnfPkgInfo'
388             application/yaml:
389               schema:
390                 $ref: '#/components/schemas/VnfPkgInfo'
391         '400':
392           $ref: '#/components/responses/BadRequest'
393         '401':
394           $ref: '#/components/responses/Unauthorized'
395         '403':
396           $ref: '#/components/responses/Forbidden'
397         '404':
398           $ref: '#/components/responses/NotFound'
399         '405':
400           $ref: '#/components/responses/MethodNotAllowed'
401         '406':
402           $ref: '#/components/responses/NotAcceptable'
403         '409':
404           $ref: '#/components/responses/Conflict'
405         '422':
406           $ref: '#/components/responses/UnprocessableEntity'
407         '500':
408           $ref: '#/components/responses/InternalServerError'
409         '503':
410           $ref: '#/components/responses/ServiceUnavailable'
411         '5XX':
412           $ref: '#/components/responses/UnexpectedError'
413         default:
414           $ref: '#/components/responses/UnexpectedError'
415   '/vnfpkgm/v1/vnf_packages/{vnfPkgId}':
416     get:
417       tags:
418         - "VNF packages"
419       summary: Read information about an individual VNF package resource
420       description: Read information about an individual VNF package resource
421       operationId: getVnfPkg
422       security:
423         - bearerAuth: []
424       responses:
425         '200':
426           description: OK
427           content:
428             application/json:
429               schema:
430                 $ref: '#/components/schemas/VnfPkgInfo'
431             application/yaml:
432               schema:
433                 $ref: '#/components/schemas/VnfPkgInfo'
434         '400':
435           $ref: '#/components/responses/BadRequest'
436         '401':
437           $ref: '#/components/responses/Unauthorized'
438         '403':
439           $ref: '#/components/responses/Forbidden'
440         '404':
441           $ref: '#/components/responses/NotFound'
442         '405':
443           $ref: '#/components/responses/MethodNotAllowed'
444         '406':
445           $ref: '#/components/responses/NotAcceptable'
446         '409':
447           $ref: '#/components/responses/Conflict'
448         '422':
449           $ref: '#/components/responses/UnprocessableEntity'
450         '500':
451           $ref: '#/components/responses/InternalServerError'
452         '503':
453           $ref: '#/components/responses/ServiceUnavailable'
454         '5XX':
455           $ref: '#/components/responses/UnexpectedError'
456         default:
457           $ref: '#/components/responses/UnexpectedError'
458     delete:
459       tags:
460         - "VNF packages"
461       summary: Delete an individual VNF package resource
462       description: Delete an individual VNF package resource
463       operationId: deleteVnfPkg
464       security:
465         - bearerAuth: []
466       responses:
467         '204':
468           description: No Content
469         '400':
470           $ref: '#/components/responses/BadRequest'
471         '401':
472           $ref: '#/components/responses/Unauthorized'
473         '403':
474           $ref: '#/components/responses/Forbidden'
475         '404':
476           $ref: '#/components/responses/NotFound'
477         '405':
478           $ref: '#/components/responses/MethodNotAllowed'
479         '406':
480           $ref: '#/components/responses/NotAcceptable'
481         '409':
482           $ref: '#/components/responses/Conflict'
483         '422':
484           $ref: '#/components/responses/UnprocessableEntity'
485         '500':
486           $ref: '#/components/responses/InternalServerError'
487         '503':
488           $ref: '#/components/responses/ServiceUnavailable'
489         '5XX':
490           $ref: '#/components/responses/UnexpectedError'
491         default:
492           $ref: '#/components/responses/UnexpectedError'
493     patch:
494       tags:
495         - "VNF packages"
496       summary: Modify the operational state and/or the user defined data of an individual VNF package resource
497       description: Modify the operational state and/or the user defined data of an individual VNF package resource
498       operationId: updateVnfPkg
499       security:
500         - bearerAuth: []
501       requestBody:
502         $ref: '#/components/requestBodies/VnfPkgInfoModifications'
503       responses:
504         '200':
505           description: OK
506           content:
507             application/json:
508               schema:
509                 $ref: '#/components/schemas/VnfPkgInfoModifications'
510             application/yaml:
511               schema:
512                 $ref: '#/components/schemas/VnfPkgInfoModifications'
513         '400':
514           $ref: '#/components/responses/BadRequest'
515         '401':
516           $ref: '#/components/responses/Unauthorized'
517         '403':
518           $ref: '#/components/responses/Forbidden'
519         '404':
520           $ref: '#/components/responses/NotFound'
521         '405':
522           $ref: '#/components/responses/MethodNotAllowed'
523         '406':
524           $ref: '#/components/responses/NotAcceptable'
525         '409':
526           $ref: '#/components/responses/Conflict'
527         '422':
528           $ref: '#/components/responses/UnprocessableEntity'
529         '500':
530           $ref: '#/components/responses/InternalServerError'
531         '503':
532           $ref: '#/components/responses/ServiceUnavailable'
533         '5XX':
534           $ref: '#/components/responses/UnexpectedError'
535         default:
536           $ref: '#/components/responses/UnexpectedError'
537   '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/vnfd':
538     get:
539       tags:
540         - "VNF packages"
541       summary: Read VNFD of an on-boarded VNF package
542       description: Read VNFD of an on-boarded VNF package
543       operationId: getVnfPkgVNFD
544       security:
545         - bearerAuth: []
546       responses:
547         '200':
548           description: OK
549           content:
550             text/plain:
551               schema:
552                 $ref: '#/components/schemas/VnfDescriptor'
553         '400':
554           $ref: '#/components/responses/BadRequest'
555         '401':
556           $ref: '#/components/responses/Unauthorized'
557         '403':
558           $ref: '#/components/responses/Forbidden'
559         '404':
560           $ref: '#/components/responses/NotFound'
561         '405':
562           $ref: '#/components/responses/MethodNotAllowed'
563         '406':
564           $ref: '#/components/responses/NotAcceptable'
565         '409':
566           $ref: '#/components/responses/Conflict'
567         '422':
568           $ref: '#/components/responses/UnprocessableEntity'
569         '500':
570           $ref: '#/components/responses/InternalServerError'
571         '503':
572           $ref: '#/components/responses/ServiceUnavailable'
573         '5XX':
574           $ref: '#/components/responses/UnexpectedError'
575         default:
576           $ref: '#/components/responses/UnexpectedError'
577   '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content':
578     get:
579       tags:
580         - "VNF packages"
581       summary: Fetch an on-boarded VNF package
582       description: Fetch an on-boarded VNF package
583       operationId: getVnfPkgContent
584       security:
585         - bearerAuth: []
586       responses:
587         '200':
588           description: OK
589           content:
590             application/zip:
591               schema:
592                 $ref: '#/components/schemas/VnfPackage'
593         '206':
594           description: Partial Content
595           headers:
596             Content-Range:
597               schema:
598                 type: string
599           content:
600             application/zip:
601               schema:
602                 $ref: '#/components/schemas/VnfPackage'
603         '400':
604           $ref: '#/components/responses/BadRequest'
605         '401':
606           $ref: '#/components/responses/Unauthorized'
607         '403':
608           $ref: '#/components/responses/Forbidden'
609         '404':
610           $ref: '#/components/responses/NotFound'
611         '405':
612           $ref: '#/components/responses/MethodNotAllowed'
613         '406':
614           $ref: '#/components/responses/NotAcceptable'
615         '409':
616           $ref: '#/components/responses/Conflict'
617         '422':
618           $ref: '#/components/responses/UnprocessableEntity'
619         '500':
620           $ref: '#/components/responses/InternalServerError'
621         '503':
622           $ref: '#/components/responses/ServiceUnavailable'
623         '5XX':
624           $ref: '#/components/responses/UnexpectedError'
625         default:
626           $ref: '#/components/responses/UnexpectedError'
627     put:
628       tags:
629         - "VNF packages"
630       summary: Upload a VNF package by providing the content of the VNF package
631       description: Upload a VNF package by providing the content of the VNF package
632       operationId: uploadVnfPkgContent
633       security:
634         - bearerAuth: []
635       requestBody:
636         $ref: '#/components/requestBodies/VnfPackage'
637       responses:
638         '202':
639           description: Accepted
640         #'204':
641         #  description: No Content
642         '400':
643           $ref: '#/components/responses/BadRequest'
644         '401':
645           $ref: '#/components/responses/Unauthorized'
646         '403':
647           $ref: '#/components/responses/Forbidden'
648         '404':
649           $ref: '#/components/responses/NotFound'
650         '405':
651           $ref: '#/components/responses/MethodNotAllowed'
652         '406':
653           $ref: '#/components/responses/NotAcceptable'
654         '409':
655           $ref: '#/components/responses/Conflict'
656         '422':
657           $ref: '#/components/responses/UnprocessableEntity'
658         '500':
659           $ref: '#/components/responses/InternalServerError'
660         '503':
661           $ref: '#/components/responses/ServiceUnavailable'
662         '5XX':
663           $ref: '#/components/responses/UnexpectedError'
664         default:
665           $ref: '#/components/responses/UnexpectedError'
666   '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content/upload_from_uri':
667     post:
668       tags:
669         - "VNF packages"
670       summary: Upload a VNF package by providing the URI of the VNF package
671       description: Upload a VNF package by providing the URI of the VNF package
672       operationId: uploadVnfPkgContentFromURI
673       security:
674         - bearerAuth: []
675       requestBody:
676         $ref: '#/components/requestBodies/UploadVnfPackageFromUriRequest'
677       responses:
678         '202':
679           description: Accepted
680         #'204':
681         #  description: No Content
682         '400':
683           $ref: '#/components/responses/BadRequest'
684         '401':
685           $ref: '#/components/responses/Unauthorized'
686         '403':
687           $ref: '#/components/responses/Forbidden'
688         '404':
689           $ref: '#/components/responses/NotFound'
690         '405':
691           $ref: '#/components/responses/MethodNotAllowed'
692         '406':
693           $ref: '#/components/responses/NotAcceptable'
694         '409':
695           $ref: '#/components/responses/Conflict'
696         '422':
697           $ref: '#/components/responses/UnprocessableEntity'
698         '500':
699           $ref: '#/components/responses/InternalServerError'
700         '503':
701           $ref: '#/components/responses/ServiceUnavailable'
702         '5XX':
703           $ref: '#/components/responses/UnexpectedError'
704         default:
705           $ref: '#/components/responses/UnexpectedError'
706   '/vnfpkgm/v1/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}':
707     get:
708       tags:
709         - "VNF packages"
710       summary: Fetch individual VNF package artifact
711       description: Fetch individual VNF package artifact
712       operationId: getVnfPkgArtifact
713       security:
714         - bearerAuth: []
715       responses:
716         '200':
717           description: OK
718           content:
719             application/octet-stream:
720               schema:
721                 type: string
722                 format: binary
723         '206':
724           description: Partial Content
725           headers:
726             Content-Range:
727               schema:
728                 type: string
729           content:
730             application/octet-stream:
731               schema:
732                 type: string
733                 format: binary
734         '400':
735           $ref: '#/components/responses/BadRequest'
736         '401':
737           $ref: '#/components/responses/Unauthorized'
738         '403':
739           $ref: '#/components/responses/Forbidden'
740         '404':
741           $ref: '#/components/responses/NotFound'
742         '405':
743           $ref: '#/components/responses/MethodNotAllowed'
744         '406':
745           $ref: '#/components/responses/NotAcceptable'
746         '409':
747           $ref: '#/components/responses/Conflict'
748         '422':
749           $ref: '#/components/responses/UnprocessableEntity'
750         '500':
751           $ref: '#/components/responses/InternalServerError'
752         '503':
753           $ref: '#/components/responses/ServiceUnavailable'
754         '5XX':
755           $ref: '#/components/responses/UnexpectedError'
756         default:
757           $ref: '#/components/responses/UnexpectedError'
758   '/nslcm/v1/ns_instances':
759     get:
760       tags:
761         - "NS instances"
762       summary: Query information about multiple NS instances
763       description: Query information about multiple NS isntances
764       operationId: getNSinstances
765       security:
766         - bearerAuth: []
767       responses:
768         '200':
769           description: OK
770           content:
771             application/json:
772               schema:
773                 $ref: '#/components/schemas/ArrayOfNsInstance'
774             application/yaml:
775               schema:
776                 $ref: '#/components/schemas/ArrayOfNsInstance'
777         '400':
778           $ref: '#/components/responses/BadRequest'
779         '401':
780           $ref: '#/components/responses/Unauthorized'
781         '403':
782           $ref: '#/components/responses/Forbidden'
783         '404':
784           $ref: '#/components/responses/NotFound'
785         '405':
786           $ref: '#/components/responses/MethodNotAllowed'
787         '406':
788           $ref: '#/components/responses/NotAcceptable'
789         '409':
790           $ref: '#/components/responses/Conflict'
791         '422':
792           $ref: '#/components/responses/UnprocessableEntity'
793         '500':
794           $ref: '#/components/responses/InternalServerError'
795         '503':
796           $ref: '#/components/responses/ServiceUnavailable'
797         '5XX':
798           $ref: '#/components/responses/UnexpectedError'
799         default:
800           $ref: '#/components/responses/UnexpectedError'
801     post:
802       tags:
803         - "NS instances"
804       summary: Create a new NS instance resource
805       description: Create a new NS instance resource
806       operationId: addNSinstance
807       security:
808         - bearerAuth: []
809       requestBody:
810         $ref: '#/components/requestBodies/CreateNsRequest'
811       responses:
812         '201':
813           description: Created
814           headers:
815             Location:
816               schema:
817                 type: string
818                 format: uri
819           content:
820             application/json:
821               schema:
822                 $ref: '#/components/schemas/NsInstance'
823             application/yaml:
824               schema:
825                 $ref: '#/components/schemas/NsInstance'
826         '400':
827           $ref: '#/components/responses/BadRequest'
828         '401':
829           $ref: '#/components/responses/Unauthorized'
830         '403':
831           $ref: '#/components/responses/Forbidden'
832         '404':
833           $ref: '#/components/responses/NotFound'
834         '405':
835           $ref: '#/components/responses/MethodNotAllowed'
836         '406':
837           $ref: '#/components/responses/NotAcceptable'
838         '409':
839           $ref: '#/components/responses/Conflict'
840         '422':
841           $ref: '#/components/responses/UnprocessableEntity'
842         '500':
843           $ref: '#/components/responses/InternalServerError'
844         '503':
845           $ref: '#/components/responses/ServiceUnavailable'
846         '5XX':
847           $ref: '#/components/responses/UnexpectedError'
848         default:
849           $ref: '#/components/responses/UnexpectedError'
850   '/nslcm/v1/ns_instances/{nsInstanceId}':
851     get:
852       tags:
853         - "NS instances"
854       summary: Read an individual NS instance resource
855       description: Read an individual NS instance resource
856       operationId: getNSinstance
857       security:
858         - bearerAuth: []
859       responses:
860         '200':
861           description: OK
862           content:
863             application/json:
864               schema:
865                 $ref: '#/components/schemas/NsInstance'
866             application/yaml:
867               schema:
868                 $ref: '#/components/schemas/NsInstance'
869         '400':
870           $ref: '#/components/responses/BadRequest'
871         '401':
872           $ref: '#/components/responses/Unauthorized'
873         '403':
874           $ref: '#/components/responses/Forbidden'
875         '404':
876           $ref: '#/components/responses/NotFound'
877         '405':
878           $ref: '#/components/responses/MethodNotAllowed'
879         '406':
880           $ref: '#/components/responses/NotAcceptable'
881         '409':
882           $ref: '#/components/responses/Conflict'
883         '422':
884           $ref: '#/components/responses/UnprocessableEntity'
885         '500':
886           $ref: '#/components/responses/InternalServerError'
887         '503':
888           $ref: '#/components/responses/ServiceUnavailable'
889         '5XX':
890           $ref: '#/components/responses/UnexpectedError'
891         default:
892           $ref: '#/components/responses/UnexpectedError'
893     delete:
894       tags:
895         - "NS instances"
896       summary: Delete an individual NS instance resource
897       description: Delete an individual NS instance resource
898       operationId: deleteNSinstance
899       security:
900         - bearerAuth: []
901       responses:
902         '204':
903           description: No Content
904         '400':
905           $ref: '#/components/responses/BadRequest'
906         '401':
907           $ref: '#/components/responses/Unauthorized'
908         '403':
909           $ref: '#/components/responses/Forbidden'
910         '404':
911           $ref: '#/components/responses/NotFound'
912         '405':
913           $ref: '#/components/responses/MethodNotAllowed'
914         '406':
915           $ref: '#/components/responses/NotAcceptable'
916         '409':
917           $ref: '#/components/responses/Conflict'
918         '422':
919           $ref: '#/components/responses/UnprocessableEntity'
920         '500':
921           $ref: '#/components/responses/InternalServerError'
922         '503':
923           $ref: '#/components/responses/ServiceUnavailable'
924         '5XX':
925           $ref: '#/components/responses/UnexpectedError'
926         default:
927           $ref: '#/components/responses/UnexpectedError'
928   '/nslcm/v1/ns_instances/{nsInstanceId}/instantiate':
929     post:
930       tags:
931         - "NS instances"
932       summary: Instantiate a NS
933       description: |
934         Instantiate a NS. The precondition is that the NS instance must have
935         been created and must be in NOT_INSTANTIATED state. As a result of the
936         success of this operation, the NFVO creates a "NS Lifecycle Operation
937         Occurrence" resource for the request, and the NS instance state becomes
938         INSTANTIATED.
939       operationId: instantiateNSinstance
940       security:
941         - bearerAuth: []
942       requestBody:
943         $ref: '#/components/requestBodies/InstantiateNsRequest'
944       responses:
945         '202':
946           description: Accepted
947           headers:
948             Location:
949               description: |
950                 It must point to the new "NS Lifecycle Operation Occurrence"
951                 resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
952               schema:
953                 type: string
954                 format: uri
955         '400':
956           $ref: '#/components/responses/BadRequest'
957         '401':
958           $ref: '#/components/responses/Unauthorized'
959         '403':
960           $ref: '#/components/responses/Forbidden'
961         '404':
962           $ref: '#/components/responses/NotFound'
963         '405':
964           $ref: '#/components/responses/MethodNotAllowed'
965         '406':
966           $ref: '#/components/responses/NotAcceptable'
967         '409':
968           $ref: '#/components/responses/Conflict'
969         '422':
970           $ref: '#/components/responses/UnprocessableEntity'
971         '500':
972           $ref: '#/components/responses/InternalServerError'
973         '503':
974           $ref: '#/components/responses/ServiceUnavailable'
975         '5XX':
976           $ref: '#/components/responses/UnexpectedError'
977         default:
978           $ref: '#/components/responses/UnexpectedError'
979   '/nslcm/v1/ns_instances/{nsInstanceId}/scale':
980     post:
981       tags:
982         - "NS instances"
983       summary: Scale a NS instance
984       description: |
985         Scale a NS instance. The precondition is that the NS instance must have
986         been created and must be in INSTANTIATED state. As a result of the
987         success of this operation, the NFVO creates a "NS Lifecycle Operation
988         Occurrence" resource for the request, and the NS instance state remains
989         INSTANTIATED.
990       operationId: scaleNSinstance
991       security:
992         - bearerAuth: []
993       requestBody:
994         $ref: '#/components/requestBodies/ScaleNsRequest'
995       responses:
996         '202':
997           description: Accepted
998           headers:
999             Location:
1000               description: |
1001                 It must point to the new "NS Lifecycle Operation Occurrence"
1002                 resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
1003               schema:
1004                 type: string
1005                 format: uri
1006         '400':
1007           $ref: '#/components/responses/BadRequest'
1008         '401':
1009           $ref: '#/components/responses/Unauthorized'
1010         '403':
1011           $ref: '#/components/responses/Forbidden'
1012         '404':
1013           $ref: '#/components/responses/NotFound'
1014         '405':
1015           $ref: '#/components/responses/MethodNotAllowed'
1016         '406':
1017           $ref: '#/components/responses/NotAcceptable'
1018         '409':
1019           $ref: '#/components/responses/Conflict'
1020         '422':
1021           $ref: '#/components/responses/UnprocessableEntity'
1022         '500':
1023           $ref: '#/components/responses/InternalServerError'
1024         '503':
1025           $ref: '#/components/responses/ServiceUnavailable'
1026         '5XX':
1027           $ref: '#/components/responses/UnexpectedError'
1028         default:
1029           $ref: '#/components/responses/UnexpectedError'
1030   '/nslcm/v1/ns_instances/{nsInstanceId}/update':
1031     post:
1032       tags:
1033         - "NS instances"
1034       summary: Update a NS instance
1035       description: |
1036         Update a NS instance. The precondition is that the NS instance must have
1037         been created and must be in INSTANTIATED state. As a result of the
1038         success of this operation, the NFVO creates a "NS Lifecycle Operation
1039         Occurrence" resource for the request, and the NS instance state remains
1040         INSTANTIATED.
1041       operationId: updateNSinstance
1042       security:
1043         - bearerAuth: []
1044       requestBody:
1045         $ref: '#/components/requestBodies/UpdateNsRequest'
1046       responses:
1047         '202':
1048           description: Accepted
1049           headers:
1050             Location:
1051               description: |
1052                 It must point to the new "NS Lifecycle Operation Occurrence"
1053                 resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
1054               schema:
1055                 type: string
1056                 format: uri
1057         '400':
1058           $ref: '#/components/responses/BadRequest'
1059         '401':
1060           $ref: '#/components/responses/Unauthorized'
1061         '403':
1062           $ref: '#/components/responses/Forbidden'
1063         '404':
1064           $ref: '#/components/responses/NotFound'
1065         '405':
1066           $ref: '#/components/responses/MethodNotAllowed'
1067         '406':
1068           $ref: '#/components/responses/NotAcceptable'
1069         '409':
1070           $ref: '#/components/responses/Conflict'
1071         '422':
1072           $ref: '#/components/responses/UnprocessableEntity'
1073         '500':
1074           $ref: '#/components/responses/InternalServerError'
1075         '503':
1076           $ref: '#/components/responses/ServiceUnavailable'
1077         '5XX':
1078           $ref: '#/components/responses/UnexpectedError'
1079         default:
1080           $ref: '#/components/responses/UnexpectedError'
1081   '/nslcm/v1/ns_instances/{nsInstanceId}/heal':
1082     post:
1083       tags:
1084         - "NS instances"
1085       summary: Heal a NS instance
1086       description: |
1087         Heal a NS instance. The precondition is that the NS instance must have
1088         been created and must be in INSTANTIATED state. As a result of the
1089         success of this operation, the NFVO creates a "NS Lifecycle Operation
1090         Occurrence" resource for the request, and the NS instance state remains
1091         INSTANTIATED.
1092       operationId: healNSinstance
1093       security:
1094         - bearerAuth: []
1095       requestBody:
1096         $ref: '#/components/requestBodies/HealNsRequest'
1097       responses:
1098         '202':
1099           description: Accepted
1100           headers:
1101             Location:
1102               description: |
1103                 It must point to the new "NS Lifecycle Operation Occurrence"
1104                 resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
1105               schema:
1106                 type: string
1107                 format: uri
1108         '400':
1109           $ref: '#/components/responses/BadRequest'
1110         '401':
1111           $ref: '#/components/responses/Unauthorized'
1112         '403':
1113           $ref: '#/components/responses/Forbidden'
1114         '404':
1115           $ref: '#/components/responses/NotFound'
1116         '405':
1117           $ref: '#/components/responses/MethodNotAllowed'
1118         '406':
1119           $ref: '#/components/responses/NotAcceptable'
1120         '409':
1121           $ref: '#/components/responses/Conflict'
1122         '422':
1123           $ref: '#/components/responses/UnprocessableEntity'
1124         '500':
1125           $ref: '#/components/responses/InternalServerError'
1126         '503':
1127           $ref: '#/components/responses/ServiceUnavailable'
1128         '5XX':
1129           $ref: '#/components/responses/UnexpectedError'
1130         default:
1131           $ref: '#/components/responses/UnexpectedError'
1132   '/nslcm/v1/ns_instances/{nsInstanceId}/terminate':
1133     post:
1134       tags:
1135         - "NS instances"
1136       summary: Terminate a NS instance
1137       description: |
1138         Terminate a NS instance. The precondition is that the NS instance must have
1139         been created and must be in INSTANTIATED state. As a result of the
1140         success of this operation, the NFVO creates a "NS Lifecycle Operation
1141         Occurrence" resource for the request, and the NS instance state becomes
1142         NOT_INSTANTIATED.
1143       operationId: terminateNSinstance
1144       security:
1145         - bearerAuth: []
1146       requestBody:
1147         $ref: '#/components/requestBodies/TerminateNsRequest'
1148       responses:
1149         '202':
1150           description: Accepted
1151           headers:
1152             Location:
1153               description: |
1154                 It must point to the new "NS Lifecycle Operation Occurrence"
1155                 resource, i.e. an URI like ".../ns_lcm_op_occs/{nsLcmOpOccId}"
1156               schema:
1157                 type: string
1158                 format: uri
1159         '400':
1160           $ref: '#/components/responses/BadRequest'
1161         '401':
1162           $ref: '#/components/responses/Unauthorized'
1163         '403':
1164           $ref: '#/components/responses/Forbidden'
1165         '404':
1166           $ref: '#/components/responses/NotFound'
1167         '405':
1168           $ref: '#/components/responses/MethodNotAllowed'
1169         '406':
1170           $ref: '#/components/responses/NotAcceptable'
1171         '409':
1172           $ref: '#/components/responses/Conflict'
1173         '422':
1174           $ref: '#/components/responses/UnprocessableEntity'
1175         '500':
1176           $ref: '#/components/responses/InternalServerError'
1177         '503':
1178           $ref: '#/components/responses/ServiceUnavailable'
1179         '5XX':
1180           $ref: '#/components/responses/UnexpectedError'
1181         default:
1182           $ref: '#/components/responses/UnexpectedError'
1183 externalDocs:
1184   description: Find out more OSM
1185   url: 'http://osm.etsi.org/wikipub'
1186 components:
1187   responses:
1188     BadRequest:
1189       description: Bad request. The server cannot process the request due to a client error.
1190       content:
1191         application/json:
1192           schema:
1193             $ref: '#/components/schemas/ProblemDetails'
1194     Unauthorized:
1195       description: Authorization information is missing or invalid.
1196       content:
1197         application/json:
1198           schema:
1199             $ref: '#/components/schemas/ProblemDetails'
1200     Forbidden:
1201       description: Not enough permissions to do this operation.
1202       content:
1203         application/json:
1204           schema:
1205             $ref: '#/components/schemas/ProblemDetails'
1206     NotFound:
1207       description: The specified resource was not found.
1208       content:
1209         application/json:
1210           schema:
1211             $ref: '#/components/schemas/ProblemDetails'
1212     MethodNotAllowed:
1213       description: This method is not supported for the requested resource.
1214       content:
1215         application/json:
1216           schema:
1217             $ref: '#/components/schemas/ProblemDetails'
1218     NotAcceptable:
1219       description: The requested resource content cannot match the Accept headers sent in the request.
1220       content:
1221         application/json:
1222           schema:
1223             $ref: '#/components/schemas/ProblemDetails'
1224     Conflict:
1225       description: The operation cannot be executed currently, due to a conflict with the state of the resource.
1226       content:
1227         application/json:
1228           schema:
1229             $ref: '#/components/schemas/ProblemDetails'
1230     UnprocessableEntity:
1231       description: The request was well-formed but was unable to be followed due to semantic errors.
1232       content:
1233         application/json:
1234           schema:
1235             $ref: '#/components/schemas/ProblemDetails'
1236     InternalServerError:
1237       description: Internal server error.
1238       content:
1239         application/json:
1240           schema:
1241             $ref: '#/components/schemas/ProblemDetails'
1242     ServiceUnavailable:
1243       description: Service temporarily unavailable.
1244       content:
1245         application/json:
1246           schema:
1247             $ref: '#/components/schemas/ProblemDetails'
1248     UnexpectedError:
1249       description: Unexpected error.
1250       content:
1251         application/json:
1252           schema:
1253             $ref: '#/components/schemas/ProblemDetails'
1254   schemas:
1255     NsDescriptor:
1256       type: string
1257     NsPackage:
1258       type: string
1259       format: binary
1260     KeyValuePairs:
1261       type: object
1262       additionalProperties:
1263         type: string
1264     CreateNsdInfoRequest:
1265       type: object
1266       properties:
1267         userDefinedData:
1268           $ref: '#/components/schemas/KeyValuePairs'
1269     NsdOnboardingStateType:
1270       type: string
1271       enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
1272       description: |
1273         NSD onboarding state:
1274          * `CREATED` - The NSD information object is created.
1275          * `UPLOADING` - The associated NSD content is being uploaded.
1276          * `PROCESSING` - The associated NSD content is being processed, e.g. validation.
1277          * `ONBOARDED` - The associated NSD content is on-boarded. 
1278     NsdOperationalStateType:
1279       type: string
1280       enum: [ENABLED, DISABLED]
1281       description: |
1282         NSD operational state:
1283          * `ENABLED` - The NSD is enabled.
1284          * `DISABLED` - The NSD is disabled.
1285     NsdUsageStateType:
1286       type: string
1287       enum: [IN_USE, NOT_IN_USE]
1288       description: |
1289         NSD usage state:
1290          * `IN_USE` - The NSD is in use.
1291          * `NOT_IN_USE` - The NSD is not in use.
1292     NsdInfoModifications:
1293       type: object
1294       properties:
1295         nsdOperationalState:
1296           $ref: '#/components/schemas/NsdOperationalStateType'
1297         userDefinedData:
1298           $ref: '#/components/schemas/KeyValuePairs'
1299     NsdInfo:
1300       type: object
1301       properties:
1302         id:
1303           description: |
1304             Identifier of the onboarded individual NS descriptor
1305             resource. This identifier is allocated by the NFVO.
1306           type: string
1307           format: uuid
1308         nsdId:
1309           description: |
1310             This identifier, which is allocated by the NSD
1311             designer, identifies the NSD in a globally unique
1312             way. It is copied from the NSD content and shall be
1313             present after the NSD content is on-boarded.
1314           type: string
1315           format: uuid
1316         nsdName:
1317           description: |
1318             Name of the onboarded NSD. This information is
1319             copied from the NSD content and shall be present
1320             after the NSD content is on-boarded. 
1321           type: string
1322         nsdVersion:
1323           description: |
1324             Version of the on-boarded NSD. This information is
1325             copied from the NSD content and shall be present
1326             after the NSD content is on-boarded.
1327           type: string
1328         nsdDesigner:
1329           description: |
1330             Designer of the on-boarded NSD. This information is
1331             copied from the NSD content and shall be present
1332             after the NSD content is on-boarded.
1333           type: string
1334         nsdInvariantId:
1335           description: |
1336             This identifier, which is allocated by the NSD designer,
1337             identifies an NSD in a version independent manner. This
1338             information is copied from the NSD content and shall be
1339             present after the NSD content is on-boarded. 
1340           type: string
1341           format: uuid
1342         vnfPkgIds:
1343           description: |
1344             List of VNF package identifiers referenced by the on-boarded
1345             NS descriptor resource.
1346           type: array
1347           items:
1348             type: string
1349             format: uuid
1350         pnfdInfoIds:
1351           description: |
1352             List of PNFD identifiers referenced by the on-boarded NS
1353             descriptor resource.
1354           type: array
1355           items:
1356             type: string
1357             format: uuid
1358         nestedNsdInfoIds:
1359           description: |
1360             List of NSD identifiers referenced by the on-boarded NS
1361             descriptor resource.
1362           type: array
1363           items:
1364             type: string
1365             format: uuid
1366         nsdOnboardingState:
1367           description: |
1368             Onboarding state of the individual NS descriptor resource.
1369           $ref: '#components/schemas/NsdOnboardingStateType'
1370         onboardingFailureDetails:
1371           description: |
1372             Failure details of current onboarding procedure. It follows
1373             the "ProblemDetails" structure. It shall be present when the
1374             "nsdOnboardingState" attribute is CREATED and the uploading or
1375             processing fails in NFVO.
1376           $ref: '#/components/schemas/ProblemDetails'
1377         nsdOperationalState:
1378           description: |
1379             Operational state of the individual NS descriptor resource. This
1380             attribute can be modified with the PATCH method. If the value of
1381             the nsdOnboardingState attribute is not equal to "ONBOARDED", the
1382             value of the nsdOperationalState attribute shall be equal to
1383             "DISABLED".
1384           $ref: '#components/schemas/NsdOperationalStateType'
1385         nsdUsagestate:
1386           description: |
1387             Usage state of the individual NS descriptor resource. If the value
1388             of the nsdOnboardingState attribute is not equal to "ONBOARDED",
1389             the value of the nsdUsageState attribute shall be equal to
1390             "NOT_IN_USE".
1391           $ref: '#components/schemas/NsdUsageStateType'
1392         userDefinedData:
1393           $ref: '#/components/schemas/KeyValuePairs'
1394         _links:
1395           description: |
1396             Links to resources related to this resource
1397           type: string
1398         self:
1399           description: |
1400             URI of this resource
1401           type: string
1402           format: uri
1403         nsd_content:
1404           description: |
1405             Link to the NSD content resource.
1406           type: string
1407           format: uri
1408       required:
1409         - id
1410         - nsdOnboardingState
1411         - nsdOperationalState
1412         - nsdUsageState
1413         - _links
1414         - self
1415         - nsd_content
1416     ArrayOfNsdInfo:
1417       type: array
1418       items:
1419         $ref: '#/components/schemas/NsdInfo'
1420     ProblemDetails:
1421       type: object
1422       properties:
1423         type:
1424           type: string
1425           format: uri
1426         title:
1427           type: string
1428         status:
1429           type: integer
1430         detail:
1431           type: string
1432         instance:
1433           type: string
1434           format: uri
1435       additionalProperties: true
1436       required:
1437         - status
1438         - detail
1439     VnfDescriptor:
1440       type: string
1441     VnfPackage:
1442       type: string
1443       format: binary
1444     CreateVnfPkgInfoRequest:
1445       type: object
1446       properties:
1447         userDefinedData:
1448           $ref: '#/components/schemas/KeyValuePairs'
1449     VnfPackageOnboardingStateType:
1450       type: string
1451       enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
1452       description: |
1453         VNF Package onboarding state:
1454          * `CREATED` - The VNF Package information object is created.
1455          * `UPLOADING` - The VNF Package is being uploaded.
1456          * `PROCESSING` - The VNF Package is being processed, e.g. validation.
1457          * `ONBOARDED` - The VNF Package is successfully on-boarded.
1458     VnfPackageOperationalStateType:
1459       type: string
1460       enum: [ENABLED, DISABLED]
1461       description: |
1462         VNF Package operational state:
1463          * `ENABLED` - The VNF Package is enabled.
1464          * `DISABLED` - The VNF Package is disabled.
1465     VnfPackageUsageStateType:
1466       type: string
1467       enum: [IN_USE, NOT_IN_USE]
1468       description: |
1469         VNF Package usage state:
1470          * `IN_USE` - The VNF Package is in use.
1471          * `NOT_IN_USE` - The VNF Package is not in use.
1472     #SoftwareImageFormatType:
1473     #  type: string
1474     #  enum: [AKI, AMI, ARI, BARE, DOCKER, OVA, OVF]
1475     #  description: |
1476     #    Software image format. Permitted values:
1477     #     * `AKI`: a kernel image format
1478     #     * `AMI`: a machine image format
1479     #     * `ARI`: a ramdisk image format
1480     #     * `BARE`: the image does not have a container or metadata envelope
1481     #     * `DOCKER`: docker container format
1482     #     * `OVA`: OVF package in a tarfile
1483     #     * `OVF`: OVF container format
1484     VnfPackageSoftwareImageInfo:
1485       type: object
1486       additionalProperties: true
1487       #properties:
1488         #id:
1489         #  description: |
1490         #    Identifier of the software image, unique in the scope of a VNFD.
1491         #  type: string
1492         #name:
1493         #  description: |
1494         #    Name of the software image.
1495         #  type: string
1496         #provider:
1497         #  description: |
1498         #    Provider of the software image.
1499         #  type: string
1500         #version:
1501         #  description: |
1502         #    Version of the software image.
1503         #  type: string
1504         #checksum:
1505         #  description: |
1506         #    Checksum of the software image file.
1507         #  type: string
1508         #containerFormat:
1509         #  description: |
1510         #    Container format indicates whether the software image is in a
1511         #    file format that also contains metadata about the actual
1512         #    software.
1513         #  $ref: '#/components/schemas/SoftwareImageFormatType'
1514         #diskFormat:
1515         #  description: |
1516         #    Disk format of a software image is the format of the underlying
1517         #    disk image.
1518         #  $ref: '#/components/schemas/DiskFormatType'
1519         # ...
1520     VnfPackageArtifactInfo:
1521       type: object
1522       additionalProperties: true
1523     VnfPkgInfoModifications:
1524       type: object
1525       properties:
1526         operationalState:
1527           $ref: '#/components/schemas/VnfPackageOperationalStateType'
1528         userDefinedData:
1529           $ref: '#/components/schemas/KeyValuePairs'
1530     VnfPkgInfo:
1531       type: object
1532       properties:
1533         id:
1534           description: |
1535             Identifier of the VNF package. This identifier is allocated by the NFVO.
1536           type: string
1537           format: uuid
1538         vnfdId:
1539           description: |
1540             This identifier, which is managed by the VNF provider, identifies
1541             the VNF package and the VNFD in a globally unique way. It's
1542             copied from the VNFD of the on-boarded VNF package. It shall be
1543             present after the VNF package content has been on-boarded and
1544             absent otherwise.
1545           type: string
1546           format: uuid
1547         vnfProvider:
1548           description: |
1549             Deovider of the VNF pacakge and the VNFD. This information is
1550             copied from the VNFD. It shall be present after the VNF package
1551             content has been on-boarded and absent otherwise.
1552           type: string
1553         vnfProductName:
1554           description: |
1555             Name to identify the VNF product. Invariant for the VNF product
1556             ligetime. This information is copied from the VNFD. It shall be
1557             present after the VNF package content has been on-boarded and
1558             absent otherwise.
1559           type: string
1560         vnfSoftwareVersion:
1561           description: |
1562             Software version of the VNF. This is changed when there is any
1563             change to the software included in the VNF package. This
1564             information is copied from the VNFD. It shall be present after the
1565             VNF package content has been on-boarded and absent otherwise.
1566           type: string
1567         vnfdVersion:
1568           description: |
1569             The version of the VNFD. TSof information is copied from the VNFD.
1570             It shall be present after the VNF package content has been
1571             on-boarded and absent otherwise.
1572           type: string
1573         checksum:
1574           description: |
1575             Checksum of the on-boarded VNF package. It shall be present after
1576             the VNF package content has been on-boarded and absent otherwise.
1577           type: string
1578         softwareImages:
1579           description: |
1580             Information about VNF package artifacts that are software images.
1581             This attribute shall not be present before the VNF package content
1582             is on-boarded. Otherwise, this attribute shall be present unless
1583             it has been requested to be excluded per attribute selector.
1584           type: array
1585           items:
1586             $ref: '#/components/schemas/VnfPackageSoftwareImageInfo'
1587         additionalArtifacts:
1588           description: |
1589             Information about VNF package artifacts contained in the VNF
1590             package that are not software images. This attribute shall not be
1591             present before the VNF package content is on-boarded. Otherwise,
1592             this attribute shall be present if the VNF package contains
1593             additional artifacts.
1594           type: array
1595           items:
1596             $ref: '#/components/schemas/VnfPackageArtifactInfo'
1597         onboardingState:
1598           description: |
1599             On-boarding state of the VNF package.
1600           $ref: '#components/schemas/VnfPackageOnboardingStateType'
1601         operationalState:
1602           description: |
1603             Operational  state of the VNF package. If the value of the
1604             onboardingState attribute is not equal to "ONBOARDED", the value
1605             of the operationalState attribute shall be equal to "DISABLED".
1606           $ref: '#components/schemas/VnfPackageOperationalStateType'
1607         usageState:
1608           description: |
1609             Usage state of the VNF package. If the value of the
1610             onboardingState attribute is not equal to "ONBOARDED", the value
1611             of the usageState attribute shall be equal to "NOT_IN_USE".
1612           $ref: '#components/schemas/VnfPackageUsageStateType'
1613         userDefinedData:
1614           description: |
1615             User defined data for the VNF package
1616           $ref: '#/components/schemas/KeyValuePairs'
1617         _links:
1618           description: |
1619             Links to resources related to this resource
1620           type: string
1621         self:
1622           description: |
1623             URI of this resource
1624           type: string
1625           format: uri
1626         vnfd:
1627           description: |
1628             Link to the VNFD resource. This link shall be present after the VNF
1629             package content is on-boarded. 
1630           type: string
1631           format: uri
1632         package_content:
1633           description: |
1634             Link to the "VNF package content" resource.
1635           type: string
1636           format: uri
1637       required:
1638         - id
1639         - onboardingState
1640         - operationalState
1641         - usageState
1642         - _links
1643         - self
1644         - package_content
1645     ArrayOfVnfPkgInfo:
1646       type: array
1647       items:
1648         $ref: '#/components/schemas/VnfPkgInfo'
1649     UploadVnfPackageFromUriRequest:
1650       type: object
1651       properties:
1652         addressInformation:
1653           description: |
1654             Address information of the VNF package content. The NFVO can use
1655             this address to obtain the VNF package.
1656           type: string
1657           format: uri
1658         userName:
1659           description: |
1660             User name to be used for authentication. Shall be present if user
1661             name is needed but has not been provisioned out of band.
1662           type: string
1663         password:
1664           description: |
1665             Password to be used for authentication. Shall be present if password
1666             is needed but has not been provisioned out of band.
1667           type: string
1668       required:
1669         - addressInformation
1670     CreateNsRequest:
1671       type: object
1672       properties:
1673         nsdId:
1674           description: |
1675             Identifier of the NSD that defines the NS instance to be created.
1676           type: string
1677           format: uuid
1678         nsName:
1679           description: |
1680             Human-readable name of the NS instance to be created.
1681           type: string
1682         nsDescription:
1683           description: |
1684             Human-readable description of the NS instance to be created.
1685           type: string
1686       required:
1687         - nsdId
1688         - nsName
1689         - nsDescription
1690     NsStateType:
1691       type: string
1692       enum: [NOT_INSTANTIATED, INSTANTIATED]
1693       description: |
1694         State of the NS instance. Permitted values:
1695          * `NOT_INSTANTIATED`: The NS instance is terminated or not instantiated.
1696          * `INSTANTIATED`: The NS instance is instantiated.
1697     NsInstance:
1698       type: object
1699       properties:
1700         id:
1701           description: Identifier of the NS instance.
1702           type: string
1703           format: uuid
1704         nsInstanceName:
1705           description: Human readable name of the NS instance.
1706           type: string
1707         nsInstanceDescription:
1708           description: Human readable description of the NS instance.
1709           type: string
1710         nsdId:
1711           description: Identifier of the NSD on which the NS instance is based.
1712           type: string
1713           format: uuid
1714         flavourId:
1715           description: |
1716             Identifier of the NS deployment flavour applied to the NS instance.
1717             This attribute shall be present if the nsState attribute value is
1718             INSTANTIATED.
1719           type: string
1720         vnfInstance:
1721           description: |
1722             Information on constituent VNF(s) of the NS instance. If the
1723             "nsState" attribute is INSTANTIATED, at least either one
1724             "vnfInstance" attribute or one "nestedNsInstanceId" attribute shall
1725             be present.
1726           type: array
1727           items:
1728             $ref: '#/components/schemas/VnfInstance'
1729         pnfInfo:
1730           description: |
1731             Information on the PNF(s) that are part of the NS instance.
1732           type: array
1733           items:
1734             $ref: '#/components/schemas/PnfInfo'
1735         virtualLinkInfo:
1736           description: |
1737             Information on the VL(s) of the NS instance. This attribute shall
1738             be present if the nsState attribute value is INSTANTIATED and if
1739             the NS instance has specified connectivity.
1740           type: array
1741           items:
1742             $ref: '#/components/schemas/NsVirtualLinkInfo'
1743         vnffgInfo:
1744           description: |
1745             Information on the VNFFG(s) of the NS instance.
1746           type: array
1747           items:
1748             $ref: '#/components/schemas/VnffgInfo'
1749         sapInfo:
1750           description: |
1751             Information on the SAP(s) of the NS instance.
1752           type: array
1753           items:
1754             $ref: '#/components/schemas/SapInfo'
1755         nestedNsInstanceId:
1756           description: |
1757             Identifier of the nested NS(s) of the NS instance. If the "nsState"
1758             attribute is INSTANTIATED, at least either one "vnfInstance"
1759             attribute or one "nestedNsInstanceId" attribute shall be present.
1760           type: array
1761           items:
1762             type: string
1763             format: uuid
1764         nsState:
1765           description: |
1766             The state of the NS instance.
1767           $ref: '#components/schemas/NsStateType'
1768         nsScaleStatus:
1769           description: |
1770             Status of each NS scaling aspect declared in the applicable DF,
1771             how "big" the NS instance has been scaled w.r.t. that aspect. This
1772             attribute shall be present if the nsState attribute value is
1773             INSTANTIATED.
1774           type: array
1775           items:
1776             $ref: '#/components/schemas/NsScaleInfo'
1777         additionalAffinityOrAntiAffinityRule:
1778           description: |
1779             Information on the additional affinity or anti-affinity rule from
1780             NS instantiation operation. Shall not conflict with rules already
1781             specified in the NSD.
1782           type: array
1783           items:
1784             $ref: '#/components/schemas/AffinityOrAntiAffinityRule'
1785         _links:
1786           description: |
1787             Links to resources related to this resource
1788           type: string
1789         self:
1790           description: |
1791             URI of this resource
1792           type: string
1793           format: uri
1794         nestedNsInstances:
1795           description: |
1796             Links to the nested NS instances of the present NS instance.
1797           type: array
1798           items:
1799             type: string
1800             format: uri
1801         instantiate:
1802           description: |
1803             Link to the "instantiate" task resource, if the related operation
1804             is possible based on the current status of this NS instance
1805             resource (i.e. NS instance in NOT_INSTANTIATED state).
1806           type: string
1807           format: uri
1808         terminate:
1809           description: |
1810             Link to the "terminate" task resource, if the related operation is
1811             possible based on the current status of this NS instance resource
1812             (i.e. NS instance is in INSTANTIATED state).
1813           type: string
1814           format: uri
1815         update:
1816           description: |
1817             Link to the "update" task resource, if the related operation is
1818             possible based on the current status of this NS instance resource
1819             (i.e. NS instance is in INSTANTIATED state).
1820           type: string
1821           format: uri
1822         scale:
1823           description: |
1824             Link to the "scale" task resource, if the related operation is
1825             supported for this NS instance, and is possible based on the
1826             current status of this NS instance resource (i.e. NS instance is in
1827             INSTANTIATED state).
1828           type: string
1829           format: uri
1830         heal:
1831           description: |
1832             Link to the "heal" task resource, if the related operation is
1833             supported for this NS instance, and is possible based on the
1834             current status of this NS instance resource (i.e. NS instance is in
1835             INSTANTIATED state).
1836           type: string
1837           format: uri
1838       required:
1839         - id
1840         - nsInstanceName
1841         - nsInstanceDescription
1842         - nsdId
1843         - nsdInfoId
1844         - nsState
1845         - _links
1846         - self
1847     VnfInstance:
1848       type: object
1849       additionalProperties: true
1850     PnfInfo:
1851       type: object
1852       additionalProperties: true
1853     NsVirtualLinkInfo:
1854       type: object
1855       additionalProperties: true
1856     VnffgInfo:
1857       type: object
1858       additionalProperties: true
1859     SapInfo:
1860       type: object
1861       additionalProperties: true
1862     NsScaleInfo:
1863       type: object
1864       additionalProperties: true
1865     AffinityOrAntiAffinityRule:
1866       type: object
1867       additionalProperties: true
1868     SapData:
1869       type: object
1870       additionalProperties: true
1871     AddPnfData:
1872       type: object
1873       additionalProperties: true
1874     VnfInstanceData:
1875       type: object
1876       additionalProperties: true
1877     VnfLocationConstraint:
1878       type: object
1879       additionalProperties: true
1880     ParamsForVnf:
1881       type: object
1882       additionalProperties: true
1883     InstantiateNsRequest:
1884       type: object
1885       properties:
1886         nsFlavourId:
1887           description: Identifier of the NS deployment flavour to be instantiated.
1888           type: string
1889         sapData:
1890           description: Create data concerning the SAPs of this NS.
1891           type: array
1892           items:
1893             $ref: '#/components/schemas/SapData'
1894         addpnfData:
1895           description: Information on the PNF(s) that are part of this NS.
1896           type: array
1897           items:
1898             $ref: '#/components/schemas/AddPnfData'
1899         vnfInstanceData:
1900           description: |
1901             Specify an existing VNF instance to be used in the NS. If needed,
1902             the VNF Profile to be used for this VNF instance is also provided.
1903           type: array
1904           items:
1905             $ref: '#/components/schemas/VnfInstanceData'
1906         nestedNsInstanceId:
1907           description: |
1908             Specify an existing NS instance to be used as a nested NS within the NS.
1909           type: array
1910           items:
1911             type: string
1912             format: uuid
1913         localizationLanguage:
1914           description: |
1915             Defines the location constraints for the VNF to be instantiated as part of
1916             the NS instantiation. An example can be a constraint for the VNF to be in a
1917             specific geographic location.
1918           type: array
1919           items:
1920             $ref: '#/components/schemas/VnfLocationConstraint'
1921         additionalParamsForNs:
1922           description: |
1923             Allows the OSS/BSS to provide additional parameter(s) at the NS level
1924             (as opposed to the VNF level, which is covered in additionalParamsForVnf).
1925           $ref: '#/components/schemas/KeyValuePairs'
1926         additionalParamsForVnf:
1927           description: |
1928             Allows the OSS/BSS to provide additional parameter(s) per VNF instance
1929             (as opposed to the NS level, which is covered in additionalParamsForNs).
1930             This is for VNFs that are to be created by the NFVO as part of the NS
1931             instantiation and not for existing VNF that are referenced for reuse.
1932           type: array
1933           items:
1934             $ref: '#/components/schemas/ParamsForVnf'
1935         startTime:
1936           description: |
1937             Timestamp indicating the earliest time to instantiate the NS.
1938             Cardinality "0" indicates the NS instantiation takes place immediately.
1939           type: string
1940           format: date-time
1941         nsInstantiationLevelId:
1942           description: |
1943             Identifies one of the NS instantiation levels declared in the DF applicable
1944             to this NS instance. If not present, the default NS instantiation level as
1945             declared in the NSD shall be used.
1946           type: string
1947         additionalAffinityOrAntiAffiniityRule:
1948           description: |
1949             Specifies additional affinity or anti-affinity constraint for the VNF instances
1950             to be instantiated as part of the NS instantiation. Shall not conflict with rules
1951             already specified in the NSD.
1952           type: array
1953           items:
1954             $ref: '#/components/schemas/AffinityOrAntiAffinityRule'
1955       required:
1956         - nsFlavourId
1957     UpdateNsRequest:
1958       type: object
1959       properties:
1960         updateType:
1961           type: string
1962           enum: [ ADD_VNF, REMOVE_VNF, INSTANTIATE_VNF, CHANGE_VNF_DF,
1963                   OPERATE_VNF, MODIFY_VNF_INFORMATION, CHANGE_EXTERNAL_VNF_CONNECTIVITY,
1964                   REMOVE_SAP, ADD_NESTED_NS, REMOVE_NESTED_NS, ASSOC_NEW_NSD_VERSION,
1965                   MOVE_VNF, ADD_VNFFG, REMOVE_VNFFG, UPDATE_VNFFG, CHANGE_NS_DF, ADD_PNF,
1966                   MODIFY_PNF, REMOVE_PNF ]
1967           description: |
1968             The type of update. It determines also which one of the following parameters
1969             is present in the operation. Possible values include:
1970              * `ADD_VNF`: Adding existing VNF instance(s)
1971              * `REMOVE_VNF`: Removing VNF instance(s)
1972              * `INSTANTIATE_VNF`: Instantiating new VNF(s)
1973              * `CHANGE_VNF_DF`: Changing VNF DF
1974              * `OPERATE_VNF`: Changing VNF state,
1975              * `MODIFY_VNF_INFORMATION`: Modifying VNF information and/or the configurable
1976              properties of VNF instance(s)
1977              * `CHANGE_EXTERNAL_VNF_CONNECTIVITY`: Changing the external connectivity of VNF
1978              instance(s)
1979              * `ADD_SAP`: Adding SAP(s)
1980              * `REMOVE_SAP`: Removing SAP(s)
1981              * `ADD_NESTED_NS`: Adding existing NS instance(s) as nested NS(s)
1982              * `REMOVE_NESTED_NS`: Removing existing nested NS instance(s)
1983              * `ASSOC_NEW_NSD_VERSION`: Associating a new NSD version to the NS instance
1984              * `MOVE_VNF`: Moving VNF instance(s) from one origin NS instance to another target NS
1985              instance
1986              * `ADD_VNFFG`: Adding VNFFG(s)
1987              * `REMOVE_VNFFG`: Removing VNFFG(s)
1988              * `UPDATE_VNFFG`: Updating VNFFG(s)
1989              * `CHANGE_NS_DF`: Changing NS DF
1990              * `ADD_PNF`: Adding PNF
1991              * `MODIFY_PNF`: Modifying PNF
1992              * `REMOVE_PNF`: Removing PNF
1993       # Specific properties are required for each updateType. Pending to be added.
1994       additionalProperties: true
1995       required:
1996         - updateType
1997     ScaleNsRequest:
1998       type: object
1999       additionalProperties: true
2000     HealNsData:
2001       type: object
2002       additionalProperties: true
2003     HealVnfData:
2004       type: object
2005       additionalProperties: true
2006     HealNsRequest:
2007       type: object
2008       properties:
2009         healNsData:
2010           description: |
2011             Provides the information needed to heal an NS. Either the parameter healNsData
2012             or the parameter healVnfData, but not both shall be provided.
2013           $ref: '#/components/schemas/HealNsData'
2014         healVnfData:
2015           description: |
2016             Provides the information needed to heal a VNF. Either the parameter healNsData
2017             or the parameter healVnfData, but not both shall be provided.
2018           type: array
2019           items:
2020             $ref: '#/components/schemas/HealVnfData'
2021     TerminateNsRequest:
2022       type: object
2023       properties:
2024         terminationTime:
2025           description: |
2026             Timestamp indicating the end time of the NS, i.e. the NS will be terminated
2027             automatically at this timestamp. Cardinality "0" indicates the NS termination
2028             takes place immediately.
2029           type: string
2030           format: date-time
2031     ArrayOfNsInstance:
2032       type: array
2033       items:
2034         $ref: '#/components/schemas/NsInstance'
2035   requestBodies:
2036     CreateNsdInfoRequest:
2037       content:
2038         application/json:
2039           schema:
2040             $ref: '#/components/schemas/CreateNsdInfoRequest'
2041         application/yaml:
2042           schema:
2043             $ref: '#/components/schemas/CreateNsdInfoRequest'
2044     NsdInfoModifications:
2045       content:
2046         application/json:
2047           schema:
2048             $ref: '#/components/schemas/NsdInfoModifications'
2049         application/yaml:
2050           schema:
2051             $ref: '#/components/schemas/NsdInfoModifications'
2052     NsdContent:
2053       content:
2054         text/plain:
2055           schema:
2056             $ref: '#/components/schemas/NsDescriptor'
2057         application/zip:
2058           schema:
2059             $ref: '#/components/schemas/NsPackage'
2060     CreateVnfPkgInfoRequest:
2061       content:
2062         application/json:
2063           schema:
2064             $ref: '#/components/schemas/CreateVnfPkgInfoRequest'
2065         application/yaml:
2066           schema:
2067             $ref: '#/components/schemas/CreateVnfPkgInfoRequest'
2068     VnfPkgInfoModifications:
2069       content:
2070         application/json:
2071           schema:
2072             $ref: '#/components/schemas/VnfPkgInfoModifications'
2073         application/yaml:
2074           schema:
2075             $ref: '#/components/schemas/VnfPkgInfoModifications'
2076     VnfPackage:
2077       content:
2078         application/zip:
2079           schema:
2080             $ref: '#/components/schemas/VnfPackage'
2081     UploadVnfPackageFromUriRequest:
2082       content:
2083         application/json:
2084           schema:
2085             $ref: '#/components/schemas/UploadVnfPackageFromUriRequest'
2086         application/yaml:
2087           schema:
2088             $ref: '#/components/schemas/UploadVnfPackageFromUriRequest'
2089     CreateNsRequest:
2090       content:
2091         application/json:
2092           schema:
2093             $ref: '#/components/schemas/CreateNsRequest'
2094         application/yaml:
2095           schema:
2096             $ref: '#/components/schemas/CreateNsRequest'
2097     InstantiateNsRequest:
2098       content:
2099         application/json:
2100           schema:
2101             $ref: '#/components/schemas/InstantiateNsRequest'
2102         application/yaml:
2103           schema:
2104             $ref: '#/components/schemas/InstantiateNsRequest'
2105     ScaleNsRequest:
2106       content:
2107         application/json:
2108           schema:
2109             $ref: '#/components/schemas/ScaleNsRequest'
2110         application/yaml:
2111           schema:
2112             $ref: '#/components/schemas/ScaleNsRequest'
2113     UpdateNsRequest:
2114       content:
2115         application/json:
2116           schema:
2117             $ref: '#/components/schemas/UpdateNsRequest'
2118         application/yaml:
2119           schema:
2120             $ref: '#/components/schemas/UpdateNsRequest'
2121     HealNsRequest:
2122       content:
2123         application/json:
2124           schema:
2125             $ref: '#/components/schemas/HealNsRequest'
2126         application/yaml:
2127           schema:
2128             $ref: '#/components/schemas/HealNsRequest'
2129     TerminateNsRequest:
2130       content:
2131         application/json:
2132           schema:
2133             $ref: '#/components/schemas/TerminateNsRequest'
2134         application/yaml:
2135           schema:
2136             $ref: '#/components/schemas/TerminateNsRequest'
2137   securitySchemes:
2138     bearerAuth:
2139       type: http
2140       scheme: bearer
2141
2142