NSDManagement.yaml 76.1 KB
Newer Older
  description: "DRAFT - SOL005 - NSD Management Interface 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\n"
  title: "DRAFT - SOL005 - NSD Management Interface"
  contact:
    name: "NFV-SOL WG"
  license:
    name: "ETSI Forge copyright notice"
    url: "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
- "application/json"
- "application/json"
  /ns_descriptors:
    get:
      summary: "Query NSD Info"
      description: "The GET method queries information about multiple NS descriptor\
        \ resources. This method shall follow the provisions specified in the Tables\
        \ 5.4.2.3.2-1 and 5.4.2.3.2-2 of GS NFV-SOL 005 for URI query parameters,\
        \ request and response data structures, and response codes."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "This header field shall be present if the response is expected\
          \ to have a non-empty message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        200:
          description: "Information about zero or more NS descriptors.\nThe response\
            \ body shall contain a representation of zero or more NS descriptors,\
            \ as defined in clause 5.5.2.2 of GS NFV-SOL 005."
          schema:
            $ref: "#/definitions/NsdInfo"
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response.\nThis header\
                \ field shall be present if the\nresponse has a non-empty message\
                \ body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
        400:
          description: "There are two possible scenarios listed below.\n\nError: Invalid\
            \ attribute-based filtering parameters. \n\nThe response body shall contain\
            \ a ProblemDetails structure, in which the \"detail\" attribute should\
            \ convey more information about the error.\n\nError: Invalid attribute\
            \ selector. The response body shall contain a ProblemDetails structure,\
            \ in which the \"detail\" attribute should convey more information about\
            \ the error."
    post:
      summary: "Create NSD Info"
      description: "The POST method is used to create a new NS descriptor resource.\
        \ This method shall follow the provisions specified in the Tables 5.4.2.3.1-1\
        \ and 5.4.2.3.1-2 of GS NFV-SOL 005 for URI query parameters, request and\
        \ response data structures, and response codes."
      consumes: []
      parameters:
      - name: "Accept"
        in: "header"
        required: false
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the\nresponse is expected to have a non-empty\n\
          message body."
      - name: "Content-Type"
        in: "header"
        required: false
        type: "string"
        description: "The MIME type of the body of the request.\nThis header field\
          \ shall be present if the\nrequest has a non-empty message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005"
      - name: "body"
        in: "body"
        required: true
        schema:
          type: "object"
          required:
          - "CreateNsdInfoRequest"
          properties:
            CreateNsdInfoRequest:
              $ref: "#/definitions/CreateNsdInfoRequest"
          description: "The CreateNsdInfoRequest contains parameters for creating\
            \ an NS descriptor resource, as defined in\nclause 5.5.2.4 of GS NFV-SOL\
            \ 005."
      responses:
        201:
          description: "Status 201"
          schema:
            type: "object"
            description: "An NS descriptor resource was created successfully, as a\
              \ new NS descriptor resource. The response body shall contain a representation\
              \ of the new NS descriptor resource, as defined in clause 5.5.2.2 of\
              \ GS NFV-SOL 005."
            properties:
              NsdInfo:
                $ref: "#/definitions/NsdInfo"
          headers:
            Location:
              type: "string"
              description: "The HTTP response shall include a \"Location\" HTTP header\
                \ that contains the resource URI of the new NS descriptor resource."
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response.\nThis header\
                \ field shall be present if the\nresponse has a non-empty message\
                \ body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
  /ns_descriptors/{nsdInfoId}:
    get:
      summary: "Query NSD Info"
      description: "The GET method reads information about an individual NS descriptor.\
        \ This method shall follow the provisions specified in GS NFV-SOL 005 Tables\
        \ 5.4.3.3.2-1 and 5.4.3.3.2-2 of GS NFV-SOL 005 for URI query parameters,\
        \ request and response data structures, and response codes."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present \nif the response is expected to have a non-empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        200:
          description: "Information about the individual NS descriptor. The response\
            \ body shall contain a representation of the individual NS descriptor,\
            \ as defined in clause 5.5.2.2 of GS NFV-SOL 005."
          schema:
            $ref: "#/definitions/NsdInfo"
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response. This header\
                \ field shall be present if the response has a non-empty message body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
    delete:
      summary: "Delete NSD"
      description: "The DELETE method deletes an individual NS descriptor resource.\
        \ An individual NS descriptor resource can only be deleted when there is no\
        \ NS instance using it (i.e. usageState = NOT_IN_USE) and has been disabled\
        \ already (i.e. operationalState = DISABLED). Otherwise, the DELETE method\
        \ shall fail. This method shall follow the provisions specified in the Tables\
        \ 5.4.3.3.5-1 and 5.4.3.3.5-2 of GS NFV-SOL 005 for URI query parameters,\
        \ request and response data structures, and response codes."
      parameters:
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        204:
          description: "The operation has completed successfully. The response body\
            \ shall be empty."
          schema:
            type: "object"
            description: "The operation has completed successfully. The response body\
              \ shall be empty."
          headers:
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request\nhas not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
        409:
          description: "Status 409"
          schema:
            required:
            - "ProblemDetails"
            type: "object"
            description: "Error: The operation cannot be executed currently, due to\
              \ a conflict with the state of the resource. Typically, this is due\
              \ to the fact the NS descriptor resource is in the enabled operational\
              \ state (i.e. operationalState = ENABLED) or there are running NS instances\
              \ using the concerned individual NS descriptor resource (i.e. usageState\
              \ = IN_USE). The response body shall contain a ProblemDetails structure,\
              \ in which the \"detail\" attribute shall convey more information about\
              \ the error."
            properties:
              ProblemDetails:
                $ref: "#/definitions/ProblemDetails"
    patch:
      summary: "Update NSD Info"
      description: "The PATCH method modifies the operational state and/or user defined\
        \ data of an individual NS descriptor resource.  This method can be used to:\n\
        1) Enable a previously disabled individual NS descriptor resource, allowing\
        \ again its use for instantiation of new\nnetwork service with this descriptor.\
        \ The usage state (i.e. \"IN_USE/NOT_IN_USE\") shall not change as a\nresult.\n\
        2) Disable a previously enabled individual NS descriptor resource, preventing\
        \ any further use for instantiation of\nnew network service(s) with this descriptor.\
        \ The usage state (i.e. \"IN_USE/NOT_IN_USE\") shall not change\nas a result.\n\
        3) Modify the user defined data of an individual NS descriptor resource.\n\
        This method shall follow the provisions specified in the Tables 5.4.3.3.4-1\
        \ and 5.4.3.3.4-2 for URI query parameters,\nrequest and response data structures,\
        \ and response codes."
      consumes: []
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non-empty\
          \ message body."
      - name: "Content-Type"
        in: "header"
        required: true
        type: "string"
        description: "The MIME type of the body of the request.\nThis header field\
          \ shall be present if the\nrequest has a non-empty message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3."
      - name: "body"
        in: "body"
        required: true
        schema:
          type: "object"
          required:
          - "NsdInfoModifications"
          properties:
            NsdInfoModifications:
              $ref: "#/definitions/NsdInfoModifications"
          description: "The operation was completed successfully. The response body\
            \ shall contain attribute modifications for an 'Individual NS Descriptor'\
            \ resource (see clause 5.5.2.6 of GS NFV SOL-005)."
      responses:
        200:
          description: "Status 200"
          schema:
            $ref: "#/definitions/NsdInfoModifications"
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response. This header\
                \ field shall be present if the response has a non-empty message body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
        409:
          description: "Status 409"
          schema:
            $ref: "#/definitions/ProblemDetails"
        412:
          description: "Status 412"
          schema:
            $ref: "#/definitions/ProblemDetails"
    parameters:
    - name: "nsdInfoId"
      in: "path"
      required: true
      type: "string"
  /ns_descriptors/{nsdInfoId}/nsd_content:
      summary: "Get NSD Content"
      description: "The GET method fetches the content of the NSD.\n\nThe NSD can\
        \ be implemented as a single file or as a collection of multiple files. If\
        \ the NSD is implemented in the form of multiple files, a ZIP file embedding\
        \ these files shall be returned. If the NSD is implemented as a single file,\
        \ either that file or a ZIP file embedding that file shall be returned.\n\n\
        The selection of the format is controlled by the \"Accept\" HTTP header passed\
        \ in the GET request.\n\nNOTE: The structure of the NSD zip file is outside\
        \ the scope of the present document."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "String Required\nIf the “Accept” header contains only “text/plain”\
          \ and the NSD is implemented as a single file, the file shall be returned;\
          \ otherwise, an error message shall be returned.\n\nIf the “Accept” header\
          \ contains only “application/zip”, the single file or the multiple files\
          \ that make up the NSD shall be returned embedded in a ZIP file.\n\nIf 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 NSD; for\
          \ a multi-file NSD, a ZIP file shall be returned."
      - 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 NSD file. This can be used to continue an aborted\
          \ transmission.\n\nIf the NFVO does not support range requests, the NFVO\
          \ shall ignore the 'Range\" header, process the GET request, and return\
          \ the whole NSD file with a 200 OK response (rather than returning a 4xx\
          \ error status code)."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request. Details are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
          description: "On success, the content of the NSD is returned. The payload\
            \ body shall contain a copy of the file representing the NSD or a ZIP\
            \ file that contains the file or multiple files representing the NSD,\
            \ 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."
          schema:
            type: "object"
          headers:
            Content-Type:
              type: "string"
              description: "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."
            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."
            Content-Range:
              type: "string"
              description: "Signals the byte range that is contained in the response,\
                \ and the total length of the file."
            Accept-Ranges:
              type: "string"
              description: "Used by the server to signal whether or ot it supports\
                \ ranges for certain resources."
        206:
          description: "On success, if the NFVO supports range requests, a single\
            \ consecutive byte range from the content of the NSD file is returned.\n\
            \nThe response body shall contain the requested part of the NSD file.\n\
            \nThe \"Content-Range\" HTTP header shall be provided according to IETF\
            \ RFC 7233 [23].\n\nThe \"Content-Type\" HTTP header shall be set as defined\
            \ above for the \"200 OK\" response."
          headers:
            Content-Range:
              type: "string"
            Content-Type:
              type: "string"
        406:
          description: "Status 406"
          schema:
            type: "object"
            description: "If the \"Accept\" header does not contain at least one name\
              \ of a content type for which the NFVO can provide a representation\
              \ of the NSD, the NFVO shall respond with this response code. The \"\
              ProblemDetails\" structure may be included with the \"detail\" attribute\
              \ providing more information about the error."
        409:
          description: "Status 409"
          schema:
            type: "object"
            description: "Error: The operation cannot be executed currently, due to\
              \ a conflict with the state of the resource. Typically, this is due\
              \ to the fact \"nsdOnboardingState\" 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."
        416:
          description: "Status 416"
          schema:
            type: "object"
            description: "The byte range passed in the \"Range\" header did not match\
              \ any available byte range in the NSD file (e.g.\n\"access after end\
              \ of file\"). The response body may contain a ProblemDetails structure."
    put:
      summary: "Upload NSD"
      description: "The PUT method is used to upload the content of a NSD. The NSD\
        \ to be uploaded can be implemented as a single file or as a collection of\
        \ multiple files, as defined in clause 5.4.4.3.2 of GS NFV-SOL 005. If the\
        \ NSD is implemented in the form of multiple files, a ZIP file embedding these\
        \ files shall be uploaded. If the NSD is implemented as a single file, either\
        \ that file or a ZIP file embedding that file shall be uploaded. The \"Content-Type\"\
        \ HTTP header in the PUT request shall be set accordingly based on the format\
        \ selection of the NSD. If the NSD to be uploaded is a text file, the \"Content-Type\"\
        \ header is set to \"text/plain\". If the NSD to be uploaded is a zip file,\
        \ the \"Content-Type\" header is set to \"application/zip\". This method shall\
        \ follow the provisions specified in the Tables 5.4.4.3.3-1 and 5.4.4.3.3-2\
        \ of GS-NFV-SOL 005 for URI query parameters, request and response data structures,\
        \ and response codes."
      consumes: []
      parameters:
      - name: "Content-Type"
        in: "header"
        required: false
        type: "string"
        description: "The payload body contains a copy of the file representing the\
          \ NSD or a ZIP file that contains the file or multiple files representing\
          \ the NSD, as specified above. The request shall set the \"Content-Type\"\
          \ HTTP header as defined\nabove."
      - name: "body"
        in: "body"
        required: true
        schema:
          type: "object"
      responses:
        202:
          description: "Status 202"
          schema:
            type: "object"
            description: "The NSD content was accepted for uploading, but the processing\
              \ has not been completed. It is expected to take some time for processing\
              \ (asynchronous mode). The response body shall be empty. See note."
        204:
          description: "The NSD content was successfully uploaded and validated (synchronous\
            \ mode). The response body shall be empty."
        409:
          description: "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 the NsdOnboardingState has a value other than CREATED.\
            \ The response body shall contain a ProblemDetails structure, in which\
            \ the \"detail\" attribute shall convey more information about the error."
          schema:
            $ref: "#/definitions/ProblemDetails"
    parameters:
    - name: "nsdInfoId"
      in: "path"
      required: true
      type: "string"
  /pnf_descriptors:
    get:
      summary: "Query PFND Info"
      description: "The GET method queries information about multiple PNF descriptor\
        \ resources."
      parameters:
      - name: "exclude_default"
        in: "query"
        required: false
        type: "string"
        description: "Indicates to exclude the following \n \ncomplex attributes from\
          \ the response. \nSee clause 4.3.3 for details.\n\nThe NFVO shall support\
          \ this parameter.\n\nThe following attributes shall be excluded from the\
          \ PnfdInfo structure in the response body if this parameter is provided,\
          \ or none of the parameters \"all_fields,\" \"fields\", \"exclude_fields\"\
          , \"exclude_default\" are provided: userDefinedData."
      - name: "all_fields"
        in: "query"
        required: false
        type: "string"
        description: "Include all complex attributes in the response. See clause 4.3.3\
          \ for details. The NFVO shall support this parameter."
      - name: "Accept"
        in: "header"
        required: false
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non-empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        200:
          description: "Status 200"
          schema:
            type: "object"
            description: "Information about zero or more PNF descriptors. The response\
              \ body shall contain a representation of zero or more PNF descriptors,\
              \ as defined in clause 5.5.2.2."
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response. This header\
                \ field shall be present if the response has a non-empty message body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request\nhas not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
    post:
      summary: "Create PNFD Info"
      description: "The POST method is used to create a new PNF descriptor resource."
      consumes: []
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non-empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS-NFV-SOL 005."
      - name: "body"
        in: "body"
        required: true
        schema:
          type: "object"
          description: "Parameters of creating a PNF descriptor resource, as defined\
            \ in\nclause 5.5.2.6 of GS NFV-SOL 005."
      responses:
        201:
          description: "Status 201"
          schema:
            type: "object"
            description: "A PNF descriptor resource was created successfully, as a\
              \ new PNF descriptor resource. The response body shall contain a representation\
              \ of the new PNF descriptor resource, as defined in clause 5.5.2.5.\
              \ The HTTP response shall include a \"Location\" HTTP header that contains\
              \ the resource URI of the new PNF descriptor resource."
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response.\nThis header\
                \ field shall be present if the\nresponse has a non-empty message\
                \ body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request\nhas not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
  /pnf_descriptors/{pnfdInfoId}:
    get:
      summary: "Query PNFD Info"
      description: "The GET method reads information about an individual PNF descriptor.\
        \ This method shall follow the provisions specified in the Tables 5.4.6.3.2-1\
        \ and 5.4.6.3.2-2 of GS NFV-SOL 005 for URI query parameters, request and\
        \ response data structures, and response codes."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non-empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request. Details are specified\
          \ in clause 4.5.3."
      responses:
        200:
          description: "Information about the individual PNFD descriptor. The response\
            \ body shall contain a representation of the individual PNF descriptor,\
            \ as defined in clause 5.5.2.5 of GS NFV-SOL 005."
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response.\nThis header\
                \ field shall be present if the\nresponse has a non-empty message\
                \ body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
    delete:
      summary: "Delete PNFD"
      description: "The DELETE method deletes an individual PNF descriptor resource.\
        \ An individual PNF descriptor resource can only be deleted when there is\
        \ no NS instance using it or there is NSD referencing it. To delete all PNFD\
        \ versions identified by a particular value of the \"pnfdInvariantId\" attribute,\
        \ the procedure is to first use the GET method with filter \"pnfdInvariantId\"\
        \ towards the PNF descriptors resource to find all versions of the PNFD. Then,\
        \ the client uses the DELETE method described in this clause to delete each\
        \ PNFD version individually. This method shall follow the provisions specified\
        \ in the Tables 5.4.6.3.5-1 and 5.4.6.3.5-2 of GS NFV-SOL 005 for URI query\
        \ parameters, request and response data structures, and response codes."
      parameters:
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request. Details are specified\
          \ in clause 4.5.3."
      responses:
        204:
          description: "The operation has completed successfully. The response body\
            \ shall be empty."
          headers:
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request\nhas not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
    patch:
      summary: "Update PNFD Info"
      description: "The PATCH method modifies the user defined data of an individual\
        \ PNF descriptor resource. This method shall follow the provisions specified\
        \ in the Tables 5.4.6.3.4-1 and 5.4.6.3.4-2 for URI query parameters, request\
        \ and response data structures, and response codes."
      consumes: []
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non empty\
          \ message body."
      - name: "Content-Type"
        in: "header"
        required: true
        type: "string"
        description: "The MIME type of the body of the request. This header field\
          \ shall be present if the request has a non-empty message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request. Details are specified\
          \ in clause 4.5.3."
      - name: "body"
        in: "body"
        required: true
        schema:
          $ref: "#/definitions/PnfdInfoModifications"
      responses:
        200:
          description: "Status 200"
          schema:
            $ref: "#/definitions/PnfdInfoModifications"
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response.\nThis header\
                \ field shall be present if the\nresponse has a non-empty message\
                \ body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
        412:
          description: "Status 412"
          schema:
            $ref: "#/definitions/ProblemDetails"
    parameters:
    - name: "pnfdInfoId"
      in: "path"
      required: true
      type: "string"
  /pnf_descriptors/{pnfdInfoId}/pnfd_content:
    get:
      summary: "Get PNFD Content"
      description: "The GET method fetches the content of the PNFD."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non-empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        200:
          description: "On success, the content of the PNFD is returned. The payload\
            \ body shall contain a copy of the file representing the PNFD. The \"\
            Content-Type\" HTTP header shall be set to \"text/plain\"."
          headers:
            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."
            Content-Type:
              type: "string"
              description: "The \"Content-Type\" HTTP header shall be set to \"text/plain\"\
                ."
    put:
      summary: "Upload PNFD"
      description: "The PUT method is used to upload the content of a PNFD. This method\
        \ shall follow the provisions specified in the Tables 5.4.7.3.3-1 and 5.4.7.3.3-2\
        \ of GS NFV-SOL 005for URI query parameters, request and response data structures,\
        \ and response codes."
      consumes: []
      parameters:
      - name: "Content-Type"
        in: "header"
        required: false
        type: "string"
        description: "The request shall set the \"Content-Type\" HTTP header to \"\
          text/plain\"."
      - name: "body"
        in: "body"
        required: true
        schema:
          type: "object"
          description: "The payload body contains a copy of the file representing\
            \ the PNFD."
      responses:
        204:
          description: "The PNFD content was successfully uploaded and validated.\
            \ The response body shall be empty."
        409:
          description: "Status 409"
          schema:
            $ref: "#/definitions/ProblemDetails"
    parameters:
    - name: "pnfdInfoId"
      in: "path"
      required: true
      type: "string"
  /subscriptions:
    get:
      summary: "Query Subscription Information"
      description: "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 support the URI query parameters,\
        \ request and response data structures, and response codes, as specified in\
        \ the Tables 5.4.8.3.2-1 and 5.4.8.3.2-2 of GS NFV-SOL 005."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        200:
          description: "Status 200"
          schema:
            type: "array"
            description: "The list of subscriptions was queried successfully. The\
              \ response body shall contain the representations of all active subscriptions\
              \ of the functional block that invokes the method."
            items:
              $ref: "#/definitions/NsdmSubscription"
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response. This header\
                \ field shall be present if the response has a non-empty message body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
        303:
          description: "A subscription with the same callbackURI and the same filter\
            \ already exits and the policy of the NFVO is to not create redundant\
            \ subscriptions. The response body shall be empty."
          headers:
            Location:
              type: "string"
              description: "The HTTP response shall include a \"Location\" HTTP header\
                \ that contains the resource URI of the existing subscription resource."
    post:
      summary: "Subscribe"
      description: "The POST method creates a new subscription. This method shall\
        \ support the URI query parameters, request and response data structures,\
        \ and response codes, as specified in the Tables 5.4.8.3.1-1 and 5.4.8.3.1-2\
        \ of GS-NFV SOL 005. 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)."
      consumes: []
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non empty\
          \ message body."
      - name: "Content-Type"
        in: "header"
        required: true
        type: "string"
        description: "The MIME type of the body of the request.\nThis header field\
          \ shall be present if the\nrequest has a non-empty message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      - name: "body"
        in: "body"
        required: true
        schema:
          $ref: "#/definitions/NsdmSubscriptionRequest"
      responses:
        201:
          description: "Status 201"
          schema:
            $ref: "#/definitions/NsdmSubscription"
          headers:
            Location:
              type: "string"
              description: "The HTTP response shall include a \"Location:\"\nHTTP\
                \ header that points to the created subscription resource."
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response. This header\
                \ field shall be present if the response has a non-empty message body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request has not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
  /subscriptions/{subscriptionId}:
    get:
      summary: "Query Subscription Information"
      description: "The GET method retrieves information about a subscription by reading\
        \ an individual subscription resource. This method shall support the URI query\
        \ parameters, request and response data structures, and response codes, as\
        \ specified in the Tables 5.4.9.3.2-1 and 5.4.9.3.2-2."
      parameters:
      - name: "Accept"
        in: "header"
        required: true
        type: "string"
        description: "Content-Types that are acceptable for the\nresponse. This header\
          \ field shall be present if the response is expected to have a non empty\
          \ message body."
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        200:
          description: "Status 200"
          schema:
            $ref: "#/definitions/NsdmSubscription"
          headers:
            Content-Type:
              type: "string"
              description: "The MIME type of the body of the response.\nThis header\
                \ field shall be present if the\nresponse has a non-empty message\
                \ body."
            WWW-Authenticate:
              type: "string"
              description: "Challenge if the corresponding HTTP request\nhas not provided\
                \ authorization, or error details if the corresponding HTTP request\
                \ has provided an invalid authorization token."
    delete:
      summary: "Terminate Subscription"
      description: "The DELETE method terminates an individual subscription. This\
        \ method shall support the URI query parameters, request and response data\
        \ structures, and response codes, as specified in the Tables 5.4.9.3.5-1 and\
        \ 5.4.9.3.3-2 of GS NFV-SOL 005."
      parameters:
      - name: "Authorization"
        in: "header"
        required: false
        type: "string"
        description: "The authorization token for the request.\nDetails are specified\
          \ in clause 4.5.3 of GS NFV-SOL 005."
      responses:
        204:
          description: "The subscription resource was deleted successfully. The response\
            \ body shall be empty."
          headers:
            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."
    parameters:
    - name: "subscriptionId"
      in: "path"
      required: true
      type: "string"
