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

info:
bernini's avatar
bernini committed
4
  version: "1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1"
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:
bernini's avatar
bernini committed
19 20
  description: ETSI GS NFV-SOL 005 V2.6.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.06.01_60/gs_NFV-SOL005v020601p.pdf
21

22
basePath: /vnfpkgm/v1
23 24 25
schemes:
  - https
consumes:
26
  - application/json
27
produces:
28
  - application/json
29
paths:
30 31 32 33 34 35
  ###############################################################################
  # API Versions                                                                #
  ###############################################################################
  '/api-versions':
    $ref: '../endpoints/SOL005_endpoints.yaml#/endpoints/api-versions'

36 37 38
  ###############################################################################
  # VNF Packages                                                                #
  ###############################################################################
39
  '/vnf_packages':
bernini's avatar
bernini committed
40
    #ETSI GS NFV-SOL 005 V2.6.1 location: 9.4.2
41 42 43 44 45 46 47 48 49 50 51 52 53 54
    parameters:
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
55
    get:
rameshnaraya's avatar
rameshnaraya committed
56
      summary: Query VNF packages information.
57
      description: >
rameshnaraya's avatar
rameshnaraya committed
58 59 60 61
        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.
62
      parameters:
63 64
        - name: filter
          in: query
65
          required: false
66
          type: string
67
          description: >
68 69 70
            Attribute-based filtering parameters according to clause 4.3.2.
            The NFVO shall support receiving filtering parameters as part of the URI query string. The
            OSS/BSS may supply filtering parameters.
71
            All attribute names that appear in the VnfPkgInfo and in data types referenced from it shall
72
            be supported in attribute-based filtering parameters.
73 74
        - name: all_fields
          in: query
75
          required: false
76
          type: string
77
          description: >
rameshnaraya's avatar
rameshnaraya committed
78 79
            Include all complex attributes in the response. See clause 4.3.3 for details. The NFVO
            shall support this parameter.
80 81
        - name: fields
          in: query
82
          required: false
83
          type: string
84
          description: >
rameshnaraya's avatar
rameshnaraya committed
85 86
            Complex attributes to be included into the response. See clause 4.3.3 for details. The
            NFVO should support this parameter.         
87 88
        - name: exclude_fields
          in: query
89
          required: false
90
          type: string
91
          description: >
rameshnaraya's avatar
rameshnaraya committed
92 93
            Complex attributes to be excluded from the response. See clause 4.3.3 for details. The
            NFVO should support this parameter.
94 95
        - name: exclude_default
          in: query
96
          required: false
97
          type: string
98
          description: >
rameshnaraya's avatar
rameshnaraya committed
99 100 101
            Indicates to exclude the following complex attributes from the response. See clause 4.3.3
            for details.
            The NFVO shall support this parameter.
102 103 104 105 106 107
            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
108
            - checksum
109 110 111 112 113 114 115 116 117
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
      responses:
        200:
rameshnaraya's avatar
rameshnaraya committed
118
          description: >
119
            200 OK
120

121
            Information of the selected VNF packages.
rameshnaraya's avatar
rameshnaraya committed
122 123 124 125 126 127
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
128
            WWW-Authenticate:
129
              type: string
rameshnaraya's avatar
rameshnaraya committed
130 131
              description: >
                Challenge if the corresponding HTTP request has not provided
132 133 134
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
135
              minimum: 0
136 137 138 139 140 141
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
142
          schema:
rameshnaraya's avatar
rameshnaraya committed
143
            type: array
144
            items:
rameshnaraya's avatar
rameshnaraya committed
145 146
              properties:
                VnfPkgInfo:
147
                  $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfo"
148
        400:
149
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
150
        401:
151
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
152
        403:
153
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
154
        404:
155
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
156
        405:
157
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
158
        406:
159
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
160
        416:
161
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
162
        500:
163
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
164
        503:
165
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
166 167

    post:
rameshnaraya's avatar
rameshnaraya committed
168
      summary: Create a new individual VNF package resource.
169
      description: >
rameshnaraya's avatar
rameshnaraya committed
170
        The POST method creates a new individual VNF package resource.
171
      parameters:
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          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: body
          in: body
          required: true
          schema:
            $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/CreateVnfPkgInfoRequest"
          description: >
            IndividualVNF package resource creation parameters, as defined in clause 9.5.2.2
