VNFPackageManagement.yaml 92.8 KB
Newer Older
openapi: 3.0.2
  title: SSOL003 - VNF Package Management interface
  description: |
    SOL003 - VNF Package Management interface

    IMPORTANT: Please note that this file might be not aligned to the current
    version of the ETSI Group Specification it refers to. In case of
    discrepancies the published ETSI Group Specification takes precedence.

    In clause 4.3.2 of ETSI GS NFV-SOL 003 v2.4.1, an attribute-based
    filtering mechanism is defined. This mechanism is currently not
    included in the corresponding OpenAPI design for this GS version. Changes
    to the attribute-based filtering mechanism are being considered in v2.5.1
    of this GS for inclusion in the corresponding future ETSI NFV OpenAPI
    design.
    Please report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis&list_id=61&product=NFV&resolution=
  contact:
    name: NFV-SOL WG
  license:
    name: ETSI Forge copyright notice
    url: https://forge.etsi.org/etsi-forge-copyright-notice.txt
  version: "2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1"
  description: ETSI GS NFV-SOL 003 V3.3.1
  url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.07.01_60/gs_NFV-SOL003v020701p.pdf
servers:
  - url: http://127.0.0.1/vnfpkgm/v2
  - url: https://127.0.0.1/vnfpkgm/v2
  ###############################################################################
  # API Versions                                                                #
  ###############################################################################
  /api_versions:
    $ref: '../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions'
  ###############################################################################
  # VNF packages                                                                #
  ###############################################################################
  /onboarded_vnf_packages:
    #SOL003 location: 10.4.2
    get:
      description: |
        Query VNF Package Info.
        The GET method queries the information of the VNF packages matching the filter.
        This method shall follow the provisions specified in the tables 10.4.2.3.2-1 and 10.4.2.3.2-2
        for URI query parameters, request and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/all_fields
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/fields
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/exclude_fields
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/exclude_default
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      responses:
        200:
          $ref: '#/components/responses/OnboardedVnfPackages.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  ###############################################################################
  # Individual VNF package                                                      #
  ###############################################################################
  /vnf_packages/{vnfPkgId}:
    parameters:
      - $ref: '#/components/parameters/VnfPkgId'
      description: |
        Query VNF Package Info.
        The GET method reads the information of an individual VNF package.
        This method shall follow the provisions specified in the tables
        10.4.3.3.2-1 and 10.4.3.3.2-2 for URI query parameters,
        request and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
          $ref: '#/components/responses/IndividualVnfPackage.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  /onboarded_vnf_packages/{vnfdId}:
      - $ref: '#/components/parameters/VnfdId'
        Query VNF Package Info.
        The GET method reads the information of an individual VNF package.
        This method shall follow the provisions specified in the tables
        10.4.3.3.2-1 and 10.4.3.3.2-2 for URI query parameters,
        request and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      responses:
        200:
          $ref: '#/components/responses/IndividualOnboardedVnfPackage.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  ###############################################################################
  # VNFD in an individual VNF package                                           #
  ###############################################################################
  /vnf_packages/{vnfPkgId}/vnfd:
    parameters:
      - $ref: '#/components/parameters/VnfPkgId'
