VNFPackageManagement.yaml 60 KB
Newer Older
1
2
3
swagger: "2.0"

info:
4
  version: "1.2.0"
rameshnaraya's avatar
rameshnaraya committed
5
  title: SOL005 - VNF Package Management Interface
6
  description: >
rameshnaraya's avatar
rameshnaraya committed
7
    SOL005 - VNF Package Management Interface
8
9
10
11
12
13
14
15
    IMPORTANT: Please note that this file might be not aligned to the current
    version of the ETSI Group Specification it refers to and has not been
    approved by the ETSI NFV ISG. In case of discrepancies the published ETSI
    Group Specification takes precedence.
    Please report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis
  license:
    name: "ETSI Forge copyright notice"
    url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
16
  contact:
17
18
    name: "NFV-SOL WG"
externalDocs:
19
20
  description: ETSI GS NFV-SOL 005 V2.5.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.05.01_60/gs_NFV-SOL005v020501p.pdf
21
22
23
24
25
26
basePath: "/vnfpkgm/v1"
schemes:
  - https
consumes:
  - "application/json"
produces:
27
  - "application/json"
28
paths:
29
  ###############################################################################
30
31
32
  # API Versions                                                                #
  ###############################################################################
  '/api-versions':
33
34
    $ref: '../endpoints/SOL005_endpoints.yaml#/endpoints/api-versions'

35
  ###############################################################################
36
37
  # VNF Packages                                                                #
  ###############################################################################
38
39
40
  '/vnf_packages':
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.2
    get:
rameshnaraya's avatar
rameshnaraya committed
41
      summary: Query VNF packages information.
42
      description: >
rameshnaraya's avatar
rameshnaraya committed
43
44
45
46
        The GET method queries the information of the VNF packages matching the filter.
        This method shall follow the provisions specified in the 
        Tables 9.4.2.3.2-1 and 9.4.2.3.2-2 for URI query parameters,
        request and response data structures, and response codes.
47
      parameters:
48
49
        - name: filter
          in: query
50
          required: false
51
          type: string
52
          description: >
53
54
55
            Attribute-based filtering expression according to clause 4.3.2.
            The NFVO shall support receiving this parameter as part of the URI query string. The
            OSS/BSS may supply this parameter.
56
            All attribute names that appear in the VnfPkgInfo and in data types referenced from it shall
57
            be supported by the NFVO in the filter expression.
58
59
        - name: all_fields
          in: query
60
          required: false
61
          type: string
62
          description: >
rameshnaraya's avatar
rameshnaraya committed
63
64
            Include all complex attributes in the response. See clause 4.3.3 for details. The NFVO
            shall support this parameter.
65
66
        - name: fields
          in: query
67
          required: false
68
          type: string
69
          description: >
rameshnaraya's avatar
rameshnaraya committed
70
71
            Complex attributes to be included into the response. See clause 4.3.3 for details. The
            NFVO should support this parameter.         
72
73
        - name: exclude_fields
          in: query
74
          required: false
75
          type: string
76
          description: >
rameshnaraya's avatar
rameshnaraya committed
77
78
            Complex attributes to be excluded from the response. See clause 4.3.3 for details. The
            NFVO should support this parameter.
79
80
        - name: exclude_default
          in: query
81
          required: false
82
          type: string
83
          description: >
rameshnaraya's avatar
rameshnaraya committed
84
85
86
            Indicates to exclude the following complex attributes from the response. See clause 4.3.3
            for details.
            The NFVO shall support this parameter.
87
88
89
90
91
92
            The following attributes shall be excluded from the VnfPkgInfo structure in the response
            body if this parameter is provided, or none of the parameters "all_fields," "fields",
            "exclude_fields", "exclude_default" are provided:
            - softwareImages
            - additionalArtifacts
            - userDefinedData
rameshnaraya's avatar
rameshnaraya committed
93
            - checksum
94
95
96
97
98
99
100
        - name: nextpage_opaque_marker
          in: query
          description: >
            Marker to obtain the next page of a paged response. Shall be supported by the NFVO
            if the NFVO supports alternative 2 (paging) according to clause 4.7.2.1 for this resource.
          required: false
          type: string
101
102
103
104
105
106
107
108
109
110
111
112
113
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
114
          type: string