193 194
      responses:
        201:
195
          description: >
196
            201 Created            
197

198
            An individual VNF package resource has been created successfully.
199 200 201 202 203
            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
204
            VNF package resource.
205
          schema:
206
            $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfo"
207
          headers:
208
            Content-Type:
209
              type: string
210 211 212 213 214
              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
215
              minimum: 1
216
            WWW-Authenticate:
217
              type: string
218 219 220 221 222 223
              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
224 225 226 227 228 229
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
230 231 232
  ###############################################################################
  # Individual VNF Package                                                      #
  ###############################################################################
233
  '/vnf_packages/{vnfPkgId}':
bernini's avatar
bernini committed
234
    #ETSI GS NFV-SOL 005 V2.6.1 location: 9.4.3
235
    parameters:
236
      - name: vnfPkgId
237 238
        description: >
          Identifier of the VNF package. The identifier is allocated by the NFVO.  
239 240
        in: path
        type: string
241
        required: true
242 243 244 245 246 247 248 249 250 251 252 253 254
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
255
    get:
rameshnaraya's avatar
rameshnaraya committed
256
      summary: Read information about an individual VNF package.
257
      description: >
258
        The GET method reads the information of a VNF package.
259 260 261 262 263 264 265 266 267 268
      parameters:
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
      responses:
        200:
269 270
          description: >
            200 OK
271

272
            Information of the VNF package.            
273
          schema:
274
            $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfo"
rameshnaraya's avatar
rameshnaraya committed
275 276
          headers:
            Content-Type:
277
              type: string
rameshnaraya's avatar
rameshnaraya committed
278 279 280 281
              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:
282
              type: string
rameshnaraya's avatar
rameshnaraya committed
283 284 285 286
              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.
287 288
              maximum: 1
              minimum: 0
289 290 291 292 293 294
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
295
        400:
296
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
297
        401:
298
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
299
        403:
300
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
301
        404:
302
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
303
        405:
304
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
305
        406:
306
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
307
        416:
308
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
309
        500:
310
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
311
        503:
312
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
313

314
    delete:
rameshnaraya's avatar
rameshnaraya committed
315
      summary: Delete an individual VNF package.
316
      description: >
317
        The DELETE method deletes an individual VNF Package resource.
318 319 320
      responses:
        204:
          description: >
321
            204 No Content
322

rameshnaraya's avatar
rameshnaraya committed
323 324
            The VNF package was deleted successfully.
            The response body shall be empty.
325 326 327 328 329 330 331
          headers:
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
332 333
        409:
          $ref: "../responses/SOL005_resp.yaml#/responses/409"
334
        400:
335
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
336
        401:
337
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
338
        403:
339
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
340
        404:
341
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
342
        405:
343
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
344
        406:
345
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
346
        416:
347
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
348
        500:
349
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
350
        503:
351
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
352

353
    patch:
rameshnaraya's avatar
rameshnaraya committed
354
      summary: Update information about an individual VNF package.
355
      description: >
356
        "The PATCH method updates the information of a VNF package."
357

358 359 360 361
        "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:
362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
        - name: body
          in: body
          required: true
          schema:
            $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfoModifications"
          description: >
            Parameters for VNF package information modifications.
        - name: Content-Type
          description: >
            The MIME type of the body of the request.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
      responses:
377
        200:
rameshnaraya's avatar
rameshnaraya committed
378
          description: >
379
            200 OK
380

rameshnaraya's avatar
rameshnaraya committed
381
            The operation was completed successfully.
382
            The response body shall contain attribute
rameshnaraya's avatar
rameshnaraya committed
383 384
            modifications for an "Individual VNF
            package" resource
385 386 387 388 389 390 391
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
392
              type: string
393 394
              description: >
                Challenge if the corresponding HTTP request has not provided
395 396
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
397 398
              maximum: 1
              minimum: 0
399 400 401 402 403 404
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
405
          schema:
406
            properties:
407
              VnfPkgInfoModifications:
408 409 410
                $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfoModifications"
        409:
          $ref: "../responses/SOL005_resp.yaml#/responses/409"
411
        400:
412
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
413
        401:
414
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
415
        403:
416
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
417
        404:
418
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
419
        405:
420
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
421
        406:
422
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
423
        416:
424
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
425
        500:
426
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
427
        503:
428
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
429

