blob: d8d843996b19712a140c5b075a30d6737b7d409f [file] [log] [blame]
garciadeblas60e2ee92018-02-27 19:09:51 +01001openapi: 3.0.0
2servers:
3 - description: OSM NB API
4 url: https://osm.etsi.org/nbapi/v1.0.0
5info:
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'
19tags:
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
26paths:
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 content:
84 application/json:
85 schema:
86 $ref: '#/components/schemas/NsdInfo'
87 application/yaml:
88 schema:
89 $ref: '#/components/schemas/NsdInfo'
90 '400':
91 $ref: '#/components/responses/BadRequest'
92 '401':
93 $ref: '#/components/responses/Unauthorized'
94 '403':
95 $ref: '#/components/responses/Forbidden'
96 '404':
97 $ref: '#/components/responses/NotFound'
98 '405':
99 $ref: '#/components/responses/MethodNotAllowed'
100 '406':
101 $ref: '#/components/responses/NotAcceptable'
102 '409':
103 $ref: '#/components/responses/Conflict'
104 '422':
105 $ref: '#/components/responses/UnprocessableEntity'
106 '500':
107 $ref: '#/components/responses/InternalServerError'
108 '503':
109 $ref: '#/components/responses/ServiceUnavailable'
110 '5XX':
111 $ref: '#/components/responses/UnexpectedError'
112 default:
113 $ref: '#/components/responses/UnexpectedError'
114 '/nsd/v1/ns_descriptors/{nsdInfoId}':
115 get:
116 tags:
117 - "NS packages"
118 summary: Read information about an individual NS descriptor resource
119 description: Read information about an individual NS descriptor resource
120 operationId: getNSD
121 security:
122 - bearerAuth: []
123 responses:
124 '200':
125 description: OK
126 content:
127 application/json:
128 schema:
129 $ref: '#/components/schemas/NsdInfo'
130 application/yaml:
131 schema:
132 $ref: '#/components/schemas/NsdInfo'
133 '400':
134 $ref: '#/components/responses/BadRequest'
135 '401':
136 $ref: '#/components/responses/Unauthorized'
137 '403':
138 $ref: '#/components/responses/Forbidden'
139 '404':
140 $ref: '#/components/responses/NotFound'
141 '405':
142 $ref: '#/components/responses/MethodNotAllowed'
143 '406':
144 $ref: '#/components/responses/NotAcceptable'
145 '409':
146 $ref: '#/components/responses/Conflict'
147 '422':
148 $ref: '#/components/responses/UnprocessableEntity'
149 '500':
150 $ref: '#/components/responses/InternalServerError'
151 '503':
152 $ref: '#/components/responses/ServiceUnavailable'
153 '5XX':
154 $ref: '#/components/responses/UnexpectedError'
155 default:
156 $ref: '#/components/responses/UnexpectedError'
157 delete:
158 tags:
159 - "NS packages"
160 summary: Delete an individual NS descriptor resource
161 description: Delete an individual NS descriptor resource
162 operationId: deleteNSD
163 security:
164 - bearerAuth: []
165 responses:
166 '204':
167 description: No Content
168 '400':
169 $ref: '#/components/responses/BadRequest'
170 '401':
171 $ref: '#/components/responses/Unauthorized'
172 '403':
173 $ref: '#/components/responses/Forbidden'
174 '404':
175 $ref: '#/components/responses/NotFound'
176 '405':
177 $ref: '#/components/responses/MethodNotAllowed'
178 '406':
179 $ref: '#/components/responses/NotAcceptable'
180 '409':
181 $ref: '#/components/responses/Conflict'
182 '422':
183 $ref: '#/components/responses/UnprocessableEntity'
184 '500':
185 $ref: '#/components/responses/InternalServerError'
186 '503':
187 $ref: '#/components/responses/ServiceUnavailable'
188 '5XX':
189 $ref: '#/components/responses/UnexpectedError'
190 default:
191 $ref: '#/components/responses/UnexpectedError'
192 patch:
193 tags:
194 - "NS packages"
195 summary: Modify the operational state and/or the user defined data of an individual NS descriptor resource
196 description: Modify the operational state and/or the user defined data of an individual NS descriptor resource
197 operationId: updateNSD
198 security:
199 - bearerAuth: []
200 requestBody:
201 $ref: '#/components/requestBodies/NsdInfoModifications'
202 responses:
203 '200':
204 description: OK
205 content:
206 application/json:
207 schema:
208 $ref: '#/components/schemas/NsdInfoModifications'
209 application/yaml:
210 schema:
211 $ref: '#/components/schemas/NsdInfoModifications'
212 '400':
213 $ref: '#/components/responses/BadRequest'
214 '401':
215 $ref: '#/components/responses/Unauthorized'
216 '403':
217 $ref: '#/components/responses/Forbidden'
218 '404':
219 $ref: '#/components/responses/NotFound'
220 '405':
221 $ref: '#/components/responses/MethodNotAllowed'
222 '406':
223 $ref: '#/components/responses/NotAcceptable'
224 '409':
225 $ref: '#/components/responses/Conflict'
226 '422':
227 $ref: '#/components/responses/UnprocessableEntity'
228 '500':
229 $ref: '#/components/responses/InternalServerError'
230 '503':
231 $ref: '#/components/responses/ServiceUnavailable'
232 '5XX':
233 $ref: '#/components/responses/UnexpectedError'
234 default:
235 $ref: '#/components/responses/UnexpectedError'
236 '/nsd/v1/ns_descriptors/{nsdInfoId}/nsd_content':
237 get:
238 tags:
239 - "NS packages"
240 summary: Fetch the content of a NSD
241 description: Fetch the content of a NSD
242 operationId: getNSDcontent
243 security:
244 - bearerAuth: []
245 responses:
246 '200':
247 description: OK
248 $ref: '#/components/requestBodies/NsdContent'
249 '206':
250 description: Partial Content
251 headers:
252 Content-Range:
253 schema:
254 type: string
255 $ref: '#/components/requestBodies/NsdContent'
256 '400':
257 $ref: '#/components/responses/BadRequest'
258 '401':
259 $ref: '#/components/responses/Unauthorized'
260 '403':
261 $ref: '#/components/responses/Forbidden'
262 '404':
263 $ref: '#/components/responses/NotFound'
264 '405':
265 $ref: '#/components/responses/MethodNotAllowed'
266 '406':
267 $ref: '#/components/responses/NotAcceptable'
268 '409':
269 $ref: '#/components/responses/Conflict'
270 '422':
271 $ref: '#/components/responses/UnprocessableEntity'
272 '500':
273 $ref: '#/components/responses/InternalServerError'
274 '503':
275 $ref: '#/components/responses/ServiceUnavailable'
276 '5XX':
277 $ref: '#/components/responses/UnexpectedError'
278 default:
279 $ref: '#/components/responses/UnexpectedError'
280 put:
281 tags:
282 - "NS packages"
283 summary: Upload the content of a NSD
284 description: Upload the content of a NSD
285 operationId: updateNSDcontent
286 security:
287 - bearerAuth: []
288 requestBody:
289 $ref: '#/components/requestBodies/NsdContent'
290 responses:
291 '202':
292 description: Accepted
293 '204':
294 description: No Content
295 '400':
296 $ref: '#/components/responses/BadRequest'
297 '401':
298 $ref: '#/components/responses/Unauthorized'
299 '403':
300 $ref: '#/components/responses/Forbidden'
301 '404':
302 $ref: '#/components/responses/NotFound'
303 '405':
304 $ref: '#/components/responses/MethodNotAllowed'
305 '406':
306 $ref: '#/components/responses/NotAcceptable'
307 '409':
308 $ref: '#/components/responses/Conflict'
309 '422':
310 $ref: '#/components/responses/UnprocessableEntity'
311 '500':
312 $ref: '#/components/responses/InternalServerError'
313 '503':
314 $ref: '#/components/responses/ServiceUnavailable'
315 '5XX':
316 $ref: '#/components/responses/UnexpectedError'
317 default:
318 $ref: '#/components/responses/UnexpectedError'
319externalDocs:
320 description: Find out more OSM
321 url: 'http://osm.etsi.org/wikipub'
322components:
323 responses:
324 BadRequest:
325 description: Bad request. The server cannot process the request due to a client error.
326 content:
327 application/json:
328 schema:
329 $ref: '#/components/schemas/ProblemDetails'
330 Unauthorized:
331 description: Authorization information is missing or invalid.
332 content:
333 application/json:
334 schema:
335 $ref: '#/components/schemas/ProblemDetails'
336 Forbidden:
337 description: Not enough permissions to do this operation.
338 content:
339 application/json:
340 schema:
341 $ref: '#/components/schemas/ProblemDetails'
342 NotFound:
343 description: The specified resource was not found.
344 content:
345 application/json:
346 schema:
347 $ref: '#/components/schemas/ProblemDetails'
348 MethodNotAllowed:
349 description: This method is not supported for the requested resource.
350 content:
351 application/json:
352 schema:
353 $ref: '#/components/schemas/ProblemDetails'
354 NotAcceptable:
355 description: The requested resource content cannot match the Accept headers sent in the request.
356 content:
357 application/json:
358 schema:
359 $ref: '#/components/schemas/ProblemDetails'
360 Conflict:
361 description: The operation cannot be executed currently, due to a conflict with the state of the resource.
362 content:
363 application/json:
364 schema:
365 $ref: '#/components/schemas/ProblemDetails'
366 UnprocessableEntity:
367 description: The request was well-formed but was unable to be followed due to semantic errors.
368 content:
369 application/json:
370 schema:
371 $ref: '#/components/schemas/ProblemDetails'
372 InternalServerError:
373 description: Internal server error.
374 content:
375 application/json:
376 schema:
377 $ref: '#/components/schemas/ProblemDetails'
378 ServiceUnavailable:
379 description: Service temporarily unavailable.
380 content:
381 application/json:
382 schema:
383 $ref: '#/components/schemas/ProblemDetails'
384 UnexpectedError:
385 description: Unexpected error.
386 content:
387 application/json:
388 schema:
389 $ref: '#/components/schemas/ProblemDetails'
390 schemas:
391 NsDescriptor:
392 type: string
393 NsPackage:
394 type: string
395 format: binary
396 userDefinedData:
397 type: object
398 additionalProperties:
399 type: string
400 CreateNsdInfoRequest:
401 type: object
402 properties:
403 userDefinedData:
404 $ref: '#/components/schemas/userDefinedData'
405 NsdOnboardingStateType:
406 type: string
407 enum: [CREATED, UPLAODING, PROCESSING, ONBOARDED]
408 description: |
409 NSD onboarding state:
410 * `CREATED` - The NSD information object is created.
411 * `UPLOADING` - The associated NSD content is being uploaded.
412 * `PROCESSING` - The associated NSD content is being processed, e.g. validation.
413 * `ONBOARDED` - The associated NSD content is on-boarded.
414 NsdOperationalStateType:
415 type: string
416 enum: [ENABLED, DISABLED]
417 description: |
418 NSD operational state:
419 * `ENABLED` - The NSD is enabled.
420 * `ENABLED` - The NSD is disabled.
421 NsdUsageStateType:
422 type: string
423 enum: [IN_USE, NOT_IN_USE]
424 description: |
425 NSD operational state:
426 * `IN_USE` - The NSD is in use.
427 * `NOT_IN_USE` - The NSD is not in use.
428 NsdInfoModifications:
429 type: object
430 properties:
431 nsdOperationalState:
432 $ref: '#/components/schemas/NsdOperationalStateType'
433 userDefinedData:
434 $ref: '#/components/schemas/userDefinedData'
435 NsdInfo:
436 type: object
437 properties:
438 id:
439 description: |
440 Identifier of the onboarded individual NS descriptor
441 resource. This identifier is allocated by the NFVO.
442 type: string
443 format: uuid
444 nsdId:
445 description: |
446 This identifier, which is allocated by the NSD
447 designer, identifies the NSD in a globally unique
448 way. It is copied from the NSD content and shall be
449 present after the NSD content is on-boarded.
450 type: string
451 format: uuid
452 nsdName:
453 description: |
454 Name of the onboarded NSD. This information is
455 copied from the NSD content and shall be present
456 after the NSD content is on-boarded.
457 type: string
458 nsdVersion:
459 description: |
460 Version of the on-boarded NSD. This information is
461 copied from the NSD content and shall be present
462 after the NSD content is on-boarded.
463 type: string
464 nsdDesigner:
465 description: |
466 Designer of the on-boarded NSD. This information is
467 copied from the NSD content and shall be present
468 after the NSD content is on-boarded.
469 type: string
470 nsdInvariantId:
471 description: |
472 This identifier, which is allocated by the NSD designer,
473 identifies an NSD in a version independent manner. This
474 information is copied from the NSD content and shall be
475 present after the NSD content is on-boarded.
476 type: string
477 vnfPkgIds:
478 description: |
479 List of VNF package identifiers referenced by the on-boarded
480 NS descriptor resource.
481 type: array
482 items:
483 type: string
484 format: uuid
485 pnfdInfoIds:
486 description: |
487 List of PNFD identifiers referenced by the on-boarded NS
488 descriptor resource.
489 type: array
490 items:
491 type: string
492 format: uuid
493 nestedNsdInfoIds:
494 description: |
495 List of NSD identifiers referenced by the on-boarded NS
496 descriptor resource.
497 type: array
498 items:
499 type: string
500 format: uuid
501 nsdOnboardingState:
502 $ref: '#components/schemas/NsdOnboardingStateType'
503 onboardingFailureDetails:
504 $ref: '#/components/schemas/ProblemDetails'
505 nsdOperationalState:
506 $ref: '#components/schemas/NsdOperationalStateType'
507 nsdUsagestate:
508 $ref: '#components/schemas/NsdUsageStateType'
509 userDefinedData:
510 $ref: '#/components/schemas/userDefinedData'
511 self:
512 type: string
513 format: uri
514 nsd_content:
515 type: string
516 format: uri
517 required:
518 - id
519 ArrayOfNsdInfo:
520 type: array
521 items:
522 $ref: '#/components/schemas/NsdInfo'
523 # Problem details as described in RFC 7807.
524 # Optional fields "type" and "instance", as described in RFC 7807 are not used here.
525 ProblemDetails:
526 type: object
527 properties:
528 type:
529 type: string
530 format: uri
531 title:
532 type: string
533 status:
534 type: integer
535 detail:
536 type: string
537 instance:
538 type: string
539 format: uri
540 additionalProperties: true
541 required:
542 - status
543 - detail
544 requestBodies:
545 CreateNsdInfoRequest:
546 content:
547 application/json:
548 schema:
549 $ref: '#/components/schemas/CreateNsdInfoRequest'
550 application/yaml:
551 schema:
552 $ref: '#/components/schemas/CreateNsdInfoRequest'
553 NsdInfoModifications:
554 content:
555 application/json:
556 schema:
557 $ref: '#/components/schemas/NsdInfoModifications'
558 application/yaml:
559 schema:
560 $ref: '#/components/schemas/NsdInfoModifications'
561 NsdContent:
562 content:
563 text/plain:
564 schema:
565 $ref: '#/components/schemas/NsDescriptor'
566 application/zip:
567 schema:
568 $ref: '#/components/schemas/NsPackage'
569 securitySchemes:
570 bearerAuth:
571 type: http
572 scheme: bearer
573