115
116
117
118
119
120
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
121
122
      responses:
        200:
rameshnaraya's avatar
rameshnaraya committed
123
          description: >
124
            200 OK
125

126
127
128
129
130
131
132
            Information about zero or more VNF packages was successfully queried.
            The response body shall contain in an array the VNF package info 
            representations that match the attribute filter, i.e., zero or more 
            VNF package info representations as defined in clause 9.5.2.5.
            If the NFVO supports alternative 2 (paging) according to 
            clause 4.7.2.1 for this resource, inclusion of the Link HTTP header 
            in this response shall follow the provisions in clause 4.7.2.3.
rameshnaraya's avatar
rameshnaraya committed
133
134
135
136
137
138
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
139
            WWW-Authenticate:
140
              type: "string"
rameshnaraya's avatar
rameshnaraya committed
141
142
              description: >
                Challenge if the corresponding HTTP request has not provided
143
144
145
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
146
              minimum: 0
147
148
149
150
151
152
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
153
154
155
156
157
158
            Link:
              description: >
                Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
              type: string
              maximum: 1
              minimum: 0
159
          schema:
rameshnaraya's avatar
rameshnaraya committed
160
            type: array
161
            items:
rameshnaraya's avatar
rameshnaraya committed
162
163
              properties:
                VnfPkgInfo:
164
                  $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfo"
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
182
          $ref: "responses/SOL005_resp.yaml#/responses/503"
183
184

    post:
rameshnaraya's avatar
rameshnaraya committed
185
      summary: Create a new individual VNF package resource.
186
      description: >
rameshnaraya's avatar
rameshnaraya committed
187
        The POST method creates a new individual VNF package resource.
188
      parameters:
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - name: Content-Type
          description: >
            The MIME type of the body of the request.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
210
211
212
213
214
215
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
216
217
218
219
220
221
222
223
224
225
226
227
228
        - name: "body"
          in: "body"
          required: true
          schema:
            type: "object"
            required:
              - "CreateVnfPkgInfoRequest"
            properties:
              CreateVnfPkgInfoRequest:
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/CreateVnfPkgInfoRequest"
            description: >
              IndividualVNF package resource creation parameters, as defined in clause 9.5.2.2

229
230
      responses:
        201:
231
          description: >
232
            201 Created            
233

234
            An individual VNF package resource has been created successfully.
235
236
237
238
239
            The response body shall contain a representation of
            the new individual VNF package resource, as defined
            in clause 9.5.2.4.
            The HTTP response shall include a "Location" HTTP
            header that contains the resource URI of the individual
240
            VNF package resource.
241
          schema:
242
243
244
            properties:
              VnfPkgInfo:
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfo"
245
          headers:
246
            Content-Type:
247
              type: "string"
248
249
250
251
252
              description: >
                The MIME type of the body of the response.This header
                field shall be present if the response has a non-empty message
                body.
              maximum: 1
253
              minimum: 1
254
255
256
257
258
259
260
261
            WWW-Authenticate:
              type: "string"
              description: >
                Challenge if the corresponding HTTP request has not provided
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
              minimum: 0
262
263
264
265
266
267
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
268
269
270
  ###############################################################################
  # Individual VNF Package                                                      #
  ###############################################################################
271
272
  '/vnf_packages/{vnfPkgId}':
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.3
273
274
275
276
277
    parameters:
      - name: "vnfPkgId"
        description: >
          Identifier of the VNF package. The identifier is allocated by the NFVO.  
        in: "path"
278
        type: "string"
279
        required: true
280
    get:
rameshnaraya's avatar
rameshnaraya committed
281
      summary: Read information about an individual VNF package.
282
      description: >
283
        The GET method reads the information of a VNF package.
284
285
286
287
288
289
290
291
292
293
294
295
296
297
      parameters:
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
298
          type: string
299
300
301
302
303
304
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
305
306
      responses:
        200:
307
308
          description: >
            200 OK
309

310
311
312
            Information of the VNF package was read successfully.
            The response body shall contain the VNF package
            info representation defined in clause 9.5.2.5.     
313
          schema:
314
            type: "object"