430 431 432
  ###############################################################################
  # VNFD in an individual VNF package                                           #
  ###############################################################################
433
  '/vnf_packages/{vnfPkgId}/vnfd':
bernini's avatar
bernini committed
434
    #ETSI GS NFV-SOL 005 V2.6.1 location: 9.4.4
435
    parameters:
436 437 438 439 440 441 442 443 444 445 446 447 448
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
449 450
      - name: vnfPkgId
        description: >
451
          Identifier of the on-boarded VNF package. The identifier is allocated by the NFVO.
452 453
        in: path
        type: string
454
        required: true
455
    get:
rameshnaraya's avatar
rameshnaraya committed
456
      summary: Read VNFD of an on-boarded VNF package.
457
      description: >
rameshnaraya's avatar
rameshnaraya committed
458
        The GET method reads the content of the VNFD within a VNF package.
459

rameshnaraya's avatar
rameshnaraya committed
460
        The VNFD can be implemented as a single file or as a collection of multiple files. If the VNFD is implemented in the
461 462 463 464 465 466 467 468 469 470 471 472 473
        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
474
        request and response data structures, and response codes.
475
      parameters:
476 477 478 479 480 481 482 483 484
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
          enum:
            - text/plain
            - application/zip
485 486
      responses:
        200:
487
          description: >
488
            200 OK
489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504

            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:
505
              type: string
506 507
              description: >
                Challenge if the corresponding HTTP request has not provided
508 509
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
510 511
              maximum: 1
              minimum: 0
512 513 514 515 516 517
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
518
        400:
519
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
520
        401:
521
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
522
        403:
523
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
524
        404:
525
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
526
        405:
527
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
528
        406:
529
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
530
        409:
531
          $ref: "../responses/SOL005_resp.yaml#/responses/409"
532
        416:
533
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
534
        500:
535
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
536
        503:
537
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
538

539 540 541
  ###############################################################################
  # VNF Package Content                                                         #
  ###############################################################################
542
  '/vnf_packages/{vnfPkgId}/package_content':
bernini's avatar
bernini committed
543
    #ETSI GS NFV-SOL 005 V2.6.1 location: 9.4.5
544
    parameters:
545 546 547 548 549 550 551 552 553 554 555 556 557
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
558
      - name: vnfPkgId
559
        description: >
560
          Identifier of the on-boarded VNF package. The identifier is allocated by the NFVO.
561
        in: path
562
        required: true
563
        type: string
564
    get:
rameshnaraya's avatar
rameshnaraya committed
565
      summary: Fetch an on-boarded VNF package.
566
      description: >
rameshnaraya's avatar
rameshnaraya committed
567 568 569
        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.
570
      parameters:
571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
          enum:
            - application/zip
        - 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.
590 591
      responses:
        200:
592
          description: >
593
            200 OK
594 595 596 597 598 599 600 601 602 603 604 605 606 607

            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:
608
              type: string
609 610
              description: >
                Challenge if the corresponding HTTP request has not provided
611 612
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
613 614
              maximum: 1
              minimum: 0
615 616 617 618 619 620
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
621
        206:
622
          $ref: "../responses/SOL005_resp.yaml#/responses/206"
623 624 625 626
        409:
          $ref: "../responses/SOL005_resp.yaml#/responses/409"
        416:
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
627
        400:
628
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
629
        401:
630
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
631
        403:
632
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
633
        404:
634
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
635
        405:
636
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
637
        406:
638
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
639
        500:
640
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
641
        503:
642
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
643

644
    put:
rameshnaraya's avatar
rameshnaraya committed
645
      summary: Upload a VNF package by providing the content of the VNF package.
646
      description: >
rameshnaraya's avatar
rameshnaraya committed
647 648 649 650
        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.
651
      consumes:
652
        - multipart/form-data
653
      parameters:
654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
          in: header
          required: true
          type: string
          enum:
            - application/zip
        - 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].
671 672
      responses:
        202:
673
          description: >
674
            202 Accepted
675

rameshnaraya's avatar
rameshnaraya committed
676 677 678 679
            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.
680 681 682 683 684 685 686
          headers:
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
687
        409:
688
          description: >
689
          $ref: "../responses/SOL005_resp.yaml#/responses/409"
690
        400:
691
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
692
        401:
693
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
694
        403:
695
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
696
        404:
697
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
698
        405:
699
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
700
        406:
701
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
702
        500:
703
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
704
        503:
705
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
706

707 708 709
  ###############################################################################
  # Upload VNF package from URI task                                            #
  ###############################################################################
710 711 712
  '/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
713
      summary: Upload a VNF package by providing the address information of the VNF package.
714
      description: >
715 716 717 718
        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.        
719 720 721 722 723 724 725 726 727 728 729 730 731 732 733
      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
734 735 736 737 738 739
        - name: Version
          description: >
            Version of the API requested to use when responding to this request.
          in: header
          required: true
          type: string
740 741 742 743 744 745 746 747 748 749 750 751 752 753
        - 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:
            $ref: "definitions/SOL005VNFPackageManagement_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.
754 755
      responses:
        202:
rameshnaraya's avatar
rameshnaraya committed
756
          description: >
757
            202 Accepted
758

rameshnaraya's avatar
rameshnaraya committed
759
            The information about the VNF package was received
760 761
            successfully, but the on-boarding has not been
            completed. It is expected to take some time for processing.
rameshnaraya's avatar
rameshnaraya committed
762
            The response body shall be empty.
763 764 765 766 767 768 769
          headers:
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
770
        409:
771
          $ref: "../responses/SOL005_resp.yaml#/responses/409"
772
        400:
773
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
774
        401:
775
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
776
        403:
777
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
778
        404:
779
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
780
        405:
781
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
782
        406:
783
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
784
        500:
785
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
786
        503:
787
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
788

789 790 791
  ###############################################################################
  # Individual VNF package artifact                                             #
  ###############################################################################
792
  '/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}':
793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.7
    parameters:
      - name: vnfPkgId
        description: >
          Identifier of the on-boarded VNF package.
          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: >
          Path of the artifact within the VNF package.
          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.
        in: path
        type: string
        required: true
813 814 815 816 817 818 819 820 821 822 823 824 825
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873
    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: 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
      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
874 875 876 877 878 879
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 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
        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
        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/SOL005_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"

931 932 933
  ###############################################################################
  # Subscriptions                                                               #
  ###############################################################################
934
  '/subscriptions':
935
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.8
936 937 938 939 940 941 942 943 944 945 946 947 948 949
    parameters:
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
950
    post:
rameshnaraya's avatar
rameshnaraya committed
951
      summary: Subscribe to notifications related to on-boarding and/or changes of VNF packages.
952
      description: >
953
        The POST method creates a new subscription.
rameshnaraya's avatar
rameshnaraya committed
954 955 956 957 958 959 960 961
        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).
962
      parameters:
963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          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: body
          in: body
          required: true
          schema:
            $ref: "definitions/SOL005VNFPackageManagement_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.
986 987
      responses:
        201:
rameshnaraya's avatar
rameshnaraya committed
988
          description: >
989
            201 Created
990

991
            Representation of the created subscription resource.
rameshnaraya's avatar
rameshnaraya committed
992 993
            The HTTP response shall include a "Location"
            HTTP header that points to the created subscription resource.
994 995 996 997 998 999 1000
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
1001
              type: string
1002 1003
              description: >
                Challenge if the corresponding HTTP request has not provided
1004 1005 1006
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
1007
              minimum: 0
1008 1009 1010 1011 1012 1013
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1014 1015 1016
          schema:
            type: array
            items:
1017
              $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription"
1018
        303:
1019
          $ref: "../responses/SOL005_resp.yaml#/responses/303"
1020
        400:
1021
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
1022
        401:
1023
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
1024
        403:
1025
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
1026
        404:
1027
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
1028
        405:
1029
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
1030
        406:
1031
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
1032
        416:
1033
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
1034
        500:
1035
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
1036
        503:
1037
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
1038
    get:
1039
      summary: Query multiple subscriptions.
1040
      description: >
rameshnaraya's avatar
rameshnaraya committed
1041 1042 1043 1044 1045
        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.
1046
      parameters:
1047 1048
        - name: filter
          in: query
1049
          required: false
1050
          type: string
1051
          description: >
1052 1053 1054
            Attribute-based filtering parameters according to clause 4.3.2.
            The NFVO shall support receiving filtering parameters as part of the URI query
            string. The OSS/BSS may supply filtering parameters.
1055
            All attribute names that appear in the PkgmSubscription and in data types
1056
            referenced from it shall be supported in attribute-based filtering parameters            