Gergely Csatari's avatar
Gergely Csatari committed
        Query VNF Package Info

        The GET method reads the content of the VNFD within a VNF package.
        The VNFD is implemented as a collection of one or more files.
        A ZIP archive embedding these files shall be returned when reading this resource.
        The default format of the ZIP archive shall be the one specified in ETSI GS NFV-SOL 004
        where only the files representing the VNFD and information needed to navigate the ZIP
        archive and to identify the file that is the entry point for parsing the VNFD, and,
        if requested, further security information are included. This means that the structure
        of the ZIP archive shall correspond to the directory structure used in the VNF package
        and that the archive shall contain the following files from the package:
        •	TOSCA.meta (if available in the package)
        •	The main TOSCA definitions YAML file (either as referenced from TOSCA.meta
            or available as a file with the extension ".yml" or ".yaml" from the root of the archive)
        •	Every component of the VNFD referenced (recursively) from the main TOSCA definitions YAML file
        •	The related security information, if the "include_signatures" URI parameter is provided, as follows:
            -	the manifest file
            -	the singleton certificate file in the root of the VNF package (if available in the package)
            -	the signing certificates of the individual files included in the ZIP archive (if available in the package)
            -	the signatures of the individual files (if available in the package)
        Three examples are provided below.

        NOTE:	These examples do not show the security related files.

        EXAMPLE 1:	Assuming a request is sent for the following VNF package
                    (as described in clause A.1 in ETSI GS NFV-SOL 004):
                    !------TOSCA-Metadata
                            !-----	TOSCA.meta (metadata for navigating the ZIP file)
                    !------Definitions
                            !-----	MRF.yaml (main VNFD file)
                            !-----	OtherTemplates (e.g. type definitions, referenced by the main VNFD file)
                    !------Files
                            !-----	ChangeLog.txt
                            !-----	image(s)
                            !-----	other artifacts
                    !------Tests
                            !-----	file(s)
                    !------Licenses
                            !-----	file(s)
                    !------Scripts
                            !-----	install.sh
                    !----- MRF.mf

                    The NFVO will return a ZIP file of the following format:
                    !------TOSCA-Metadata
                            !----- TOSCA.meta
                    !------Definitions
                            !----- MRF.yaml
                            !----- OtherTemplates

        EXAMPLE 2:	Assuming a request is sent for the following VNF package
                    (a VNF package without a TOSCA-Metadata directory, as
                    described in clause A.2 in ETSI GS NFV-SOL 004):
                    !------MRF.yaml (main VNFD file)
                    !------MRF.mf
                    !------ChangeLog.txt
                    !------Tests
                            !----- file(s)
                    !------Licenses
                            !----- file(s)
                    !------Artifacts
                            !----- install.sh
                            !----- start.yang

                    The NFVO will return a ZIP file of the following format:
                    !------MRF.yaml

        EXAMPLE 3:	Assuming a request is sent for the following VNF package
                    (a VNF package with the YANG VNFD without a TOSCA-Metadata directory,
                    as described in clause A.3 in ETSI GS NFV SOL 004):
                    !----CompanyVNFD.yaml
                    !----CompanyVNFD.xml
                    !----CompanyVNFD.mf
                    !----ChangeLog.txt
                    !-----Files
                    !-----Instance Data Files
                            !---- start.xml
                    !-----Licenses
                    !-----Scripts
                            !----- install.sh

                    The NFVO will return a ZIP file of the following format:
                    !----CompanyVNFD.yaml
                    !----CompanyVNFD.xml	(indicated in the yang_definitions metadata in CompanyVNFD.yaml)

        This method shall follow the provisions specified in the tables 10.4.4.3.2-1
        and 10.4.4.3.2-2 for URI query parameters, request and response data structures,
        nd response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
      responses:
        200:
          $ref: '#/components/responses/VnfdInIndividualVnfPackage.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          #          description: |
          #            409 CONFLICT
          #
          #            Shall be returned upon the following error: The operation cannot
          #            be executed currently, due to a conflict with the state of the resource.
          #            Typically, this is due to the fact that "onboardingState" of the
          #            VNF package has a value different from "ONBOARDED".
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  /onboarded_vnf_packages/{vnfdId}/vnfd:
      - $ref: '#/components/parameters/VnfdId'
        Query VNF Package Info

        The GET method reads the content of the VNFD within a VNF package.
        The VNFD is implemented as a collection of one or more files.
        A ZIP archive embedding these files shall be returned when reading this resource.
        The default format of the ZIP archive shall be the one specified in ETSI GS NFV-SOL 004
        where only the files representing the VNFD and information needed to navigate the ZIP
        archive and to identify the file that is the entry point for parsing the VNFD, and,
        if requested, further security information are included. This means that the structure
        of the ZIP archive shall correspond to the directory structure used in the VNF package
        and that the archive shall contain the following files from the package:
        •	TOSCA.meta (if available in the package)
        •	The main TOSCA definitions YAML file (either as referenced from TOSCA.meta
            or available as a file with the extension ".yml" or ".yaml" from the root of the archive)
        •	Every component of the VNFD referenced (recursively) from the main TOSCA definitions YAML file
        •	The related security information, if the "include_signatures" URI parameter is provided, as follows:
            -	the manifest file
            -	the singleton certificate file in the root of the VNF package (if available in the package)
            -	the signing certificates of the individual files included in the ZIP archive (if available in the package)
            -	the signatures of the individual files (if available in the package)
        Three examples are provided below.

        NOTE:	These examples do not show the security related files.

        EXAMPLE 1:	Assuming a request is sent for the following VNF package
                    (as described in clause A.1 in ETSI GS NFV-SOL 004):
                    !------TOSCA-Metadata
                            !-----	TOSCA.meta (metadata for navigating the ZIP file)
                    !------Definitions
                            !-----	MRF.yaml (main VNFD file)
                            !-----	OtherTemplates (e.g. type definitions, referenced by the main VNFD file)
                    !------Files
                            !-----	ChangeLog.txt
                            !-----	image(s)
                            !-----	other artifacts
                    !------Tests
                            !-----	file(s)
                    !------Licenses
                            !-----	file(s)
                    !------Scripts
                            !-----	install.sh
                    !----- MRF.mf

                    The NFVO will return a ZIP file of the following format:
                    !------TOSCA-Metadata
                            !----- TOSCA.meta
                    !------Definitions
                            !----- MRF.yaml
                            !----- OtherTemplates

        EXAMPLE 2:	Assuming a request is sent for the following VNF package
                    (a VNF package without a TOSCA-Metadata directory, as
                    described in clause A.2 in ETSI GS NFV-SOL 004):
                    !------MRF.yaml (main VNFD file)
                    !------MRF.mf
                    !------ChangeLog.txt
                    !------Tests
                            !----- file(s)
                    !------Licenses
                            !----- file(s)
                    !------Artifacts
                            !----- install.sh
                            !----- start.yang

                    The NFVO will return a ZIP file of the following format:
                    !------MRF.yaml

        EXAMPLE 3:	Assuming a request is sent for the following VNF package
                    (a VNF package with the YANG VNFD without a TOSCA-Metadata directory,
                    as described in clause A.3 in ETSI GS NFV SOL 004):
                    !----CompanyVNFD.yaml
                    !----CompanyVNFD.xml
                    !----CompanyVNFD.mf
                    !----ChangeLog.txt
                    !-----Files
                    !-----Instance Data Files
                            !---- start.xml
                    !-----Licenses
                    !-----Scripts
                            !----- install.sh

                    The NFVO will return a ZIP file of the following format:
                    !----CompanyVNFD.yaml
                    !----CompanyVNFD.xml	(indicated in the yang_definitions metadata in CompanyVNFD.yaml)

        This method shall follow the provisions specified in the tables 10.4.4.3.2-1
        and 10.4.4.3.2-2 for URI query parameters, request and response data structures,
        nd response codes.
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
          $ref: '#/components/responses/VnfdInIndividualOnboardedVnfPackage.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          #          description: |
          #            409 CONFLICT
          #
          #            Shall be returned upon the following error: The operation cannot
          #            be executed currently, due to a conflict with the state of the resource.
          #            Typically, this is due to the fact that "onboardingState" of the
          #            VNF package has a value different from "ONBOARDED".
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  ###############################################################################
  ###############################################################################
  /vnf_packages/{vnfPkgId}/manifest:
    parameters:
      - $ref: '#/components/parameters/VnfPkgId'
        Query VNF Package Manifest

        The GET method reads the content of the manifest within a VNF package.
        This method shall follow the provisions specified in the tables 10.4.4a.3.2-1
        and 10.4.4a.3.2-2 for URI query parameters, request and response data structures,
        and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
      responses:
        200:
          $ref: '#/components/responses/ManifestInIndividualVnfPackage.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  /onboarded_vnf_packages/{vnfdId}/manifest:
      - $ref: '#/components/parameters/VnfdId'