rameshnaraya's avatar
rameshnaraya committed
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
            properties:
              VnfPkgInfo:
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfo"
          headers:
            Content-Type:
              type: "string"
              description: >
                The MIME type of the body of the response.This header
                field shall be present if the response has a non-empty message body.
            WWW-Authenticate:
              type: "string"
              description: >
                Challenge if the corresponding HTTP request has not provided
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
330
331
              maximum: 1
              minimum: 0
332
333
334
335
336
337
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
355
          $ref: "responses/SOL005_resp.yaml#/responses/503"
356
    delete:
rameshnaraya's avatar
rameshnaraya committed
357
      summary: Delete an individual VNF package.
358
      description: >
359
        The DELETE method deletes an individual VNF Package resource.
360
361
362
363
364
365
366
      parameters:
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
367
          type: string
368
369
370
371
372
373
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
374
375
376
      responses:
        204:
          description: >
377
            204 No Content
378

rameshnaraya's avatar
rameshnaraya committed
379
380
            The VNF package was deleted successfully.
            The response body shall be empty.
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
        409:
          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409"
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
400
          $ref: "responses/SOL005_resp.yaml#/responses/503"
401
    patch:
rameshnaraya's avatar
rameshnaraya committed
402
      summary: Update information about an individual VNF package.
403
      description: >
404
        "The PATCH method updates the information of a VNF package."
405

406
407
408
409
        "This method shall follow the provisions specified in the 
        Tables 9.4.3.3.4-1 and 9.4.3.3.4-2 for URI query parameters,
        request and response data structures, and response codes."
      parameters:
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
        - name: "body"
          in: "body"
          required: true
          schema:
            type: "object"
            required:
              - "VnfPkgInfoModifications"
            properties:
              VnfPkgInfoModifications:
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfoModifications"
            description: >
              Parameters for VNF package information modifications.
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - name: Content-Type
          description: >
            The MIME type of the body of the request.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
436
437
438
439
440
441
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
442
      responses:
443
        200:
rameshnaraya's avatar
rameshnaraya committed
444
          description: >
445
            200 OK
446

rameshnaraya's avatar
rameshnaraya committed
447
            The operation was completed successfully.
448
            The response body shall contain attribute
rameshnaraya's avatar
rameshnaraya committed
449
450
            modifications for an "Individual VNF
            package" resource
451
452
453
454
455
456
457
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
458
              type: "string"
459
460
              description: >
                Challenge if the corresponding HTTP request has not provided
461
462
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
463
464
              maximum: 1
              minimum: 0
465
466
467
468
469
470
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
471
          schema:
rameshnaraya's avatar
rameshnaraya committed
472
            properties:
473
              VnfPkgInfoModifications:
rameshnaraya's avatar
rameshnaraya committed
474
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfoModifications"
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
        409:
          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409"
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
494
495
496
497
498
          $ref: "responses/SOL005_resp.yaml#/responses/503"

  ###############################################################################
  # VNFD in an individual VNF package                                           #
  ###############################################################################
499
500
501
502
503
  '/vnf_packages/{vnfPkgId}/vnfd':
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.4
    parameters:
      - name: vnfPkgId
        description: >
Samir Medjiah's avatar
Samir Medjiah committed
504
          Identifier of the VNF package. The identifier is allocated by the NFVO.
505
506
        in: path
        type: string
507
        required: true
508
    get:
rameshnaraya's avatar
rameshnaraya committed
509
      summary: Read VNFD of an on-boarded VNF package.
510
      description: >
rameshnaraya's avatar
rameshnaraya committed
511
        The GET method reads the content of the VNFD within a VNF package.
512

rameshnaraya's avatar
rameshnaraya committed
513
        The VNFD can be implemented as a single file or as a collection of multiple files. If the VNFD is implemented in the