1057 1058 1059 1060 1061 1062 1063
        - name: Accept
          description: >
            Content-Types that are acceptable for the response.
            Reference: IETF RFC 7231
          in: header
          required: true
          type: string
1064 1065
      responses:
        200:
rameshnaraya's avatar
rameshnaraya committed
1066
          description: >
1067
            200 OK
1068

rameshnaraya's avatar
rameshnaraya committed
1069
            Active subscriptions of the functional block that invokes the method.
1070 1071 1072 1073 1074 1075 1076
          headers:
            Content-Type:
              description: The MIME type of the body of the response.
              type: string
              maximum: 1
              minimum: 1
            WWW-Authenticate:
1077
              type: string
1078 1079
              description: >
                Challenge if the corresponding HTTP request has not provided
1080 1081 1082
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
1083
              minimum: 0
1084 1085 1086 1087 1088 1089
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1090 1091 1092
          schema:
            type: array
            items:
1093
              $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription"
1094
        400:
1095
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
1096
        401:
1097
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
1098
        403:
1099
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
1100
        404:
1101
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
1102
        405:
1103
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
1104
        406:
1105
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
1106
        416:
1107
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
1108
        500:
1109
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
1110
        503:
1111
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
1112

1113 1114 1115
  ###############################################################################
  # Individual subscription                                                     #
  ###############################################################################
1116
  '/subscriptions/{subscriptionId}':
1117
    #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.9
1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128
    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
1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141
      - name: Authorization
        description: >
          The authorization token for the request.
          Reference: IETF RFC 7235.
        in: header
        required: false
        type: string
      - name: Version
        description: >
          Version of the API requested to use when responding to this request.
        in: header
        required: true
        type: string
1142
    get:
1143
      summary: Read an individual subscription resource.
1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156
      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
      responses:
        200:
rameshnaraya's avatar
rameshnaraya committed
1157
          description: >
1158
            200 OK
1159

1160 1161 1162 1163 1164 1165 1166 1167
            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:
1168
              type: string
1169 1170
              description: >
                Challenge if the corresponding HTTP request has not provided
1171 1172 1173
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
              maximum: 1
1174
              minimum: 0
1175 1176 1177 1178 1179 1180
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1181
          schema:
1182
            $ref: "definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription"
1183
        400:
1184
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
1185
        401:
1186
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
1187
        403:
1188
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
1189
        404:
1190
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
1191
        405:
1192
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
1193
        406:
1194
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
1195
        416:
1196
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
1197
        500:
1198
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
1199
        503:
1200
          $ref: "../responses/SOL005_resp.yaml#/responses/503"
1201
    delete:
1202
      summary: Terminate a subscription.
1203
      description: >
1204 1205 1206
        The DELETE method terminates an individual subscription.
      responses:
        204:
1207
          description: >
1208
            No Content
1209 1210 1211 1212

            The subscription resource was deleted successfully.
          headers:
            WWW-Authenticate:
1213
              type: string
1214 1215
              description: >
                Challenge if the corresponding HTTP request has not provided
1216 1217
                authorization, or error details if the corresponding HTTP request
                has provided an invalid authorization token.
1218 1219
              maximum: 1
              minimum: 0
1220 1221 1222 1223 1224 1225
            Version:
              description: >
                Version of the API used in the response.
              type: string
              maximum: 1
              minimum: 1
1226
        400:
1227
          $ref: "../responses/SOL005_resp.yaml#/responses/400"
1228
        401:
1229
          $ref: "../responses/SOL005_resp.yaml#/responses/401"
1230
        403:
1231
          $ref: "../responses/SOL005_resp.yaml#/responses/403"
1232
        404:
1233
          $ref: "../responses/SOL005_resp.yaml#/responses/404"
1234
        405:
1235
          $ref: "../responses/SOL005_resp.yaml#/responses/405"
1236
        406:
1237
          $ref: "../responses/SOL005_resp.yaml#/responses/406"
1238
        416:
1239
          $ref: "../responses/SOL005_resp.yaml#/responses/416"
rameshnaraya's avatar
rameshnaraya committed
1240
        500:
1241
          $ref: "../responses/SOL005_resp.yaml#/responses/500"
1242
        503:
bernini's avatar
bernini committed
1243
          $ref: "../responses/SOL005_resp.yaml#/responses/503"