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."