514
515
516
517
518
519
520
521
522
523
524
525
526
        form of multiple files, a ZIP file embedding these files shall be returned. If the VNFD is implemented as a single file,
        either that file or a ZIP file embedding that file shall be returned.
        The selection of the format is controlled by the "Accept" HTTP header passed in the GET request.
        • If the "Accept" header contains only "text/plain" and the VNFD is implemented as a single file, the file shall
        be returned; otherwise, an error message shall be returned.
        • If the "Accept" header contains only "application/zip", the single file or the multiple files that make up the
        VNFD shall be returned embedded in a ZIP file.
        • If the "Accept" header contains both "text/plain" and "application/zip", it is up to the NFVO to choose the
        format to return for a single-file VNFD; for a multi-file VNFD, a ZIP file shall be returned.
        The default format of the ZIP file shall be the one specified in ETSI GS NFV-SOL 004 [5] where only the YAML files
        representing the VNFD, and information necessary to navigate the ZIP file and to identify the file that is the entry point
        for parsing the VNFD (such as TOSCA-meta or manifest files or naming conventions) are included.
        This method shall follow the provisions specified in the Tables 9.4.4.3.2-1 and 9.4.4.3.2-2 for URI query parameters,
rameshnaraya's avatar
rameshnaraya committed
527
        request and response data structures, and response codes.
528
      parameters:
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
          enum:
            - text/plain
            - application/zip
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
545
546
547
548
549
550
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
551
552
      responses:
        200:
553
          description: >
554
            200 OK
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570

            On success, the content of the VNFD is returned.
            The payload body shall contain a copy of the file
            representing the VNFD or a ZIP file that contains the
            file or multiple files representing the VNFD, as
            specified above.
            The "Content-Type" HTTP header shall be set
            according to the format of the returned file, i.e. to
            "text/plain" for a YAML file or to "application/zip" for a ZIP file.
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
571
              type: "string"
572
573
              description: >
                Challenge if the corresponding HTTP request has not provided
574
575
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
576
577
              maximum: 1
              minimum: 0
578
579
580
581
582
583
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
584
585
586
587
588
589
590
591
592
593
594
595
596
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          description: >
            "406 Not AccepTable"
597
598

          $ref: "responses/SOL005_resp.yaml#/responses/406"
599
600
601
        409:
          description: >
            "409 Conflict"
602
603

          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/406-state-conflict"
604
605
606
607
608
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
609
610
611
612
613
          $ref: "responses/SOL005_resp.yaml#/responses/503"

  ###############################################################################
  # VNF Package Content                                                         #
  ###############################################################################
614
  '/vnf_packages/{vnfPkgId}/package_content':
615
616
617
618
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.5
    parameters:
      - name: "vnfPkgId"
        description: >
Samir Medjiah's avatar
Samir Medjiah committed
619
          Identifier of the VNF package. The identifier is allocated by the NFVO.
620
621
        in: "path"
        required: true
622
        type: "string"
623
    get:
rameshnaraya's avatar
rameshnaraya committed
624
      summary: Fetch an on-boarded VNF package.
625
      description: >
rameshnaraya's avatar
rameshnaraya committed
626
627
628
        The GET method fetches the content of a VNF package identified by the VNF package identifier allocated by the NFVO.
        This method shall follow the provisions specified in the Tables 9.4.5.3.2-1 and 9.4.5.3.2-2 for URI query parameters,
        request and response data structures, and response codes.
629
      parameters:
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
          enum:
            - application/zip
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - name: "Range"
          in: "header"
          required: false
          type: "string"
          description: >
            The request may contain a "Range" HTTP header to obtain single
            range of bytes from the VNF package file. This can be used to
            continue an aborted transmission.

            If the NFVO does not support range requests, it should return the
            whole file with a 200 OK response instead.
656
657
658
659
660
661
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
662
663
      responses:
        200:
664
          description: >
665
            200 OK
666
667
668
669
670
671
672
673
674
675
676
677
678
679

            On success, a copy of the VNF package file is returned.
            The response body shall include a copy of the VNF package file.
            The "Content-Type" HTTP header shall be set
            according to the type of the file, i.e. to "application/zip"
            for a VNF Package as defined in ETSI
            GS NFV-SOL 004 [5].
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
680
              type: "string"
681
682
              description: >
                Challenge if the corresponding HTTP request has not provided
683
684
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
685
686
              maximum: 1
              minimum: 0
687
688
689
690
691
692
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
693
694
695
        206:
          $ref: "responses/SOL005_resp.yaml#/responses/206"
        409:
696
          description: >
697
698
          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409-state-conflict-ONBOARDING"
        416:
699
          $ref: "responses/SOL005_resp.yaml#/responses/416"
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
715
716
          $ref: "responses/SOL005_resp.yaml#/responses/503"

717
    put:
rameshnaraya's avatar
rameshnaraya committed
718
      summary: Upload a VNF package by providing the content of the VNF package.
719
      description: >
rameshnaraya's avatar
rameshnaraya committed
720
721
722
723
        The PUT method uploads the content of a VNF package.
        This method shall follow the provisions specified in the 
        Tables 9.4.5.3.3-1 and 9.4.5.3.3-2 for URI query parameters,
        request and response data structures, and response codes.
724
      consumes:
725
        - multipart/form-data
726
      parameters:
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
          enum:
            - application/zip
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - in: formData
          name: file
          required: false
          type: file
          description: >
            The payload body contains a ZIP file that represents the VNF package.
            The "Content-Type" HTTP header shall be set according to the
            type of the file, i.e. to "application/zip" for a VNF Package as
            defined in ETSI GS NFV-SOL 004 [5].
751
752
753
754
755
756
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
757
758
      responses:
        202:
759
          description: >
760
            202 Accepted
761

rameshnaraya's avatar
rameshnaraya committed
762
763
764
765
            The VNF package was accepted for uploading, but the
            processing has not been completed. It is expected to
            take some time for processing.
            The response body shall be empty.
766
        409:
767
          description: >
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409-state-conflict-ONBOARDING-NOT-CREATED"
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
784
          $ref: "responses/SOL005_resp.yaml#/responses/503"
785

786
787
788
  ###############################################################################
  # Upload VNF package from URI task                                            #
  ###############################################################################
789
790
791
  '/vnf_packages/{vnfPkgId}/package_content/upload_from_uri':
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.6   
    post:
rameshnaraya's avatar
rameshnaraya committed
792
      summary: Upload a VNF package by providing the address information of the VNF package.
793
      description: >
794
795
796
797
        The POST method provides the information for the NFVO to get the content of a VNF package.
        This method shall follow the provisions specified in the 
        Tables 9.4.6.3.1-1 and 9.4.6.3.1-2 for URI query parameters,
        request and response data structures, and response codes.        
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
      parameters:
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - name: Content-Type
          description: >
            The MIME type of the body of the request.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string

        - name: "vnfPkgId"
          description: >
            Identifier of the VNF package. The identifier is allocated by the NFVO.
          in: "path"
          required: true
          type: "string"

        - name: "body"
          in: "body"
          required: true
          schema:
            type: "object"
            required:
              - "UploadVnfPkgFromUriRequest"
            properties:
              UploadVnfPkgFromUriRequest:
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/UploadVnfPkgFromUriRequest"
            description: >
              The payload body contains the address information based on
              which the NFVO can obtain the content of the VNF package.
841
842
843
844
845
846
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
847

848
849
      responses:
        202:
rameshnaraya's avatar
rameshnaraya committed
850
          description: >
851
            202 Accepted
852

rameshnaraya's avatar
rameshnaraya committed
853
            The information about the VNF package was received
854
855
            successfully, but the on-boarding has not been
            completed. It is expected to take some time for processing.
rameshnaraya's avatar
rameshnaraya committed
856
            The response body shall be empty.
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
        409:
          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409-state-conflict-ONBOARDING-NOT-CREATED"
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
874
875
876
877
878
          $ref: "responses/SOL005_resp.yaml#/responses/503"

  ###############################################################################
  # Individual VNF package artifact                                             #
  ###############################################################################
879
  '/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}':
880
881
882
883
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.7
    parameters:
      - name: vnfPkgId
        description: >
884
          Identifier of the VNF package.
885
886
887
888
889
890
891
892
          The identifier is allocated by the NFVO.
          This identifier can be retrieved from the "vnfPkgId" attribute in the VnfPackageOnboardingNotification or
          VnfPackageChangeNotification.
        in: path
        type: string
        required: true
      - name: artifactPath
        description: >
