API for VNF packagesi
[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 externalDocs:
760   description: Find out more OSM
761   url: 'http://osm.etsi.org/wikipub'
762 components:
763   responses:
764     BadRequest:
765       description: Bad request. The server cannot process the request due to a client error.
766       content:
767         application/json:
768           schema:
769             $ref: '#/components/schemas/ProblemDetails'
770     Unauthorized:
771       description: Authorization information is missing or invalid.
772       content:
773         application/json:
774           schema:
775             $ref: '#/components/schemas/ProblemDetails'
776     Forbidden:
777       description: Not enough permissions to do this operation.
778       content:
779         application/json:
780           schema:
781             $ref: '#/components/schemas/ProblemDetails'
782     NotFound:
783       description: The specified resource was not found.
784       content:
785         application/json:
786           schema:
787             $ref: '#/components/schemas/ProblemDetails'
788     MethodNotAllowed:
789       description: This method is not supported for the requested resource.
790       content:
791         application/json:
792           schema:
793             $ref: '#/components/schemas/ProblemDetails'
794     NotAcceptable:
795       description: The requested resource content cannot match the Accept headers sent in the request.
796       content:
797         application/json:
798           schema:
799             $ref: '#/components/schemas/ProblemDetails'
800     Conflict:
801       description: The operation cannot be executed currently, due to a conflict with the state of the resource.
802       content:
803         application/json:
804           schema:
805             $ref: '#/components/schemas/ProblemDetails'
806     UnprocessableEntity:
807       description: The request was well-formed but was unable to be followed due to semantic errors.
808       content:
809         application/json:
810           schema:
811             $ref: '#/components/schemas/ProblemDetails'
812     InternalServerError:
813       description: Internal server error.
814       content:
815         application/json:
816           schema:
817             $ref: '#/components/schemas/ProblemDetails'
818     ServiceUnavailable:
819       description: Service temporarily unavailable.
820       content:
821         application/json:
822           schema:
823             $ref: '#/components/schemas/ProblemDetails'
824     UnexpectedError:
825       description: Unexpected error.
826       content:
827         application/json:
828           schema:
829             $ref: '#/components/schemas/ProblemDetails'
830   schemas:
831     NsDescriptor:
832       type: string
833     NsPackage:
834       type: string
835       format: binary
836     KeyValuePairs:
837       type: object
838       additionalProperties:
839         type: string
840     CreateNsdInfoRequest:
841       type: object
842       properties:
843         userDefinedData:
844           $ref: '#/components/schemas/KeyValuePairs'
845     NsdOnboardingStateType:
846       type: string
847       enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
848       description: |
849         NSD onboarding state:
850          * `CREATED` - The NSD information object is created.
851          * `UPLOADING` - The associated NSD content is being uploaded.
852          * `PROCESSING` - The associated NSD content is being processed, e.g. validation.
853          * `ONBOARDED` - The associated NSD content is on-boarded. 
854     NsdOperationalStateType:
855       type: string
856       enum: [ENABLED, DISABLED]
857       description: |
858         NSD operational state:
859          * `ENABLED` - The NSD is enabled.
860          * `DISABLED` - The NSD is disabled.
861     NsdUsageStateType:
862       type: string
863       enum: [IN_USE, NOT_IN_USE]
864       description: |
865         NSD usage state:
866          * `IN_USE` - The NSD is in use.
867          * `NOT_IN_USE` - The NSD is not in use.
868     NsdInfoModifications:
869       type: object
870       properties:
871         nsdOperationalState:
872           $ref: '#/components/schemas/NsdOperationalStateType'
873         userDefinedData:
874           $ref: '#/components/schemas/KeyValuePairs'
875     NsdInfo:
876       type: object
877       properties:
878         id:
879           description: |
880            Identifier of the onboarded individual NS descriptor
881            resource. This identifier is allocated by the NFVO. 
882           type: string
883           format: uuid
884         nsdId:
885           description: |
886             This identifier, which is allocated by the NSD
887             designer, identifies the NSD in a globally unique
888             way. It is copied from the NSD content and shall be
889             present after the NSD content is on-boarded.
890           type: string
891           format: uuid
892         nsdName:
893           description: |
894             Name of the onboarded NSD. This information is
895             copied from the NSD content and shall be present
896             after the NSD content is on-boarded. 
897           type: string
898         nsdVersion:
899           description: |
900             Version of the on-boarded NSD. This information is
901             copied from the NSD content and shall be present
902             after the NSD content is on-boarded.
903           type: string
904         nsdDesigner:
905           description: |
906             Designer of the on-boarded NSD. This information is
907             copied from the NSD content and shall be present
908             after the NSD content is on-boarded.
909           type: string
910         nsdInvariantId:
911           description: |
912             This identifier, which is allocated by the NSD designer,
913             identifies an NSD in a version independent manner. This
914             information is copied from the NSD content and shall be
915             present after the NSD content is on-boarded. 
916           type: string
917           format: uuid
918         vnfPkgIds:
919           description: |
920             List of VNF package identifiers referenced by the on-boarded
921             NS descriptor resource.
922           type: array
923           items:
924             type: string
925             format: uuid
926         pnfdInfoIds:
927           description: |
928             List of PNFD identifiers referenced by the on-boarded NS
929             descriptor resource.
930           type: array
931           items:
932             type: string
933             format: uuid
934         nestedNsdInfoIds:
935           description: |
936             List of NSD identifiers referenced by the on-boarded NS
937             descriptor resource.
938           type: array
939           items:
940             type: string
941             format: uuid
942         nsdOnboardingState:
943           description: |
944             Onboarding state of the individual NS descriptor resource.
945           $ref: '#components/schemas/NsdOnboardingStateType'
946         onboardingFailureDetails:
947           description: |
948             Failure details of current onboarding procedure. It follows
949             the "ProblemDetails" structure. It shall be present when the
950             "nsdOnboardingState" attribute is CREATED and the uploading or
951             processing fails in NFVO.
952           $ref: '#/components/schemas/ProblemDetails'
953         nsdOperationalState:
954           description: |
955             Operational state of the individual NS descriptor resource. This
956             attribute can be modified with the PATCH method. If the value of
957             the nsdOnboardingState attribute is not equal to "ONBOARDED", the
958             value of the nsdOperationalState attribute shall be equal to
959             "DISABLED".
960           $ref: '#components/schemas/NsdOperationalStateType'
961         nsdUsagestate:
962           description: |
963             Usage state of the individual NS descriptor resource. If the value
964             of the nsdOnboardingState attribute is not equal to "ONBOARDED",
965             the value of the nsdUsageState attribute shall be equal to
966             "NOT_IN_USE".
967           $ref: '#components/schemas/NsdUsageStateType'
968         userDefinedData:
969           $ref: '#/components/schemas/KeyValuePairs'
970         _links:
971           description: |
972             Links to resources related to this resource
973           type: string
974         self:
975           description: |
976             URI of this resource
977           type: string
978           format: uri
979         nsd_content:
980           description: |
981             Link to the NSD content resource.
982           type: string
983           format: uri
984       required:
985         - id
986         - nsdOnboardingState
987         - nsdOperationalState
988         - nsdUsageState
989         - _links
990         - self
991         - nsd_content
992     ArrayOfNsdInfo:
993       type: array
994       items:
995         $ref: '#/components/schemas/NsdInfo'
996     ProblemDetails:
997       type: object
998       properties:
999         type:
1000           type: string
1001           format: uri
1002         title:
1003           type: string
1004         status:
1005           type: integer
1006         detail:
1007           type: string
1008         instance:
1009           type: string
1010           format: uri
1011       additionalProperties: true
1012       required:
1013         - status
1014         - detail
1015     VnfDescriptor:
1016       type: string
1017     VnfPackage:
1018       type: string
1019       format: binary
1020     CreateVnfPkgInfoRequest:
1021       type: object
1022       properties:
1023         userDefinedData:
1024           $ref: '#/components/schemas/KeyValuePairs'
1025     VnfPackageOnboardingStateType:
1026       type: string
1027       enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
1028       description: |
1029         VNF Package onboarding state:
1030          * `CREATED` - The VNF Package information object is created.
1031          * `UPLOADING` - The VNF Package is being uploaded.
1032          * `PROCESSING` - The VNF Package is being processed, e.g. validation.
1033          * `ONBOARDED` - The VNF Package is successfully on-boarded.
1034     VnfPackageOperationalStateType:
1035       type: string
1036       enum: [ENABLED, DISABLED]
1037       description: |
1038         VNF Package operational state:
1039          * `ENABLED` - The VNF Package is enabled.
1040          * `DISABLED` - The VNF Package is disabled.
1041     VnfPackageUsageStateType:
1042       type: string
1043       enum: [IN_USE, NOT_IN_USE]
1044       description: |
1045         VNF Package usage state:
1046          * `IN_USE` - The VNF Package is in use.
1047          * `NOT_IN_USE` - The VNF Package is not in use.
1048     #SoftwareImageFormatType:
1049     #  type: string
1050     #  enum: [AKI, AMI, ARI, BARE, DOCKER, OVA, OVF]
1051     #  description: |
1052     #    Software image format. Permitted values:
1053     #     * `AKI`: a kernel image format
1054     #     * `AMI`: a machine image format
1055     #     * `ARI`: a ramdisk image format
1056     #     * `BARE`: the image does not have a container or metadata envelope
1057     #     * `DOCKER`: docker container format
1058     #     * `OVA`: OVF package in a tarfile
1059     #     * `OVF`: OVF container format
1060     VnfPackageSoftwareImageInfo:
1061       type: object
1062       additionalProperties: true
1063       #properties:
1064         #id:
1065         #  description: |
1066         #    Identifier of the software image, unique in the scope of a VNFD.
1067         #  type: string
1068         #name:
1069         #  description: |
1070         #    Name of the software image.
1071         #  type: string
1072         #provider:
1073         #  description: |
1074         #    Provider of the software image.
1075         #  type: string
1076         #version:
1077         #  description: |
1078         #    Version of the software image.
1079         #  type: string
1080         #checksum:
1081         #  description: |
1082         #    Checksum of the software image file.
1083         #  type: string
1084         #containerFormat:
1085         #  description: |
1086         #    Container format indicates whether the software image is in a
1087         #    file format that also contains metadata about the actual
1088         #    software.
1089         #  $ref: '#/components/schemas/SoftwareImageFormatType'
1090         #diskFormat:
1091         #  description: |
1092         #    Disk format of a software image is the format of the underlying
1093         #    disk image.
1094         #  $ref: '#/components/schemas/DiskFormatType'
1095         # ...
1096     VnfPackageArtifactInfo:
1097       type: object
1098       additionalProperties: true
1099     VnfPkgInfoModifications:
1100       type: object
1101       properties:
1102         operationalState:
1103           $ref: '#/components/schemas/VnfPackageOperationalStateType'
1104         userDefinedData:
1105           $ref: '#/components/schemas/KeyValuePairs'
1106     VnfPkgInfo:
1107       type: object
1108       properties:
1109         id:
1110           description: |
1111            Identifier of the VNF package. This identifier is allocated by the NFVO.
1112           type: string
1113           format: uuid
1114         vnfdId:
1115           description: |
1116             This identifier, which is managed by the VNF provider, identifies
1117             the VNF package and the VNFD in a globally unique way. It's
1118             copied from the VNFD of the on-boarded VNF package. It shall be
1119             present after the VNF package content has been on-boarded and
1120             absent otherwise.
1121           type: string
1122           format: uuid
1123         vnfProvider:
1124           description: |
1125             Deovider of the VNF pacakge and the VNFD. This information is
1126             copied from the VNFD. It shall be present after the VNF package
1127             content has been on-boarded and absent otherwise.
1128           type: string
1129         vnfProductName:
1130           description: |
1131             Name to identify the VNF product. Invariant for the VNF product
1132             ligetime. This information is copied from the VNFD. It shall be
1133             present after the VNF package content has been on-boarded and
1134             absent otherwise.
1135           type: string
1136         vnfSoftwareVersion:
1137           description: |
1138             Software version of the VNF. This is changed when there is any
1139             change to the software included in the VNF package. This
1140             information is copied from the VNFD. It shall be present after the
1141             VNF package content has been on-boarded and absent otherwise.
1142           type: string
1143         vnfdVersion:
1144           description: |
1145             The version of the VNFD. TSof information is copied from the VNFD.
1146             It shall be present after the VNF package content has been
1147             on-boarded and absent otherwise.
1148           type: string
1149         checksum:
1150           description: |
1151             Checksum of the on-boarded VNF package. It shall be present after
1152             the VNF package content has been on-boarded and absent otherwise.
1153           type: string
1154         softwareImages:
1155           description: |
1156             Information about VNF package artifacts that are software images.
1157             This attribute shall not be present before the VNF package content
1158             is on-boarded. Otherwise, this attribute shall be present unless
1159             it has been requested to be excluded per attribute selector.
1160           type: array
1161           items:
1162             $ref: '#/components/schemas/VnfPackageSoftwareImageInfo'
1163         additionalArtifacts:
1164           description: |
1165             Information about VNF package artifacts contained in the VNF
1166             package that are not software images. This attribute shall not be
1167             present before the VNF package content is on-boarded. Otherwise,
1168             this attribute shall be present if the VNF package contains
1169             additional artifacts.
1170           type: array
1171           items:
1172             $ref: '#/components/schemas/VnfPackageArtifactInfo'
1173         onboardingState:
1174           description: |
1175             On-boarding state of the VNF package.
1176           $ref: '#components/schemas/VnfPackageOnboardingStateType'
1177         operationalState:
1178           description: |
1179             Operational  state of the VNF package. If the value of the
1180             onboardingState attribute is not equal to "ONBOARDED", the value
1181             of the operationalState attribute shall be equal to "DISABLED".
1182           $ref: '#components/schemas/VnfPackageOperationalStateType'
1183         usageState:
1184           description: |
1185             Usage state of the VNF package. If the value of the
1186             onboardingState attribute is not equal to "ONBOARDED", the value
1187             of the usageState attribute shall be equal to "NOT_IN_USE".
1188           $ref: '#components/schemas/VnfPackageUsageStateType'
1189         userDefinedData:
1190           description: |
1191             User defined data for the VNF package
1192           $ref: '#/components/schemas/KeyValuePairs'
1193         _links:
1194           description: |
1195             Links to resources related to this resource
1196           type: string
1197         self:
1198           description: |
1199             URI of this resource
1200           type: string
1201           format: uri
1202         vnfd:
1203           description: |
1204             Link to the VNFD resource. This link shall be present after the VNF
1205             package content is on-boarded. 
1206           type: string
1207           format: uri
1208         package_content:
1209           description: |
1210             Link to the "VNF package content" resource.
1211           type: string
1212           format: uri
1213       required:
1214         - id
1215         - onboardingState
1216         - operationalState
1217         - usageState
1218         - _links
1219         - self
1220         - package_content
1221     ArrayOfVnfPkgInfo:
1222       type: array
1223       items:
1224         $ref: '#/components/schemas/VnfPkgInfo'
1225     UploadVnfPackageFromUriRequest:
1226       type: object
1227       properties:
1228         addressInformation:
1229           description: |
1230             Address information of the VNF package content. The NFVO can use
1231             this address to obtain the VNF package.
1232           type: string
1233           format: uri
1234         userName:
1235           description: |
1236             User name to be used for authentication. Shall be present if user
1237             name is needed but has not been provisioned out of band.
1238           type: string
1239         password:
1240           description: |
1241             Password to be used for authentication. Shall be present if password
1242             is needed but has not been provisioned out of band.
1243           type: string
1244       required:
1245         - addressInformation
1246   requestBodies:
1247     CreateNsdInfoRequest:
1248       content:
1249         application/json:
1250           schema:
1251             $ref: '#/components/schemas/CreateNsdInfoRequest'
1252         application/yaml:
1253           schema:
1254             $ref: '#/components/schemas/CreateNsdInfoRequest'
1255     NsdInfoModifications:
1256       content:
1257         application/json:
1258           schema:
1259             $ref: '#/components/schemas/NsdInfoModifications'
1260         application/yaml:
1261           schema:
1262             $ref: '#/components/schemas/NsdInfoModifications'
1263     NsdContent:
1264       content:
1265         text/plain:
1266           schema:
1267             $ref: '#/components/schemas/NsDescriptor'
1268         application/zip:
1269           schema:
1270             $ref: '#/components/schemas/NsPackage'
1271     CreateVnfPkgInfoRequest:
1272       content:
1273         application/json:
1274           schema:
1275             $ref: '#/components/schemas/CreateVnfPkgInfoRequest'
1276         application/yaml:
1277           schema:
1278             $ref: '#/components/schemas/CreateVnfPkgInfoRequest'
1279     VnfPkgInfoModifications:
1280       content:
1281         application/json:
1282           schema:
1283             $ref: '#/components/schemas/VnfPkgInfoModifications'
1284         application/yaml:
1285           schema:
1286             $ref: '#/components/schemas/VnfPkgInfoModifications'
1287     VnfPackage:
1288       content:
1289         application/zip:
1290           schema:
1291             $ref: '#/components/schemas/VnfPackage'
1292     UploadVnfPackageFromUriRequest:
1293       content:
1294         application/json:
1295           schema:
1296             $ref: '#/components/schemas/UploadVnfPackageFromUriRequest'
1297         application/yaml:
1298           schema:
1299             $ref: '#/components/schemas/UploadVnfPackageFromUriRequest'
1300   securitySchemes:
1301     bearerAuth:
1302       type: http
1303       scheme: bearer
1304