diff --git a/src/SOL005/NSDManagement/NSDManagement.yaml b/src/SOL005/NSDManagement/NSDManagement.yaml index 81baff6402655170ad279fd083b6dab98a71acea..330293df978c4ca9bc47b83122f8d8172aeeb044 100644 --- a/src/SOL005/NSDManagement/NSDManagement.yaml +++ b/src/SOL005/NSDManagement/NSDManagement.yaml @@ -1,11 +1,12 @@ ---- swagger: "2.0" + info: - 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" + 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" version: "2.4.1" title: "DRAFT - SOL005 - NSD Management Interface" contact: @@ -13,245 +14,350 @@ info: license: name: "ETSI Forge copyright notice" url: "https://forge.etsi.org/etsi-forge-copyright-notice.txt" +externalDocs: + description: "ETSI GS NFV-SOL 005 V2.4.1" + url: http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.04.01_60/gs_NFV-SOL005v020401p.pdf + +basePath: "/nsd/v1" +schemes: + - https + consumes: - "application/json" produces: - "application/json" + paths: - /ns_descriptors: +############################################################################### +# NS Descriptors # +############################################################################### + '/ns_descriptors': + #ETSI GS NFV-SOL 005 V2.4.1 location: 5.4.2.3.2 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." + summary: "Query information about multiple NS descriptor resources." + 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 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." + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query + string. The OSS/BSS may supply filtering parameters. + All attribute names that appear in the NsdInfo and in data types referenced from + it shall be supported in attribute-based filtering parameters." + - 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: "fields" + in: "query" + required: false + type: "string" + description: > + "Complex attributes to be included into the response. See clause 4.3.3 for + details. The NFVO should support this parameter." + - name: "exclude_fields" + in: "query" + required: false + type: "string" + description: > + "Complex attributes to be excluded from the response. See clause 4.3.3 for + details. The NFVO should support this parameter." + - name: "exclude_default" + in: "query" + required: false + type: "string" + description: > + "Indicates to exclude the following complex attributes from the response. See + clause 4.3.3 for details. The VNFM shall support this parameter. + The following attributes shall be excluded from the NsdInfo 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: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string 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." + description: > + "Information about zero or more NS descriptors. + The response body shall contain a representation of + zero or more NS descriptors, as defined in + clause 5.5.2.2" schema: - $ref: "#/definitions/NsdInfo" + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/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." + type: string + description: The MIME type of the body of the response. 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." + 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." + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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: [] + summary: "Create a new NS descriptor resource." + description: > + "The POST method is used to create a new NS descriptor resource or a new version of an on-boarded 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 for URI query parameters, + request and response data structures, and response codes." 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" + - name: "createNsdInfoRequest" + description: > + "The CreateNsdInfoRequest contains parameters for creating + an NS descriptor resource, as defined in clause 5.5.2.4 of GS NFV-SOL 005." 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." + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/CreateNsdInfoRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string responses: 201: - description: "Status 201" + description: > + Status 201 + + 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. + The HTTP response shall include a "Location" + HTTP header that contains the resource URI of the + new NS descriptor resource. + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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." + 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" + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/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}: + description: > + "The HTTP response shall include a "Location" HTTP header + that contains the resource URI of the new NS descriptor resource." +############################################################################### +# Individual NS Descriptor # +############################################################################### + '/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." + summary: "Read information about an individual NS descriptor resource." + 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." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string 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." + description: > + 200 OK + + 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. 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." + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdInfo" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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." + summary: "Delete an individual NS descriptor resource." + 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." + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string 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." + description: > + 204 No Content + + 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." + 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. + type: string + maximum: 1 + minimum: 0 + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" 409: - 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" + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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: [] + 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: + 1) Enable a previously disabled individual NS descriptor resource, allowing + again its use for instantiation of new network service with this descriptor. + The usage state (i.e. "IN_USE/NOT_IN_USE") shall not change as result. + 2) Disable a previously enabled individual NS descriptor resource, preventing + any further use for instantiation of new network service(s) with this descriptor. + The usage state (i.e. "IN_USE/NOT_IN_USE") shall not changes a result. + 3) Modify the user defined data of an individual NS descriptor resource. + 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,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: "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" + - name: "NsdInfoModifications" in: "body" required: true schema: @@ -260,1486 +366,924 @@ paths: - "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: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/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)." + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: 200: - description: "Status 200" - schema: - $ref: "#/definitions/NsdInfoModifications" + 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. 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 WWW-Authenticate: - type: "string" - description: "Challenge if the corresponding HTTP request has not provided\ - \ authorization, or error details if the corresponding HTTP request\ - \ has provided an invalid authorization token." - 409: - description: "Status 409" + 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. + type: string + maximum: 1 + minimum: 0 schema: - $ref: "#/definitions/ProblemDetails" + type: array + items: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdInfoModifications" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" 412: - description: "Status 412" - schema: - $ref: "#/definitions/ProblemDetails" + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + parameters: - name: "nsdInfoId" + description: > + Identifier of the individual NS descriptor resource. in: "path" required: true type: "string" - /ns_descriptors/{nsdInfoId}/nsd_content: +############################################################################### +# NSD Content # +############################################################################### + '/ns_descriptors/{nsdInfoId}/nsd_content': get: - 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." + summary: "Fetch the content of a NSD." + description: > + "The GET method fetches the content of the NSD.The 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. + The selection of the format is controlled by the "Accept" HTTP header passed + in the GET request:• If the "Accept" header contains only "text/plain" + and the NSD is implemented as a single file, the file shall be returned; + otherwise, an error message shall be returned.• If the "Accept" header + contains only "application/zip", the single file or the multiple files + that make up the NSD shall be returned embedded in a ZIP file.• If the + "Accept" header contains both "text/plain" and "application/zip", + it is up to the NFVO to choose the format to return for a single-file NSD; + for a multi-file NSD, a ZIP file shall be returned.NOTE: The structure + of the NSD zip file is outside the scope of the present document." parameters: - - name: "Accept" - in: "header" + - name: Accept + description: > + Content-Types that are acceptable for the response. + 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" + type: string + enum: + - text/plain + - application/zip + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header required: false - type: "string" - 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" + type: string + - name: "Range" 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: > + "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.If 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)." responses: 200: - 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" + 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." 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 WWW-Authenticate: - type: "string" - description: "Challenge if the corresponding HTTP request has not provided\ - \ authorization, or error details if the corresponding HTTP request\ - \ has provided an invalid authorization token." - 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." + 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. + type: string + maximum: 1 + minimum: 0 + 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" + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" 406: - description: "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." + $ref: "responses/SOL005_resp.yaml#/responses/406" 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." + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" 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." + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + 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: [] + summary: "Upload the content of a 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." 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" + - name: Accept + description: > + Content-Types that are acceptable for the response. + in: header required: true - schema: - type: "object" + type: string + enum: + - text/plain + - application/zip + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string 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." + description: > + "Status 202" + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 204: - description: "The NSD content was successfully uploaded and validated (synchronous\ - \ mode). The response body shall be empty." + description: > + "The NSD content was successfully uploaded and validated (synchronous + mode). The response body shall be empty." + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" 409: - 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" + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + parameters: - name: "nsdInfoId" in: "path" required: true type: "string" - /pnf_descriptors: +############################################################################### +# PNF Descriptors # +############################################################################### + '/pnf_descriptors': get: - summary: "Query PFND Info" - description: "The GET method queries information about multiple PNF descriptor\ - \ resources." + summary: "Query information about multiple PNF descriptor resources." + description: > + "The GET method queries information about multiple PNF descriptor + resources." parameters: - - name: "exclude_default" + - name: "filter" 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." + description: > + Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI + query string. The OSS/BSS may supply filtering parameters. + All attribute names that appear in the PnfdInfo and in data types referenced + from it shall be supported in attribute-based filtering parameters. - 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" + description: > + Include all complex attributes in the response. See clause 4.3.3 for details. + The NFVO shall support this parameter. + - name: "fields" + in: "query" 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" + description: > + Complex attributes to be included into the response. See clause 4.3.3 for + details. The NFVO should support this parameter. + - name: "exclude_fields" + in: "query" + required: false + type: "string" + description: > + Complex attributes to be excluded from the response. See clause 4.3.3 for + details. The NFVO should support this parameter. + - name: "exclude_default" + in: "query" required: false type: "string" - description: "The authorization token for the request.\nDetails are specified\ - \ in clause 4.5.3 of GS NFV-SOL 005." + description: > + Indicates to exclude the following complex attributes from the response. See + clause 4.3.3 for details. The NFVO shall support this parameter. + The 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. 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." + description: > + 200 OK + + 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 WWW-Authenticate: - type: "string" - description: "Challenge if the corresponding HTTP request\nhas not provided\ - \ authorization, or error details if the corresponding HTTP request\ - \ has provided an invalid authorization token." + 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. + type: string + maximum: 1 + minimum: 0 + schema: + type: array + items: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" post: - summary: "Create PNFD Info" - description: "The POST method is used to create a new PNF descriptor resource." - consumes: [] + summary: "Create a new PNF descriptor resource." + description: > + "The POST method is used to create a new PNF descriptor resource." 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" + - name: "CreatePnfdInfoRequest" + description: > + "Parameters of creating a PNF descriptor resource, as defined in clause 5.5.2.6." 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." + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/CreatePnfdInfoRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string 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." + description: > + Status 201 + + 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 WWW-Authenticate: - type: "string" - description: "Challenge if the corresponding HTTP request\nhas not provided\ - \ authorization, or error details if the corresponding HTTP request\ - \ has provided an invalid authorization token." - /pnf_descriptors/{pnfdInfoId}: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" +############################################################################### +# Individual PNF Descriptor # +############################################################################### + '/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." + summary: "Read an individual PNFD resource." + 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." 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." + 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. 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 WWW-Authenticate: - type: "string" - description: "Challenge if the corresponding HTTP request has not provided\ - \ authorization, or error details if the corresponding HTTP request\ - \ has provided an invalid authorization token." + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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." + summary: "Delete an individual PNF descriptor resource." + 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." 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." + description: > + 204 No Content + + The operation has completed successfully. + The response body shall be empty. + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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: [] + summary: "Modify the user defined data of an individual PNF descriptor resource." + 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." 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" + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfoModifications" responses: 200: - description: "Status 200" - schema: - $ref: "#/definitions/PnfdInfoModifications" + description: > + 200 OK + + The operation was completed successfully. + + The response body shall contain attribute + modifications for an 'Individual PNF Descriptor' + resource (see clause 5.5.2.4). 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 WWW-Authenticate: - type: "string" - description: "Challenge if the corresponding HTTP request has not provided\ - \ authorization, or error details if the corresponding HTTP request\ - \ has provided an invalid authorization token." + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfoModifications" + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" 412: - description: "Status 412" - schema: - $ref: "#/definitions/ProblemDetails" + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" parameters: - name: "pnfdInfoId" + description: > + Identifier of the individual PNF descriptor resource. in: "path" required: true type: "string" - /pnf_descriptors/{pnfdInfoId}/pnfd_content: +############################################################################### +# PNFD Content # +############################################################################### + '/pnf_descriptors/{pnfdInfoId}/pnfd_content': get: - summary: "Get PNFD Content" - description: "The GET method fetches the content of the PNFD." + summary: "Fetch the content of a PNFD." + description: > + "The GET method fetches the content of the PNFD." parameters: - - name: "Accept" - in: "header" + - name: Accept + description: > + Content-Types that are acceptable for the response. + 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" + type: string + enum: + - text/plain + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + 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." + type: string 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\"\ - ." + description: > + 200 OK + + 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". + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + 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 pnfdOnboardingState + 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. + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" 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: [] + summary: "Upload the content of a 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." 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" + - name: Accept + description: > + Content-Types that are acceptable for the response. + in: header required: true - schema: - type: "object" - description: "The payload body contains a copy of the file representing\ - \ the PNFD." + type: string + enum: + - text/plain + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string responses: 204: - description: "The PNFD content was successfully uploaded and validated.\ - \ The response body shall be empty." + description: > + 204 No Content + + The PNFD content was successfully uploaded and validated. + The response body shall be empty. + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" 409: - description: "Status 409" - schema: - $ref: "#/definitions/ProblemDetails" + description: > + 409 Conflict + + 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 + PnfdOnboardingState 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.. + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" parameters: - name: "pnfdInfoId" + description: > + Identifier of the individual PNF descriptor. in: "path" required: true type: "string" - /subscriptions: +############################################################################### +# Subscriptions # +############################################################################### + '/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." + summary: "Query multiple subscriptions." + 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." + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query string. The + OSS/BSS may supply filtering parameters. + All attribute names that appear in the VnfPkgInfo and in data types referenced from it shall + be supported in attribute-based filtering parameters." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string 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" + 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. 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." + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + Location: + description: The resource URI of the created NS instance + type: string + format: url 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." + 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. + type: string + maximum: 1 + minimum: 0 + 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/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdmSubscription" 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." + 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 HTTP response shall include a "Location" HTTP + header that contains the resource URI of the existing + subscription resource. + The response body shall be empty. + 206: + $ref: "responses/SOL005_resp.yaml#/responses/206" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSDescriptorManagement_resp.yaml#/responses/409" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + 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: [] + summary: "Subscribe to NSD and PNFD change notifications." + 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)." 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" + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdmSubscriptionRequest" responses: 201: - description: "Status 201" + description: > + "Status 201" schema: - $ref: "#/definitions/NsdmSubscription" + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/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}: + description: > + "The HTTP response shall include a "Location:"HTTP + header that points to the created subscription resource." +############################################################################### +# Individual Subscription # +############################################################################### + '/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." + summary: "Read an individual subscription resource." + 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: [] responses: 200: - description: "Status 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." + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdmSubscription" 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." + 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: [] 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." + description: > + "The subscription resource was deleted successfully. The response + body shall be empty." 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" - nsdId: - 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" - pnfdId: - 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." - nsdId: - 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." - pnfdId: - 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." - nsdId: - 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." - nsdId: - 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." - nsdId: - 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." - nsdId: - 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." - pnfdId: - 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." - pnfdId: - 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." - pnfdId: - 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." + type: "string" \ No newline at end of file diff --git a/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml b/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..98911e49cf1304f99c5ce475fd9858720d2a6cd0 --- /dev/null +++ b/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml @@ -0,0 +1,777 @@ + definitions: + NsdInfoModifications: + type: "object" + 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.NOTE: At least one of the attributes - nsdOperationalState and + userDefinedData - shall be present. + properties: + nsdOperationalState: + $ref: "#/definitions/NsdOperationalStateType" + userDefinedData: + 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. + type: "array" + items: + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + + nsdOperationalState: + description: > + "New value of the "nsdOperationalState" attribute in "NsdInfo" + data type. See note.Permitted values: + ENABLED, + DISABLED" + type: "array" + items: + $ref: "#/definitions/NsdInfoModifications" + + NsdmSubscription: + type: "object" + required: + - "id" + - "callbackUri" + - "_links" + properties: + id: + $ref: "#/definitions/Identifier" + 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." + Identifier: + type: "object" + NsdmNotificationsFilter: + type: "object" + description: > + "This type represents a subscription filter related to notifications + about NSD management. It shall comply with the provisions 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)." + properties: + notificationTypes: + description: > + "Match particular notification types. Permitted values: NsdOnBoardingNotification, + NsdOnboardingFailureNotification, NsdChangeNotification, NsdDeletionNotification + PnfdOnBoardingNotification, PnfdOnBoardingFailureNotification, PnfdDeletionNotification. + The permitted values of the "notificationTypes" ] attribute are spelled + exactly as the names of the notification types to facilitate automated + code generation systems." + type: array + items: + type: string + enum: + - "NsdOnBoardingNotification" + - "NsdOnboardingFailureNotification" + - "NsdChangeNotification" + - "NsdDeletionNotification" + - "PnfdOnBoardingNotification" + - "PnfdOnBoardingFailureNotification" + - "PnfdDeletionNotification" + nsdInfoId: + type: array + items: + $ref: "#/definitions/Identifier" + nsdId: + type: array + items: + $ref: "#/definitions/Identifier" + nsdName: + description: > + "Match the name of the on boarded NSD." + type: array + items: + $ref: "SOL005_def.yaml#/definitions/String" + nsdVersion: + type: array + items: + $ref: "#/definitions/Version" + nsdDesigner: + description: > + "Match the NSD designer of the on-boarded NSD." + type: array + items: + $ref: "SOL005_def.yaml#/definitions/String" + nsdInvariantId: + type: array + items: + $ref: "#/definitions/Identifier" + vnfPkgIds: + type: array + items: + $ref: "#/definitions/Identifier" + pnfdInfoIds: + type: array + items: + $ref: "#/definitions/Identifier" + nestedNsdInfoIds: + type: array + items: + $ref: "#/definitions/Identifier" + nsdOnboardingState: + type: array + items: + $ref: "#/definitions/NsdOnboardingStateType" + nsdOperationalState: + type: array + items: + $ref: "#/definitions/NsdOperationalStateType" + nsdUsageState: + type: array + items: + $ref: "#/definitions/NsdUsageStateType" + pnfdId: + type: array + items: + $ref: "#/definitions/Identifier" + pnfdName: + description: > + "Match the name of the on-boarded PNFD." + type: array + items: + $ref: "SOL005_def.yaml#/definitions/String" + pnfdVersion: + type: array + items: + $ref: "#/definitions/Version" + pnfdProvider: + description: > + "Match the provider of the on-boarded PNFD." + type: array + items: + $ref: "SOL005_def.yaml#/definitions/String" + pnfdInvariantId: + type: array + items: + $ref: "#/definitions/Identifier" + pnfdOnboardingState: + type: array + items: + $ref: "#/definitions/PnfdOnboardingStateType" + pnfdUsageState: + type: array + items: + $ref: "#/definitions/PnfdUsageStateType" + Uri: + type: "object" + Link: + type: "object" + SubscriptionAuthentication: + description: > + The procedure defined in clause 4.5.2 allows an API consumer to + obtain authorization to perform API requests towards + the API producer, including subscription requests. + For sending the actual notifications matching a subscription, the API + producer needs to obtain separate authorization to actually send the notification to the API consumer. + If an API consumer requires the API producer to authorize for sending notifications to that API consumer, it shall + include in the subscription request a data structure that defines the authorization requirements, as defined in + Table 4.5.3.4-1. + type: "object" + required: + - "authType" + properties: + authType: + description: > + Defines the types of Authentication + Authorization the API consumer is willing to + accept when receiving a notification. + + Permitted values: + + BASIC: In every HTTP request to the + notification endpoint, use HTTP Basic + authentication with the client credentials. + + OAUTH2_CLIENT_CREDENTIALS: In every + HTTP request to the notification endpoint, use + an OAuth 2.0 Bearer token, obtained using the + client credentials grant type. + + TLS_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 + + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + 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. + ENABLED = The operational state of the resource is enabled. + DISABLED = The operational state of the resource is disabled." + enum: + - "ENABLED" + - "DISABLED" + NsdInfo: + type: "object" + required: + - "id" + - "nsdOnboardingState" + - "nsdOperationalState" + - "nsdUsageState" + - "_links" + properties: + id: + description: > + Identifier of the on boarded individual NS descriptor + resource. This identifier is allocated by the NFVO. + $ref: "#/definitions/Identifier" + nsdId: + 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. + $ref: "#/definitions/Identifier" + nsdName: + type: "string" + description: > + "Name of the on boarded NSD. This information is copied from the + NSD content and shall be present after the NSD content is on-boarded." + nsdVersion: + description: > + Version of the on-boarded NSD. This information is + copied from the NSD content and shall be present + after the NSD content is on-boarded. + $ref: "#/definitions/Version" + nsdDesigner: + type: "string" + description: > + "Designer of the on-boarded NSD. This information is copied + from the NSD content and shall be present after the NSD content is on-boarded." + nsdInvariantId: + 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. + $ref: "#/definitions/Identifier" + vnfPkgIds: + description: > + Identifies the VNF package for the VNFD referenced + by the on-boarded NS descriptor resource. See + note 1. + type: array + items: + $ref: "#/definitions/Identifier" + pnfdInfoIds: + description: > + Identifies the PnfdInfo element for the PNFD + referenced by the on-boarded NS descriptor + resource. + type: array + items: + $ref: "#/definitions/Identifier" + nestedNsdInfoIds: + description: > + Identifies the NsdInfo element for the nested NSD + referenced by the on-boarded NS descriptor + resource. + type: array + items: + $ref: "#/definitions/Identifier" + nsdOnboardingState: + description: > + On boarding state of the individual NS descriptor resource. + $ref: "#/definitions/NsdOnboardingStateType" + onboardingFailureDetails: + description: > + Failure details of current on boarding procedure. See + clause 4.3.5.3 for the details of "ProblemDetails" + structure. + It shall be present when the "nsdOnboardingState" + attribute is CREATED and the uploading or + processing fails in NFVO. + $ref: "#/definitions/ProblemDetails" + nsdOperationalState: + description: > + Operational state of the individual NS descriptor + resource. This attribute can be modified with the + PATCH method. + $ref: "#/definitions/NsdOperationalStateType" + nsdUsageState: + description: > + Usage state of the individual NS descriptor resource. + $ref: "#/definitions/NsdUsageStateType" + userDefinedData: + description: > + User defined data for the individual NS descriptor + resource. This attribute can be modified with the + PATCH method. + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + _links: + type: "object" + description: > + "Links to resources related to this resource." + properties: + self: + description: > + "URI of this resource." + $ref: "#/definitions/Link" + nsd_content: + description: > + "Link to the NSD content resource" + $ref: "#/definitions/Link" + description: > + "This type represents a response for the query NSD operation." + Version: + type: "object" + 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 on-boarding + state of the NSD.CREATED = 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" + 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.IN_USE = The resource is in use.NOT_IN_USE = The resource + is not-in-use." + enum: + - "IN_USE" + - "NOT_IN_USE" + CreateNsdInfoRequest: + type: "object" + properties: + userDefinedData: + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + description: > + "This type creates a completely new NS descriptor resource." + PnfdInfoModifications: + type: "object" + required: + - "userDefinedData" + properties: + userDefinedData: + $ref: "SOL005_def.yaml#/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: + $ref: "#/definitions/Identifier" + pnfdId: + $ref: "#/definitions/Identifier" + 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: + $ref: "#/definitions/Version" + 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: + $ref: "#/definitions/Identifier" + pnfdOnboardingState: + $ref: "#/definitions/PnfdOnboardingStateType" + onboardingFailureDetails: + $ref: "#/definitions/ProblemDetails" + pnfdUsageState: + $ref: "#/definitions/PnfdUsageStateType" + userDefinedData: + type: "object" + description: > + "User defined data for the individual PNF descriptor resource. + This attribute can be modified with the PATCH method." + _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.CREATED = 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.IN-USE = The resource is in use.NOT_IN_USE = The resource + is not-in-use." + enum: + - "IN_USE" + - "NOT_IN_USE" + CreatePnfdInfoRequest: + type: "object" + properties: + userDefinedData: + $ref: "SOL005_def.yaml#/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" + - "timeStamp" + properties: + id: + $ref: "#/definitions/Identifier" + notificationType: + type: "string" + description: > + "Discriminator for the different notification types. Shall be + set to "NsdOnboardingNotification" for this notification type." + subscriptionId: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + nsdInfoId: + $ref: "#/definitions/Identifier" + nsdId: + $ref: "#/definitions/Identifier" + _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. 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: + $ref: "#/definitions/Identifier" + notificationType: + type: "string" + description: > + "Discriminator for the different notification types. Shall be + set to "NsdOnboardingFailureNotification" for this notification type." + subscriptionId: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + nsdInfoId: + $ref: "#/definitions/Identifier" + nsdId: + $ref: "#/definitions/Identifier" + 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" + - "timeStamp" + properties: + id: + $ref: "#/definitions/Identifier" + notificationType: + type: "string" + description: > + "Discriminator for the different notification types. Shall be + set to "NsdChangeNotification" for this notification type." + subscriptionId: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + nsdInfoId: + $ref: "#/definitions/Identifier" + nsdId: + $ref: "#/definitions/Identifier" + 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. 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" + - "timeStamp" + properties: + id: + $ref: "#/definitions/Identifier" + notificationType: + type: "string" + description: > + "Discriminator for the different notification types. Shall be + set to "NsdDeletionNotification " for this notification type." + subscriptionId: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + nsdInfoId: + $ref: "#/definitions/Identifier" + nsdId: + $ref: "#/definitions/Identifier" + _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" + - "timeStamp" + properties: + id: + $ref: "#/definitions/Identifier" + notificationType: + type: "string" + description: > + "Discriminator for the different notification types. Shall be + set to "PnfdOnboardingNotification" for this notification type." + subscriptionId: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + pnfdInfoId: + $ref: "#/definitions/Identifier" + pnfdId: + $ref: "#/definitions/Identifier" + _links: + $ref: "#/definitions/PnfdmLinks" + description: > + "This type represents a PNFD management notification, which informs + the receiver of the successful on-boarding of aPNFD. 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" + - "timeStamp" + properties: + id: + $ref: "#/definitions/Identifier" + notificationType: + type: "string" + description: > + "Discriminator for the different notification types. Shall be + set to "PnfdOnboardingFailureNotification" for this notification type." + subscriptionId: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + pnfdInfoId: + $ref: "#/definitions/Identifier" + pnfdId: + $ref: "#/definitions/Identifier" + 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 PNFD. It shall comply with + the provisions defined in Table 5.5.2.14-1. 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" + - "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: + $ref: "#/definitions/Identifier" + timeStamp: + type: "string" + format: "date-time" + description: > + "Date-time of the generation of the notification." + pnfdInfoId: + $ref: "#/definitions/Identifier" + pnfdId: + $ref: "#/definitions/Identifier" + _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." \ No newline at end of file diff --git a/src/SOL005/NSDManagement/definitions/SOL005_def.yaml b/src/SOL005/NSDManagement/definitions/SOL005_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..84344650ecc71706775ce2412acc796c87bc3c45 --- /dev/null +++ b/src/SOL005/NSDManagement/definitions/SOL005_def.yaml @@ -0,0 +1,70 @@ +# Copyright (c) ETSI 2017. +# https://forge.etsi.org/etsi-forge-copyright-notice.txt + definitions: + KeyValuePairs: + 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 key- value pairs is represented as an object. It shall comply with the provisions + defined in clause 4 of IETF RFC 7159. + type: object + String: + description: > + This type represents stack of string values + type: string + ProblemDetails: + #SOL005 location: 4.3.5.3-1 + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced in this structure. Compared to the + general framework defined in IETF RFC 7807 [19], 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 [19] 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. + The description column only provides some explanation of the meaning to + Facilitate understanding of the design. For a full description, see + IETF RFC 7807 [19]. + type: object + required: + - statussss + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies the + problem type. It is encouraged that the URI provides human-readable + documentation for the problem (e.g. using HTML) when dereferenced. + When this member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + 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. + 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 (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by the origin + server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of the + problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI \ No newline at end of file diff --git a/src/SOL005/NSDManagement/responses/NSDescriptorManagement_resp.yaml b/src/SOL005/NSDManagement/responses/NSDescriptorManagement_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8e24e314ba5cc8fec0ab4d6b3e67f1db0a441875 --- /dev/null +++ b/src/SOL005/NSDManagement/responses/NSDescriptorManagement_resp.yaml @@ -0,0 +1,211 @@ + responses: + 202-with-Location: + description: > + Accepted + + The request was accepted for processing, but the processing has not + been completed. The response body shall be empty. + The HTTP response shall include a "Location" HTTP + header that contains the URI of the newly-created + "NS lifecycle operation occurrence" resource + corresponding to the operation. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance" + 202-with-Location-empty: + description: > + Accepted + + The request was accepted for processing, but the processing has not + been completed. On success, the HTTP response shall include a + "Location" HTTP header that contains the URI of the newly-created + "NS Descriptor operation occurrence" resource corresponding to the + operation. + The response body shall be empty. + headers: + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 409: + description: > + Conflict + + 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. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-another-nsd-operation-ongoing: + description: > + Conflict + + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that another Descriptor operation is + ongoing. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-inconsistent-state: + description: > + Conflict + + Another request is in progress that prohibits the fulfilment of + the current request, or the current resource state is inconsistent + with the request. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-INSTANTIATED: + description: > + Conflict + + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that the NS instance resource is in + INSTANTIATED state. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-not-FAILED_TEMP: + description: > + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that the NS instance resource is + not in FAILED_TEMP state, or another error handling action is starting, + such as rollback or fail. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-NOT-INSTANTIATED: + description: > + Conflict + + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that the NS instance resource is in + NOT-INSTANTIATED state, or that another lifecycle management operation + is ongoing. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL005/NSDManagement/responses/SOL005_resp.yaml b/src/SOL005/NSDManagement/responses/SOL005_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f3ddbc083c985c7d0446810632aa2ba09684f940 --- /dev/null +++ b/src/SOL005/NSDManagement/responses/SOL005_resp.yaml @@ -0,0 +1,415 @@ + # Copyright (c) ETSI 2017. + # https://forge.etsi.org/etsi-forge-copyright-notice.txt + responses: + 202: + description: > + Accepted + + The request was accepted for processing, but processing has not + been completed. The response shall have an empty payload body. + headers: + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 202-with-Location: + description: > + Accepted + + The request was accepted for processing, but the processing has not + been completed. On success, the HTTP response shall include a + "Location" HTTP header that contains the URI of the newly-created + "NS LCM operation occurrence" resource corresponding to the + operation. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 206: + description: > + Partial Content + + On success, if the NFVO supports range requests, a + single consecutive byte range from the content of the + NSD file is returned. + The response body shall contain the requested part of + the NSD file. + The "Content-Range" HTTP header shall be provided + according to IETF RFC 7233 [23]. + The "Content-Type" HTTP header shall be set as + defined above for the "200 OK" response. + headers: + Content-Range: + type: "string" + Content-Type: + type: "string" + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 303: + description: > + See Other + A subscription with the same callbackURI and the same filter already + exists and the policy of the VNFM is to not create redundant + subscriptions. + The HTTP response shall include a "Location" HTTP header that contains + the resource URI of the existing subscription resource. + The response body shall be empty. + 400: + description: > + Bad Request + + Error: Invalid attribute-based filtering parameters. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 400-attr-based-filtering-error: + description: > + Bad Request + Invalid attribute-based filtering parameters or Invalid attribute + selector. + It the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or a syntactically + incorrect payload body), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and should include in the "detail" attribute more information about + the source of the problem. + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall + be returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code.The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 400-attr-selector: + description: > + Error: Invalid attribute selector. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 401: + description: > + Unauthorized + If the request contains no access token even though one is + required, or if the request contains an authorization token that + is invalid (e.g. expired or revoked), the API producer should + respond with this response. The details of the error shall be + returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails + structure may be provided. + headers: + Content-Type: + type: string + description: The MIME type of the body of the response. + 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. + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 403: + description: > + Forbidden + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. + It should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source + of the problem, e.g. a wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-resource-not-exists: + description: > + Not Found + Error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + Specifically in case of this task resource, the response code 404 shall + also returned if the task is not supported for the NS instance + represented by the parent resource, which means that the task resource + consequently does not exist. + In this case, the response body shall be present, and shall contain a + ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-resource-not-exists-NSD: + description: > + Not Found + Error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + Specifically in case of this task resource, the response code 404 shall + also be returned if the task is not supported for the NS LCM operation + occurrence represented by the parent resource, which means that the task + resource consequently does not exist. + In this case, the response body shall be present, and shall contain a + ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-not-suported: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + Specifically in case of this task resource, the reason can also be that + the task is not supported for the NS instance represented by the parent + resource, and that the task resource consequently does not exist. + The "ProblemDetails" structure may be provided, including in the + "detail" attribute information about the sourceof the problem, e.g. a + wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-not-suported-NSD: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + Specifically in case of this task resource, the reason can also be that + the task is not supported for the NS LCM operation occurrence + represented by the parent resource, and that the task resource + consequently does not exist. + The "ProblemDetails" structure may be provided, including in the + "detail" attribute information about the source of the problem, e.g. a + wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 405: + description: > + Method Not Allowed + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted in that case. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 406: + description: > + 406 Not Acceptable + + 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. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 412: + description: > + Precondition Failed + A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. The response body should + contain a ProblemDetails structure, in which the "detail" attribute + should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 416: + description: > + The byte range passed in the "Range" header did not + match any available byte range in the NSD file (e.g. + "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 422: + description: > + Unprocessable Entity + If the payload body of a request contains syntactically correct + data (e.g. well-formed JSON) but the data cannot be processed + (e.g. because it fails validation against a schema), the API + producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include + in the "detail" attribute more information about the source of the + problem. + NOTE 2: This error response code is only applicable for methods + that have a request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 500: + description: > + Internal Server Error + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code + ("catch all error"), the API producer shall respond with this + response code. The ProblemDetails structure shall be provided, + and shall include in the "detail" attribute more information about + the source of the problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 503: + description: > + Service Unavailable + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 [13] for + the use of the Retry-After HTTP header and for the alternative + to refuse the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL005/NSFaultManagement/NSFaultManagement.yaml b/src/SOL005/NSFaultManagement/NSFaultManagement.yaml index 8d53e2da2ec75bbd9fc896e843928422419d2984..c67847c90d0e2a55a28a804d0ee1d3cda10c0902 100644 --- a/src/SOL005/NSFaultManagement/NSFaultManagement.yaml +++ b/src/SOL005/NSFaultManagement/NSFaultManagement.yaml @@ -1,5 +1,4 @@ swagger: "2.0" - info: version: "2.4.1" title: DRAFT - SOL005 - NS Fault Management Interface @@ -29,8 +28,648 @@ produces: - "application/json" paths: - /resource: +############################################################################### +# Alarms # +############################################################################### + '/alarms': + #SOL005 location: 8.2-1 + get: + summary: > + Get Alarm List + description: > + Get Alarm List + + The client can use this method to retrieve information about the alarm list. + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query string. + The OSS/BSS may supply filtering parameters. + The following attribute names shall be supported in attribute-based + filtering parameters: + - id + - nsInstanceId + - rootCauseFaultyComponent.faultyNestedNsInstanceId + - rootCauseFaultyComponent.faultyNsVirtualLinkInstanceId + - rootCauseFaultyComponent.faultyVnfInstanceId + - rootCauseFaultyResource.faultyResourceType + - eventType + - perceivedSeverity + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 200: + description: > + The request has succeeded. + The response body shall contain the list of related alarms. + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/Alarm" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Individual alarm # +############################################################################### + '/alarms/{alarmId}': + #SOL005 location: 8.2-1 + parameters: + - name: alarmId + description: > + The client can use this method to read an individual alarm. + This method shall follow the provisions specified in the + Tables 8.4.3.3.2-1 and 8.4.3.3.2-2 for URI query parameters, + request and response data structures, and response codes.. + in: path + type: string + required: true get: + summary: > + Get Individual Alarm + description: > + The client can use this method to read an individual alarm. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string responses: 200: - description: Success \ No newline at end of file + description: > + OK + Information about an individual alarm was read successfully. + The response body shall contain a representation of the + individual alarm. + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/Alarm" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + patch: + summary: > + Update Alarm. + description: > + Acknowledge Alarm + + This method modifies an individual alarm resource. + parameters: + - name: AlarmModifications + description: The parameter for the alarm modification, as defined in clause 8.5.2.8. + in: body + required: true + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/AlarmModifications" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The Content-Type header shall be set to + "application/merge-patch+json" according to + IETF RFC 7396. + in: header + required: true + type: string + enum: ["application/merge-patch+json"] + responses: + 200: + description: > + OK + The request was accepted and completed. + The response body shall contain attribute modifications + for an 'Individual alarm' resource (see clause 8.5.2.4). + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/AlarmModifications" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/NSFManagement_resp.yaml#/responses/409-alarm-state-conflict" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" +############################################################################## +#Subscriptions # +############################################################################## + '/subscriptions': + #SOL005 location: 8.2-1 + post: + summary: > + Create new subscription + description: > + Subscribe + + The POST method creates a new subscription. + This method shall follow the provisions specified in the Tables 8.4.4.3.1-1 and 8.4.4.3.1-2 for URI query parameters, + request and response data structures, and response codes. + Creation of two subscription resources with the same callbackURI and the same filter can result in performance + degradation and will provide duplicates of notifications to the OSS, and might make sense only in very rare use cases. + Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the + same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), or may decide + to not create a duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing + the existing subscription resource with the same filter and callbackUri).. + parameters: + - name: FmSubscriptionRequest + description: Details of the subscription to be created, as defined in clause 8.5.2.2. + in: body + required: true + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscriptionRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 201: + description: > + Created + The subscription was created successfully. + The response body shall contain a representation of the + created subscription resource. + The HTTP response shall include a "Location:" HTTP + header that points to the created subscription resource. + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + Location: + description: > + The resource URI of the created subscription resource. + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscription" + 303: + $ref: "responses/SOL005_resp.yaml#/responses/303" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + get: + summary: > + Get Subscriptions + description: > + Query Subscription Information + + The client can use this method to retrieve the list of active subscriptions + for alarms related to a NS subscribed by the client. + It can be used e.g. for resynchronization after error situations. + + This method shall follow the provisions specified in the Tables 8.4.4.3.2-1 and 8.4.4.3.2-2 for URI query parameters, + request and response data structures, and response codes. + Table 8.4.4.3.2-1: URI query parameters supported. + + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI + query string. The OSS/BSS may supply filtering parameters. + All attribute names that appear in the FmSubscription and in data types + referenced from it shall be supported in attribute-based filtering parameters." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 200: + description: > + OK + + 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. + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + type: array + items: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscription" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-based-filtering-error" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 412: + $ref: "responses/SOL005_resp.yaml#/responses/412" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" +############################################################################### +# Individual subscription # +############################################################################### + '/subscriptions/{subscriptionId}': + #SOL005 location: 8.2-1 + parameters: + - name: subscriptionId + description: > + Identifier of this subscription. + This identifier can be retrieved from the resource referenced by the + "Location" HTTP header in the response to a POST request creating a + new subscription resource. It can also be retrieved from the "id" + attribute in the payload body of that response. + in: path + type: string + required: true + get: + summary: > + Get Individual subscription + description: > + Query Subscription Information + + The client can use this method for reading an individual subscription for alarms related to NSs subscribed by the client. + This method shall follow the provisions specified in the Tables 8.4.5.3.2-1 and 8.4.5.3.2-2 for URI query parameters, + request and response data structures, and response codes + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 200: + description: > + The operation has completed successfully. + The response body shall contain a representation of the + subscription resource. + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscription" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + delete: + summary: > + Terminate a subscription + description: > + Terminate Subscription + + This method terminates an individual subscription. + parameters: + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 204: + description: > + No Content + + The subscription resource was deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Notification endpoint # +# "/notification_endpoint" is the # +# is the dummy URI used for testing, in real case endpoint URI has to # +# provided by client. # +############################################################################### + '/notification_endpoint': + #SOL005 location: 8.2-1 + post: + summary: > + Notification endpoint + description: > + The POST method notifies an alarm related to a NS or that the alarm list has been rebuilt. + # Don't know how to pass multiple body parameters. + parameters: + - name: alarmNotification + description: > + Information of a NS alarm. + in: body + required: true + schema: + $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/AlarmNotification" + #- name: alarmClearedNotification + # description: > + # Information of the clearance of a NS alarm. + # in: body + # required: true + # schema: + # $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/AlarmClearedNotification" + #- name: alarmListRebuiltNotification + # description: > + # Information that the alarm list has been rebuilt by the NFVO. + # in: body + # required: true + # schema: + # $ref: "definitions/SOL005NSFaultManagement_def.yaml#/definitions/AlarmListRebuiltNotification" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 204: + description: > + The notification was delivered successfully. + The response body shall be empty. + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + get: + summary: Notification endpoint. + description: > + The GET method allows the server to test the notification endpoint that is provided by the client, e.g. during + subscription. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 204: + description: > + The notification endpoint was tested successfully. + The response body shall be empty. + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" \ No newline at end of file diff --git a/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml b/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8cfb2daba70caf438d35e11b01f1efe0d581f7e0 --- /dev/null +++ b/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml @@ -0,0 +1,537 @@ +# Copyright (c) ETSI 2017. +# https://forge.etsi.org/etsi-forge-copyright-notice.txt +definitions: + Alarm: + description: > + The alarm data type encapsulates information about an alarm. + It shall comply with the provisions defined in Table 8.5.2.4-1 + type: object + required: + - id + - managedObjectId + - rootCauseFaultyComponent + - alarmRaisedTime + - ackState + - perceivedSeverity + - eventTime + - eventType + - probableCause + - isRootCause + - _links + properties: + id: + description: > + Identifier of this Alarm information element. + $ref: "SOL005_def.yaml#/definitions/Identifier" + managedObjectId: + description: > + Identifier of the affected NS instance. + $ref: "SOL005_def.yaml#/definitions/Identifier" + rootCauseFaultyComponent: + description: > + The NS components that are causing the NS fault. + $ref: "#/definitions/FaultyComponentInfo" + rootCauseFaultyResource: + description: > + The virtualised resources that are causing the NS + fault. It shall be present when the faulty component + is "NS Virtual Link" or "VNF". + $ref: "#/definitions/FaultyResourceInfo" + alarmRaisedTime: + description: > + Alarm identifier. + $ref: "SOL005_def.yaml#/definitions/DateTime" + alarmChangedTime: + description: > + The time stamp indicating when the alarm was cleared. + $ref: "SOL005_def.yaml#/definitions/DateTime" + alarmClearedTime: + description: > + Links to resources related to this notification. + $ref: "SOL005_def.yaml#/definitions/DateTime" + ackState: + description: > + Acknowledgement state of the alarm. + Permitted values: + UNACKNOWLEDGED + ACKNOWLEDGED + type: string + enum: + - UNACKNOWLEDGED + - ACKNOWLEDGED + perceivedSeverity: + description: > + Perceived severity of the managed object failure. + $ref: "#/definitions/PerceivedSeverityType" + eventTime: + description: > + Time stamp indicating when the fault was observed. + $ref: "SOL005_def.yaml#/definitions/DateTime" + eventType: + description: > + Type of event. + $ref: "#/definitions/EventType" + faultType: + description: > + Additional information to clarify the type of the fault. + type: string + probableCause: + description: > + Information about the probable cause of the fault. + type: string + isRootCause: + description: > + Attribute indicating if this fault is the root for other + correlated alarms. If TRUE, then the alarms listed in + the attribute CorrelatedAlarmId are caused by this fault. + type: boolean + correlatedAlarmIds: + description: > + List of identifiers of other alarms correlated to this fault. + type: array + items: + $ref: "SOL005_def.yaml#/definitions/Identifier" + faultDetails: + description: > + Provides additional information about the fault.. + type: string + _links: + description: > + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: "SOL005_def.yaml#/definitions/Link" + objectInstance: + description: > + Link to the resource representing the NS instance to + which the notified alarm is correlated. Shall be + present if the NS instance information is accessible + as a resource. + $ref: "SOL005_def.yaml#/definitions/Link" + + AlarmClearedNotification: + description: > + This type represents an alarm cleared notification about VNF faults. + The notification shall be triggered by the VNFM when an alarm has been + cleared. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - alarmId + - alarmClearedTime + - _links + properties: + id: + 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. + $ref: "SOL005_def.yaml#/definitions/Identifier" + notificationType: + description: > + Discriminator for the different notification types. Shall be set to + "AlarmClearedNotification" for this notification type. + type: string + enum: + - AlarmClearedNotification + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: "SOL005_def.yaml#/definitions/Identifier" + timeStamp: + description: > + Date-time of the generation of the notification. + $ref: "SOL005_def.yaml#/definitions/DateTime" + alarmId: + description: > + Alarm identifier. + $ref: "SOL005_def.yaml#/definitions/Identifier" + alarmClearedTime: + description: > + The time stamp indicating when the alarm was cleared. + _links: + description: > + Links to resources related to this notification. + type: object + required: + - subscription + - alarm + properties: + subscription: + description: > + Link to the related subscription. + $ref: "SOL005_def.yaml#/definitions/Link" + alarm: + description: > + Link to the resource that represents the related alarm. + $ref: "SOL005_def.yaml#/definitions/Link" + + AlarmListRebuiltNotification: + description: > + This type represents a notification that the alarm list has been + rebuilt, e.g. if the VNFM detects its storage holding the alarm + list is corrupted. + The notification shall be triggered by the VNFM when the alarm list has + been rebuilt. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - _links + properties: + id: + 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. + $ref: "SOL005_def.yaml#/definitions/Identifier" + notificationType: + description: > + Discriminator for the different notification types. Shall be set to + "AlarmListRebuiltNotification" for this notification type. + type: string + enum: + - AlarmListRebuiltNotification + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: "SOL005_def.yaml#/definitions/Identifier" + timeStamp: + description: > + Date-time of the generation of the notification. + $ref: "SOL005_def.yaml#/definitions/DateTime" + _links: + description: > + Links to resources related to this notification. + type: object + required: + - subscription + - alarms + properties: + subscription: + description: > + Link to the related subscription. + $ref: "SOL005_def.yaml#/definitions/Link" + alarms: + description: > + Link to the alarm list, i.e. the "Alarms" resource. + $ref: "SOL005_def.yaml#/definitions/Link" + + AlarmModifications: + description: > + This type represents attribute modifications for an "Individual alarm" resource, i.e. modifications to a resource + representation based on the "Alarm" data type. The attributes of "Alarm" that can be modified according to the + provisions in clause 8.5.2.4 are included in the "AlarmModifications" data type. + The "AlarmModifications" data type shall comply with the provisions defined in Table 8.5.2.8-1. + type: object + required: + - ackState + properties: + ackState: + description: > + New value of the "ackState" attribute in "Alarm". + Permitted values: + * ACKNOWLEDGED + type: string + enum: + - ACKNOWLEDGED + EventType: + description: > + The enumeration EventType represents those types of events that trigger + an alarm. + * COMMUNICATIONS_ALARM: An alarm of this type is associated with the + procedure and/or process required conveying information from one point + to another (ITU-T Recommendation X.733). + * PROCESSING_ERROR_ALARM: An alarm of this type is associated with a + software or processing fault (ITU-T Recommendation X.733). + * ENVIRONMENTAL_ALARM: An alarm of this type is associated with a + condition related to an enclosure in which the equipment resides + (ITU-T Recommendation X.733). + * QOS_ALARM: An alarm of this type is associated with degradation in the + quality of a service (ITU-T Recommendation X.733). + * EQUIPMENT_ALARM: An alarm of this type is associated with an equipment + fault (ITU-T Recommendation X.733). + type: string + enum: + - COMMUNICATIONS_ALARM + - PROCESSING_ERROR_ALARM + - ENVIRONMENTAL_ALARM + - QOS_ALARM + - EQUIPMENT_ALARM + + FaultyResourceInfo: + description: > + This type represents the faulty virtual resources that have a negative impact on a NS. + type: object + required: + - faultyResource + - faultyResourceType + properties: + faultyResource: + description: > + Information that identifies the faulty resource instance and + its managing entity. + $ref: "SOL005_def.yaml#/definitions/ResourceHandle" + faultyResourceType: + description: > + Type of the faulty resource. + $ref: "#/definitions/FaultyResourceType" + + FaultyResourceType: + description: > + The enumeration FaultyResourceType represents those types of faulty + resource. + type: string + enum: + - COMPUTE + - STORAGE + - NETWORK + + FmNotificationsFilter: + description: > + This type represents a subscription filter related to notifications about NS faults. + It shall comply with the provisions + defined in Table 8.5.3.2-1. + 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).. + type: object + properties: + nsInstanceSubscriptionFilter: + description: > + Filter criteria to select NS instances about which to notify. + $ref: "SOL005_def.yaml#/definitions/NsInstanceSubscriptionFilter" + notificationTypes: + description: > + Match particular notification types. + Permitted values: + AlarmNotification + AlarmClearedNotification + AlarmListRebuiltNotification. + type: array + items: + type: string + enum: + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + faultyResourceTypes: + description: > + Match alarms related to NSs with a faulty resource type listed in this attribute. + type: array + items: + $ref: "#/definitions/FaultyResourceType" + perceivedSeverities: + description: > + Match VNF alarms with a perceived severity listed in this attribute. + type: array + items: + $ref: "#/definitions/PerceivedSeverityType" + eventTypes: + description: > + Match VNF alarms with an event type listed in this attribute. + type: array + items: + $ref: "#/definitions/EventType" + probableCauses: + description: > + Match VNF alarms with a probable cause listed in this attribute. + type: array + items: + type: string + + FmSubscription: + description: > + This type represents a subscription related to notifications about VNF + faults. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: > + Identifier of this subscription resource. + $ref: "SOL005_def.yaml#/definitions/Identifier" + filter: + description: > + Filter settings for this subscription, to define the subset of all + notifications this subscription relates to. A particular + notification is sent to the subscriber if the filter matches, or if + there is no filter. + $ref: "#/definitions/FmNotificationsFilter" + callbackUri: + description: > + The URI of the endpoint to send the notification to. + type: string + format: url + _links: + description: > + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: "SOL005_def.yaml#/definitions/Link" + + FmSubscriptionRequest: + description: > + This type represents a subscription request related to notifications + about VNF faults. + type: object + required: + - callbackUri + properties: + filter: + description: > + Filter settings for this subscription, to define the subset of all + notifications this subscription relates to. A particular + notification is sent to the subscriber if the filter matches, or if + there is no filter. + $ref: "#/definitions/FmNotificationsFilter" + callbackUri: + description: > + The URI of the endpoint to send the notification to. + type: string + format: url + authentication: + description: > + Authentication parameters to configure the use of Authorization when + sending notifications corresponding to this subscription. + This attribute shall only be present if the subscriber requires + authorization of notifications. + $ref: "SOL005_def.yaml#/definitions/SubscriptionAuthentication" + + PerceivedSeverityType: + description: > + Indicates the relative level of urgency for operator attention. + * CRITICAL: The Critical severity level indicates that a service + affecting condition has occurred and an immediate corrective action + is required. Such a severity can be reported, for example, when a + managed object becomes totally out of service and its capability needs + to be restored (ITU-T Recommendation X.733). + * MAJOR: The Major severity level indicates that a service affecting + condition has developed and an urgent corrective action is required. + Such a severity can be reported, for example, when there is a severe + degradation in the capability of the managed object and its full + capability needs to be restored (ITU-T Recommendation X.733). + * MINOR: The Minor severity level indicates the existence of a + non-service affecting fault condition and that corrective action + should be taken in order to prevent a more serious (for example, + service affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently degrading + the capacity of the managed object (ITU-T Recommendation X.733). + * WARNING: The Warning severity level indicates the detection of a + potential or impending service affecting fault, before any significant + effects have been felt. Action should be taken to further diagnose (if + necessary) and correct the problem in order to prevent it from + becoming a more serious service affecting fault (ITU-T Recommendation + X.733). + * INDETERMINATE: The Indeterminate severity level indicates that the + severity level cannot be determined (ITU-T Recommendation X.733). + * CLEARED: The Cleared severity level indicates the clearing of one or + more previously reported alarms. This alarm clears all alarms for this + managed object that have the same Alarm type, Probable cause and + Specific problems (if given) (ITU-T Recommendation X.733). + type: string + enum: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - INDETERMINATE + - CLEARED + + FaultyComponentInfo: + description: > + This type represents the faulty component that has a negative impact on an NS. + It shall comply with the provisions + defined in Table 8.5.3.4-1. + type: object + properties: + faultyNestedNsInstanceId: + description: > + Identifier of the faulty nested NS instance. + $ref: "SOL005_def.yaml#/definitions/Identifier" + faultyResourceType: + description: > + Identifier of the faulty NS virtual link instance. + $ref: "SOL005_def.yaml#/definitions/Identifier" + faultyNsVirtualLinkInstanceId: + description: > + Identifier of the faulty VNF instance. + $ref: "SOL005_def.yaml#/definitions/Identifier" + + AlarmNotification: + description: > + This type represents an alarm notification about NS faults. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - alarm + - _links + properties: + id: + 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. + $ref: "SOL005_def.yaml#/definitions/Identifier" + notificationType: + description: > + Discriminator for the different notification types. + Shall be set to "AlarmNotification" for this notification type. + type: string + enum: + - AlarmClearedNotification + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: "SOL005_def.yaml#/definitions/Identifier" + timeStamp: + description: > + Date-time of the generation of the notification. + $ref: "SOL005_def.yaml#/definitions/DateTime" + alarm: + description: > + Information about an alarm including AlarmId, affected + NS identifier, and FaultDetails. + $ref: "#/definitions/Alarm" + alarmClearedTime: + description: > + The time stamp indicating when the alarm was cleared. + _links: + description: > + Links to resources related to this notification. + type: object + required: + - subscription + - alarm + properties: + subscription: + description: > + Link to the related subscription. + $ref: "SOL005_def.yaml#/definitions/Link" + alarm: + description: > + Link to the resource that represents the related alarm. + $ref: "SOL005_def.yaml#/definitions/Link" \ No newline at end of file diff --git a/src/SOL005/NSFaultManagement/definitions/SOL005_def.yaml b/src/SOL005/NSFaultManagement/definitions/SOL005_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..01d05573dffb4ee482d77f3aef538d6dff2c67ca --- /dev/null +++ b/src/SOL005/NSFaultManagement/definitions/SOL005_def.yaml @@ -0,0 +1,264 @@ + definitions: + Identifier: + description: > + An identifier with the intention of being globally unique. + type: string + DateTime: + description: > + Date-time stamp. + Representation: String formatted according to IETF RFC 3339. + type: string + format: "date-time" + ProblemDetails: + #SOL005 location: 4.3.5.3-1 + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced in this structure. Compared to the + general framework defined in IETF RFC 7807 [19], 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 [19] 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. + The description column only provides some explanation of the meaning to + Facilitate understanding of the design. For a full description, see + IETF RFC 7807 [19]. + type: object + required: + - statussss + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies the + problem type. It is encouraged that the URI provides human-readable + documentation for the problem (e.g. using HTML) when dereferenced. + When this member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + 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. + 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 (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by the origin + server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of the + problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + ResourceHandle: + required: + - vimId + - resourceId + type: object + description: > + This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by + an NS instance. Information about the resource is available from the VIM. The ResourceHandle type shall comply with + the provisions defined in Table 6.5.3.54-1.. + properties: + vimConnectionId: + description: > + Identifier of the VIM connection to manage the resource. This + attribute shall only be supported and present if VNF-related resource + management in direct mode is applicable. The applicable + "VimConnectionInfo" structure, which is referenced by + vimConnectionId, can be obtained from the "vimConnectionInfo" + attribute of the "VnfInstance" structure. + $ref: "#/definitions/Identifier" + resourceProviderId: + description: > + Identifier of the entity responsible for the management of + the resource. This attribute shall only be supported and present when + VNF-related resource management in indirect mode is + applicable. The identification scheme is outside the + scope of the present document. + $ref: "#/definitions/Identifier" + resourceId: + description: > + Identifier of the resource in the scope of the VIM or the + resource provider. + $ref: "#/definitions/IdentifierInVim" + vimLevelResourceType: + description: > + Type of the resource in the scope of the VIM or the + resource provider. + type: string + + IdentifierInVim: + description: > + An identifier maintained by the VIM or other resource provider. It is + expected to be unique within the VIM instance. + type: string + + Link: + description: > + This type represents a link to a resource. + type: object + required: + - href + properties: + href: + description: > + URI of the referenced resource. + type: string + format: url + + SubscriptionAuthentication: + description: > + Authentication parameters to conFigure the use of + Authorization when sendingnotifications corresponding to + this subscription, as defined in clause 4.5.3.4. + This attribute shall only be present if the subscriber + requires authorization of notifications. + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the API + consumer is willing to accept when receiving a notification. + Permitted values: + * BASIC: In every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + 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. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + 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. + type: object + properties: + clientId: + 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. + The clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are used + to obtain authorization for API requests. Client credentials may + differ between subscriptions. The value of clientPassword should + be generated by a random process. + type: string + clientPassword: + description: > + Client password 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. + The clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are used + to obtain authorization for API requests. Client credentials may + differ between subscriptions. The value of clientPassword should + be generated by a random process. + type: string + tokenEndpoint: + description: > + The token endpoint from which the access token can be obtained. + Shall be present if it has not been provisioned out of band. + $ref: "#/definitions/Uri" + Uri: + description: > + String formatted according to IETF RFC 3986. + type: string + + NsInstanceSubscriptionFilter: + required: + - nsdIds + - vnfdIds + - pnfdIds + - nsInstanceIds + type: object + description: > + This type represents subscription filter criteria to match NS instances. + It shall comply with the provisions defined in Table 4.4.1.5-1. + properties: + nsdIds: + description: > + If present, match NS instances that were created + based on a NSD identified by one of the nsdId + values listed in this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + vnfdIds: + description: > + If present, match NS instances that contain VNF + instances that were created based on a VNFD + identified by one of the vnfdId values listed in + this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + pnfdIds: + description: > + If present, match NS instances that contain + PNFs that are represented by a PNFD identified + by one of the pnfdId values listed in this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + nsInstanceIds: + description: > + If present, match NS instances with an instance + dentifier listed in this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + nsInstanceNames: + description: > + If present, match NS instances with a NS + Instance Name listed in this attribute. + type: string \ No newline at end of file diff --git a/src/SOL005/NSFaultManagement/responses/NSFManagement_resp.yaml b/src/SOL005/NSFaultManagement/responses/NSFManagement_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5bb238ad03360c21208096a91d800310c4a2015b --- /dev/null +++ b/src/SOL005/NSFaultManagement/responses/NSFManagement_resp.yaml @@ -0,0 +1,29 @@ +responses: + 409-alarm-state-conflict: + description: > + Conflict + + Error: The operation cannot be executed currently, due + to a conflict with the state of the "Individual alarm" resource. + Typically, this is due to the fact that the alarm is already + in the state that is requested to be set (such as trying to + acknowledge an already-acknowledged alarm). + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL005/NSFaultManagement/responses/SOL005_resp.yaml b/src/SOL005/NSFaultManagement/responses/SOL005_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cf3f203aa9d78da58308921bd9475db99b212841 --- /dev/null +++ b/src/SOL005/NSFaultManagement/responses/SOL005_resp.yaml @@ -0,0 +1,195 @@ + # Copyright (c) ETSI 2017. + # https://forge.etsi.org/etsi-forge-copyright-notice.txt + responses: + 303: + description: > + See Other + + 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 HTTP response shall include a "Location" HTTP + eader that contains the resource URI of the existing + subscription resource. + The response body shall be empty. + 400: + description: > + Bad Request + + Error: Invalid attribute-based filtering parameters. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 400-attr-based-filtering-error: + description: > + Bad Request + Invalid attribute-based filtering parameters or Invalid attribute + selector. + It the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or a syntactically + incorrect payload body), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and should include in the "detail" attribute more information about + the source of the problem. + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall + be returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code.The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 401: + description: > + Unauthorized. + If the request contains no access token even though one is + required, or if the request contains an authorization token that + is invalid (e.g. expired or revoked), the API producer should + respond with this response. The details of the error shall be + returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails + structure may be provided. + headers: + Content-Type: + type: string + description: The MIME type of the body of the response. + 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. + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 403: + description: > + Forbidden + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. + It should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 405: + description: > + Method Not Allowed + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted in that case. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 406: + 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. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 412: + description: > + Precondition Failed. + + Error: A precondition given in an HTTP request header + is not fulfilled. + Typically, this is due to an ETag mismatch, indicating + that the resource was modified by another entity. + The response body should contain a ProblemDetails + structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 500: + description: > + Internal Server Error + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code + ("catch all error"), the API producer shall respond withthis + response code. The ProblemDetails structure shall be provided, + and shall include in the "detail" attribute more information about + the source of the problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 503: + description: > + Service Unavailable + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 [13] for + the use of the Retry-After HTTP header and for the alternative + to refuse the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml b/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml index d8ad0f13cb74e5ba062543f13365bb993b207ecd..ee21ed117a802fd386de161b03cbe2e79a53c21f 100644 --- a/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml +++ b/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml @@ -19,14 +19,12 @@ externalDocs: description: ETSI GS NFV-SOL 005 V2.4.1 url: http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.04.01_60/gs_NFV-SOL005v020401p.pdf basePath: "/nslcm/v1" - schemes: - https consumes: - "application/json" produces: - - "application/json" - + - "application/json" paths: ############################################################################### # NSInstances # @@ -68,7 +66,7 @@ paths: responses: 201: description: > - 201 Created + 201 Created. A NS Instance identifier was created successfully. The response body shall contain a representation of @@ -119,7 +117,7 @@ paths: get: summary: "NS instances" description: > - Query NS Instances + Query NS Instances. The GET method queries information about multiple NS instances. This method shall support the URI query parameters, request and response data structures, and response codes, as @@ -239,7 +237,6 @@ paths: ############################################################################### '/ns_instances/{nsInstanceId}': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.3 - summary: "Read an individual NS instance resource" parameters: - name: nsInstanceId description: > @@ -276,9 +273,7 @@ paths: type: string responses: 200: - description: > - 200 OK - + description: > Information about an individual NS instance was queried successfully. The response body shall contain a representation of @@ -421,8 +416,6 @@ paths: responses: 202: description: > - 202 Accepted - The request was accepted for processing, but the processing has not been completed. The response body shall be empty. @@ -430,19 +423,6 @@ paths: header that contains the URI of the newly-created "NS LCM operation occurrence" resource corresponding to the operation. - headers: - Location: - description: The resource URI of the created VNF instance - type: string - format: url - WWW-Authenticate: - 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. - type: string - maximum: 1 - minimum: 0 400: $ref: "responses/SOL005_resp.yaml#/responses/400" 401: @@ -469,16 +449,6 @@ paths: ############################################################################### '/ns_instances/{nsInstanceId}/scale': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.5 - description: > - This task resource represents the "Scale NS" operation. The client can use this resource to request to scale a NS - instance. Scaling an NS instance can be performed by explicitly adding/removing existing VNF instances to/from the - NS instance, by leveraging on the abstraction mechanism provided by the NS scaling aspects and NS levels information - elements declared in the NSD or by scaling individual VNF instances that are part of the NS itself. When adding VNFs - and nested NSs - already existing or not - to the NS to be scaled, the NFVO shall follow the indications provided by the - dependencies attribute, as specified in the corresponding NSD. - - In case the NS is a composite NS, it is also possible to scale directly its nested NS, as they are also NS - and thus indirectly effectively scale the composite NS parameters: - name: nsInstanceId description: > @@ -487,7 +457,6 @@ paths: type: string required: true post: - #SOL005v020401p location: 6.4.5.2 summary: Scale NS task. description: > The POST method requests to scale a NS instance resource. @@ -546,9 +515,6 @@ paths: ############################################################################### '/ns_instances/{nsInstanceId}/update': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.6 - description: > - This task resource represents the "Update NS" operation. - The client can use this resource to update a NS instance. parameters: - name: nsInstanceId description: > @@ -616,9 +582,6 @@ paths: ############################################################################### '/ns_instances/{nsInstanceId}/heal': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.7 - description: > - This task resource represents the "Heal NS" operation. - The client can use this resource to request healing a NS instance parameters: - name: nsInstanceId description: > @@ -629,7 +592,7 @@ paths: post: summary: Heal NS task. description: > - Heal NS + Heal NS. The POST method requests to heal a NS instance resource. This method shall follow the provisions specified in the Tables 6.4.7.3.1-1 and @@ -690,9 +653,6 @@ paths: ############################################################################### '/ns_instances/{nsInstanceId}/terminate': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.8 - description: > - This task resource represents the "Terminate NS" operation. - The client can use this resource to terminate a NS instance. parameters: - name: nsInstanceId description: > @@ -703,7 +663,7 @@ paths: post: summary: Terminate NS task description: > - Terminate NS task + Terminate NS task. The POST method terminates a NS instance. This method can only be used with a NS instance in the INSTANTIATED state. Terminating a NS instance does not delete the NS instance identifier, @@ -766,14 +726,10 @@ paths: ############################################################################### '/ns_lcm_op_occs': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.9 - description: > - This resource represents NS lifecycle management operation occurrences. - The client can use this resource to query - status information about multiple NS lifecycle management operation occurrences. get: summary: NS lifecycle operation occurrences. description: > - Get Operation Status + Get Operation Status. The client can use this method to query status information about multiple NS lifecycle management operation occurrences. This method shall follow the provisions specified in the Tables 6.4.9.3.2-1 and 6.4.9.3.2-2 for URI query parameters, @@ -788,7 +744,7 @@ paths: The NFVO shall support receiving filtering parameters as part of the URI query string. The OSS/BSS may supply an attribute filter. All attribute names that appear in the NsLcmOpOcc and in data types referenced - from it shall be supported in filtering parameters.. + from it shall be supported in filtering parameters. - name: "fields" in: "query" required: false @@ -820,9 +776,9 @@ paths: description: > Content-Types that are acceptable for the response. Reference: IETF RFC 7231 - in: header - required: true - type: string + in: header + required: true + type: string - name: Authorization description: > The authorization token for the request. @@ -833,7 +789,6 @@ paths: responses: 200: description: > - 200 OK Status information for zero or more NS lifecycle management operation occurrences was queried successfully. @@ -857,8 +812,7 @@ paths: schema: type: array items: - $ref: "definitions/NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc" - + $ref: "definitions/NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc" 400: $ref: "responses/SOL005_resp.yaml#/responses/400" 401: @@ -882,16 +836,7 @@ paths: # Individual NS lifecycle operation occurrence # ############################################################################### '/ns_lcm_op_occs/{nsLcmOpOccId}': - #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.10 - description: > - This resource represents a NS lifecycle management operation occurrence. - The client can use this resource to read - information about a NS lifecycle management operation occurrence. - Further, the client can use task resources which are - children of this resource to request cancellation of an operation in progress, - and to request the handling of operation - errors via retrying the operation, rolling back the operation, - or permanently failing the operation. + #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.10 parameters: - name: nsLcmOpOccId description: > @@ -933,7 +878,6 @@ paths: responses: 200: description: > - 200 OK Information about an individual NS instance was queried successfully. The response body shall contain status information @@ -945,7 +889,7 @@ paths: type: string maximum: 1 minimum: 1 - WWW-Authenticate: + WWW-Authenticate: description: > Challenge if the corresponding HTTP request has not provided authorization, or error details if the corresponding HTTP @@ -954,7 +898,7 @@ paths: maximum: 1 minimum: 0 schema: - $ref: "definitions/NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc" + $ref: "definitions/NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc" 400: $ref: "responses/SOL005_resp.yaml#/responses/400" 401: @@ -981,10 +925,6 @@ paths: ############################################################################### '/ns_lcm_op_occs/{nsLcmOpOccId}/retry': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.11 - description: > - This task resource represents the "Retry operation" operation. - The client can use this resource to initiate retrying a NS - lifecycle management operation. parameters: - name: nsLcmOpOccId description: > @@ -1040,9 +980,6 @@ paths: ############################################################################### '/ns_lcm_op_occs/{nsLcmOpOccId}/rollback': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.12 - description: > - This task resource represents the "Rollback operation" operation. - The client can use this resource to initiate rolling back a NS lifecycle management operation. parameters: - name: nsLcmOpOccId description: > @@ -1097,10 +1034,6 @@ paths: ############################################################################### '/ns_lcm_op_occs/{nsLcmOpOccId}/continue': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.13 - description: > - This task resource represents the "Continue operation" operation. - The client can use this resource to initiate continuing - an NS lifecycle management operation. parameters: - name: nsLcmOpOccId description: > @@ -1150,11 +1083,6 @@ paths: ############################################################################### '/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}/fail': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.14 - description: > - This task resource represents the "Fail operation" operation. The client can use this resource to mark a NS lifecycle - management operation occurrence as "finally failed", i.e. change the state of the related NS LCM operation occurrence - resource to "FAILED", if it is not assumed that a subsequent retry or rollback will succeed. Once the operation is - marked as "finally failed", it cannot be retried or rolled back anymore. parameters: - name: nsLcmOpOccId description: > @@ -1192,8 +1120,6 @@ paths: responses: 200: description: > - 200 OK - The state of the NS lifecycle management operation occurrence was changed successfully. The response shall include a representation of the NS @@ -1213,7 +1139,7 @@ paths: maximum: 1 minimum: 0 schema: - $ref: "definitions/NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc" + $ref: "definitions/NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc" 400: $ref: "responses/SOL005_resp.yaml#/responses/400" 401: @@ -1238,10 +1164,6 @@ paths: ############################################################################### '/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}/cancel': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.15 - description: > - This task resource represents the "Cancel operation" operation. - The client can use this resource to cancel an ongoing NS - lifecycle management operation. parameters: - name: nsLcmOpOccId description: > @@ -1299,7 +1221,7 @@ paths: $ref: "responses/SOL005_resp.yaml#/responses/406" 409: description: > - 409 Conflict + 409 Conflict. Error: The operation cannot be executed currently, due to a conflict with the state of the NS LCM operation @@ -1336,14 +1258,10 @@ paths: ############################################################################### '/subscriptions': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.16 - description: > - This resource represents subscriptions. - The client can use this resource to subscribe to notifications related to NS - lifecycle management, and to query its subscriptions. post: summary: Subscriptions description: > - Subscribe + Subscribe. The POST method creates a new subscription. This method shall support the URI query parameters, request and response data structures, and response codes, as @@ -1386,8 +1304,6 @@ paths: responses: 201: description: > - Created - The subscription was created successfully. The response body shall contain a representation of the created subscription resource. @@ -1416,8 +1332,8 @@ paths: $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription" 303: description: > - See Other - + See Other. + A subscription with the same callbackURI and the same filter already exits and the policy of the NFVO is to not create redundant subscriptions. @@ -1457,7 +1373,7 @@ paths: get: summary: Subscriptions description: > - Query Subscription Information + Query Subscription Information. The GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used e.g. for @@ -1480,8 +1396,6 @@ paths: responses: 200: description: > - OK - 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. @@ -1503,7 +1417,7 @@ paths: $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription" 400: description: > - Bad Request + Bad Request. Invalid attribute-based filtering parameters. The response body shall contain a ProblemDetails structure, in @@ -1545,10 +1459,6 @@ paths: ############################################################################### '/subscriptions/{subscriptionId}': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.17 - description: > - This resource represents an individual subscription. - It can be used by the client to read and to terminate a subscription to - Notifications related to NS lifecycle management. parameters: - name: subscriptionId description: > @@ -1579,9 +1489,7 @@ paths: type: string responses: 200: - description: > - 200 OK - + description: > The operation has completed successfully. The response body shall contain a representation of the subscription resource. @@ -1636,7 +1544,7 @@ paths: responses: 204: description: > - 204 No Content + 204 No Content. The subscription resource was deleted successfully. The response body shall be empty @@ -1672,15 +1580,13 @@ paths: ############################################################################### '/notification_endpoint': #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.18 - description: > - This resource represents a notification endpoint. The server can use this resource to send notifications to a subscribed - client, which has provided the URI of this resource during the subscription process. post: summary: Notification endpoint. description: > The POST method delivers a notification from the server to the client. This method shall support the URI query parameters, request and response data structures, and response codes, as specified in the Tables 6.4.18.3.1-1 and 6.4.18.3.1-2. + # Don't know how to pass multiple body parameters. parameters: - name: nsLcmOperationOccurrenceNotification description: > @@ -1690,22 +1596,22 @@ paths: required: true schema: $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOperationOccurrenceNotification" - - name: nsIdentifierCreationNotification - description: > - A notification about the creation of a NS identifier and the related - NS instance resource. - in: body - required: true - schema: - $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsIdentifierCreationNotification" - - name: nsIdentifierDeletionNotification - description: > - A notification about the deletion of a NS identifier and the related - NS instance resource. - in: body - required: true - schema: - $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsIdentifierDeletionNotification" + #- name: nsIdentifierCreationNotification + # description: > + # A notification about the creation of a NS identifier and the related + # NS instance resource. + # in: body + # required: true + # schema: + # $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsIdentifierCreationNotification" + #- name: nsIdentifierDeletionNotification + # description: > + # A notification about the deletion of a NS identifier and the related + # NS instance resource. + # in: body + # required: true + # schema: + # $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsIdentifierDeletionNotification" - name: Accept description: > Content-Types that are acceptable for the response. @@ -1774,7 +1680,7 @@ paths: get: summary: Notification endpoint. description: > - Query NS Instances + Query NS Instances. The GET method queries information about multiple NS instances. This method shall support the URI query parameters, request and response data structures, and response codes, as @@ -1797,26 +1703,21 @@ paths: responses: 200: description: > - OK Multiple NS instances was queried successfully. + schema: + type: array + items: + $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance" headers: Content-Type: description: The MIME type of the body of the response. type: string - maximum: 1 - minimum: 1 WWW-Authenticate: 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. type: string - maximum: 1 - minimum: 0 - schema: - type: array - items: - $ref: "definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance" 400: $ref: "responses/SOL005_resp.yaml#/responses/400-attr-selector" 401: diff --git a/src/SOL005/NSLifecycleManagement/definitions/NSLifecycleManagement_def.yaml b/src/SOL005/NSLifecycleManagement/definitions/NSLifecycleManagement_def.yaml index 622ab54d14d2950a4380cc504f937813cef6525e..633135a4549193957e4cce3e7472eccc7aa8d395 100644 --- a/src/SOL005/NSLifecycleManagement/definitions/NSLifecycleManagement_def.yaml +++ b/src/SOL005/NSLifecycleManagement/definitions/NSLifecycleManagement_def.yaml @@ -1,6 +1,5 @@ -# Copyright (c) ETSI 2017 +# Copyright (c) ETSI 2017. # https://forge.etsi.org/etsi-forge-copyright-notice.txt - definitions: HealNsRequest: description: > @@ -38,6 +37,7 @@ definitions: - isAutomaticInvocation - operationParams - isCancelPending + - _links properties: id: description: > @@ -86,7 +86,13 @@ definitions: - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest - $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + type: string + enum: + - INSTANTIATE + - SCALE + - UPDATE + - HEAL + - TERMINATE isCancelPending: description: > If the LCM operation occurrence is in "PROCESSING" @@ -106,7 +112,7 @@ definitions: "operationState" was "FAILED_TEMP", this attribute shall be present and contain error information, unless it has been requested to be excluded via an attribute selector. - $ref: "SOL005_def.yaml#/definitions/ProblemDetails" + $ref: "#/definitions/ProblemDetails" resourceChanges: description: > This attribute contains information about the cumulative @@ -118,7 +124,7 @@ definitions: description: > Information about the VNF instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation.. + represents the result of a lifecycle operation. type: array items: $ref: "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf" @@ -166,6 +172,9 @@ definitions: description: > Links to resources related to this resource. type: object + required: + - self + - nsInstance properties: self: description: > @@ -325,4 +334,61 @@ definitions: Timestamp indicating the end time of the NS, i.e. the NS will be terminated automatically at this timestamp. Cardinality "0" indicates the NS termination takes place immediately - $ref: "SOL005_def.yaml#/definitions/DateTime" \ No newline at end of file + $ref: "SOL005_def.yaml#/definitions/DateTime" + + ProblemDetails: + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], 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 [19] 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. + The description column only provides some explanation of the meaning to + Facilitate understanding of the design. For a full description, see + IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies the + problem type. It is encouraged that the URI provides human-readable + documentation for the problem (e.g. using HTML) when dereferenced. + When this member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + 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. + 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 (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by the origin + server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of the + problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI \ No newline at end of file diff --git a/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml b/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml index 97c444eda8113a10c42553048b70d450dd154079..2c2aea5c38a3969b69e31e40b7b304eb0b4181e4 100644 --- a/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml +++ b/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml @@ -1,4 +1,4 @@ -# Copyright (c) ETSI 2017 +# Copyright (c) ETSI 2017. # https://forge.etsi.org/etsi-forge-copyright-notice.txt definitions: CreateNsRequest: @@ -118,11 +118,10 @@ definitions: applicable DF, how "big" the NS instance has been scaled w.r.t. that aspect. This attribute shall be present if the nsState attribute - value is INSTANTIATED.. + value is INSTANTIATED. type: array items: - $ref: "#/definitions/NsScaleInfo" - + $ref: "#/definitions/NsScaleInfo" additionalAffinityOrAntiAffinityRule: description: > Information on the additional affinity or anti-affinity @@ -132,9 +131,8 @@ definitions: items: $ref: "#/definitions/AffinityOrAntiAffinityRule" _links: - description: > - Links to resources related to this resource. type: object + description: Links to resources related to this resource. required: - self properties: @@ -185,7 +183,7 @@ definitions: instance resource (i.e. NS instance is in INSTANTIATED state). $ref: "SOL005_def.yaml#/definitions/Link" - + VnfInstance: description: > This type represents a VNF instance. @@ -950,17 +948,17 @@ definitions: value: description: > Value of the monitoring parameter known to the VNFM (e.g. obtained - for autoscaling purposes). + for auto-scaling purposes). The type of the "value" attribute (i.e. scalar, structure (Object in JSON), or array (of scalars, arrays or structures/Objects)) is assumed to be defined in an external measurement specification. type: object - timeStamp: - description: > - Represents the point in time when the measurement has been performed, - as known to the VNFM. - Should be formatted according to ETF RFC 3339. - type: string + timeStamp: + description: > + Represents the point in time when the measurement has been performed, + as known to the VNFM. + Should be formatted according to ETF RFC 3339. + type: string VnfcResourceInfo: description: > @@ -1463,7 +1461,7 @@ definitions: $ref: "SOL005_def.yaml#/definitions/DateTime" UpdateNsRequest: - summary: > + description: > This operation supports the update of a NS instance, It shall comply with the provisions defined in Table 6.5.2.12-1. type: object @@ -2411,26 +2409,25 @@ definitions: changedInfo: description: > Information about the changed VNF instance - information, including VNF configurable properties, if applicable. + information, including VNF configurable properties,if applicable. + When the "changedInfo" attribute is present, + either the "changedVnfInfo" attribute or the + "changedExtConnectivity" attribute or both shall be present. type: object required: - self properties: - description: > - When the "changedInfo" attribute is present, - either the "changedVnfInfo" attribute or the - "changedExtConnectivity" attribute or both shall be present - changedVnfInfo: - description: > - Information about the changed VNF instance - information, including configurable properties, - if applicable. - $ref: "#/definitions/ModifyVnfInfoData" - changedExtConnectivity: - description: > - Information about changed external connectivity, - if applicable. - $ref: "#/definitions/ExtVirtualLinkInfo" + changedVnfInfo: + description: > + Information about the changed VNF instance + information, including configurable properties, + if applicable. + $ref: "#/definitions/ModifyVnfInfoData" + changedExtConnectivity: + description: > + Information about changed external connectivity, + if applicable. + $ref: "#/definitions/ExtVirtualLinkInfo" AffectedPnf: description: > @@ -2918,7 +2915,7 @@ definitions: timestamp: description: > Date-time of the generation of the notification. - $ref: "#/definitions/DateTime" + $ref: "SOL005_def.yaml#/definitions/DateTime" notificationStatus: description: > Indicates whether this notification reports about the start @@ -2949,7 +2946,7 @@ definitions: description: > Information about the VNF instances that were affected during the lifecycle operation. - $ref: "SOL005_def.yaml#/definitions/AffectedVnf" + $ref: "#/definitions/AffectedVnf" affectedPnf: description: > Information about the PNF instances that were affected @@ -3011,7 +3008,7 @@ definitions: timestamp: description: > Date-time of the generation of the notification. - $ref: "#/definitions/DateTime" + $ref: "SOL005_def.yaml#/definitions/DateTime" nsInstanceId: description: > The created NS instance identifier @@ -3040,7 +3037,7 @@ definitions: timestamp: description: > Date-time of the generation of the notification. - $ref: "#/definitions/DateTime" + $ref: "SOL005_def.yaml#/definitions/DateTime" nsInstanceId: description: > The created NS instance identifier diff --git a/src/SOL005/NSLifecycleManagement/definitions/SOL005_def.yaml b/src/SOL005/NSLifecycleManagement/definitions/SOL005_def.yaml index 61b3ede4f7438c80e98fbe68a41a4149d72f61ce..5e4c1952a545d5d3267e65bc643d397326624bb7 100644 --- a/src/SOL005/NSLifecycleManagement/definitions/SOL005_def.yaml +++ b/src/SOL005/NSLifecycleManagement/definitions/SOL005_def.yaml @@ -1,4 +1,4 @@ -# Copyright (c) ETSI 2017 +# Copyright (c) ETSI 2017. # https://forge.etsi.org/etsi-forge-copyright-notice.txt definitions: Identifier: diff --git a/src/SOL005/NSLifecycleManagement/responses/NSLifecycleManagement_resp.yaml b/src/SOL005/NSLifecycleManagement/responses/NSLifecycleManagement_resp.yaml index 89a62a5c838b85aaf9a065fd1070d8b15e0c31ad..fd1afe62e542584ea20d0c9c6aa37b2b066bbca3 100644 --- a/src/SOL005/NSLifecycleManagement/responses/NSLifecycleManagement_resp.yaml +++ b/src/SOL005/NSLifecycleManagement/responses/NSLifecycleManagement_resp.yaml @@ -22,7 +22,7 @@ maximum: 1 minimum: 1 Location: - description: The resource URI of the created NS instance. + description: The resource URI of the created NS instance type: string format: url WWW-Authenticate: diff --git a/src/SOL005/NSLifecycleManagement/responses/SOL005_resp.yaml b/src/SOL005/NSLifecycleManagement/responses/SOL005_resp.yaml index 59992fb9b0650de3face733143254d893c1a3bee..cbcd81ac476facc7ee94d2fb7cd99befbe1a6dd0 100644 --- a/src/SOL005/NSLifecycleManagement/responses/SOL005_resp.yaml +++ b/src/SOL005/NSLifecycleManagement/responses/SOL005_resp.yaml @@ -50,7 +50,6 @@ 303: description: > See Other - A subscription with the same callbackURI and the same filter already exists and the policy of the VNFM is to not create redundant subscriptions. @@ -151,18 +150,14 @@ structure may be provided. headers: Content-Type: - description: The MIME type of the body of the response. type: string - maximum: 1 - minimum: 1 + description: The MIME type of the body of the response. WWW-Authenticate: - 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. - type: string - maximum: 1 - minimum: 0 + 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. schema: $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" 403: diff --git a/src/SOL005/NSPerformanceManagement/NSperformanceManagement.yaml b/src/SOL005/NSPerformanceManagement/NSperformanceManagement.yaml index f043ac9bad8b778c509930fa14b95cf72d09b4a1..ebe5e68f75b3a10bcc789259974d07406bddc7b7 100644 --- a/src/SOL005/NSPerformanceManagement/NSperformanceManagement.yaml +++ b/src/SOL005/NSPerformanceManagement/NSperformanceManagement.yaml @@ -18,6 +18,7 @@ info: externalDocs: description: ETSI GS NFV-SOL 005 V2.4.1 url: http://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.04.01_60/gs_NFV-SOL005v020401p.pdf + basePath: "/nspm/v1" schemes: @@ -27,10 +28,1010 @@ consumes: - "application/json" produces: - "application/json" - + paths: - /resource: +############################################################################### +# PM Jobs # +############################################################################### + '/pm_jobs': + #ETSI GS NFV-SOL 005 V2.4.1 location: 7.4.2 + post: + summary: "PM Jobs" + description: > + "This resource represents PM jobs. The client can use this resource to create and query PM jobs. + The POST method creates a PM job. This method shall follow the provisions specified in the + Tables 7.4.2.3.1-1 and 7.4.2.3.1-2 for URI query parameters, + request and response data structures, and response codes." + parameters: + - name: CreatePmJobRequest + description: "The NS Instance creation parameters." + in: body + required: true + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/CreatePmJobRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 201: + description: > + "201 Created." + + "The PM job was created successfully. + The response body shall contain a representation of + the created PM job resource, as defined in + clause 7.5.2.7. + The HTTP response shall include a "Location" HTTP + header that points to the created PM job resource." + schema: + description: > + "Information of the selected VNF packages." + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmJob" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + + get: + summary: "PM Jobs" + description: > + "The client can use this method to retrieve information about PM jobs" + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query string. + The OSS/BSS may supply filtering parameters. + All attribute names that appear in the PmJob and in data types referenced from it + shall be supported in attribute-based filtering parameters" + - 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: "include" + in: "query" + required: false + type: "string" + description: > + "Complex attributes to be included into the response. See clause 4.3.3 for details. The + NFVO should support this parameter" + - name: "exclude" + in: "query" + required: false + type: "string" + description: > + "Complex attributes to be excluded from the response. See clause 4.3.3 for details. + The NFVO should support this parameter." + - name: "exclude_default" + in: "query" + required: false + type: "string" + description: > + "Indicates to exclude the following complex attributes from the response. + See clause 4.3.3 for details. The NFVO shall support this parameter. + The following attributes shall be excluded from the PmJob structure in the response + body if this parameter is provided, or none of the parameters "all_fields," "fields", + "exclude_fields", "exclude_default" are provided: + reports." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 201: + description: > + "201 OK." + + "Information about zero or more PM jobs was queried successfully. + The response body shall contain representations of + zero or more PM jobs, as defined in clause 7.5.2.7." + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmJob" + 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." + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400-attr-based-filtering-error" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Individual PM job # +############################################################################### + '/pm_jobs/{pmJobId}': + #ETSI GS NFV-SOL 005 V2.4.1 location: 7.4.3 + parameters: + - name: pmJobId + description: > + Identifier of the PM job. + in: path + type: string + required: true + get: + summary: Individual PM job + description: > + The client can use this method for reading an individual PM job. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 200: + description: > + 200 OK. + + Information about an individual PM job was queried successfully. + The response body shall contain a representation of the PM job + resource. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmJob" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + delete: + summary: Individual PM job + description: > + This method terminates an individual PM job. + parameters: + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 204: + description: > + 204 No Content. + + The PM job was deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Individual performance report # +############################################################################### + '/pm_jobs/{pmJobId}/reports/{reportId}': + #ETSI GS NFV-SOL 005 V2.4.1 location: 7.4.4 + parameters: + - name: pmJobId + description: > + Identifier of the PM job. + in: path + type: string + required: true + - name: reportId + description: > + Identifier of the performance report. + in: path + type: string + required: true + get: + summary: Individual performance report + description: > + The client can use this method for reading an individual performance + report. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 200: + description: > + Information of an individual performance report was read + successfully. + The response body shall contain a representation of the + performance report resource. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/NSPerfomananceManagement_def.yaml#/definitions/PerformanceReport" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Thresholds # +############################################################################### + '/thresholds': + #ETSI GS NFV-SOL 005 V2.4.1 location: 6.4.5 + post: + summary: Thresholds + description: > + This resource represents thresholds. + The client can use this resource to create and query thresholds. + The POST method can be used by the client to create a threshold + parameters: + - name: CreateThresholdRequest + description: > + Request parameters to create a threshold resource. + in: body + required: true + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/CreateThresholdRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 201: + description: > + 201 - Created. + + A threshold was created successfully. + The response body shall contain a representation of + the created threshold resource, as defined in + clause 7.5.2.9. + The HTTP response shall include a "Location" HTTP + header that contains the resource URI of the created + threshold resource. + headers: + Location: + description: The resource URI of the created threshold instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/Threshold" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" get: + summary: Thresholds + description: > + The client can use this method to query information about thresholds. + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query string. + The OSS/BSS may supply filtering parameters. + All attribute names that appear in the Thresholds data type and in data types + referenced from it shall be supported in attribute-based filtering parameters." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string responses: 200: - description: Success \ No newline at end of file + description: > + 200 - OK. + + Information about zero or more thresholds was queried + successfully. + The response body shall contain representations of + zero or more thresholds, as defined in clause 7.5.2.9 + headers: + Location: + description: The resource URI of the created threshold instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + type: array + items: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/Threshold" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Individual threshold # +############################################################################### + '/thresholds/{thresholdId}': + #ETSI GS NFV-SOL 005 V2.4.1 location: 7.4.6 + parameters: + - name: thresholdId + description: > + Identifier of the threshold. + This identifier can be retrieved from the resource referenced by the + "Location" HTTP header in the response to a POST request creating a + new threshold resource. It can also be retrieved from the "id" + attribute in the payload body of that response. + in: path + type: string + required: true + get: + summary: Individual threshold + description: > + This resource represents an individual threshold. + The client can use this method for reading an individual threshold. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 200: + description: > + Information about an individual threshold was queried + successfully. The response body shall contain a + representation of the threshold. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/Threshold" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + delete: + summary: Individual threshold + description: > + This resource represents an individual threshold. + This method allows to delete a threshold. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 204: + description: > + 204 No Content. + The threshold was deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" +############################################################################### +# Subscriptions # +############################################################################### + '/subscriptions': + #ETSI GS NFV-SOL 005 V2.4.1 location: 7.4.7 + post: + summary: Subscriptions + description: > + The POST method creates a new subscription. + This method shall follow the provisions specified in the Tables 7.4.7.3.1-1 and 7.4.7.3.1-2 for URI query parameters, + request and response data structures, and response codes. + Creation of two subscription resources with the same callbackURI and + the same filter can result in performance degradation and will provide + duplicates of notifications to the OSS, and might make sense only in very rare use cases. + Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with the + same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), + or may decide to not create a duplicate subscription resource (in which case it shall return + a "303 See Other" response code referencing the existing subscription resource with the same filter and callbackUri). + parameters: + - name: PmSubscriptionRequest + description: > + Details of the subscription to be created. + in: body + required: true + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmSubscriptionRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 201: + description: > + 201 Created. + The subscription was created successfully. + A representation of the + created subscription resource shall be returned in the response body. + The HTTP response shall include a "Location" HTTP header that + contains the resource URI of the created subscription resource. + headers: + Location: + description: The resource URI of the created VNF instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmSubscription" + 303: + $ref: "responses/SOL005_resp.yaml#/responses/303" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + get: + summary: Subscriptions + description: > + The client can use this method to query the list of active + subscriptions to Performance management notifications subscribed by + the client. + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI + query string. The OSS/BSS may supply filtering parameters. + All attribute names that appear in the PmSubscription and in data types + referenced from it shall be supported in attribute-based filtering + parameters." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 200: + 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. + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + type: array + items: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmSubscription" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" +############################################################################### +# Individual subscription # +############################################################################### + '/subscriptions/{subscriptionId}': + #ETSI GS NFV-SOL 005 V2.4.1 location: 7.4.8 + parameters: + - name: subscriptionId + description: > + This identifier can be retrieved from the resource referenced by the + "Location" HTTP header in the response to a POST request creating a + new subscription resource. It can also be retrieved from the "id" + attribute in the payload body of that response. + in: path + type: string + required: true + get: + summary: Individual subscription + description: > + This resource represents an individual subscription for notifications about performance management related events. + The client can use this resource to read and to terminate a subscription to notifications related to NS performance + management. + The client can use this method for reading an individual subscription + about Performance management notifications subscribed by the client. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 200: + description: > + The subscription was read successfully. The response body shall + contain a representation of the subscription resource. + headers: + Content-Type: + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PmSubscription" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + delete: + summary: Individual subscription + description: > + This method terminates an individual subscription. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: true + type: string + responses: + 204: + description: > + The subscription resource was deleted successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Notification endpoint # +# "/notification_endpoint" is the # +# is the dummy URI used for testing, in real case endpoint URI has to # +# provided by client. # +############################################################################### + '/notification_endpoint': + #SOL005 location: 8.2-1 + post: + summary: > + Notification endpoint + description: > + This resource represents a notification endpoint for NS performance management. + The API producer can use this resource to send notifications related to + performance management events to a subscribed + API consumer, which has provided the URI of this resource during the subscription process. + + # Don't know how to pass multiple body parameters. + parameters: + - name: performanceInformationAvailableNotification + description: > + Notification about performance information availability. + in: body + required: true + schema: + $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/PerformanceInformationAvailableNotification" + #- name: thresholdCrossedNotification + # description: > + # Notification about threshold crossing + # in: body + # required: true + # schema: + # $ref: "definitions/SOL005NSPerfomananceManagement_def.yaml#/definitions/ThresholdCrossedNotification" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 204: + description: > + 204 - No Content. + + The notification was delivered successfully. + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + get: + summary: Notification endpoint. + description: > + The GET method allows the server to test the notification endpoint that is provided by the client, + e.g. during subscription. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 204: + description: > + The notification endpoint was tested successfully. + The response body shall be empty. + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" \ No newline at end of file diff --git a/src/SOL005/NSPerformanceManagement/definitions/NSPerfomananceManagement_def.yaml b/src/SOL005/NSPerformanceManagement/definitions/NSPerfomananceManagement_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8030980b9979da7fb480f0b3809e740cadba70a1 --- /dev/null +++ b/src/SOL005/NSPerformanceManagement/definitions/NSPerfomananceManagement_def.yaml @@ -0,0 +1,63 @@ +definitions: + PerformanceReport: + description: > + This type defines the format of a performance report provided by the + VNFM to the NFVO as a result of collecting performance information as + part of a PM job. + type: object + required: + - entries + properties: + entries: + description: > + List of performance information entries. Each performance report + entry is for a given metric of a given object (i.e. VNF instance), + but can include multiple collected values. + type: array + items: + type: object + required: + - objectType + - objectInstanceId + - performanceMetric + - performanceValue + properties: + objectType: + description: > + Defines the object type for which performance information is + reported (i.e. VNF type). The string value shall be set to the + vnfdId of the VNF instance to which the performance + information relates. + type: string + objectInstanceId: + description: > + The object instance (i.e. VNF instance) for which the + performance metric is reported. + $ref: "SOL005_def.yaml#/definitions/Identifier" + performanceMetric: + description: > + Name of the metric collected. + type: string + performanceValues: + description: > + List of performance values with associated timestamp. + type: array + items: + type: object + required: + - timeStamp + - performanceValue + properties: + timeStamp: + description: > + Time stamp indicating when the data was collected. + $ref: "SOL005_def.yaml#/definitions/DateTime" + value: + description: > + Value of the metric collected. + The type of the "value" attribute (i.e. scalar, + structure (Object in JSON), or array (of scalars, arrays + or structures / Objects)) is assumed to be defined in + the external measurement specification + (see ETSI GS NFV-IFA 027). + type: object \ No newline at end of file diff --git a/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerfomananceManagement_def.yaml b/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerfomananceManagement_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e2b3ab11ad023bb36e57617940f4b4c799d7dacf --- /dev/null +++ b/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerfomananceManagement_def.yaml @@ -0,0 +1,539 @@ +definitions: + CreatePmJobRequest: + description: > + This type represents a request to create a PM job. + It shall comply with the provisions defined in Table 7.5.2.6-1. + type: object + required: + - objectInstanceIds + - criteria + properties: + objectInstanceIds: + description: > + Identifiers of the NS instances for which + performance information is requested to be collected. + type: "array" + items: + $ref: "SOL005_def.yaml#/definitions/Identifier" + criteria: + description: > + Criteria of the collection of performance information. + $ref: "#/definitions/PmJobCriteria" + + PmJobCriteria: + description: > + This type represents collection criteria for PM jobs. + It shall comply with the provisions defined in Table 7.5.3.3-1. + type: object + required: + - collectionPeriod + - reportingPeriod + properties: + performanceMetric: + description: > + This defines the types of performance metrics + for the specified object instances. At least one + of the two attributes (performance metric or + group) shall be present. + type: "array" + items: + $ref: "SOL005_def.yaml#/definitions/String" + performanceMetricGroup: + description: > + Group of performance metrics. + A metric group is a pre-defined list of metrics, + known to the producer that it can decompose to + individual metrics. At least one of the two + attributes (performance metric or group) shall be present. + type: "array" + items: + $ref: "SOL005_def.yaml#/definitions/String" + collectionPeriod: + description: > + Specifies the periodicity at which the producer + will collect performance information. The unit + shall be seconds. See notes 1 and 2. + type: integer + reportingPeriod: + description: > + Specifies the periodicity at which the producer + will report to the consumer. + about performance information. The unit shall + be seconds. See notes 1 and 2. + type: integer + reportingBoundary: + description: > + Identifies a time boundary after which the + reporting will stop. The boundary shall allow a + single reporting as well as periodic reporting up + to the boundary. + $ref: "SOL005_def.yaml#/definitions/DateTime" + + PmJob: + description: > + This type represents a PM job. + type: object + required: + - id + - objectInstanceIds + - criteria + properties: + id: + description: > + Identifier of this PM job. + $ref: "SOL005_def.yaml#/definitions/Identifier" + objectInstanceIds: + description: > + Identifiers of the NS instances for which + performance information is collected. + type: array + items: + $ref: "SOL005_def.yaml#/definitions/Identifier" + criteria: + description: > + Criteria of the collection of performance information. + $ref: "#/definitions/PmJobCriteria" + reports: + description: > + Information about available reports collected by this PM job. + type: object + required: + - href + - readyTime + - _links + properties: + href: + description: > + The Uri where the report can be obtained. + $ref: "SOL005_def.yaml#/definitions/Uri" + readyTime: + description: > + The time when the report was made available. + $ref: "SOL005_def.yaml#/definitions/DateTime" + expiryTime: + description: > + The time when the report will expire. + $ref: "SOL005_def.yaml#/definitions/DateTime" + fileSize: + description: > + The size of the report file in bytes, if known. + type: integer + _links: + description: > + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: "SOL005_def.yaml#/definitions/Link" + objects: + description: > + Links to resources representing the VNF instances for which + performance information is collected. Shall be present if + the VNF instance information is accessible as a resource. + type: array + items: + $ref: "SOL005_def.yaml#/definitions/Link" + + CreateThresholdRequest: + description: > + This type represents a request to create a threshold. + type: object + required: + - objectInstanceId + - criteria + properties: + objectInstanceId: + description: > + Identifier of the VNF instance associated with this threshold. + $ref: "SOL005_def.yaml#/definitions/Identifier" + criteria: + description: > + Criteria that define this threshold. + $ref: "#/definitions/ThresholdCriteria" + + Threshold: + description: > + This type represents a threshold. + type: object + required: + - id + - objectInstanceId + - criteria + - _links + properties: + id: + description: > + Identifier of this threshold resource. + $ref: "SOL005_def.yaml#/definitions/Identifier" + objectInstanceId: + description: > + Identifier of the VNF instance associated with the threshold. + $ref: "SOL005_def.yaml#/definitions/Identifier" + criteria: + description: > + Criteria that define this threshold. + $ref: "#/definitions/ThresholdCriteria" + _links: + description: > + Links for this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: "SOL005_def.yaml#/definitions/Link" + object: + description: > + Link to a resource representing the VNF instance for which + performance information is collected. Shall be present if the + VNF instance information is accessible as a resource. + + ThresholdCriteria: + description: > + This type represents criteria that define a threshold. + type: object + required: + - performanceMetric + - thresholdType + properties: + performanceMetric: + description: > + Defines the performance metric associated with the + threshold, as specified in ETSI GS NFV-IFA 027). + type: string + thresholdType: + description: > + Type of threshold. This attribute determines which other attributes + are present in the data structure. + Permitted values: + * SIMPLE: Single-valued static threshold + In the present document, simple thresholds are defined. The + definition of additional threshold types is left for future + specification. + type: string + enum: + - SIMPLE + simpleThresholdDetails: + description: > + Details of a simple threshold. Shall be present if + thresholdType="SIMPLE". + type: object + required: + - thresholdValue + - hysteresis + properties: + thresholdValue: + description: > + The threshold value. Shall be represented as a floating point + number. + # TODO: This should be floating. + type: integer + hysteresis: + description: > + The hysteresis of the threshold. Shall be represented as a + non-negative floating point number. + A notification with crossing direction "UP" will be generated if + the measured value reaches or exceeds + "thresholdValue" + "hysteresis". A notification with crossing + direction "DOWN" will be generated if the measured value reaches + or undercuts "thresholdValue" - "hysteresis". + The hysteresis is defined to prevent storms of threshold + crossing notifications. When processing a request to create a + threshold, implementations should enforce a suitable minimum + value for this attribute (e.g. override the value or reject the + request). + # TODO: This should be floating. + type: integer + + PmSubscriptionRequest: + description: > + This type represents a subscription request. + type: object + required: + - callbackUri + properties: + filter: + description: > + Filter settings for this subscription, to define the subset of + all notifications this subscription relates to. A particular + notification is sent to the subscriber if the filter matches, + or if there is no filter. + $ref: "#/definitions/PmNotificationsFilter" + callbackUri: + description: > + The URI of the endpoint to send the notification to. + $ref: "SOL005_def.yaml#/definitions/Uri" + authentication: + description: > + Authentication parameters to conFigure the use of + Authorization when sending notifications corresponding + to this subscription, as defined in clause 4.5.3.4. + This attribute shall only be present if the subscriber + requires authorization of notifications.. + $ref: "SOL005_def.yaml#/definitions/SubscriptionAuthentication" + + PmNotificationsFilter: + description: > + This type represents a filter that can be used to subscribe for + notifications related to performance management events. It + shall comply with the provisions defined in Table 7.5.3.2-1. + 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). + type: object + properties: + nsInstanceSubscriptionFilter: + description: > + Filter criteria to select NS instances about which to notify. + $ref: "SOL005_def.yaml#/definitions/NSInstanceSubscriptionFilter" + notificationTypes: + description: > + Match particular notification types. + Permitted values: + * ThresholdCrossedNotification + * PerformanceInformationAvailableNotification + The permitted values of the "notificationTypes" attribute are + spelled exactly as the names of the notification types to facilitate + automated code generation systems. + type: array + items: + type: string + enum: + - ThresholdCrossedNotification + - PerformanceInformationAvailableNotification + PmSubscription: + description: > + This type represents a subscription. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: > + Identifier that identifies the subscription. + $ref: "SOL005_def.yaml#/definitions/Identifier" + filter: + description: > + Filter settings for this subscription, to define the subset of all + notifications this subscription relates to. A particular + notification is sent to the subscriber if the filter matches, or if + there is no filter. + $ref: "#/definitions/PmNotificationsFilter" + callbackUri: + description: > + The URI of the endpoint to send the notification to. + $ref: "SOL005_def.yaml#/definitions/Uri" + _links: + description: > + Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: "SOL005_def.yaml#/definitions/Link" + + Version: + description: > + Software version of the VNF. This is + changed when there is any change to the + software included in the VNF package. + This information is copied from the VNFD. + It shall be present after the VNF package + content has been on-boarded and absent otherwise. + type: string + + Checksum: + description: > + This type represents the checksum of a VNF package or an artifact file. + required: + - algorithm + - hash + type: object + properties: + algorithm: + description: > + Name of the algorithm used to generate the checksum, + as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512. + type: string + hash: + description: > + The hexadecimal value of the checksum. + type: string + Link: + type: "object" + + PerformanceInformationAvailableNotification: + description: > + This notification informs the receiver that performance information is available. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - _links + properties: + id: + 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. + $ref: "SOL005_def.yaml#/definitions/Identifier" + notificationType: + description: > + Discriminator for the different notification types. + Shall be set to + "PerformanceInformationAvailableNotification" + for this notification type. + type: string + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: "SOL005_def.yaml#/definitions/Identifier" + timeStamp: + description: > + Date and time of the generation of the notification. + $ref: "SOL005_def.yaml#/definitions/DateTime" + objectInstanceId: + description: > + Identifier that identifies a NS instance. + $ref: "SOL005_def.yaml#/definitions/Identifier" + _links: + description: > + Links to resources related to this notification. + type: object + required: + - subscription + - pmJob + - performanceReport + properties: + subscription: + description: > + Link to the related subscription. + $ref: "SOL005_def.yaml#/definitions/Link" + objectInstance: + description: > + Link to the resource representing the NS + instance to which the notified change applies. + Shall be present if the NS instance information + is accessible as a resource. + $ref: "SOL005_def.yaml#/definitions/Link" + pmJob: + description: > + Link to the resource that represents the PM job + for which performance information is available. + $ref: "SOL005_def.yaml#/definitions/Link" + performanceReport: + description: > + Link from which the available performance + information of data type "PerformanceReport" can be obtained. + This link should point to an "Individual performance report" resource. + $ref: "SOL005_def.yaml#/definitions/Link" + + ThresholdCrossedNotification: + description: > + This type represents a notification that is sent when a threshold has been crossed. + type: object + required: + - id + - notificationType + - subscriptionId + - timeStamp + - thresholdId + - crossingDirection + - objectInstanceId + - performanceMetric + - performanceValue + - _links + properties: + id: + 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.. + $ref: "SOL005_def.yaml#/definitions/Identifier" + notificationType: + description: > + Discriminator for the different notification types. + Shall be set to "ThresholdCrossedNotification " + for this notification type. + type: string + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: "SOL005_def.yaml#/definitions/Identifier" + timeStamp: + description: > + Date and time of the generation of the notification. + $ref: "SOL005_def.yaml#/definitions/DateTime" + thresholdId: + description: > + Identifier of the threshold which has been crossed. + $ref: "SOL005_def.yaml#/definitions/Identifier" + crossingDirection: + description: > + An indication of whether the threshold was crossed in upward or downward direction. + $ref: "#/definitions/CrossingDirectionType" + objectInstanceId: + description: > + Identifier that identifies a NS instance. + $ref: "SOL005_def.yaml#/definitions/Identifier" + performanceMetric: + description: > + Performance metric associated with the threshold. + type: string + performanceValue: + description: > + Value of the metric that resulted in threshold crossing. See note. + type: object + _links: + description: > + Links to resources related to this notification. + type: object + required: + - subscription + - objectInstance + - threshold + properties: + subscription: + description: > + Link to the related subscription. + $ref: "SOL005_def.yaml#/definitions/Link" + objectInstance: + description: > + Link to the resource representing the NS + instance to which the notified change applies. + Shall be present if the NS instance information + is accessible as a resource.. + $ref: "SOL005_def.yaml#/definitions/Link" + threshold: + description: > + Link to the resource that represents the + threshold that was crossed. + $ref: "SOL005_def.yaml#/definitions/Link" + + CrossingDirectionType: + description: > + The enumeration CrossingDirectionType shall comply with the provisions. + Acceptable Values are: + UP - The threshold was crossed in upward direction. + DOWN - The threshold was crossed in downward direction. + type: string + enum: + - UP + - DOWN \ No newline at end of file diff --git a/src/SOL005/NSPerformanceManagement/definitions/SOL005_def.yaml b/src/SOL005/NSPerformanceManagement/definitions/SOL005_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..058d1070f7cf51bb269974190a94376baf122195 --- /dev/null +++ b/src/SOL005/NSPerformanceManagement/definitions/SOL005_def.yaml @@ -0,0 +1,236 @@ + definitions: + Identifier: + description: > + An identifier with the intention of being globally unique. + type: string + + Link: + description: > + This type represents a link to a resource. + type: object + required: + - href + properties: + href: + description: > + URI of the referenced resource. + type: string + format: url + + DateTime: + description: > + Date-time stamp. + Representation: String formatted according to IETF RFC 3339. + type: string + format: "date-time" + + String: + description: > + This type represents stack of string values + type: string + + Object: + description: > + This type represents stack of object values + type: object + + KeyValuePairs: + 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 key- value pairs is represented as an object. It shall comply with the provisions + defined in clause 4 of IETF RFC 7159. + type: object + + Uri: + description: > + String formatted according to IETF RFC 3986. + type: string + + ProblemDetails: + #SOL005 location: 4.3.5.3-1 + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], 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 [19] 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. + The description column only provides some explanation of the meaning to + Facilitate understanding of the design. For a full description, see + IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies the + problem type. It is encouraged that the URI provides human-readable + documentation for the problem (e.g. using HTML) when dereferenced. + When this member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + 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. + 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 (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by the origin + server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of the + problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + IdentifierInVnfd: + description: > + Identifier of the software image. + type: string + + NSInstanceSubscriptionFilter: + description: > + This type represents subscription filter criteria to match NS instances. + type: object + properties: + nsdIds: + description: > + If present, match NS instances that were created + based on a NSD identified by one of the nsdId + values listed in this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + vnfdIds: + description: > + If present, match NS instances that contain VNF + instances that were created based on a VNFD + identified by one of the vnfdId values listed in + this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + pnfdIds: + description: > + If present, match NS instances that contain + PNFs that are represented by a PNFD identified + by one of the pnfdId values listed in this + attribute. + type: array + items: + $ref: "#/definitions/Identifier" + nsInstanceIds: + description: > + If present, match NS instances with an instance + identifier listed in this attribute. + type: array + items: + $ref: "#/definitions/Identifier" + nsInstanceNames: + description: > + If present, match NS instances with a NS + Instance Name listed in this attribute. + type: array + items: + $ref: "#/definitions/String" + + SubscriptionAuthentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the API + consumer is willing to accept when receiving a notification. + Permitted values: + * BASIC: In every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + 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. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + 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. + type: object + properties: + clientId: + 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. + The clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are used + to obtain authorization for API requests. Client credentials may + differ between subscriptions. The value of clientPassword should + be generated by a random process. + type: string + clientPassword: + description: > + Client password 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. + The clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are used + to obtain authorization for API requests. Client credentials may + differ between subscriptions. The value of clientPassword should + be generated by a random process. + type: string + tokenEndpoint: + description: > + The token endpoint from which the access token can be obtained. + Shall be present if it has not been provisioned out of band. + $ref: "#/definitions/Uri" \ No newline at end of file diff --git a/src/SOL005/NSPerformanceManagement/responses/SOL005_resp.yaml b/src/SOL005/NSPerformanceManagement/responses/SOL005_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d6108c9636d096c0349aaaa4d3cd07d89052793b --- /dev/null +++ b/src/SOL005/NSPerformanceManagement/responses/SOL005_resp.yaml @@ -0,0 +1,245 @@ + # Copyright (c) ETSI 2017. + # https://forge.etsi.org/etsi-forge-copyright-notice.txt + responses: + 303: + description: > + See Other + 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 HTTP response shall include a "Location" HTTP + header that contains the resource URI of the existing + subscription resource. + The response body shall be empty. + 400: + description: > + Bad Request + + Error: Invalid attribute-based filtering parameters. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 400-attr-based-filtering-error: + description: > + Bad Request + Invalid attribute-based filtering parameters or Invalid attribute + selector. + It the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or a syntactically + incorrect payload body), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and should include in the "detail" attribute more information about + the source of the problem. + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall + be returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code.The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 401: + description: > + Unauthorized. + If the request contains no access token even though one is + required, or if the request contains an authorization token that + is invalid (e.g. expired or revoked), the API producer should + respond with this response. The details of the error shall be + returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails + structure may be provided. + headers: + Content-Type: + type: string + description: The MIME type of the body of the response. + 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. + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 403: + description: > + Forbidden + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. + It should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source + of the problem, e.g. a wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-resource-not-exists: + description: > + Not Found + Error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + Specifically in case of this task resource, the response code 404 shall + also returned if the task is not supported for the NS instance + represented by the parent resource, which means that the task resource + consequently does not exist. + In this case, the response body shall be present, and shall contain a + ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-not-suported: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + Specifically in case of this task resource, the reason can also be that + the task is not supported for the NS instance represented by the parent + resource, and that the task resource consequently does not exist. + The "ProblemDetails" structure may be provided, including in the + "detail" attribute information about the sourceof the problem, e.g. a + wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 405: + description: > + Method Not Allowed + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted in that case. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 406: + 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 VNFD, the NFVO + shall respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 416: + description: > + The byte range passed in the "Range" header did not + match any available byte range in the NSD file (e.g. + "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 500: + description: > + Internal Server Error + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code + ("catch all error"), the API producer shall respond withthis + response code. The ProblemDetails structure shall be provided, + and shall include in the "detail" attribute more information about + the source of the problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 503: + description: > + Service Unavailable + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 [13] for + the use of the Retry-After HTTP header and for the alternative + to refuse the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml b/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml index 90208a43be8e3ffec18b56b19ae944848cc007c8..b3f43e3228677b087dc4b345b259e1e04b352c4c 100644 --- a/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml +++ b/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml @@ -27,10 +27,1080 @@ consumes: - "application/json" produces: - "application/json" - + paths: - /resource: +############################################################################### +# VNF Packages # +############################################################################### + '/vnf_packages': + #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.2 + get: + summary: "VNF packages" + description: > + "The GET method queries the information of the VNF packages matching the filter. + + This method shall follow the provisions specified in the + Tables 9.4.2.3.2-1 and 9.4.2.3.2-2 for URI query parameters, + request and response data structures, and response codes." + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query string. The + OSS/BSS may supply filtering parameters. + All attribute names that appear in the VnfPkgInfo and in data types referenced from it shall + be supported in attribute-based filtering parameters." + - 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: "fields" + in: "query" + required: false + type: "string" + description: > + "Complex attributes to be included into the response. See clause 4.3.3 for + details. The NFVO should support this parameter." + - name: "exclude_fields" + in: "query" + required: false + type: "string" + description: > + "Complex attributes to be excluded from the response. See clause 4.3.3 for + details. The NFVO should support this parameter." + - name: "exclude_default" + in: "query" + required: false + type: "string" + description: > + "Indicates to exclude the following complex attributes from the response. See clause 4.3.3 + for details. The NFVO shall support this parameter. + The following attributes shall be excluded from the VnfPkgInfo structure in the response + body if this parameter is provided, or none of the parameters "all_fields," "fields", + "exclude_fields", "exclude_default" are provided: + - softwareImages + - additionalArtifacts + - userDefinedData + - checksum." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 200: + description: > + "Status 200" + schema: + type: "array" + description: > + "Information of the selected VNF packages." + items: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfo" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + + post: + summary: "VNF packages" + description: > + "The POST method creates a new individual VNF package resource." + parameters: + - name: "CreateVnfPkgInfoRequest" + description: > + "IndividualVNF package resource creation parameters, as defined in clause 9.5.2.2" + in: "body" + required: true + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/CreateVnfPkgInfoRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 201: + description: > + "Status 201 - Created" + + + "An individual VNF package resource has been created successfully. + The response body shall contain a representation of + the new individual VNF package resource, as defined + in clause 9.5.2.4. + The HTTP response shall include a "Location" HTTP + header that contains the resource URI of the individual + VNF package resource." + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfo" + 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." +############################################################################### +# Individual VNF Package # +############################################################################### + '/vnf_packages/{vnfPkgId}': + #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.3 + get: + summary: "Individual VNF package" + description: > + "This resource represents an individual VNF package. + The client can use this resource to read information of the VNF + package, update information of the VNF package, or delete a VNF package." + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 200: + description: > + "200 OK" + + "Information of the VNF package." + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfo" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + delete: + summary: "Individual VNF package" + description: > + "The DELETE method deletes an individual NS descriptor resource. + parameters: + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 204: + description: > + "204 No Content" + "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." + 409: + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + patch: + summary: "Individual VNF package" + description: > + "The PATCH method updates the information of a VNF package." + + "This method shall follow the provisions specified in the + Tables 9.4.3.3.4-1 and 9.4.3.3.4-2 for URI query parameters, + request and response data structures, and response codes." + parameters: + - name: "VnfPkgInfoModifications" + in: "body" + required: true + schema: + type: "object" + required: + - "VnfPkgInfoModifications" + properties: + NsdInfoModifications: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfoModifications" + description: > + "Parameters for VNF package information modifications." + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 200: + description: > + "200 OK." + + "The operation was completed successfully. + The response body shall contain attribute + modifications for an "Individual VNF package" resource." + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/VnfPkgInfoModifications" + 409: + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + + parameters: + - name: "vnfPkgId" + description: > + "Identifier of the VNF package. The identifier is allocated by the NFVO". + in: "path" + required: true + type: "string" + +############################################################################### +# VNFD in an individual VNF package # +############################################################################### + '/vnf_packages/{vnfPkgId}/vnfd': + #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.4 + parameters: + - name: vnfPkgId + description: > + "Identifier of the on-boarded VNF package. The identifier is allocated by the NFVO." + in: path + type: string + required: true + get: + summary: "VNFD of an individual VNF package" + description: > + "The GET method reads the content of the VNFD within a VNF package." + + "The VNFD can be implemented as a single file or as a collection of multiple files. If the VNFD is implemented in the + form of multiple files, a ZIP file embedding these files shall be returned. If the VNFD is implemented as a single file, + either that file or a ZIP file embedding that file shall be returned. + The selection of the format is controlled by the "Accept" HTTP header passed in the GET request. + • If the "Accept" header contains only "text/plain" and the VNFD is implemented as a single file, the file shall + be returned; otherwise, an error message shall be returned. + • If the "Accept" header contains only "application/zip", the single file or the multiple files that make up the + VNFD shall be returned embedded in a ZIP file. + • If the "Accept" header contains both "text/plain" and "application/zip", it is up to the NFVO to choose the + format to return for a single-file VNFD; for a multi-file VNFD, a ZIP file shall be returned. + The default format of the ZIP file shall be the one specified in ETSI GS NFV-SOL 004 [5] where only the YAML files + representing the VNFD, and information necessary to navigate the ZIP file and to identify the file that is the entry point + for parsing the VNFD (such as TOSCA-meta or manifest files or naming conventions) are included. + This method shall follow the provisions specified in the Tables 9.4.4.3.2-1 and 9.4.4.3.2-2 for URI query parameters, + request and response data structures, and response codes." + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + in: header + required: true + type: string + enum: + - text/plain + - application/zip + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 200: + description: > + OK + + On success, the content of the VNFD is returned. + The payload body shall contain a copy of the file + representing the VNFD or a ZIP file that contains the + file or multiple files representing the VNFD, as + specified above. + The "Content-Type" HTTP header shall be set + according to the format of the returned file, i.e. to + "text/plain" for a YAML file or to "application/zip" for a ZIP file. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + + + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + description: > + "406 Not AccepTable" + + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + description: > + "409 Conflict" + + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/406-state-conflict" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# VNF Package Content # +############################################################################### + '/vnf_packages/{vnfPkgId}/package_content': + #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.5 + get: + summary: "VNF package content" + description: > + "The GET method fetches the content of a VNF package identified + by the VNF package identifier allocated by the NFVO." + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + in: header + required: true + type: string + enum: + - text/plain + - application/zip + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: "Range" + in: "header" + required: false + type: "string" + description: > + The request may contain a "Range" HTTP header to obtain single + ange of bytes from the VNF package file. This can be used to + ontinue an aborted transmission. + + If the NFVO does not support range requests, it should return the + whole file with a 200 OK response instead. + responses: + 200: + description: > + OK + + On success, a copy of the VNF package file is returned. + The response body shall include a copy of the VNF package file. + The "Content-Type" HTTP header shall be set + according to the type of the file, i.e. to "application/zip" + for a VNF Package as defined in ETSI + GS NFV-SOL 004 [5]. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 206: + description: > + "Partial Content" + $ref: "responses/SOL005_resp.yaml#/responses/206" + 409: + description: > + "Conflict" + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409-state-conflict-ONBOARDING" + 416: + description: > + "416 Range Not Satisfiable" + $ref: "responses/SOL005_resp.yaml#/responses/416-range-not-satisfiable" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + + put: + summary: "VNF package content." + description: > + "The PUT method uploads the content of a VNF package." + consumes: + - multipart/form-data + parameters: + - in: formData + name: file + required: false + type: file + description: > + The payload body contains a ZIP file that represents the VNF package. + The "Content-Type" HTTP header shall be set according to the + type of the file, i.e. to "application/zip" for a VNF Package as + defined in ETSI GS NFV-SOL 004 [5]. + responses: + 202: + description: > + "202 Accepted" + + "The VNF package was accepted for uploading, but the + processing has not been completed. It is expected to + take some time for processing. + The response body shall be empty. See note." + 409: + description: > + "409 Conflict" + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409-state-conflict-ONBOARDING-NOT-CREATED" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + parameters: + - name: "vnfPkgId" + in: "path" + required: true + type: "string" + +############################################################################### +# Upload VNF package from URI task # +############################################################################### + '/vnf_packages/{vnfPkgId}/package_content/upload_from_uri': + #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.6 + post: + summary: "Upload VNF package from URI task." + description: > + "This task resource represents the "Upload VNF package from URI" operation. The client can use this resource to + request the uploading of a VNF package by providing address information to the NFVO for retrieving the content of the + VNF package. + The POST method provides the information for the NFVO to get the content of a VNF package." + + parameters: + - name: "vnfPkgId" + in: "path" + required: true + type: "string" + - name: "UploadVnfPkgFromUriRequest" + description: > + "The payload body contains the address information based on + which the NFVO can obtain the content of the VNF package." + in: "body" + required: true + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/UploadVnfPkgFromUriRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + responses: + 202: + description: > + "Accepted" + + "The information about the VNF package was received + successfully, but the on-boarding has not been + completed. It is expected to take some time for processing. + + The response body shall be empty." + 409: + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409-state-conflict-ONBOARDING-NOT-CREATED" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Individual VNF package artifact # +############################################################################### + '/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}': + #ETSI GS NFV-SOL 005 V2.4.1 location: 9.4.6 + parameters: + - name: artifactPath + description: > + This resource represents an individual artifact contained in a VNF package. + The client can use this resource to fetch the + content of the artifact. + in: path + type: string + required: true + - name: vnfPkgId + description: > + Identifier of the on-boarded VNF package. The identifier is + allocated by the NFVO. + This identifier can be retrieved from the "vnfPkgId" + attribute in the VnfPackageOnboardingNotification or + VnfPackageChangeNotification. + in: path + type: string + required: true + get: + summary: IndividualVNF package artifact. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Range + description: > + The request may contain a "Range" HTTP header to obtain single + range of bytes from the VNF package file. This can be used to + continue an aborted transmission. + If the NFVO does not support range requests, it should return the + whole file with a 200 OK response instead. + in: header + type: string + responses: + 200: + description: > + 200 OK. + + On success, the content of the artifact is returned. + The payload body shall contain a copy of the artifact file from + the VNF package, as defined by ETSI GS NFV-SOL 004. + The "Content-Type" HTTP header shall be set according to the + content type of the artifact file. If the content type cannot be + determined, the header shall be set to the value + "application/octet-stream". + headers: + 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. + 206: + description: > + Partial Content. + + On success, if the NFVO supports range requests, a single + consecutive byte range from the content of the VNF package file is + returned. + The response body shall contain the requested part of the VNF + package file. + The "Content-Range" HTTP header shall be provided according to + IETF RFC 7233. + The "Content-Type" HTTP header shall be set as defined above for + the "200 OK" response. + headers: + 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: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 409: + $ref: "responses/VNFPackageManagement_resp.yaml#/responses/409" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Subscriptions # +############################################################################### + '/subscriptions': + post: + summary: Subscriptions + description: > + Subscribe. + + The POST method creates a new subscription. + 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 VNFM, 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). + parameters: + - name: PkgmSubscriptionRequest + description: > + Representation of the created subscription resource. + The HTTP response shall include a "Location" HTTP header that + points to the created subscription resource. + in: body + required: true + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscriptionRequest" + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + - name: Content-Type + description: > + The MIME type of the body of the request. + Reference: IETF RFC 7231 + in: header + required: true + type: string + + responses: + 201: + description: > + Created + Representation of the created subscription resource. + The HTTP response shall include a "Location" HTTP header that + points to the created subscription resource. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + Location: + description: The resource URI of the created VNF instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + type: array + items: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscription" + 303: + $ref: "responses/SOL005_resp.yaml#/responses/303" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" get: + summary: > + Query Subscription Information + description: > + Query Subscription Information + + The GET method queries the list of active subscriptions of the + functional block that invokes the method. It can be used e.g. for + resynchronization after error situations. + parameters: + - name: "filter" + in: "query" + required: false + type: "string" + description: > + "Attribute-based filtering parameters according to clause 4.3.2. + The NFVO shall support receiving filtering parameters as part of the URI query + string. The OSS/BSS may supply filtering parameters. + All attribute names that appear in the PkgmSubscription and in data types + referenced from it shall be supported in attribute-based filtering parameters." + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string responses: 200: - description: Success \ No newline at end of file + description: > + OK + Active subscriptions of the functional block that invokes the + method. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + type: array + items: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscription" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + +############################################################################### +# Individual subscription # +############################################################################### + '/subscriptions/{subscriptionId}': + #SOL003 location: 10.4.8 + parameters: + - name: subscriptionId + description: > + Identifier of this subscription. + This identifier can be retrieved from the resource referenced by + the "Location" HTTP header in the response to a POST request + creating a new subscription resource. It can also be retrieved from + the "id" attribute in the payload body of that response. + in: path + type: string + required: true + get: + summary: > + Query Subscription Information + description: > + Query Subscription Information + The GET method reads an individual subscription. + parameters: + - name: Accept + description: > + Content-Types that are acceptable for the response. + Reference: IETF RFC 7231 + in: header + required: true + type: string + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 200: + description: > + OK + + Representation of the subscription resource. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "definitions/SOL005VNFPMManagement_def.yaml#/definitions/PkgmSubscription" + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" + delete: + summary: > + Terminate subscription + description: > + Terminate subscription + + The DELETE method terminates an individual subscription. + parameters: + - name: Authorization + description: > + The authorization token for the request. + Reference: IETF RFC 7235 + in: header + required: false + type: string + responses: + 204: + description: > + No Content + + The subscription resource was deleted successfully. + headers: + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 400: + $ref: "responses/SOL005_resp.yaml#/responses/400" + 401: + $ref: "responses/SOL005_resp.yaml#/responses/401" + 403: + $ref: "responses/SOL005_resp.yaml#/responses/403" + 404: + $ref: "responses/SOL005_resp.yaml#/responses/404" + 405: + $ref: "responses/SOL005_resp.yaml#/responses/405" + 406: + $ref: "responses/SOL005_resp.yaml#/responses/406" + 416: + $ref: "responses/SOL005_resp.yaml#/responses/416" + 500: + $ref: "responses/SOL005_resp.yaml#/responses/500" + 503: + $ref: "responses/SOL005_resp.yaml#/responses/503" \ No newline at end of file diff --git a/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPMManagement_def.yaml b/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPMManagement_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4310fa3e7e7c9542fe6ec05599863924f829ea68 --- /dev/null +++ b/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPMManagement_def.yaml @@ -0,0 +1,466 @@ +definitions: + VnfPkgInfo: + type: object + required: + - id + - onboardingState + - operationalState + - usageState + properties: + id: + description: > + Identifier of the VNF package. This identifier is allocated by the NFVO. + $ref: "SOL005_def.yaml#/definitions/Identifier" + vnfdId: + description: > + This identifier, which is managed by the + VNF provider, identifies the VNF package and the VNFD in a globally unique way. + It is copied from the VNFD of the on boarded VNF package. It shall be present + after the VNF package content has been on-boarded and absent otherwise. + $ref: "SOL005_def.yaml#/definitions/Identifier" + vnfProvider: + description: > + Provider of the VNF package and the VNFD. This information is copied from the VNFD. + It shall be present after the VNF package content has been on-boarded and absent otherwise. + type: string + vnfProductName: + description: > + Name to identify the VNF product.Invariant for the VNF product lifetime. + This information is copied from the VNFD. It + shall be present after the VNF package content has been on-boarded and absent otherwise. + type: string + vnfSoftwareVersion: + description: > + Software version of the VNF. This is + changed when there is any change to the + software included in the VNF package. + This information is copied from the VNFD. + It shall be present after the VNF package + content has been on-boarded and absent otherwise. + $ref: "#/definitions/Version" + vnfdVersion: + description: > + The version of the VNFD. This information + is copied from the VNFD. It shall be + present after the VNF package content + has been on-boarded and absent otherwise. + $ref: "#/definitions/Version" + checksum: + description: > + Checksum of the on-boarded VNF + package. It shall be present after the VNF + package content has been on-boarded and absent otherwise. + $ref: "#/definitions/Checksum" + softwareImages: + description: > + Information about VNF package artifacts that are software images. + This attribute shall not be present before the VNF package content is on-boarded. + Otherwise, this attribute shall be present unless it has been requested to be + excluded per attribute selector. + type: "array" + items: + $ref: "#/definitions/VnfPackageSoftwareImageInfo" + + Version: + description: > + Software version of the VNF. This is + changed when there is any change to the + software included in the VNF package. + This information is copied from the VNFD. + It shall be present after the VNF package + content has been on-boarded and absent otherwise. + type: string + + Checksum: + description: > + This type represents the checksum of a VNF package or an artifact file. + required: + - algorithm + - hash + type: object + properties: + algorithm: + description: > + Name of the algorithm used to generate the checksum, + as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512. + type: string + hash: + description: > + The hexadecimal value of the checksum. + type: string + PkgmLinks: + description: > + This type represents the links to resources that a VNF package management notification can contain. + required: + - vnfPackage + - subscription + type: object + properties: + vnfPackage: + description: > + Link to the resource representing the VNF package to + which the notified change applies, i.e. the individual onboarded + VNF package resource that represents the VNF package. + $ref: "SOL005_def.yaml#/definitions/Link" + subscription: + description: > + Link to the related subscription. + $ref: "SOL005_def.yaml#/definitions/Link" + VnfPackageSoftwareImageInfo: + description: > + This type represents an artifact contained in a VNF package which represents a software image. + required: + - id + - name + - provider + - version + - checksum + - containerFormat + - diskFormat + - createdAt + - minDisk + - minRam + - size + - imagePath + type: object + properties: + id: + description: > + Name of the algorithm used to generate the checksum, + as defined in ETSI GS NFV-SOL 004 [5]. For example, SHA-256, SHA-512. + $ref: "SOL005_def.yaml#/definitions/IdentifierInVnfd" + name: + description: > + Name of the software image. + type: string + provider: + description: > + Provider of the software image. + type: string + version: + description: > + Version of the software image. + $ref: "#/definitions/Version" + checksum: + description: > + Checksum of the software image file. + $ref: "#/definitions/Checksum" + containerFormat: + description: > + Container format indicates whether the software image + is in a file format that also contains metadata about the actual software. + Permitted values: + - AKI: a kernel image format + - AMI: a machine image format + - ARI: a ramdisk image format + - BARE: the image does not have a container or + metadata envelope + - DOCKER: docker container format + - OVA: OVF package in a tarfile + - OVF: OVF container format + type: string + enum: + - AKI + - AMI + - ARI + - BARE + - DOCKER + - OVA + - OVF + diskFormat: + description: > + Disk format of a software image is the format of the + underlying disk image. + Permitted values: + - AKI: a kernel image format + - AMI: a machine image format + - ARI: a ramdisk image format + - ISO: an archive format for the data contents of an + optical disc, such as CD-ROM + - QCOW2: a common disk image format, which can + expand dynamically and supports copy on write + - RAW: an unstructured disk image format + - VDI: a common disk image format + - VHD: a common disk image format + - VHDX: enhanced version of VHD format + - VMDK: a common disk image format + type: string + enum: + - AKI + - AMI + - ARI + - ISO + - QCOW2 + - RAW + - VDI + - VHD + - VHDX + - VMDK + createdAt: + description: > + Time when this software image was created. + $ref: "SOL005_def.yaml#/definitions/DateTime" + minDisk: + description: > + The minimal disk for this software image in bytes. + type: integer + minRam: + description: > + The minimal RAM for this software image in bytes. + type: integer + size: + description: > + Size of this software image in bytes. + type: integer + userMetadata: + description: > + User-defined data. + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + imagePath: + description: > + Path in the VNF package, which identifies the image + artifact and also allows to access a copy of the image + artifact. + type: string + + 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.ENABLED = The operational state of the resource + is enabled. DISABLED = The operational state of the resource is disabled." + enum: + - "ENABLED" + - "DISABLED" + PackageOperationalStateType: + type: "string" + description: > + "The enumeration PackageOperationalStateType shall + comply with the provisions defined in Table 9.5.4.4-1." + Acceptable values are: + -ENABLED - The VNF package is enabled, i.e. it can be used for instantiation of new VNF instances. + -DISABLED - The VNF package is disabled, i.e. it cannot be used for further VNF instantiation requests (unless and until the VNF package is re-enabled). + enum: + - "ENABLED" + - "DISABLED" + + PackageUsageStateType: + type: "string" + description: > + "The enumeration PackageUsageStateType shall comply with the provisions. + Acceptable values are: + -IN_USE - VNF instances instantiated from this VNF package exist. + -NOT_IN_USE - No existing VNF instance is instantiated from this VNF package" + enum: + - "IN_USE" + - "NOT_IN_USE" + + CreateVnfPkgInfoRequest: + type: "object" + properties: + userDefinedData: + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + description: > + "This type represents the request parameters for creating + a new individual VNF package resource. It shall comply with + the provisions defined in Table 9.5.2.2-1." + + VnfPkgInfoModifications: + description: > + This type represents modifications to the information of a VNF package. + It shall comply with the provisions defined in Table 9.5.2.3-1. + properties: + operationalState: + description: > + New value of the operational state of the on-boarded + instance of the VNF package. + $ref: "#/definitions/PackageOperationalStateType" + userDefinedData: + description: > + User defined data to be updated. For existing keys, the value is replaced. + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + + UploadVnfPkgFromUriRequest: + type: "object" + properties: + userDefinedData: + $ref: "SOL005_def.yaml#/definitions/KeyValuePairs" + description: > + "The payload body contains the address information based on + which the NFVO can obtain the content of the VNF package" + + PkgmSubscription: + description: > + This type represents a subscription related to notifications about VNF package management. + type: object + required: + - id + - callbackUri + - _links + properties: + id: + description: > + Identifier of this subscription resource + $ref: "SOL005_def.yaml#/definitions/Uri" + filter: + description: > + Filter settings for this subscription, to define the subset + of all notifications this subscription relates to. A + particular notification is sent to the subscriber if the filter + matches, or if there is no filter. + $ref: "#/definitions/PkgmNotificationsFilter" + callbackUri: + description: > + The URI of the endpoint to send the notification to + $ref: "SOL005_def.yaml#/definitions/Uri" + _links: + description: > + Links to resources related to this resource. + type: object + required: + - self + properties: + self: + description: > + URI of this resource. + $ref: "SOL005_def.yaml#/definitions/Link" + + PkgmSubscriptionRequest: + description: > + This type represents a subscription request related to VNF package management notifications about VNF package on boarding or changes. + type: object + required: + - callbackUri + properties: + filter: + description: > + Filter settings for this subscription, to define the subset + of all notifications this subscription relates to. A + particular notification is sent to the subscriber if the filter + matches, or if there is no filter. + $ref: "#/definitions/PkgmNotificationsFilter" + callbackUri: + description: > + The URI of the endpoint to send the notification to. + $ref: "SOL005_def.yaml#/definitions/Uri" + authentication: + description: > + Authentication parameters to conFigure the use of + authorization when sending notifications corresponding + to this subscription, as defined in clause 4.5.3.4. + This attribute shall only be present if the subscriber + requires authorization of notifications. + $ref: "SOL005_def.yaml#/definitions/SubscriptionAuthentication" + + PkgmNotificationsFilter: + description: > + This type represents a subscription filter related to notifications related to VNF package management. + 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). + type: object + properties: + notificationTypes: + description: > + Match particular notification types. + Permitted values: + - VnfPackageOnboardingNotification + - VnfPackageChangeNotification + type: string + enum: + - VnfPackageOnboardingNotification + - VnfPackageChangeNotification + vnfProductsFromProviders: + description: > + If present, match VNF packages that contain VNF products from certain providers. + type: array + items: + type: object + required: + - vnfProvider + properties: + vnfProvider: + description: > + Name of the VNFprovider to match. + type: string + vnfProducts: + description: > + If present, match VNF packages that contain + VNF products with certain product names, from + one particular provider. + type: array + items: + type: object + required: + - vnfProductName + properties: + vnfProductName: + description: > + Name of the VNF product to match. + type: string + versions: + description: > + If present, match VNF packages that contain + VNF products with certain versions and a + certain product name, from one particular + provider. + type: array + items: + type: object + required: + - vnfSoftwareVersion + properties: + vnfSoftwareVersion: + description: > + VNF software version to match + $ref: "#/definitions/Version" + vnfdVersions: + description: > + If present, match VNF packages that contain + VNF products with certain VNFD versions, a + certain software version and a certain product + name, from one particular provider. + type: array + items: + $ref: "#/definitions/Version" + + vnfdId: + description: > + Match VNF packages with a VNFD identifier + listed in the attribute. + type: array + items: + $ref: "SOL005_def.yaml#/definitions/Identifier" + vnfPkgId: + description: > + Match VNF packages with a package identifier + listed in the attribute. + May be present if the "notificationTypes" + attribute contains the value + "VnfPackageChangeNotification", and shall be + absent otherwise. + type: array + items: + $ref: "SOL005_def.yaml#/definitions/Identifier" + operationalState: + description: > + Match VNF packages with a package identifier + listed in the attribute. + May be present if the "notificationTypes" + attribute contains the value + "VnfPackageChangeNotification", and shall be + absent otherwise. + type: array + items: + $ref: "#/definitions/PackageOperationalStateType" + usageState: + description: > + Match particular usage state of the on-boarded VNF package. + May be present if the "notificationTypes" + attribute contains the value + "VnfPackageChangeNotification", and shall be + absent otherwise. + type: array + items: + $ref: "#/definitions/PackageUsageStateType" \ No newline at end of file diff --git a/src/SOL005/VNFPackageManagement/definitions/SOL005_def.yaml b/src/SOL005/VNFPackageManagement/definitions/SOL005_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f49c5f48542700650aeb61aaf424af2c235668f5 --- /dev/null +++ b/src/SOL005/VNFPackageManagement/definitions/SOL005_def.yaml @@ -0,0 +1,189 @@ + definitions: + Identifier: + description: > + An identifier with the intention of being globally unique. + type: string + + Link: + description: > + This type represents a link to a resource. + type: object + required: + - href + properties: + href: + description: > + URI of the referenced resource. + type: string + format: url + + DateTime: + description: > + Date-time stamp. + Representation: String formatted according to IETF RFC 3339. + type: string + format: "date-time" + + String: + description: > + This type represents stack of string values + type: string + + Object: + description: > + This type represents stack of object values + type: object + + KeyValuePairs: + 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 key- value pairs is represented as an object. It shall comply with the provisions + defined in clause 4 of IETF RFC 7159. + type: object + + ProblemDetails: + #SOL005 location: 4.3.5.3-1 + description: > + The definition of the general "ProblemDetails" data structure from + IETF RFC 7807 [19] is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807 [19], 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 [19] 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. + The description column only provides some explanation of the meaning to + Facilitate understanding of the design. For a full description, see + IETF RFC 7807 [19]. + type: object + required: + - status + - detail + properties: + type: + description: > + A URI reference according to IETF RFC 3986 [5] that identifies the + problem type. It is encouraged that the URI provides human-readable + documentation for the problem (e.g. using HTML) when dereferenced. + When this member is not present, its value is assumed to be + "about:blank". + type: string + format: URI + title: + 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. + 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 (e.g., using + proactive content negotiation; see [RFC7231], Section 3.4). + type: string + status: + description: > + The HTTP status code for this occurrence of the problem. + The HTTP status code ([RFC7231], Section 6) generated by the origin + server for this occurrence of the problem. + type: integer + detail: + description: > + A human-readable explanation specific to this occurrence of the + problem. + type: string + instance: + description: > + A URI reference that identifies the specific occurrence of the + problem. It may yield further information if dereferenced. + type: string + format: URI + IdentifierInVnfd: + description: > + Identifier of the software image. + type: string + Uri: + description: > + String formatted according to IETF RFC 3986. + type: string + + SubscriptionAuthentication: + type: object + required: + - authType + properties: + authType: + description: > + Defines the types of Authentication / Authorization which the API + consumer is willing to accept when receiving a notification. + Permitted values: + * BASIC: In every HTTP request to the notification endpoint, use + HTTP Basic authentication with the client credentials. + * OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the + notification endpoint, use an OAuth 2.0 Bearer token, obtained + using the client credentials grant type. + * TLS_CERT: Every HTTP request to the notification endpoint is sent + over a mutually authenticated TLS session, i.e. not only the + server is authenticated, but also the client is authenticated + during the TLS tunnel setup. + type: array + items: + type: string + enum: + - BASIC + - OAUTH2_CLIENT_CREDENTIALS + - TLS_CERT + paramsBasic: + 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. + type: object + properties: + userName: + description: > + Username to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + password: + description: > + Password to be used in HTTP Basic authentication. Shall be + present if it has not been provisioned out of band. + type: string + paramsOauth2ClientCredentials: + 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. + type: object + properties: + clientId: + 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. + The clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are used + to obtain authorization for API requests. Client credentials may + differ between subscriptions. The value of clientPassword should + be generated by a random process. + type: string + clientPassword: + description: > + Client password 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. + The clientId and clientPassword passed in a subscription shall + not be the same as the clientId and clientPassword that are used + to obtain authorization for API requests. Client credentials may + differ between subscriptions. The value of clientPassword should + be generated by a random process. + type: string + tokenEndpoint: + description: > + The token endpoint from which the access token can be obtained. + Shall be present if it has not been provisioned out of band. + $ref: "#/definitions/Uri" \ No newline at end of file diff --git a/src/SOL005/VNFPackageManagement/responses/SOL005_resp.yaml b/src/SOL005/VNFPackageManagement/responses/SOL005_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..40364854d71edef034a6b54caa125adab649586f --- /dev/null +++ b/src/SOL005/VNFPackageManagement/responses/SOL005_resp.yaml @@ -0,0 +1,438 @@ + # Copyright (c) ETSI 2017. + # https://forge.etsi.org/etsi-forge-copyright-notice.txt + responses: + 202: + description: > + Accepted + + The request was accepted for processing, but processing has not + been completed. The response shall have an empty payload body. + headers: + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 202-with-Location: + description: > + Accepted + + The request was accepted for processing, but the processing has not + been completed. On success, the HTTP response shall include a + "Location" HTTP header that contains the URI of the newly-created + "NS Descriptor operation occurrence" resource corresponding to the + operation. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 206: + description: > + Partial Content + + On success, if the NFVO supports range requests, a + single consecutive byte range from the content of the + NSD file is returned. + The response body shall contain the requested part of + the NSD file. + The "Content-Range" HTTP header shall be provided + according to IETF RFC 7233 [23]. + The "Content-Type" HTTP header shall be set as + defined above for the "200 OK" response. + headers: + Content-Range: + type: "string" + Content-Type: + type: "string" + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 303: + description: > + See Other + A subscription with the same callbackURI and the same filter already + exists and the policy of the VNFM is to not create redundant + subscriptions. + The HTTP response shall include a "Location" HTTP header that contains + the resource URI of the existing subscription resource. + The response body shall be empty. + 400: + description: > + Bad Request. + + Error: Invalid attribute-based filtering parameters. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 400-attr-based-filtering-error: + description: > + Bad Request + Invalid attribute-based filtering parameters or Invalid attribute + selector. + It the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or a syntactically + incorrect payload body), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and should include in the "detail" attribute more information about + the source of the problem. + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall + be returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code.The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 400-attr-selector: + description: > + Bad Request + If the request is malformed or syntactically incorrect (e.g. if the + request URI contains incorrect query parameters or a syntactically + incorrect payload body), the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided, + and should include in the "detail" attribute more information about + the source of the problem. + If the request contains a malformed access token, the API producer + should respond with this response. The details of the error shall + be returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails structure may be + provided. + If there is an application error related to the client's input that + cannot be easily mapped to any other HTTP response code ("catch all + error"), the API producer shall respond with this response code.The + "ProblemDetails" structure shall be provided, and shall include in + the "detail" attribute more information about the source of the + problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 401: + description: > + Unauthorized + If the request contains no access token even though one is + required, or if the request contains an authorization token that + is invalid (e.g. expired or revoked), the API producer should + respond with this response. The details of the error shall be + returned in the WWW-Authenticate HTTP header, as defined in + IETF RFC 6750 and IETF RFC 7235. The ProblemDetails + structure may be provided. + headers: + Content-Type: + type: string + description: The MIME type of the body of the response. + 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. + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 403: + description: > + Forbidden + If the API consumer is not allowed to perform a particular request + to a particular resource, the API producer shall respond with this + response code. The "ProblemDetails" structure shall be provided. + It should include in the "detail" attribute information about the + source of the problem, and may indicate how to solve it. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + The "ProblemDetails" structure may be provided, + including in the "detail" attribute information about the source + of the problem, e.g. a wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-resource-not-exists: + description: > + Not Found + Error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + Specifically in case of this task resource, the response code 404 shall + also returned if the task is not supported for the NS instance + represented by the parent resource, which means that the task resource + consequently does not exist. + In this case, the response body shall be present, and shall contain a + ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-resource-not-exists-NSD: + description: > + Not Found + Error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + Specifically in case of this task resource, the response code 404 shall + also be returned if the task is not supported for the NS Descriptor operation + occurrence represented by the parent resource, which means that the task + resource consequently does not exist. + In this case, the response body shall be present, and shall contain a + ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-not-suported: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + Specifically in case of this task resource, the reason can also be that + the task is not supported for the NS instance represented by the parent + resource, and that the task resource consequently does not exist. + The "ProblemDetails" structure may be provided, including in the + "detail" attribute information about the sourceof the problem, e.g. a + wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 404-task-not-suported-NSD: + description: > + Not Found + If the API producer did not find a current representation for the + resource addressed by the URI passed in the request, or is not + willing to disclose that one exists, it shall respond with this + response code. + Specifically in case of this task resource, the reason can also be that + the task is not supported for the NS Descriptor operation occurrence + represented by the parent resource, and that the task resource + consequently does not exist. + The "ProblemDetails" structure may be provided, including in the + "detail" attribute information about the sourceof the problem, e.g. a + wrong resource URI variable. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 405: + description: > + Method Not Allowed + If a particular HTTP method is not supported for a particular + resource, the API producer shall respond with this response code. + The "ProblemDetails" structure may be omitted in that case. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 406: + 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 VNFD, the NFVO + shall respond with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 412: + description: > + Precondition Failed + A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the + resource was modified by another entity. The response body should + contain a ProblemDetails structure, in which the "detail" attribute + should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 416: + description: > + The byte range passed in the "Range" header did not + match any available byte range in the NSD file (e.g. + "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 416-range-not-satisfiable: + description: > + The byte range passed in the "Range" header did not + match any available byte range in the VNF package + file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 422: + description: > + Un-processable Entity + If the payload body of a request contains syntactically correct + data (e.g. well-formed JSON) but the data cannot be processed + (e.g. because it fails validation against a schema), the API + producer shall respond with this response code. The + "ProblemDetails" structure shall be provided, and should include + in the "detail" attribute more information about the source of the + problem. + NOTE 2: This error response code is only applicable for methods + that have a request body. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 500: + description: > + Internal Server Error + If there is an application error not related to the client's input + that cannot be easily mapped to any other HTTP response code + ("catch all error"), the API producer shall respond withthis + response code. The ProblemDetails structure shall be provided, + and shall include in the "detail" attribute more information about + the source of the problem. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 503: + description: > + Service Unavailable + If the API producer encounters an internal overload situation of + itself or of a system it relies on, it should respond with this + response code, following the provisions in IETF RFC 7231 [13] for + the use of the Retry-After HTTP header and for the alternative + to refuse the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL005/VNFPackageManagement/responses/VNFPackageManagement_resp.yaml b/src/SOL005/VNFPackageManagement/responses/VNFPackageManagement_resp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b99795f14668dd2a31a0fa5aa36abdcb9e27c60a --- /dev/null +++ b/src/SOL005/VNFPackageManagement/responses/VNFPackageManagement_resp.yaml @@ -0,0 +1,291 @@ + # Copyright (c) ETSI 2017. + # https://forge.etsi.org/etsi-forge-copyright-notice.txt + responses: + 202-with-Location: + description: > + Accepted + + The request was accepted for processing, but the processing has not + been completed. The response body shall be empty. + The HTTP response shall include a "Location" HTTP + header that contains the URI of the newly-created + "NS lifecycle operation occurrence" resource + corresponding to the operation. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance" + 202-with-Location-empty: + description: > + Accepted + + The request was accepted for processing, but the processing has not + been completed. On success, the HTTP response shall include a + "Location" HTTP header that contains the URI of the newly-created + "NS Descriptor operation occurrence" resource corresponding to the + operation. + The response body shall be empty. + headers: + Location: + description: The resource URI of the created NS instance + type: string + format: url + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + 406-state-conflict: + 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 + "onboardingState" of the VNF package has a value + different from "ONBOARDED". + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409: + description: > + Conflict + + Error: The operation cannot be executed + currently, due to a conflict with the state of + the resource. + Typically, this is due to any of the following + scenarios: + - Disable a VNF package resource of + hich the operational state is not + ENABLED + - Enable a VNF package resource of + which the operational state is not + DISABLED + The response body shall contain a + ProblemDetails structure, in which the + "detail" attribute shall convey more + information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + 409-another-nsd-operation-ongoing: + description: > + Conflict + + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that another Descriptor operation is + ongoing. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-inconsistent-state: + description: > + Conflict + + Another request is in progress that prohibits the fulfilment of + the current request, or the current resource state is inconsistent + with the request. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-INSTANTIATED: + description: > + Conflict + + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that the NS instance resource is in + INSTANTIATED state. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-not-FAILED_TEMP: + description: > + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that the NS instance resource is + not in FAILED_TEMP state, or another error handling action is starting, + such as rollback or fail. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-NOT-INSTANTIATED: + description: > + Conflict + + The operation cannot be executed currently, due to a conflict with the + state of the NS instance resource. + Typically, this is due to the fact that the NS instance resource is in + NOT-INSTANTIATED state, or that another lifecycle management operation + is ongoing. + The response body shall contain a ProblemDetails structure, in which the + "detail" attribute should convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-ONBOARDING: + description: > + Conflict + + Error: The operation cannot be executed currently, + due to a conflict with the state of the resource. + Typically, this is due to the fact that "onboardingState" + of the VNF package has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + 409-state-conflict-ONBOARDING-NOT-CREATED: + description: > + Conflict + + 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 onboarding + state of the VNF package resource is not CREATED . + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + 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. + type: string + maximum: 1 + minimum: 0 + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" \ No newline at end of file