893
894
895
896
897
898
899
          Sequence of one or path segments representing the path of the artifact 
          within the VNF package.
          EXAMPLE: foo/bar/run.sh
          This identifier can be retrieved from the "artifactPath" attribute of 
          the applicable "additionalArtifacts" entry in the body of the response 
          to a GET request querying the "Individual VNF package" or the 
          "VNF packages" resource.
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
        in: path
        type: string
        required: true
    get:
      summary: Fetch individual VNF package artifact.
      description: >
        The GET method fetches the content of an artifact within a VNF package.
        This method shall follow the provisions specified in the
        Tables 9.4.7.3.2-1 and 9.4.7.3.2-2 for URI query parameters,
        request and response data structures, and response codes.
      parameters:
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - name: Range
          description: >
            The request may contain a "Range" HTTP header to obtain single
            range of bytes from the VNF package file. This can be used to
            continue an aborted transmission.
            If the NFVO does not support range requests, it should return the
            whole file with a 200 OK response instead.
          in: header
          type: string
933
934
935
936
937
938
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
      responses:
        200:
          description: >
            200 OK
             On success, the content of the artifact is returned.
            The payload body shall contain a copy of the artifact file from
            the VNF package, as defined by ETSI GS NFV-SOL 004.
            The "Content-Type" HTTP header shall be set according to the
            content type of the artifact file. If the content type cannot be
            determined, the header shall be set to the value
            "application/octet-stream".
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
              type: "string"
              description: >
                Challenge if the corresponding HTTP request has not provided
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
              minimum: 0
964
965
966
967
968
969
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000

        206:
          description: >
            Partial Content.
            On success, if the NFVO supports range requests, a single
            consecutive byte range from the content of the VNF package file is
            returned.
            The response body shall contain the requested part of the VNF
            package file.
            The "Content-Range" HTTP header shall be provided according to
            IETF RFC 7233.
            The "Content-Type" HTTP header shall be set as defined above for
            the "200 OK" response.
          headers:
            Content-Range:
              type: string
              maximum: 1
              minimum: 1
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
              type: "string"
              description: >
                Challenge if the corresponding HTTP request has not provided
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
              minimum: 0
1001
1002
1003
1004
1005
1006
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        409:
          $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
          $ref: "responses/SOL005_resp.yaml#/responses/503"

  ##############################################################################
  # Subscriptions                                                               #
  ###############################################################################
1031
  '/subscriptions':
1032
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.8
1033
    post:
rameshnaraya's avatar
rameshnaraya committed
1034
      summary: Subscribe to notifications related to on-boarding and/or changes of VNF packages.
1035
      description: >
1036
        The POST method creates a new subscription.
rameshnaraya's avatar
rameshnaraya committed
1037
1038
1039
1040
1041
1042
1043
1044
        This method shall follow the provisions specified in the Tables 9.4.8.3.1-1 and 9.4.8.3.1-2 for URI query parameters,
        request and response data structures, and response codes.
        Creation of two subscription resources with the same callbackURI and the same filter can result in performance
        degradation and will provide duplicates of notifications to the OSS, and might make sense only in very rare use cases.
        Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the
        same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide
        to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing
        the existing subscription resource with the same filter and callbackUri).
1045
      parameters:
1046
        - name: Accept
1047
          description: >
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
        - name: Content-Type
          description: >
            The MIME type of the body of the request.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
1067
1068
1069
1070
1071
1072
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
        - name: "body"
          in: "body"
          required: true
          schema:
            type: "object"
            required:
              - "PkgmSubscriptionRequest"
            properties:
              PkgmSubscriptionRequest:
                $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscriptionRequest"
            description: >
              Representation of the created subscription resource.
              The HTTP response shall include a "Location" HTTP header that
              points to the created subscription resource.

1088
1089
      responses:
        201:
rameshnaraya's avatar
rameshnaraya committed
1090
          description: >
1091
            201 Created
1092

1093
            Representation of the created subscription resource.
rameshnaraya's avatar
rameshnaraya committed
1094
1095
            The HTTP response shall include a "Location"
            HTTP header that points to the created subscription resource.
1096
1097
1098
1099
1100
1101
1102
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
1103
              type: "string"
1104
1105
              description: >
                Challenge if the corresponding HTTP request has not provided
1106
1107
1108
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
1109
              minimum: 0
1110
1111
1112
1113
1114
1115
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1116
1117
1118
          schema:
            type: array
            items:
rameshnaraya's avatar
rameshnaraya committed
1119
1120
              properties:
                PkgmSubscription:
1121
                  $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscription"
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
        303:
          $ref: "responses/SOL005_resp.yaml#/responses/303"
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
          $ref: "responses/SOL005_resp.yaml#/responses/503"