Giacomo Bernini's avatar
Giacomo Bernini committed
    get:
        Query VNF Package Manifest

        The GET method reads the content of the manifest within a VNF package.
        This method shall follow the provisions specified in the tables 10.4.4a.3.2-1
        and 10.4.4a.3.2-2 for URI query parameters, request and response data structures,
        and response codes.
Giacomo Bernini's avatar
Giacomo Bernini committed
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
Giacomo Bernini's avatar
Giacomo Bernini committed
      responses:
        200:
          $ref: '#/components/responses/ManifestInIndividualOnboardedVnfPackage.Get.200'
Giacomo Bernini's avatar
Giacomo Bernini committed
        400:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
Giacomo Bernini's avatar
Giacomo Bernini committed
        401:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
Giacomo Bernini's avatar
Giacomo Bernini committed
        403:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
Giacomo Bernini's avatar
Giacomo Bernini committed
        404:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
Giacomo Bernini's avatar
Giacomo Bernini committed
        405:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
Giacomo Bernini's avatar
Giacomo Bernini committed
        406:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
Giacomo Bernini's avatar
Giacomo Bernini committed
        409:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
Giacomo Bernini's avatar
Giacomo Bernini committed
        416:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
Giacomo Bernini's avatar
Giacomo Bernini committed
        500:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
