From: almagia Date: Tue, 17 May 2022 12:11:58 +0000 (+0200) Subject: Revert "Revert "Feature 10915: SOL003 STD Support for OSM"" X-Git-Tag: v12.0.0rc1~2 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F64%2F12064%2F1;p=osm%2FSOL003.git Revert "Revert "Feature 10915: SOL003 STD Support for OSM"" This reverts commit 199b1b0913c839c3874694595393034283289c5e. As requested by TSC Chair Change-Id: I0f3b7c3d9dfdde805b6edcd7fb7cc83e40819cad --- diff --git a/devops-stages/stage-archive.sh b/devops-stages/stage-archive.sh old mode 100644 new mode 100755 diff --git a/devops-stages/stage-build.sh b/devops-stages/stage-build.sh old mode 100644 new mode 100755 diff --git a/devops-stages/stage-test.sh b/devops-stages/stage-test.sh old mode 100644 new mode 100755 diff --git a/src/SOL003/APIVersion/APIVersion.yaml b/src/SOL003/APIVersion/APIVersion.yaml new file mode 100644 index 0000000..2c64c9d --- /dev/null +++ b/src/SOL003/APIVersion/APIVersion.yaml @@ -0,0 +1,12 @@ +openapi: 3.0.2 + +info: + title: OSM VNFM NB API featuring ETSI NFV SOL003 + description: > + This is Open Source MANO Northbound API featuring ETSI GS NFV-SOL 003 V3.3.1 + version: "1.0.0" + contact: + email: OSM_TECH@list.etsi.org + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' diff --git a/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml b/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml new file mode 100644 index 0000000..60bc5af --- /dev/null +++ b/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml @@ -0,0 +1,480 @@ +openapi: 3.0.2 + +info: + title: SOL003 - VNF Lifecycle Management interface + description: | + SOL003 - VNF Lifecycle Management interface + version: "1.0.0" + contact: + email: OSM_TECH@list.etsi.org + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + +tags: + - name: VNF Instances + description: Operations related to VNF instances + +servers: + - url: http://127.0.0.1/vnflcm/v1 + - url: https://127.0.0.1/vnflcm/v1 + +paths: + /vnf_instances: + parameters: + - $ref: ../components/SOL003_params.yaml#/components/parameters/Accept + - $ref: ../components/SOL003_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL003_params.yaml#/components/parameters/Version + get: + tags: + - VNF Instances + summary: Query information about multiple VNF instances + description: The GET method queries information about multiple VNF instances. + responses: + 200: + $ref: '#/components/responses/VNFInstances.Get.200' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + post: + tags: + - VNF Instances + summary: Create a new VNF instance resource + description: | + The POST method creates a new VNF instance resource based on a VNF package that is onboarded + and in "ENABLED" state. + requestBody: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/CreateVnfRequest' + responses: + 201: + $ref: '#/components/responses/VNFInstances.Post.201' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + + /vnf_instances/{vnfInstanceId}: + parameters: + - $ref: '#/components/parameters/VnfInstanceId' + - $ref: ../components/SOL003_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL003_params.yaml#/components/parameters/Version + get: + tags: + - VNF Instances + summary: Read an individual VNF instance resource + description: | + The GET method retrieves information about a VNF instance by reading an "Individual VNF instance" resource. + responses: + 200: + $ref: '#/components/responses/IndividualVnfInstance.Get.200' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + delete: + tags: + - VNF Instances + summary: Delete an individual VNF instance resource + description: This method deletes an "Individual VNF instance" resource. + responses: + 204: + description: No Content + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + + /vnf_instances/{vnfInstanceId}/instantiate: + parameters: + - $ref: '#/components/parameters/VnfInstanceId' + post: + tags: + - VNF Instances + summary: Instantiate a VNF + description: | + The POST method instantiates a VNF instance. The precondition is that the VNF instance + must have been created and must be in NOT_INSTANTIATED state. + parameters: + - $ref: ../components/SOL003_params.yaml#/components/parameters/Accept + - $ref: ../components/SOL003_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL003_params.yaml#/components/parameters/Version + requestBody: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/InstantiateVnfRequest' + responses: + 202: + $ref: '#/components/responses/InstantiateVnfInstance.Post.202' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + + /vnf_instances/{vnfInstanceId}/scale: + parameters: + - $ref: '#/components/parameters/VnfInstanceId' + post: + tags: + - VNF Instances + summary: Scale a VNF instance + description: | + The POST method requests to scale a VNF instance resource. The precondition is that the VNF instance + must have been created and must be in INSTANTIATED state. + parameters: + - $ref: ../components/SOL003_params.yaml#/components/parameters/Accept + - $ref: ../components/SOL003_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL003_params.yaml#/components/parameters/Version + requestBody: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ScaleVnfRequest' + responses: + 202: + $ref: '#/components/responses/ScaleVnfInstance.Post.202' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + + /vnf_instances/{vnfInstanceId}/terminate: + parameters: + - $ref: '#/components/parameters/VnfInstanceId' + post: + tags: + - VNF Instances + summary: Terminate a VNF instance + description: | + The POST method requests to terminate a VNF instance. The precondition is that the VNF + instance must have been created and must be in INSTANTIATED state. + parameters: + - $ref: ../components/SOL003_params.yaml#/components/parameters/Accept + - $ref: ../components/SOL003_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL003_params.yaml#/components/parameters/Version + requestBody: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/TerminateVnfRequest' + responses: + 202: + $ref: '#/components/responses/TerminateVnfInstance.Post.202' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + + /vnf_lcm_op_occs: + get: + tags: + - VNF Instances + summary: Query information about multiple VNF LCM Operation Occurrences + description: Query information about multiple VNF LCM Operation Occurrences + responses: + 200: + $ref: '#/components/responses/VnfLcmOpOccs.Get.200' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + + /vnf_lcm_op_occs/{vnfLcmOpOccId}: + parameters: + - $ref: '#/components/parameters/VnfLcmOpOccId' + get: + tags: + - VNF Instances + summary: Query information about an individual VNF LCM Operation Occurrence + description: Query information about an individual VNF LCM Operation Occurrence + responses: + 200: + $ref: '#/components/responses/IndividualVnfLcmOpOcc.Get.200' + 400: + $ref: '../responses/SOL003_resp.yaml#/components/responses/400' + 401: + $ref: '../responses/SOL003_resp.yaml#/components/responses/401' + 403: + $ref: '../responses/SOL003_resp.yaml#/components/responses/403' + 404: + $ref: '../responses/SOL003_resp.yaml#/components/responses/404' + 405: + $ref: '../responses/SOL003_resp.yaml#/components/responses/405' + 406: + $ref: '../responses/SOL003_resp.yaml#/components/responses/406' + 409: + $ref: '../responses/SOL003_resp.yaml#/components/responses/409' + 422: + $ref: '../responses/SOL003_resp.yaml#/components/responses/422' + 500: + $ref: '../responses/SOL003_resp.yaml#/components/responses/500' + 503: + $ref: '../responses/SOL003_resp.yaml#/components/responses/503' + 5XX: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + default: + $ref: '../responses/SOL003_resp.yaml#/components/responses/UnexpectedError' + +components: + parameters: + VnfInstanceId: + name: vnfInstanceId + in: path + required: true + description: Identifier of the VNF instance + schema: + type: string + VnfLcmOpOccId: + name: vnfLcmOpOccId + in: path + required: true + description: | + Identifier of the VNF lifecycle management operation occurrence + schema: + type: string + + responses: + VNFInstances.Get.200: + description: OK + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ArrayOfVnfInstance' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ArrayOfVnfInstance' + VNFInstances.Post.201: + description: Created + headers: + Location: + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + IndividualVnfInstance.Get.200: + description: OK + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfInstance' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfInstance' + InstantiateVnfInstance.Post.202: + description: Accepted + headers: + Location: + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + ScaleVnfInstance.Post.202: + description: Accepted + headers: + Location: + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + TerminateVnfInstance.Post.202: + description: Accepted + headers: + Location: + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ObjectId' + VnfLcmOpOccs.Get.200: + description: OK + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ArrayOfVnfLcmOpOcc' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ArrayOfVnfLcmOpOcc' + IndividualVnfLcmOpOcc.Get.200: + description: OK + content: + application/json: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc' + application/yaml: + schema: + $ref: './definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc' diff --git a/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml b/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml new file mode 100644 index 0000000..33b6f52 --- /dev/null +++ b/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml @@ -0,0 +1,180 @@ +definitions: + ObjectId: + type: object + properties: + id: + type: string + format: uuid + VnfInstance: + description: VNF Instance Information + type: object + properties: + id: + description: Identifier of the VNF instance. + type: string + format: uuid + name: + description: Human readable name of the VNF instance. + type: string + description: + description: Human readable description of the VNF instance. + type: string + required: + - id + - name + ArrayOfVnfInstance: + type: array + items: + $ref: '#/definitions/VnfInstance' + CreateVnfRequest: + type: object + properties: + vnfdId: + description: Identifier of the VNFD that defines the VNF instance to be created. + type: string + vnfInstanceName: + description: Human-readable name of the VNF instance to be created. + type: string + vnfInstanceDescription: + type: string + nullable: true + vimAccountId: + description: >- + Identifier of the VIM Account where the VNF instance shall be + created. + type: string + format: uuid + additionalParams: + type: object + properties: + virtual-link-desc: + type: array + items: + type: object + properties: + id: + type: string + mgmt-network: + type: boolean + constituent-cpd-id: + type: string + virtual-link-profile-id: + type: string + required: + - vnfdId + - vnfInstanceName + - vimAccountId + additionalProperties: false + InstantiateVnfRequest: + type: object + properties: + vnfId: + description: Identifier of the VNFD + type: string + vnfName: + description: Human-readable name of the VNF instance + type: string + vnfDescription: + type: string + nullable: true + vimAccountId: + description: >- + Identifier of the VIM Account where the VNF instance shall be + created. + type: string + format: uuid + required: + - vnfId + - vnfName + - vimAccountId + additionalProperties: false + ScaleVnfRequest: + type: object + properties: + type: + description: > + Indicates the type of the scale operation requested. + Permitted values: + * SCALE_OUT: adding additional VNFC instances to the VNF to increase + capacity + * SCALE_IN: removing VNFC instances from the VNF in order to release + unused capacity. + type: string + enum: + - SCALE_OUT + - SCALE_IN + aspectId: + description: > + Identifier of the scaling aspect. + type: string + numberOfSteps: + description: > + Number of scaling steps to be executed as part of this Scale VNF + operation. It shall be a positive number and the default value + shall be 1. + type: integer + default: 1 + additionalParams: + type: object + properties: + member-vnf-index: + type: string + required: + - member-vnf-index + required: + - type + - aspectId + - numberOfSteps + additionalProperties: false + TerminateVnfRequest: + type: object + properties: + terminationType: + type: string + enum: + - GRACEFUL + - FORCEFUL + gracefulTerminationTimeout: + type: integer + additionalProperties: false + VnfLcmOpOcc: + type: object + properties: + _id: + type: string + format: uuid + id: + type: string + format: uuid + lcmOperationType: + type: string + vnfInstanceId: + type: string + format: uuid + isAutomaticInvocation: + type: boolean + isCancelPending: + type: boolean + startTime: + type: number + format: float + statusEnteredTime: + type: number + format: float + operationState: + type: string + detailed-status: + type: string + _links: + type: object + properties: + self: + type: string + format: path + vnfInstance: + type: string + format: path + ArrayOfVnfLcmOpOcc: + type: array + items: + $ref: '#/definitions/VnfLcmOpOcc' \ No newline at end of file diff --git a/src/SOL003/components/SOL003_params.yaml b/src/SOL003/components/SOL003_params.yaml new file mode 100644 index 0000000..a277a55 --- /dev/null +++ b/src/SOL003/components/SOL003_params.yaml @@ -0,0 +1,117 @@ +components: + parameters: + Version: + name: Version + description: > + Version of the API requested to use when responding to this request. + in: header + required: true + schema: + type: string + + Accept: + name: Accept + description: > + Content-Types that are acceptable for the response. Reference: IETF RFC 7231. + in: header + required: true + schema: + type: string + + Authorization: + name: Authorization + description: > + The authorization token for the request. Reference: IETF RFC 7235. + in: header + required: false + schema: + type: string + + ContentType: + name: Content-Type + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + in: header + required: true + schema: + type: string + + filter: + name: filter + description: > + Attribute-based filtering expression according to clause 5.2 of ETSI + GS NFV-SOL 013. The VNFM shall support + receiving this parameter as part of the URI query string. The API + consumer may supply this parameter. All attribute names that appear + in the FmSubscription and in data types referenced from it shall be + supported by the NFV-MANO functional entity in the filter + expression. + in: query + required: false + schema: + type: string + + all_fields: + name: all_fields + description: > + Include all complex attributes in the response. See clause + 5.3 of ETSI GS NFV-SOL 013. The NFV-MANO functional entity + shall support this parameter. + in: query + required: false + schema: + type: string + + fields: + name: fields + description: > + Complex attributes to be included into the response. See clause + 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional + entity should support this parameter. + in: query + required: false + schema: + type: string + + exclude_fields: + name: exclude_fields + description: > + Complex attributes to be excluded from the response. See clause + 5.3 of ETSI GS NFV-SOL 013 for details. The NFV-MANO functional + entity should support this parameter. + in: query + required: false + schema: + type: string + + exclude_default: + name: exclude_default + in: query + description: >- + Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 + for details. The VNFM shall support this parameter. + The following attributes shall be excluded from the VnfLcmOpOcc structure in the response + body if this parameter is provided, or none of the parameters "all_fields," "fields", + "exclude_fields", "exclude_default" are provided: + - operationParams + - error + - resourceChanges + - changedInfo + - changedExtConnectivity + - lcmCoordinations + - modificationsTriggeredByVnfPkgChange + - warnings + required: false + schema: + type: string + + nextpage_opaque_marker: + name: nextpage_opaque_marker + description: > + Marker to obtain the next page of a paged response. Shall be supported by + the VNFM if the entity supports alternative 2 (paging) + according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource. + in: query + required: false + schema: + type: string diff --git a/src/SOL003/definitions/SOL003_def.yaml b/src/SOL003/definitions/SOL003_def.yaml new file mode 100644 index 0000000..4078f7d --- /dev/null +++ b/src/SOL003/definitions/SOL003_def.yaml @@ -0,0 +1,20 @@ +definitions: + ProblemDetails: + type: object + properties: + type: + type: string + format: uri + title: + type: string + status: + type: integer + detail: + type: string + instance: + type: string + format: uri + additionalProperties: true + required: + - status + - detail \ No newline at end of file diff --git a/src/SOL003/responses/SOL003_resp.yaml b/src/SOL003/responses/SOL003_resp.yaml new file mode 100644 index 0000000..c1a0013 --- /dev/null +++ b/src/SOL003/responses/SOL003_resp.yaml @@ -0,0 +1,396 @@ +components: + responses: + 204: + description: > + 204 No Content + headers: + Content-Type: + description: > + The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + Content-Range: + description: > + The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + schema: + type: string + maximum: 1 + minimum: 1 + + 206: + description: > + 206 PARTIAL CONTENT + headers: + Content-Type: + description: > + The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + Content-Range: + description: > + The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 303: + description: > + 303 See Other + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + + 400: + description: > + 400 BAD REQUEST + + 400 code can be returned in the following specified cases, the specific cause has to be proper specified in the + "ProblemDetails" structure to be returned. + + If the request is malformed or syntactically incorrect (e.g. if the request URI contains incorrect + query parameters or the payload body contains a syntactically incorrect data structure), + 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 response to a GET request which queries a container resource would be so big that the performance + of the API producer is adversely affected, and the API producer does not support paging for the affected resource, + it 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 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. + + 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. + + The use of this HTTP error response code described above is applicable to the use of the OAuth 2.0 + for the authorization of API requests and notifications, as defined in clauses 4.5.3.3 and 4.5.3.4. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 401: + description: > + 401 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: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 403: + description: > + 403 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. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 404: + description: > + 404 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. + + This response code is not appropriate in case the resource addressed by the URI is a container resource + which is designed to contain child resources, but does not contain any child resource at the time + the request is received. For a GET request to an existing empty container resource, a typical response + contains a 200 OK response code and a payload body with an empty array. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 405: + description: > + 405 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. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 406: + description: > + 406 NOT ACCEPTABLE + + If the "Accept" HTTP header does not contain at least one name of a content type + that is acceptable to the API producer, the API producer shall respond with this + response code. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 409: + description: > + 409 CONFLICT + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 412: + description: > + 412 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. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 413: + description: > + 413 PAYLOAD TOO LARGE + + If the payload body of a request is larger than the amount of data the API producer is willing or able to process, + it shall respond with this response code, following the provisions in IETF RFC 7231 for the use + of the "Retry-After" HTTP header and for closing the connection. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 414: + description: > + 414 URI TOO LONG + + If the request URI of a request is longer than the API producer is willing or able to process, + it shall respond with this response code. This condition can e.g. be caused by passing long queries + in the request URI of a GET request. The "ProblemDetails" structure may be omitted. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 416: + description: > + 416 Range Not Satisfiable + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 422: + description: > + 422 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. + + 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. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 429: + description: > + 429 TOO MANY REQUESTS + + If the API consumer has sent too many requests in a defined period of time and the API producer is able + to detect that condition ("rate limiting"), the API producer shall respond with this response code, + following the provisions in IETF RFC 6585 [17] for the use of the "Retry-After" HTTP header. + The "ProblemDetails" structure shall be provided and shall include in the "detail" attribute more information + about the source of the problem. + + The period of time and allowed number of requests are configured within the API producer by means + outside the scope of the present document. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 500: + description: > + 500 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. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 503: + description: > + 503 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 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. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + 504: + description: > + 504 GATEWAY TIMEOUT + + If the API producer encounters a timeout while waiting for a response from an upstream server + (i.e. a server that the API producer communicates with when fulfilling a request), it should respond + with this response code. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails" + + UnexpectedError: + description: Unexpected error. + content: + application/json: + schema: + $ref: "../definitions/SOL003_def.yaml#/definitions/ProblemDetails"