definitions:
  NsdInfoModifications:
    type: "object"
    properties:
      nsdOperationalState:
        $ref: "#/definitions/NsdOperationalStateType"
      userDefinedData:
        type: "object"
        description: "Modifications of the \"userDefinedData\" attribute in \"NsdInfo\"\
          \ data type. See note. If present, these modifications shall be applied\
          \ according to the rules of JSON Merge PATCH (see IETF RFC 7396 [25]). NOTE:\
          \ At least one of the attributes - nsdOperationalState and userDefinedData\
          \ - shall be present."
    description: "This type represents attribute modifications for an individual NS\
      \ descriptor resource based on the \"NsdInfo\" data type. The attributes of\
      \ \"NsdInfo\" that can be modified are included in the \"NsdInfoModifications\"\
      \ data type.\n\nNOTE: At least one of the attributes - nsdOperationalState and\
      \ userDefinedData - shall be present."
  NsdmSubscription:
    type: "object"
    required:
    - "_links"
    - "callbackUri"
    - "id"
    properties:
      id:
        type: "string"
        description: "Identifier of this subscription resource"
      filter:
        $ref: "#/definitions/NsdmNotificationsFilter"
      callbackUri:
        $ref: "#/definitions/Uri"
      _links:
        type: "object"
        description: "Links to resources related to this resource."
        properties:
          self:
            $ref: "#/definitions/Link"
    description: "This type represents a subscription related to notifications about\
      \ NSD management."
  NsdmSubscriptionRequest:
    type: "object"
    required:
    - "callbackUri"
    properties:
      filter:
        $ref: "#/definitions/NsdmNotificationsFilter"
      callbackUri:
        type: "string"
        description: "The URI of the endpoint to send the notification to."
      authentication:
        $ref: "#/definitions/SubscriptionAuthentication"
    description: "This type represents a subscription request related to notifications\
      \ about NSD management."
  NsdmNotificationsFilter:
    type: "object"
    properties:
      notificationTypes:
        type: "array"
        description: "Match particular notification types. Permitted values: NsdOnBoardingNotification,\
          \ NsdOnboardingFailureNotification, NsdChangeNotification, NsdDeletionNotification\n\
          PnfdOnBoardingNotification, PnfdOnBoardingFailureNotification, PnfdDeletionNotification.\n\
          \nThe permitted values of the \"notificationTypes\" \nattribute are spelled\
          \ exactly as the names of the notification types to facilitate automated\
          \ code generation systems."
        items:
          type: "string"
          enum:
          - "NsdOnBoardingNotification"
          - "NsdOnboardingFailureNotification"
          - "NsdChangeNotification"
          - "NsdDeletionNotification"
          - "PnfdOnBoardingNotification"
          - "PnfdOnBoardingFailureNotification"
          - "PnfdDeletionNotification"
      nsdInfoId:
        type: "array"
        description: "Match the NsdInfo identifier which is allocated by the NFVO.\
          \ Note: The attributes \"nsdId\" and \"nsdInfoId\" are alternatives to reference\
          \ to a particular NSD in a filter. They should not be used both in the same\
          \ filter instance, but one alternative should be chosen."
        items:
          type: "string"
        type: "array"
        description: "Match the NSD identifier, which is allocated by the NSD designer.\
          \ The attributes \"nsdId\" and \"nsdInfoId\" are alternatives to reference\
          \ to a particular NSD in a filter. They should not be used both in the same\
          \ filter instance, but one alternative should be chosen."
        items:
          type: "string"
      nsdName:
        type: "array"
        description: "Match the name of the onboarded NSD."
        items:
          type: "string"
      nsdVersion:
        type: "array"
        description: "Match the NSD version listed as part of this attribute. The\
          \ NSD version is a string of variable length."
        items:
          type: "string"
      nsdDesigner:
        type: "array"
        description: "Match the NSD designer of the on-boarded NSD."
        items:
          type: "string"
      nsdInvariantId:
        type: "array"
        description: "Match the NSD invariant identifier which is allocated by the\
          \ NSD designer and identifies an NSD in a version independent manner."
        items:
          type: "string"
      vnfPkgIds:
        type: "array"
        description: "Match VNF packages with a package identifier listed in the attribute."
        items:
          type: "string"
      pnfdInfoIds:
        type: "array"
        description: "Match the PnfdInfo identifier for the PNFD\nreferenced by the\
          \ on-boarded NSD. The attributes \"pnfdId\" and \"pnfdInfoId\" are alternatives\
          \ to reference to a particular PNFD in a filter. They should not be used\
          \ both in the same filter instance, but one alternative should be chosen."
        items:
          type: "string"
      nestedNsdInfoIds:
        type: "array"
        description: "Match the NsdInfo identifier for the nested NSD\nreferenced\
          \ by the on-boarded NSD."
        items:
          type: "string"
      nsdOnboardingState:
        type: "array"
        items:
          $ref: "#/definitions/NsdOnboardingStateType"
      nsdOperationalState:
        type: "array"
        items:
          $ref: "#/definitions/NsdOperationalStateType"
      nsdUsageState:
        type: "array"
        items:
          $ref: "#/definitions/NsdUsageStateType"
        type: "array"
        description: "Match the PNFD identifier which is copied from the PNFD content.\
          \ The attributes \"pnfdId\" and \"pnfdInfoId\" are alternatives to reference\
          \ to a particular PNFD in a filter. They should not be used both in the\
          \ same filter instance, but one alternative should be chosen."
        items:
          type: "string"
      pnfdName:
        type: "array"
        description: "Match the name of the on-boarded PNFD."
        items:
          type: "string"
      pnfdVersion:
        type: "array"
        description: "Match the PNFD designer of the on-boarded PNFD. The PNFD version\
          \ is a string of variable length."
        items:
          type: "string"
      pnfdProvider:
        type: "array"
        description: "Match the provider of the on-boarded PNFD."
        items:
          type: "string"
      pnfdInvariantId:
        type: "array"
        description: "Match the PNFD in a version independent manner."
        items:
          type: "string"
      pnfdOnboardingState:
        type: "array"
        items:
          $ref: "#/definitions/PnfdOnboardingStateType"
      pnfdUsageState:
        type: "array"
        items:
          $ref: "#/definitions/PnfdUsageStateType"
    description: "This type represents a subscription filter related to notifications\
      \ about NSD management. It shall comply with the\nprovisions defined in Table\
      \ 5.5.3.2-1 of GS NFV-SOL 005. At a particular nesting level in the filter structure,\
      \ the following applies: All attributes shall match in order for the filter\
      \ to match (logical \"and\" between different filter attributes). If an attribute\
      \ is an array, the attribute shall match if at least one of the values in the\
      \ array matches (logical \"or\" between the values of one filter attribute)."
  Uri:
    type: "object"
    description: "String formatted according to IETF RFC 3986 [10]."
  Link:
    type: "object"
    description: "This type represents a link to a resource. It shall comply with\
      \ the provisions defined in Table 4.4.1.3-1 of GS NFV-SOL 005."
  SubscriptionAuthentication:
    type: "object"
    properties:
      authType:
        type: "string"
        description: "Defines the types of Authentication/ Authorization the API consumer\
          \ is willing to accept when receiving a notification.\n\nPermitted values:\n\
          BASIC: In every HTTP request to the notification endpoint, use HTTP Basic\
          \ authentication with the client credentials.\n\nOAUTH2_CLIENT_CREDENTIALS:\
          \ In every HTTP request to the notification endpoint, use an OAuth 2.0 Bearer\
          \ token, obtained using the client credentials grant type.\n\nTLS_CERT:\
          \ Every HTTP request to the notification endpoint is sent over a mutually\
          \ authenticated TLS session. i.e. not only server is authenticated, but\
          \ also the client is authenticated during the TLS tunnel setup."
        enum:
        - "BASIC"
        - "OAUTH2_CLIENT_CREDENTIALS"
        - "TLS_CERT"
      paramsBasic:
        type: "object"
        description: "Parameters for authentication/authorization using BASIC. Shall\
          \ be present if authType is \"BASIC\" and the contained information has\
          \ not been provisioned out of band. Shall be absent otherwise."
        properties:
          userName:
            type: "string"
            description: "Username to be used in HTTP Basic authentication. Shall\
              \ be present if it has not been provisioned out of band."
          password:
            type: "string"
            description: "Password to be used in HTTP Basic authentication. Shall\
              \ be present if it has not been provisioned out of band."
      paramsOauth2ClientCredentials:
        type: "object"
        description: "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS.\
          \ Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the\
          \ contained information has not been provisioned out of band. Shall be absent\
          \ otherwise."
        properties:
          clientId:
            type: "string"
            description: "Client identifier to be used in the access token request\
              \ of the OAuth 2.0 client credentials grant type. Shall be present if\
              \ it has not been provisioned out of band."
  NsdOperationalStateType:
    type: "string"
    description: "The enumeration NsdOperationalStateType shall comply with the provisions\
      \ defined in Table 5.5.4.3-1 of GS NFV_SOL 005. It indicates the operational\
      \ state of the resource.\n\nENABLED = The operational state of the resource\
      \ is enabled.\nDISABLED = The operational state of the resource is disabled."
    enum:
    - "ENABLED"
    - "DISABLED"
  NsdInfo:
    type: "object"
    required:
    - "_links"
    - "id"
    - "nsdOnboardingState"
    - "nsdOperationalState"
    - "nsdUsageState"
    properties:
      id:
        type: "string"
        description: "Identifier of the onboarded individual NS descriptor resource.\
          \ This identifier is allocated by the NFVO."
        type: "object"
        description: "This identifier, which is allocated by the NSD designer, identifies\
          \ the NSD in a globally unique way. It is copied from the NSD content and\
          \ shall be present after the NSD content is on-boarded."
      nsdName:
        type: "string"
        description: "Name of the onboarded NSD. This information is copied from the\
          \ NSD content and shall be present after the NSD content is on-boarded."
      nsdVersion:
        type: "string"
        description: "Version of the on-boarded NSD. The NSD version is a string of\
          \ variable length.This information is copied from the NSD content and shall\
          \ be present after the NSD content is on-boarded."
      nsdDesigner:
        type: "string"
        description: "Designer of the on-boarded NSD. This information \nis copied\
          \ from the NSD content and shall be present after the NSD content is on-boarded."
      nsdInvariantId:
        type: "string"
        description: "This identifier, which is allocated by the NSD designer, identifies\
          \ an NSD in a version independent manner. This information is copied from\
          \ the NSD content and shall be present after the NSD content is on-boarded."
      vnfPkgIds:
        type: "array"
        description: "Identifies the VNF package for the VNFD referenced by the on-boarded\
          \ NS descriptor resource."
        items:
          type: "string"
      pnfdInfoIds:
        type: "array"
        description: "Identifies the PnfdInfo element for the PNFD referenced by the\
          \ on-boarded NS descriptor resource."
        items:
          type: "string"
      nestedNsdInfoIds:
        type: "array"
        description: "Identifies the NsdInfo element for the nested NSD referenced\
          \ by the on-boarded NS descriptor resource. At least one of the attributes\
          \  vnfPkgId and nestedNsdInfoId shall be present, after the NSD is on-boarded."
        items:
          type: "string"
      nsdOnboardingState:
        $ref: "#/definitions/NsdOnboardingStateType"
      onboardingFailureDetails:
        $ref: "#/definitions/ProblemDetails"
      nsdOperationalState:
        $ref: "#/definitions/NsdOperationalStateType"
      nsdUsageState:
        $ref: "#/definitions/NsdUsageStateType"
      userDefinedData:
        $ref: "#/definitions/KeyValuePairs"
      _links:
        type: "object"
        description: "Links to resources related to this resource."
        properties:
          self:
            $ref: "#/definitions/Link"
          nsd_content:
            $ref: "#/definitions/Link"
    description: "This type represents a response for the query NSD operation. It\
      \ shall comply with the provisions defined in\nTable 5.5.2.2-1 of GS NFV-SOL\
      \ 005."
  NsdOnboardingStateType:
    type: "string"
    description: "The enumeration NsdOnboardingStateType shall comply with the provisions\
      \ defined in Table 5.5.4.5-1 of GS NFV-SOL 005. It indicates the onboarding\
      \ state of the NSD.\n\nCREATED = The NSD information object is created. UPLOADING\
      \ = The associated NSD content is being uploaded. PROCESSING = The associated\
      \ NSD content is being processed, e.g. validation. ONBOARDED = The associated\
      \ NSD content is on-boarded."
    enum:
    - "CREATED"
    - "UPLOADING"
    - "PROCESSING"
    - "ONBOARDED"
  ProblemDetails:
    type: "object"
    required:
    - "detail"
    - "status"
    properties:
      type:
        $ref: "#/definitions/Uri"
      title:
        type: "string"
        description: "A short, human-readable summary of the problem type. It should\
          \ not change from occurrence to occurrence of the problem, except for purposes\
          \ of localization. If type is given and other than \"about:blank\", this\
          \ attribute shall also be provided."
      status:
        type: "integer"
        description: "The HTTP status code for this occurrence of the problem."
      detail:
        type: "string"
        description: "A human-readable explanation specific to this occurrence of\
          \ the problem."
      instance:
        $ref: "#/definitions/Uri"
    description: "The definition of the general \"ProblemDetails\" data structure\
      \ from IETF RFC 7807 [27] is reproduced in\nTable 4.3.5.3-1 of GS NFV-SOL 005.\
      \ Compared to the general framework defined in IETF RFC 7807 [27], the \"status\"\
      \ and \"detail\" attributes are mandated to be included by the present document,\
      \ to ensure that the response contains additional textual information about\
      \ an error. IETF RFC 7807 [27] foresees extensibility of the \"ProblemDetails\"\
      \ type. It is possible that particular APIs in the present document, or particular\
      \ implementations, define extensions to define additional attributes that provide\
      \ more information about the error.\n\nThe description column only provides\
      \ some explanation of the meaning to facilitate understanding of the design.\
      \ For a\nfull description, see IETF RFC 7807 [27]."
  NsdUsageStateType:
    type: "string"
    description: "The enumeration NsdUsageStateType shall comply with the provisions\
      \ defined in Table 5.5.4.4-1 of GS NFV-SOL 005. It indicates the usage state\
      \ of the resource.\n\nIN_USE = The resource is in use.\nNOT_IN_USE = The resource\
      \ is not-in-use."
    enum:
    - "IN_USE"
    - "NOT_IN_USE"
  KeyValuePairs:
    type: "object"
    description: "This type represents a list of key-value pairs. The order of the\
      \ pairs in the list is not significant. In JSON, a set of keyvalue\npairs is\
      \ represented as an object. It shall comply with the provisions defined in clause\
      \ 4 of IETF RFC 7159 [20]."
  CreateNsdInfoRequest:
    type: "object"
    properties:
      userDefinedData:
        $ref: "#/definitions/KeyValuePairs"
    description: "This type creates a completely new NS descriptor resource."
  PnfdInfoModifications:
    type: "object"
    required:
    - "userDefinedData"
    properties:
      userDefinedData:
        $ref: "#/definitions/KeyValuePairs"
    description: "This type represents attribute modifications for an individual PNF\
      \ descriptor resource based on the \"PnfdInfo\" data type. The attributes of\
      \ \"PnfdInfo\" that can be modified are included in the \"PnfdInfoModifications\"\
      \ data type."
  PnfdInfo:
    type: "object"
    required:
    - "_links"
    - "id"
    - "pnfdOnboardingState"
    - "pnfdUsageState"
    properties:
      id:
        type: "string"
        description: "Identifier of the onboarded individual PNF descriptor resource.\
          \ This identifier is allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the PNFD\ndesigner, identifies\
          \ the PNFD in a globally unique way. It is copied from the PNFD content\
          \ and shall be present after the PNFD content is on-boarded."
      pnfdName:
        type: "string"
        description: "Name of the onboarded PNFD. This information is copied from\
          \ the PNFD content and shall be present after the PNFD content is on-boarded."
      pnfdVersion:
        type: "string"
        description: "Version of the onboarded PNFD. The PNFD version is a string\
          \ of variable length.This information is copied from the PNFD content and\
          \ shall be present after the PNFD content is on-boarded."
      pnfdProvider:
        type: "string"
        description: "Provider of the onboarded PNFD. This information is copied from\
          \ the PNFD content and shall be present after the PNFD content is onboarded."
      pnfdInvariantId:
        type: "string"
        description: "Identifies a PNFD in a version independent manner. This attribute\
          \ is invariant across versions of PNFD."
      pnfdOnboardingState:
        $ref: "#/definitions/PnfdOnboardingStateType"
      onboardingFailureDetails:
        $ref: "#/definitions/ProblemDetails"
      pnfdUsageState:
        $ref: "#/definitions/PnfdUsageStateType"
      userDefinedData:
        type: "array"
        description: "User defined data for the individual PNF descriptor resource.\
          \ This attribute can be modified with the PATCH method."
        items:
          type: "object"
      _links:
        required:
        - "pnfd_content"
        - "self"
        type: "object"
        description: "Links to resources related to this resource."
        properties:
          self:
            $ref: "#/definitions/Link"
          pnfd_content:
            $ref: "#/definitions/Link"
    description: "This type represents a response for the query PNFD operation."
  PnfdOnboardingStateType:
    type: "string"
    description: "The enumeration PnfdOnboardingStateType shall comply with the provisions\
      \ defined in Table 5.5.4.6-1 of GS-NFV SOL005. It indicates the onboarding state\
      \ of the individual PNF descriptor resource.\n\nCREATED = The PNF descriptor\
      \ resource is created. UPLOADING = The associated PNFD content is being uploaded.\
      \ PROCESSING = The associated PNFD content is being processed, e.g. validation.\
      \ ONBOARDED = The associated PNFD content is on-boarded."
    enum:
    - "CREATED"
    - "UPLOADING"
    - "PROCESSING"
    - "ONBOARDING"
  PnfdUsageStateType:
    type: "string"
    description: "The enumeration PnfdUsageStateType shall comply with the provisions\
      \ defined in Table 5.5.4.7-1 of GS NFV-SOL005. It indicates the usage state\
      \ of the resource.\n\nIN-USE = The resource is in use.\nNOT_IN_USE = The resource\
      \ is not-in-use."
    enum:
    - "IN_USE"
    - "NOT_IN_USE"
  CreatePnfdInfoRequest:
    type: "object"
    properties:
      userDefinedData:
        $ref: "#/definitions/KeyValuePairs"
    description: "This type creates a new PNF descriptor resource."
  NsdmLinks:
    type: "object"
    required:
    - "nsdInfo"
    - "subscription"
    properties:
      nsdInfo:
        $ref: "#/definitions/Link"
      subscription:
        $ref: "#/definitions/Link"
    description: "This type represents the links to resources that an NSD management\
      \ notification can contain."
  NsdOnboardingNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "nsdId"
    - "nsdInfoId"
    - "subscriptionId"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"NsdOnboardingNotification\" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of the subscription that this notification relates\
          \ to."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      nsdInfoId:
        type: "string"
        description: "Identifier of the NSD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service\nprovider,\
          \ identifies the NSD in a globally unique way. It is copied from the on-boarded\
          \ NSD."
      _links:
        $ref: "#/definitions/NsdmLinks"
    description: "This type represents an NSD management notification, which informs\
      \ the receiver of the successful on-boarding of an NSD. It shall comply with\
      \ the provisions defined in Table 5.5.2.9-1 of GS NFV-SOL 005. The support of\
      \ this notification is mandatory. The notification shall be triggered by the\
      \ NFVO when the \"nsdOnboardingState\" attribute of a new NSD has changed to\
      \ \"ONBOARDED\"."
  NsdOnboardingFailureNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "nsdInfoId"
    - "onboardingFailureDetails"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"NsdOnboardingFailureNotification\" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of the subscription that this notification relates\
          \ to."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      nsdInfoId:
        type: "string"
        description: "Identifier of the NSD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service provider, identifies\
          \ the NSD in a globally unique way."
      onboardingFailureDetails:
        $ref: "#/definitions/ProblemDetails"
      _links:
        $ref: "#/definitions/NsdmLinks"
    description: "This type represents an NSD management notification, which informs\
      \ the receiver of the failure of on-boarding an NSD. It shall comply with the\
      \ provisions defined in Table 5.5.2.10-1. The support of this notification is\
      \ mandatory. The notification shall be triggered by the NFVO when the on-boarding\
      \ of an NSD has failed."
  NsdChangeNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "nsdId"
    - "nsdInfoId"
    - "nsdOperationalState"
    - "subscriptionId"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"NsdChangeNotification\" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of the subscription that this notification relates\
          \ to."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      nsdInfoId:
        type: "string"
        description: "Identifier of the NSD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service provider, identifies\
          \ the NSD in a globally unique way. It is copied from the on-boarded NSD."
      nsdOperationalState:
        $ref: "#/definitions/NsdOperationalStateType"
      _links:
        $ref: "#/definitions/NsdmLinks"
    description: "This type represents an NSD management notification, which informs\
      \ the receiver of a change of the \"nsdOperationalState\" attribute of an on-boarded\
      \ NSD. Changes in the value of the \"nsdUsageState\" and \"nsdOnboardingState\"\
      \ attributes are not reported. The notification shall comply with the provisions\
      \ defined in Table 5.5.2.11-1 of GS NFV-SOL 005. The support of this notification\
      \ is mandatory. The notification shall be triggered by the NFVO when the value\
      \ of the \"nsdOperationalState\" attribute has changed, and the \"nsdOperationalState\"\
      \ attribute has the value \"ONBOARDED\"."
  NsdDeletionNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "nsdId"
    - "nsdInfoId"
    - "subscriptionId"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"NsdDeletionNotification \" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of the subscription that this notification relates\
          \ to."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      nsdInfoId:
        type: "string"
        description: "Identifier of the NSD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service provider, identifies\
          \ the NSD in a globally unique way. It is copied from the on-boarded NSD."
      _links:
        $ref: "#/definitions/NsdmLinks"
    description: "This type represents an NSD management notification, which informs\
      \ the receiver of the deletion of an on-boarded NSD. The notification shall\
      \ comply with the provisions defined in Table 5.5.2.12-1. The support of this\
      \ notification is mandatory. The notification shall be triggered by the NFVO\
      \ when it has deleted an on-boarded NSD."
  PnfdmLinks:
    type: "object"
    required:
    - "pnfdInfo"
    - "subscription"
    properties:
      pnfdInfo:
        $ref: "#/definitions/Link"
      subscription:
        $ref: "#/definitions/Link"
    description: "This type represents the links to resources that a PNFD management\
      \ notification can contain."
  PnfdOnboardingNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "pnfdId"
    - "pnfdInfoId"
    - "subscriptionId"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"PnfdOnboardingNotification\" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of the subscription that this notification relates\
          \ to."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      pnfdInfoId:
        type: "string"
        description: "Identifier of the PNFD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service\nprovider,\
          \ identifies the PNFD in a globally unique way. It is copied from the on-boarded\
          \ PNFD."
      _links:
        $ref: "#/definitions/PnfdmLinks"
    description: "This type represents a PNFD management notification, which informs\
      \ the receiver of the successful on-boarding of a\nPNFD. It shall comply with\
      \ the provisions defined in Table 5.5.2.13-1. The support of this notification\
      \ is mandatory. The notification is triggered when a new PNFD is on-boarded."
  PnfdOnboardingFailureNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "onboardingFailureDetails"
    - "pnfdInfoId"
    - "subscriptionId"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"PnfdOnboardingFailureNotification\" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of the subscription that this notification relates\
          \ to."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      pnfdInfoId:
        type: "string"
        description: "Identifier of the PNFD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service\nprovider,\
          \ identifies the PNFD in a globally unique way."
      onboardingFailureDetails:
        $ref: "#/definitions/ProblemDetails"
      _links:
        $ref: "#/definitions/PnfdmLinks"
    description: "This type represents a PNFD management notification, which informs\
      \ the receiver of the failure of on-boarding a\n PNFD. It shall comply with\
      \ the provisions defined in Table 5.5.2.14-1 of GS NFV-SOL 005. The support\
      \ of this notification is mandatory. The notification is triggered when the\
      \ on-boarding of a PNFD fails."
  PnfdDeletionNotification:
    type: "object"
    required:
    - "_links"
    - "id"
    - "notificationType"
    - "pnfdId"
    - "pnfdInfoId"
    - "subscriptionId"
    - "timeStamp"
    properties:
      id:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      notificationType:
        type: "string"
        description: "Discriminator for the different notification types. Shall be\
          \ set to \"PnfdDeletionNotification \" for this notification type."
      subscriptionId:
        type: "string"
        description: "Identifier of this notification. If a notification is sent multiple\
          \ times due to multiple subscriptions, the \"id\" attribute of all these\
          \ notifications shall have the same value."
      timeStamp:
        type: "string"
        format: "date-time"
        description: "Date-time of the generation of the notification."
      pnfdInfoId:
        type: "string"
        description: "Identifier of the PNFD information object. This identifier is\
          \ allocated by the NFVO."
        type: "string"
        description: "This identifier, which is managed by the service provider, identifies\
          \ the PNFD in a globally unique way. It is copied from the on-boarded PNFD."
      _links:
        $ref: "#/definitions/PnfdmLinks"
    description: "This type represents a PNFD management notification, which informs\
      \ the receiver of the deletion of an on-boarded PNFD. The notification shall\
      \ comply with the provisions defined in Table 5.5.2.15-1. The support of this\
      \ notification is mandatory. The notification is triggered when an on-boarded\
      \ PNFD is deleted."