diff --git a/SRV/BWA/PlatBandwidthManager.robot b/SRV/BWA/PlatBandwidthManager.robot
new file mode 100644
index 0000000000000000000000000000000000000000..3b6ad1aa72e0386fa79d774282e4b26c1a394459
--- /dev/null
+++ b/SRV/BWA/PlatBandwidthManager.robot
@@ -0,0 +1,171 @@
+''[Documentation] robot --outputdir ../../outputs ./PlatBandwidthManager.robot
+... Test Suite to validate Bandwidth Management API (BWA) operations.
+
+*** Settings ***
+Resource environment/variables.txt
+Resource ../../pics.txt
+Resource ../../GenericKeywords.robot
+Resource resources/BandwidthManagerAPI.robot
+Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
+
+
+
+*** Test Cases ***
+Request the list of configured bandwidth allocations
+ [Documentation] TC_MEC_SRV_BWA_001_OK
+ ... Check that the IUT responds with the list of configured bandwidth allocations when queried by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.1
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Get the list of configured bandwidth allocations ${APP_INSTANCE_ID}
+ Check HTTP Response Status Code Is 200
+ Check HTTP Response Body Json Schema Is bwInfo
+ Check AppInstanceId ${APP_INSTANCE_ID}
+
+
+Request the list of configured bandwidth allocations with wrong app instance id
+ [Documentation] TC_MEC_SRV_BWA_001_BR
+ ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.1
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Get the list of configured bandwidth allocations ${NON_EXISTENT_APP_INSTANCE_ID}
+ Check HTTP Response Status Code Is 400
+ Check ProblemDetails 400
+
+
+Request for the requested bandwidth requirements
+ [Documentation] TC_MEC_SRV_BWA_002_OK
+ ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.4
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Registration for bandwidth requirements ${APP_INSTANCE_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
+ Check HTTP Response Status Code Is 200
+ Check HTTP Response Body Json Schema Is bwInfo
+ Check AppInstanceId ${APP_INSTANCE_ID}
+
+
+Request for the requested bandwidth requirements using wrong parameters
+ [Documentation] TC_MEC_SRV_BWA_002_BR
+ ... Check that the IUT responds with a registration and initialisation approval for the requested bandwidth requirements sent by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.4.3.4
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Registration for bandwidth requirements ${APP_INSTANCE_ID} ${REQUEST_FOR_BW_REQUIREMENTS_BR}
+ Check HTTP Response Status Code Is 400
+ Check ProblemDetails 400
+
+
+Request for a bandwidth allocation
+ [Documentation] TC_MEC_SRV_BWA_003_OK
+ ... Check that the IUT responds with the configured bandwidth allocation when queried by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.1
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Get a bandwidth allocation ${ALLOCATION_ID}
+ Check HTTP Response Status Code Is 200
+ Check HTTP Response Body Json Schema Is bwInfo
+ Check AppInstanceId ${APP_INSTANCE_ID}
+
+
+Request for a bandwidth allocation using wrong parameters
+ [Documentation] TC_MEC_SRV_BWA_003_NF
+ ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.1
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Get a bandwidth allocation ${NON_EXISTENT_ALLOCATION_ID}
+ Check HTTP Response Status Code Is 404
+ Check ProblemDetails 404
+
+
+Updates the requested bandwidth requirements
+ [Documentation] TC_MEC_SRV_BWA_004_OK
+ ... Check that the IUT updates the requested bandwidth requirements when commanded by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
+ Check HTTP Response Status Code Is 200
+ Check HTTP Response Body Json Schema Is bwInfo
+ Check AppInstanceId ${APP_INSTANCE_ID}
+ Check Allocation ${ALLOCATION_ID}
+
+
+ [Documentation] TC_MEC_SRV_BWA_004_BR
+ Updates the requested bandwidth requirements using wrong allocationDirection
+ ... Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS_ID}
+ Check HTTP Response Status Code Is 400
+ Check ProblemDetails 400
+
+
+Updates the requested bandwidth requirements using wrong allocationId
+ [Documentation] TC_MEC_SRV_BWA_004_NF
+ ... Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ Update a bandwidth allocation ${NOT_EXISTENT_ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
+ Check HTTP Response Status Code Is 404
+ Check ProblemDetails 404
+
+
+Updates the requested bandwidth requirements using wrong parameters
+ [Documentation] TC_MEC_SRV_BWA_004_PF
+ ... Check that the IUT responds with an error when a request sent by a MEC Application doesn't comply with a required condition
+ ... Reference ETSI GS MEC 015 V1.1.1, clause 8.3.3.2
+ ... Reference https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api/blob/master/BwManagementApi.json
+ # TODO Application doesn't comply with a required condition???
+ Update a bandwidth allocation ${ALLOCATION_ID} ${REQUEST_FOR_BW_REQUIREMENTS}
+ Check HTTP Response Status Code Is 412
+ Check ProblemDetails 412
+
+
+*** Keywords ***
+ Get the list of configured bandwidth allocations
+ [Arguments] ${app_instance_id}
+ Should Be True ${PIC_MEC_PLAT} == 1
+ Should Be True ${PIC_SERVICES} == 1
+ Set Headers {"Accept":"application/json"}
+ Set Headers {"Content-Type":"application/json"}
+ Set Headers {"Authorization":"${TOKEN}"}
+ Set Headers {"Content-Length":"0"}
+ Get /exampleAPI/bwm/v1/bw_allocations?app_instance_id=${app_instance_id}
+ ${output}= Output response
+ Set Suite Variable ${response} ${output}
+
+
+ Registration for bandwidth requirements
+ [Arguments] ${app_instance_id} ${content}
+ Should Be True ${PIC_MEC_PLAT} == 1
+ Should Be True ${PIC_SERVICES} == 1
+ Set Headers {"Accept":"application/json"}
+ Set Headers {"Content-Type":"application/json"}
+ Set Headers {"Authorization":"${TOKEN}"}
+ Set Headers {"Content-Length":"0"}
+ log ${content}
+ Put /exampleAPI/bwm/v1/bw_allocations?app_instance_id=${APP_INSTANCE_ID} ${content}
+ ${output}= Output response
+ Set Suite Variable ${response} ${output}
+
+
+ Get a bandwidth allocation
+ [Arguments] ${allocation_id}
+ Should Be True ${PIC_MEC_PLAT} == 1
+ Should Be True ${PIC_SERVICES} == 1
+ Set Headers {"Accept":"application/json"}
+ Set Headers {"Content-Type":"application/json"}
+ Set Headers {"Authorization":"${TOKEN}"}
+ Set Headers {"Content-Length":"0"}
+ Get /exampleAPI/bwm/v1/bw_allocations?allocation_id=${allocation_id}
+ ${output}= Output response
+ Set Suite Variable ${response} ${output}
+
+
+ Update a bandwidth allocation
+ [Arguments] ${allocation_id} ${content}
+ Should Be True ${PIC_MEC_PLAT} == 1
+ Should Be True ${PIC_SERVICES} == 1
+ Set Headers {"Accept":"application/json"}
+ Set Headers {"Content-Type":"application/json"}
+ Set Headers {"Authorization":"${TOKEN}"}
+ Set Headers {"Content-Length":"0"}
+ Put /exampleAPI/bwm/v1/bw_allocations?allocation_id=${allocation_id} ${content}
+ ${output}= Output response
+ Set Suite Variable ${response} ${output}
diff --git a/SRV/BWA/environment/variables.txt b/SRV/BWA/environment/variables.txt
new file mode 100644
index 0000000000000000000000000000000000000000..935123377f9d8c76b4c31e925f6443e6f47f8933
--- /dev/null
+++ b/SRV/BWA/environment/variables.txt
@@ -0,0 +1,17 @@
+*** Variables ***
+${MEC-APP_SCHEMA} http
+#${MEC-APP_HOST} 172.28.4.87
+#${MEC-APP_HOST} 127.0.0.1
+${MEC-APP_HOST} 192.168.56.1
+${MEC-APP_PORT} 8081
+${ZONE_ID} zone01
+${APP_INSTANCE_ID} appInst01
+${NON_EXISTENT_APP_INSTANCE_ID} appInst99
+${ALLOCATION_ID} allInst01
+${NON_EXISTENT_ALLOCATION_ID} allInst99
+${FIXED_ALLOCATION} string
+${REQUEST_FOR_BW_REQUIREMENTS} "{ "appInsId": "${APP_INSTANCE_ID}", "requestType": "APPLICATION_SPECIFIC_BW_ALLOCATION", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "${FIXED_ALLOCATION}", "allocationDirection": "00 = Downlink (towards the UE)"}"
+${REQUEST_FOR_BW_REQUIREMENTS_BR} "{ "appInsId": "${APP_INSTANCE_ID}", "requestType": "UNKMOWN", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "${FIXED_ALLOCATION}", "allocationDirection": "00 = Downlink (towards the UE)"}"
+${REQUEST_FOR_BW_REQUIREMENTS_ID} "{ "appInsId": "${APP_INSTANCE_ID}", "requestType": "APPLICATION_SPECIFIC_BW_ALLOCATION", "fixedBWPriority": "not defined in the present document", "fixedAllocation": "${FIXED_ALLOCATION}", "allocationDirection": "99 = DownAndDownlink (towards the UE)"}"
+${response} {}
+${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
diff --git a/SRV/BWA/resources/BandwidthManagerAPI.robot b/SRV/BWA/resources/BandwidthManagerAPI.robot
new file mode 100644
index 0000000000000000000000000000000000000000..4e55077ebede56d3f2576400bcb5d16d3d125381
--- /dev/null
+++ b/SRV/BWA/resources/BandwidthManagerAPI.robot
@@ -0,0 +1,21 @@
+*** Settings ***
+Resource ../environment/variables.txt
+Resource ../../../pics.txt
+Resource ../../../GenericKeywords.robot
+Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false
+Library JSONSchemaLibrary schemas/
+
+
+*** Keywords ***
+Check AppInstanceId
+ [Arguments] ${value}
+ Log Check AppInstanceId for bwInfo element
+ Should be Equal ${response['body']['bwInfo']['appInsId']} ${value}
+ Log AppInstanceId OK
+
+
+Check AllocationId
+ [Arguments] ${value}
+ Log Check AllocationId for bwInfo element
+ Should be Equal ${response['body']['bwInfo']['fixedAllocation']} ${value}
+ Log AllocationId OK
diff --git a/SRV/BWA/schemas/BandwidthManagementAPI.schema.json b/SRV/BWA/schemas/BandwidthManagementAPI.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..10e0963b637512fdae20809aa7a5c61ac8be91a6
--- /dev/null
+++ b/SRV/BWA/schemas/BandwidthManagementAPI.schema.json
@@ -0,0 +1,674 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "The ETSI MEC ISG MEC015 Bandwidth Management API described using OpenAPI",
+ "version": "1.1.1",
+ "title": "BWM API",
+ "license": {
+ "name": "ETSI Forge copyright notice",
+ "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
+ }
+ },
+ "externalDocs": {
+ "description": "ETSI MEC015 V1.1.1 Bandwidth Management API",
+ "url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/01.01.01_60/gs_MEC015v010101p.pdf"
+ },
+ "host": "127.0.0.1:8081",
+ "basePath": "/bwm/v1",
+ "schemes": [
+ "http",
+ "https"
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "security": [
+ {
+ "OauthSecurity": [
+ "all"
+ ]
+ }
+ ],
+ "securityDefinitions": {
+ "OauthSecurity": {
+ "type": "oauth2",
+ "flow": "application",
+ "tokenUrl": "https://oauth.exampleAPI/token",
+ "scopes": {
+ "all": "Single oauth2 scope for API"
+ }
+ }
+ },
+ "parameters": {
+ "Body.BwInfo": {
+ "name": "bwInfo",
+ "in": "body",
+ "description": "BwInfo with updated information is included as entity body of the request",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/BwInfo"
+ }
+ },
+ "Body.BwInfoDeltas": {
+ "name": "bwInfoDeltas",
+ "in": "body",
+ "description": "Description of the changes to instruct the server how to modify the resource representation. ",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/BwInfoDeltas"
+ }
+ },
+ "Path.AllocationId": {
+ "name": "allocationId",
+ "in": "path",
+ "description": "Represents a bandwidth allocation instance",
+ "required": true,
+ "type": "string"
+ },
+ "Query.AppInstanceId": {
+ "name": "app_instance_id",
+ "in": "query",
+ "description": "A mobile edge application instance may use multiple app_instance_ids as an input parameter to query the bandwidth allocation of a list of mobile edge application instances. ",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "Query.AppName": {
+ "name": "app_name",
+ "in": "query",
+ "description": "A mobile edge application instance may use multiple ser_names as an input parameter to query the bandwidth allocation of a list of mobile edge application instances. ",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "Query.SessionId": {
+ "name": "session_id",
+ "in": "query",
+ "description": "A mobile edge application instance may use session_id as an input parameter to query the bandwidth allocation of a list of sessions. ",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "paths": {
+ "/bw_allocations": {
+ "get": {
+ "description": "This method retrieves information about a list of bandwidthAllocation resources",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Query.AppInstanceId"
+ },
+ {
+ "$ref": "#/parameters/Query.AppName"
+ },
+ {
+ "$ref": "#/parameters/Query.SessionId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Upon success, a response body containing an array of the bandwidthAllocations is returned.",
+ "schema": {
+ "required": [
+ "bwInfo"
+ ],
+ "properties": {
+ "bwInfo": {
+ "$ref": "#/definitions/BwInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "The operation is not allowed given the current status of the resource. More information should be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
+ "schema": {
+ "required": [
+ "ProblemDetails"
+ ],
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ }
+ }
+ },
+ "post": {
+ "description": "This method is used to create a bandwidthAllocation resource.",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Body.BwInfo"
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Upon success, the HTTP response shall include a \"Location\" HTTP header that contains the resource URI of the created resource.",
+ "schema": {
+ "required": [
+ "bwInfo"
+ ],
+ "properties": {
+ "bwInfo": {
+ "$ref": "#/definitions/BwInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "The operation is not allowed given the current status of the resource. More information should be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
+ "schema": {
+ "required": [
+ "ProblemDetails"
+ ],
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/bw_allocations/{allocationId}": {
+ "get": {
+ "description": "This method retrieves information about a specific bandwidthAllocation resource. ",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Path.AllocationId"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
+ "schema": {
+ "required": [
+ "bwInfo"
+ ],
+ "properties": {
+ "bwInfo": {
+ "$ref": "#/definitions/BwInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure. required:\n - ProblemDetails\nproperties:\n ProblemDetails:\n $ref: '#/definitions/ProblemDetails'"
+ },
+ "404": {
+ "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ }
+ }
+ },
+ "put": {
+ "description": "This method updates the information about a specific bandwidthAllocation resource. ",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Path.AllocationId"
+ },
+ {
+ "$ref": "#/parameters/Body.BwInfo"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Upon success, a response body containing data type describing the updated BwInfo is returned.",
+ "schema": {
+ "required": [
+ "bwInfo"
+ ],
+ "properties": {
+ "bwInfo": {
+ "$ref": "#/definitions/BwInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
+ "schema": {
+ "required": [
+ "ProblemDetails"
+ ],
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "412": {
+ "description": "It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ }
+ }
+ },
+ "patch": {
+ "description": "This method updates the information about a specific bandwidthAllocation resource. ",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Path.AllocationId"
+ },
+ {
+ "$ref": "#/parameters/Body.BwInfoDeltas"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Upon success, a response body containing data type describing the updated BwInfo is returned.",
+ "schema": {
+ "required": [
+ "bwInfo"
+ ],
+ "properties": {
+ "bwInfo": {
+ "$ref": "#/definitions/BwInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "It is used to indicate that incorrect parameters were passed to the request. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "403": {
+ "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
+ "schema": {
+ "required": [
+ "ProblemDetails"
+ ],
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "412": {
+ "description": "It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ }
+ }
+ },
+ "delete": {
+ "description": "Remove a specific bandwidthAllocation resource. DELETE method is typically used in \"Unregister from Bandwidth Management Service\" procedure",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "$ref": "#/parameters/Path.AllocationId"
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "403": {
+ "description": "The operation is not allowed given the current status of the resource. More information shall be provided in the \"detail\" attribute of the \"ProblemDetails\" structure.",
+ "schema": {
+ "required": [
+ "ProblemDetails"
+ ],
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the \"detail\" attribute should convey more information about the error.",
+ "schema": {
+ "properties": {
+ "ProblemDetails": {
+ "$ref": "#/definitions/ProblemDetails"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "ProblemDetails": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "$ref": "#/definitions/Problem.type"
+ },
+ "title": {
+ "$ref": "#/definitions/Problem.title"
+ },
+ "status": {
+ "$ref": "#/definitions/Problem.status"
+ },
+ "detail": {
+ "$ref": "#/definitions/Problem.detail"
+ },
+ "instance": {
+ "$ref": "#/definitions/Problem.instance"
+ }
+ }
+ },
+ "Problem.type": {
+ "type": "string",
+ "format": "uri",
+ "description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
+ },
+ "Problem.title": {
+ "type": "string",
+ "description": "A short, human-readable summary of the problem type"
+ },
+ "Problem.status": {
+ "type": "integer",
+ "format": "uint32",
+ "description": "The HTTP status code for this occurrence of the problem"
+ },
+ "Problem.detail": {
+ "type": "string",
+ "description": "A human-readable explanation specific to this occurrence of the problem"
+ },
+ "Problem.instance": {
+ "type": "string",
+ "format": "uri",
+ "description": "A URI reference that identifies the specific occurrence of the problem"
+ },
+ "BwInfo": {
+ "description": "information of bandwidth resource",
+ "type": "object",
+ "required": [
+ "appInsId",
+ "requestType",
+ "fixedAllocation",
+ "allocationDirection"
+ ],
+ "properties": {
+ "timeStamp": {
+ "$ref": "#/definitions/TimeStamp"
+ },
+ "appInsId": {
+ "$ref": "#/definitions/AppInsId"
+ },
+ "requestType": {
+ "$ref": "#/definitions/RequestType"
+ },
+ "sessionFilter": {
+ "$ref": "#/definitions/SessionFilter"
+ },
+ "fixedBWPriority": {
+ "$ref": "#/definitions/FixedBWPriority"
+ },
+ "fixedAllocation": {
+ "$ref": "#/definitions/FixedAllocation"
+ },
+ "allocationDirection": {
+ "$ref": "#/definitions/AllocationDirection"
+ }
+ }
+ },
+ "BwInfoDeltas": {
+ "description": "Conform to JSON merge patch format and processing rules specified IETF RFC 7396 [8], this type represents the attributes whose value are allowed to be updated with HTTP PATCH method in content format JSON",
+ "type": "object",
+ "properties": {
+ "appInsId": {
+ "$ref": "#/definitions/AppInsId"
+ },
+ "requestType": {
+ "$ref": "#/definitions/RequestType"
+ },
+ "sessionFilter": {
+ "$ref": "#/definitions/SessionFilter"
+ },
+ "fixedBWPriority": {
+ "$ref": "#/definitions/FixedBWPriority"
+ },
+ "fixedAllocation": {
+ "$ref": "#/definitions/FixedAllocation"
+ },
+ "allocationDirection": {
+ "$ref": "#/definitions/AllocationDirection"
+ }
+ }
+ },
+ "TimeStamp": {
+ "type": "object",
+ "required": [
+ "seconds",
+ "nanoSeconds"
+ ],
+ "properties": {
+ "seconds": {
+ "$ref": "#/definitions/Seconds"
+ },
+ "nanoSeconds": {
+ "$ref": "#/definitions/NanoSeconds"
+ }
+ }
+ },
+ "AppInsId": {
+ "description": "Application instance identifier",
+ "type": "string"
+ },
+ "RequestType": {
+ "description": "Numeric value (0 - 255) corresponding to specific type of consumer",
+ "type": "string",
+ "enum": [
+ "APPLICATION_SPECIFIC_BW_ALLOCATION",
+ "SESSION_SPECIFIC_BW_ALLOCATION"
+ ]
+ },
+ "SessionFilter": {
+ "description": "Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "sourceIp": {
+ "$ref": "#/definitions/SourceIp"
+ },
+ "sourcePort": {
+ "$ref": "#/definitions/SourcePort"
+ },
+ "dstAddress": {
+ "$ref": "#/definitions/DstAddress"
+ },
+ "dstPort": {
+ "$ref": "#/definitions/DstPort"
+ },
+ "protocol": {
+ "$ref": "#/definitions/Protocol"
+ }
+ }
+ }
+ },
+ "FixedBWPriority": {
+ "description": "Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document",
+ "type": "string",
+ "enum": [
+ "not defined in the present document"
+ ]
+ },
+ "FixedAllocation": {
+ "description": "Size of requested fixed BW allocation in [bps]",
+ "type": "string"
+ },
+ "AllocationDirection": {
+ "description": "The direction of the requested BW allocation",
+ "type": "string",
+ "enum": [
+ "00 = Downlink (towards the UE)",
+ "01 = Uplink (towards the application/session)",
+ "10 = Symmetrical"
+ ]
+ },
+ "Seconds": {
+ "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
+ "type": "integer",
+ "format": "uint32"
+ },
+ "NanoSeconds": {
+ "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC",
+ "type": "integer",
+ "format": "uint32"
+ },
+ "SourceIp": {
+ "description": "Source address identity of session (including range)",
+ "type": "string"
+ },
+ "SourcePort": {
+ "description": "Source port identity of session ",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "DstAddress": {
+ "description": "Destination address identity of session (including range)",
+ "type": "string"
+ },
+ "DstPort": {
+ "description": "Destination port identity of session ",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "Protocol": {
+ "description": "Protocol number",
+ "type": "string"
+ }
+ }
+ }
+
diff --git a/TODO.md b/TODO.md
index 5258fa22f24a1b999ea9728299e3287747fe8118..ff79079e37c0dcbc4e075d8a18bdc7deccf22c15 100644
--- a/TODO.md
+++ b/TODO.md
@@ -22,7 +22,25 @@ ETSI GS MEC 016 V2.1.1
https://forge.etsi.org/rep/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/MEO/UEAPPS/SysUeApplications.tplan2
-TODO
+- TC_MEC_SRV_BWA_001_OK To be tested
+
+- TC_MEC_SRV_BWA_001_BR To be tested
+
+- TC_MEC_SRV_BWA_002_OK To be tested
+
+- TC_MEC_SRV_BWA_002_BR To be tested
+
+- TC_MEC_SRV_BWA_003_OK To be tested
+
+- TC_MEC_SRV_BWA_003_NF To be tested
+
+- TC_MEC_SRV_BWA_004_OK To be tested
+
+- TC_MEC_SRV_BWA_004_BR To be tested
+
+- TC_MEC_SRV_BWA_004_NF To be tested
+
+- TC_MEC_SRV_BWA_004_PF To be tested
## SRV