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