Giacomo Bernini's avatar
Giacomo Bernini committed
        503:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
Giacomo Bernini's avatar
Giacomo Bernini committed
        504:
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  ###############################################################################
  ###############################################################################
  /vnf_packages/{vnfPkgId}/package_content:
    parameters:
      - $ref: '#/components/parameters/VnfPkgId'
        Fetch VNF Package.
        The GET method fetches the content of a VNF package identified by the
        VNF package identifier allocated by the NFVO.
        The content of the package is provided as onboarded, i.e. depending on
        the security option used, the CSAR or the CSAR wrapped in a ZIP archive
        together with an external signature is returned, as defined in clause
        5.1 of ETSI GS NFV-SOL 004.

        NOTE:	Information about the applicable security option can be obtained
        by evaluating the "packageSecurityOption" attribute in the "VnfPkgInfo"
        structure.

        This method shall follow the provisions specified in the tables
        10.4.5.3.2-1 and 10.4.5.3.2-2 for URI query parameters, request
        and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: '#/components/parameters/Range'
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
      responses:
        200:
          $ref: '#/components/responses/IndividualVnfPackageContent.Get.200'
          $ref: '#/components/responses/IndividualVnfPackageContent.Get.206'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          #  description: |
          #    409 CONFLICT

          #    Shall be returned upon the following error: The operation cannot be executed currently,
          #    due to a conflict with the state of the resource.
          #    Typically, this is due to the fact that "onboardingState" of the VNF package has
          #    a value different from "ONBOARDED".
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          #  description: |
          #    416 RANGE NOT SATISFIABLE

          #    Shall be returned upon the following error: The byte range passed in the "Range" header
          #    did not match any available byte range in the VNF package file (e.g. "access after end of file").
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  /onboarded_vnf_packages/{vnfdId}/package_content:
      - $ref: '#/components/parameters/VnfdId'
        Fetch VNF Package.
        The GET method fetches the content of a VNF package identified by the
        VNF package identifier allocated by the NFVO.
        The content of the package is provided as onboarded, i.e. depending on
        the security option used, the CSAR or the CSAR wrapped in a ZIP archive
        together with an external signature is returned, as defined in clause
        5.1 of ETSI GS NFV-SOL 004.

        NOTE:	Information about the applicable security option can be obtained
        by evaluating the "packageSecurityOption" attribute in the "VnfPkgInfo"
        structure.

        This method shall follow the provisions specified in the tables
        10.4.5.3.2-1 and 10.4.5.3.2-2 for URI query parameters, request
        and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: '#/components/parameters/Range'
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
          $ref: '#/components/responses/IndividualOnboardedVnfPackageContent.Get.200'
          $ref: '#/components/responses/IndividualOnboardedVnfPackageContent.Get.206'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          #  description: |
          #    409 CONFLICT

          #    Shall be returned upon the following error: The operation cannot be executed currently,
          #    due to a conflict with the state of the resource.
          #    Typically, this is due to the fact that "onboardingState" of the VNF package has
          #    a value different from "ONBOARDED".
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          #  description: |
          #    416 RANGE NOT SATISFIABLE

          #    Shall be returned upon the following error: The byte range passed in the "Range" header
          #    did not match any available byte range in the VNF package file (e.g. "access after end of file").
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"

  ###############################################################################
  # VNF package artifacts                                                       #
  ###############################################################################
  /vnf_packages/{vnfPkgId}/artifacts:
      - $ref: '#/components/parameters/VnfPkgId'
        Fetch VNF Package Artifacts.

        The GET method shall return an archive that contains a set of artifacts
        according to the provisions for inclusion/exclusion defined below,
        embedded in a directory structure being the same as in the VNF package.
        The criteria for exclusion/inclusion of an artifact in the archive are defined as follows:
        -	Artifacts that are software images shall be excluded from the archive.
        -	Artifacts that are not software images and that are external to the VNF package shall be 
            excluded from the archive unless the URI query parameter "include_external_artifacts" has 
            been provided. External artifacts shall be included in the archive using the content of 
            the "artifactPath" attribute as the path.
        -	All additional artifacts included in the VNF package that are MANO artifacts shall
            be included in the archive, unless the URI query parameter "exclude_all_mano_artifacts"
            has been provided, in which case such artifacts shall be excluded.
        -	All additional artifacts included in the VNF package that are non-MANO artifacts
            shall be included in the archive, unless:
            	the URI query parameter "exclude_all_non_mano_artifacts" has been provided,
                in which case such artifacts shall be excluded;
            	the URI query parameter "select_non_mano_artifact_sets" has been provided and
                is supported by the NFVO, in which case only those non-MANO artifacts shall be
                included whose non-MANO artifact set identifier matches one of the values of the query parameter.
        Package metadata such as manifest file or VNFD shall not be included in the archive.
        This method shall follow the provisions specified in the tables 10.4.5a.3.2-1 and
        10.4.5a.3.2-2 for URI query parameters, request and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: '#/components/parameters/Range'
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
          $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.200'
          $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.206'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  /onboarded_vnf_packages/{vnfdId}/artifacts:
      - $ref: '#/components/parameters/VnfdId'
        Fetch VNF Package Artifacts.

        The GET method shall return an archive that contains a set of artifacts
        according to the provisions for inclusion/exclusion defined below,
        embedded in a directory structure being the same as in the VNF package.
        The criteria for exclusion/inclusion of an artifact in the archive are defined as follows:
        -	Artifacts that are software images shall be excluded from the archive.
        -	Artifacts that are not software images and that are external to the VNF package shall be 
            excluded from the archive unless the URI query parameter "include_external_artifacts" has 
            been provided. External artifacts shall be included in the archive using the content of 
            the "artifactPath" attribute as the path.
        -	All additional artifacts included in the VNF package that are MANO artifacts shall
            be included in the archive, unless the URI query parameter "exclude_all_mano_artifacts"
            has been provided, in which case such artifacts shall be excluded.
        -	All additional artifacts included in the VNF package that are non-MANO artifacts
            shall be included in the archive, unless:
            	the URI query parameter "exclude_all_non_mano_artifacts" has been provided,
                in which case such artifacts shall be excluded;
            	the URI query parameter "select_non_mano_artifact_sets" has been provided and
                is supported by the NFVO, in which case only those non-MANO artifacts shall be
                included whose non-MANO artifact set identifier matches one of the values of the query parameter.
        Package metadata such as manifest file or VNFD shall not be included in the archive.
        This method shall follow the provisions specified in the tables 10.4.5a.3.2-1 and
        10.4.5a.3.2-2 for URI query parameters, request and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: '#/components/parameters/Range'
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
          $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifacts.Get.200'
          $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifacts.Get.206'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"

  ###############################################################################
  # Individual VNF package artifact                                             #
  ###############################################################################
  /vnf_packages/{vnfPkgId}/artifacts/{artifactPath}:
      - $ref: '#/components/parameters/ArtifactPath'
      - $ref: '#/components/parameters/VnfPkgId'
        Fetch VNF Package Artifacts.
        The GET method fetches the content of an artifact within a VNF package.
        This method shall follow the provisions specified in the tables
        10.4.6.3.2-1 and 10.4.6.3.2-2 for URI query parameters, request
        and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: '#/components/parameters/Range'
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
      responses:
        200:
          $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.200'
          $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.206'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          #  description: |
          #    409 CONFLICT

          #    Shall be returned upon the following error: The operation cannot
          #    be executed currently, due to a conflict with the state of the resource.
          #    Typically, this is due to the fact that "onboardingState" of the
          #    VNF package has a value different from "ONBOARDED".
          #    The response body shall contain a ProblemDetails structure,
          #    in which the "detail" attribute shall convey more information
          #    about the error.
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          #  description: |
          #    416 RANGE NOT SATISFIABLE

          #    Shall be returned upon the following error: The byte range passed in the
          #    "Range" header did not match any available byte range in the artifact file
          #    (e.g. "access after end of file").
          #    The response body may contain a ProblemDetails structure.
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  /onboarded_vnf_packages/{vnfdId}/artifacts/{artifactPath}:
      - $ref: '#/components/parameters/ArtifactPath'
      - $ref: '#/components/parameters/VnfdId'
        Fetch VNF Package Artifacts.
        The GET method fetches the content of an artifact within a VNF package.
        This method shall follow the provisions specified in the tables
        10.4.6.3.2-1 and 10.4.6.3.2-2 for URI query parameters, request
        and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
        - $ref: '#/components/parameters/Range'
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        - $ref: '#/components/parameters/include_signature'
          $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifact.Get.200'
          $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifact.Get.206'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          #  description: |
          #    409 CONFLICT

          #    Shall be returned upon the following error: The operation cannot
          #    be executed currently, due to a conflict with the state of the resource.
          #    Typically, this is due to the fact that "onboardingState" of the
          #    VNF package has a value different from "ONBOARDED".
          #    The response body shall contain a ProblemDetails structure,
          #    in which the "detail" attribute shall convey more information
          #    about the error.
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409"
          #  description: |
          #    416 RANGE NOT SATISFIABLE

          #    Shall be returned upon the following error: The byte range passed in the
          #    "Range" header did not match any available byte range in the artifact file
          #    (e.g. "access after end of file").
          #    The response body may contain a ProblemDetails structure.
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
  ###############################################################################
  # Subscriptions                                                               #
  ###############################################################################
  /subscriptions:
    parameters:
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization
      - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version
        The POST method creates a new subscription.
        This method shall follow the provisions specified in the tables
        10.4.7.3.1-1 and 10.4.7.3.1-2 for URI query parameters, request
        and response data structures, and response codes.
        As the result of successfully executing this method, a new
        "Individual subscription" resource as defined in clause 10.4.8
        shall have been created. This method shall not trigger any notification.
        Creation of two "Individual subscription" resources with the same
        callback URI and the same filter can result in performance degradation
        and will provide duplicates of notifications to the VNFM, and might
        make sense only in very rare use cases. Consequently, the NFVO may
        either allow creating a new "Individual subscription" resource if
        another "Individual subscription" resource with the same filter and
        callback URI already exists (in which case it shall return the
        "201 Created" response code), or may decide to not create a duplicate
        "Individual subscription" resource (in which case it shall return a
        "303 See Other" response code referencing the existing "Individual subscription"
        resource with the same filter and callback URI).
      requestBody:
        $ref: '#/components/requestBodies/PkgmSubscriptionRequest'
      responses:
        201:
          $ref: '#/components/responses/Subscriptions.Post.201'
          #  description: |
          #    303 SEE OTHER

          #    Shall be returned when a subscription with the same callback URI and the same filter
          #    already exists and the policy of the NFVO is to not create redundant subscriptions.
          #    The HTTP response shall include a "Location" HTTP header that contains the resource
          #    URI of the existing "Individual subscription" resource.
          #    The response body shall be empty.
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/303"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"
        Query Subscription Information.
        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 10.4.7.3.2-1 and 10.4.7.3.2-2
        for URI query parameters, request and response data structures, and response codes.
      parameters:
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter
        - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker
      responses:
        200:
          $ref: '#/components/responses/Subscriptions.Get.200'
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503"
          $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504"