1142
    get:
1143
      summary: Query multiple subscriptions.
1144
      description: >
rameshnaraya's avatar
rameshnaraya committed
1145
1146
1147
1148
1149
        The GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used
        e.g. for resynchronization after error situations.
        This method shall follow the provisions specified in the 
        Tables 9.4.7.8.2-1 and 9.4.8.3.2-2 for URI query parameters,
        request and response data structures, and response codes.
1150
      parameters:
1151
1152
        - name: filter
          in: query
1153
          required: false
1154
          type: string
1155
          description: >
1156
1157
1158
            Attribute-based filtering expression according to clause 4.3.2.
            The NFVO shall support receiving this filtering parameter as part of the URI query
            string. The OSS/BSS may supply this filtering parameter.
1159
            All attribute names that appear in the PkgmSubscription and in data types
1160
            referenced from it shall be supported by the NFVO in the filtering expression.
1161
1162
1163
1164
1165
1166
1167
        - name: nextpage_opaque_marker
          in: query
          description: >
            Marker to obtain the next page of a paged response. Shall be supported by the NFVO
            if the NFVO supports alternative 2 (paging) according to clause 4.7.2.1 for this resource.
          required: false
          type: string
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
1182
1183
1184
1185
1186
1187
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
1188
1189
      responses:
        200:
rameshnaraya's avatar
rameshnaraya committed
1190
          description: >
1191
            200 OK
1192

rameshnaraya's avatar
rameshnaraya committed
1193
            Active subscriptions of the functional block that invokes the method.
1194
1195
1196
1197
1198
1199
1200
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
1201
              type: "string"
1202
1203
              description: >
                Challenge if the corresponding HTTP request has not provided
1204
1205
1206
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
1207
              minimum: 0
1208
1209
1210
1211
1212
1213
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1214
1215
1216
1217
1218
1219
            Link:
              description: >
                Reference to other resources. Used for paging in the present document, see clause 4.7.2.1.
              type: string
              maximum: 1
              minimum: 0
1220
1221
1222
          schema:
            type: array
            items:
rameshnaraya's avatar
rameshnaraya committed
1223
1224
              properties:
                PkgmSubscription:
1225
                  $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscription"
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
        400:
          $ref: "responses/SOL005_resp.yaml#/responses/400"
        401:
          $ref: "responses/SOL005_resp.yaml#/responses/401"
        403:
          $ref: "responses/SOL005_resp.yaml#/responses/403"
        404:
          $ref: "responses/SOL005_resp.yaml#/responses/404"
        405:
          $ref: "responses/SOL005_resp.yaml#/responses/405"
        406:
          $ref: "responses/SOL005_resp.yaml#/responses/406"
        416:
          $ref: "responses/SOL005_resp.yaml#/responses/416"
        500:
          $ref: "responses/SOL005_resp.yaml#/responses/500"
        503:
          $ref: "responses/SOL005_resp.yaml#/responses/503"
1244
1245
1246
1247

  ###############################################################################
  # Individual subscription                                                     #
  ###############################################################################
1248
  '/subscriptions/{subscriptionId}':
1249
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.9
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
    parameters:
      - name: subscriptionId
        description: >
          Identifier of this subscription.
          This identifier can be retrieved from the resource referenced by
          the "Location" HTTP header in the response to a POST request
          creating a new subscription resource. It can also be retrieved from
          the "id" attribute in the payload body of that response.
        in: path
        type: string
        required: true
    get:
1262
      summary: Read an individual subscription resource.
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
      description: >
        Query Subscription Information
        The GET method reads an individual subscription.
      parameters:
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
        - name: Authorization
          description: >
            The authorization token for the request.
            Reference: IETF RFC 7235
          in: header
          required: false
          type: string
1281
1282
1283
1284
1285
1286
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
1287
1288
      responses:
        200:
rameshnaraya's avatar
rameshnaraya committed
1289
          description: >
1290
            200 OK
1291

1292
1293
1294
1295
1296
1297
1298
1299
            Representation of the subscription resource.
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
1300
              type: "string"
1301
1302
              description: >
                Challenge if the corresponding HTTP request has not provided
1303
1304
1305
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
1306
              minimum: 0
1307
1308
1309
1310
1311
1312
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1