diff --git a/GenericKeywords.robot b/GenericKeywords.robot index 90d51c56a049fba2fa18634d6c73f3099a5ffabb..ee12e8d01eb06eb9209b6182da6a285d470499d3 100644 --- a/GenericKeywords.robot +++ b/GenericKeywords.robot @@ -23,12 +23,21 @@ Check HTTP Response Body Json Schema Is Should Be Present In Json List [Arguments] ${expr} ${json_field} ${json_value} - Log Check if ${json_field} is present in ${expr} with the value ${jsonvalue} + Log Check if ${json_field} is present in ${expr} with the value ${json_value} :FOR ${item} IN @{expr} - \ Exit For Loop If "${item['${json_field}']}" == "${json_value}" + \ Exit For Loop If ${item[${json_field}]} == ${json_value} Log Item found ${item} [return] ${item} + +Should Be Present In Json + [Arguments] ${expr} ${json_field} ${json_value} + Log Check if ${json_field} is present in ${expr} with the value ${json_value} + Should Be Equal As Strings ${expr}[${json_field}] ${json_value} +Check Response Contains + [Arguments] ${source} ${parameter} ${value} + Should Be Present In Json ${source} ${parameter} ${value} + Check Result Contains [Arguments] ${source} ${parameter} ${value} Should Be Present In Json List ${source} ${parameter} ${value} diff --git a/README.md b/README.md index e684f3cca035407ec4ce55e3a5e7985352064eff..843d210561e44264054225c7e968e0862ba32771 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ -# MEC Testing Framework in Robot Framework +# MEC Testing Framework in Robot Framework - GS 032-2 ## Introduction -This repositories contains the test specifications and test adapter code for MEC Testing project in Robot Framework +This repositories contains the test specifications and test adapter code for MEC Testing project in Robot Framework. + +Latest publicly available drafts are available at https://docbox.etsi.org/isg/mec/open. + + +For more information on ETSI ISG Multi-access Edge Computing (MEC), visit https://www.etsi.org/technologies/multi-access-edge-computing. ## Contact information -Email at cti_support at etsi dot org + +Email at `cti_support` at `etsi` dot `org`. ## License Unless specified otherwise, the content of this repository and the files contained are released under the BSD-3-Clause license. @@ -21,16 +27,78 @@ NOTE All draft can be found in the 'IETF XML Registry', accessible [here](https: ## Installation -TODO +The main precondition for running the tests is having [Robot Framework](http://robotframework.org/) installed. +The [Robot Framework Installation Instructions](https://github.com/robotframework/robotframework/blob/master/INSTALL.rst) provide full details of the installation procedure. +For those familiar with installing Python packages with [pip](http://pip-installer.org/) package manager, the following command can be run to install [Robot Framework](http://robotframework.org/): + +[Robot Framework](http://robotframework.org/) >3.0 is recommended. It requires Python 3. + +### Robot Framework Required Libraries +The [Robot Framework](http://robotframework.org/) Test Cases in this repository depend on the following libraries: + +* [RESTInstance](https://github.com/asyrjasalo/RESTinstance) +* [DependencyLibrary](https://github.com/mentalisttraceur/robotframework-dependencylibrary) +* [JSONLibrary](https://github.com/nottyo/robotframework-jsonlibrary) +* [JSONSchemaLibrary](https://github.com/jstaffans/robotframework-jsonschemalibrary) +* [Requests](https://pypi.org/project/robotframework-requests/) + +A [pip](http://pip-installer.org/) [requirements file](https://forge.etsi.org/rep/mec/gs032p3-robot-test-suite/blob/2.1.1-fix-plu/requirements.txt) is provided to ease the installation of the required python libraries, as follows: +``` +$ pip install -r requirements.txt +``` ## Usage -TODO +The usage of these Test Suites goes through different steps. First of all, you should be aware of the structure's folder. After that, some configuration steps are needed and at the end, you can run the test. + +### Folder structure +The Test folder is structured as follow: +### Test Suite files +``` +// + +e.g.: SRV/APPSUB/PlatAppSubscriptions.robot +``` + +### Environmental files +In the same folder, you will find two subfolders +* environment +* jsons + +The **environment** folder contain a file, called *variables.txt*, which contains all the information necessary to reach and interact with the SUT +``` +*** Variables *** +${MEC-APP_SCHEMA} http +${MEC-APP_HOST} 192.168.56.1 +${MEC-APP_PORT} 8081 +... +``` +This file should be updated before running the tests. + +The **json** folder contains the json payloads necessary to perform the POST/PUT/PATCH requests. +These files should contain the exact content to be sent. + + +### Execution of the test cases +The [Robot Framework](http://robotframework.org/) Test Cases in this repository can be executed with the following command: +``` +$ robot +``` + +To execute all test case files in a directory recursively, just give the directory as an argument. You can also give multiple files or directories in one go and use various command-line options supported by [Robot Framework](http://robotframework.org/). + +For more information about the command-line usage, you can run: +``` +$ robot --help +``` +The [Robot Framework User Guide](http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#executing-test-cases) provides full details on how to execute tests in general. ## How to Report a Bug The ETSI MEC Testing Framework project is under constant development, so it is possible that you will -encounter a bug while using it. Please report bugs at cti_support at etsi dot org. +encounter a bug while using it. You may report in the [Issues section](https://forge.etsi.org/rep/mec/gs032p3-robot-test-suite/issues) of the project. + +For any other inquiry, you may contact cti_support at etsi dot org. diff --git a/SRV/APPSAQ/PlatAppServices.robot b/SRV/APPSAQ/PlatAppServices.robot index ed80ff179b1d4d1662a482c8d93195a75ad21126..0f118f4c32adbdb80459bd82e96ff7271b8fd707 100644 --- a/SRV/APPSAQ/PlatAppServices.robot +++ b/SRV/APPSAQ/PlatAppServices.robot @@ -18,8 +18,8 @@ TC_MEC_SRV_APPSAQ_001_OK ... Check that the IUT responds with a list of available MEC services ... for a given application instance when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.6.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -33,7 +33,7 @@ TC_MEC_SRV_APPSAQ_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 011 V2.0.9, clause 8.2.6.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES @@ -47,15 +47,15 @@ TC_MEC_SRV_APPSAQ_002_OK ... Check that the IUT notifies the authorised relevant (subscribed) application ... instances when a new service for a given application instance is registered ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.6.3.4 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Create new service ServiceInfo ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is ServiceInfo Check HTTP Response Header Contains Location -# Check Result Contains ${response['body']['ServiceInfo']} serName ${SERVICE_NAME} + Check Response Contains ${response['body']} serName ${NEW_SERVICE_NAME} TC_MEC_SRV_APPSAQ_002_BR @@ -63,8 +63,8 @@ TC_MEC_SRV_APPSAQ_002_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 011 V2.0.9, clause 8.2.6.3.4 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Create new service ServiceInfoError ${APP_INSTANCE_ID} @@ -76,8 +76,8 @@ TC_MEC_SRV_APPSAQ_002_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 011 V2.0.9, clause 8.2.6.3.4 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.6.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Create new service ServiceInfo ${NON_EXISTENT_APP_INSTANCE_ID} @@ -89,14 +89,14 @@ TC_MEC_SRV_APPSAQ_003_OK ... Check that the IUT responds with the information on a specific service ... for a given application instance when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.7.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual service ${APP_INSTANCE_ID} ${SERVICE_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ServiceInfo - Check Result Contains ${response['body']['ServiceInfo']} serInstanceId ${SERVICE_ID} + Check Response Contains ${response['body']} serInstanceId ${SERVICE_ID} TC_MEC_SRV_APPSAQ_003_NF @@ -104,7 +104,7 @@ TC_MEC_SRV_APPSAQ_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 011 V2.0.9, clause 8.2.7.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} @@ -116,14 +116,14 @@ TC_MEC_SRV_APPSAQ_004_OK ... Check that the IUT updates a service information for a given ... application instance when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.7.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Update service ${APP_INSTANCE_ID} ${SERVICE_ID} ServiceInfoUpdated Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ServiceInfo - #Check Result Contains ${response['body']['ServiceInfo']} version ${SVC_NEW_VERSION} + Check Response Contains ${response['body']} version ${SVC_NEW_VERSION} TC_MEC_SRV_APPSAQ_004_BR @@ -131,8 +131,8 @@ TC_MEC_SRV_APPSAQ_004_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 011 V2.0.9, clause 8.2.7.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Update service ${APP_INSTANCE_ID} ${SERVICE_ID} ServiceInfoUpdatedError @@ -144,8 +144,8 @@ TC_MEC_SRV_APPSAQ_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 011 V2.0.9, clause 8.2.7.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Update service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} ServiceInfoUpdated @@ -157,14 +157,39 @@ TC_MEC_SRV_APPSAQ_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 011 V2.0.9, clause 8.2.7.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Update service with invalid etag ${APP_INSTANCE_ID} ${SERVICE_ID} ServiceInfoUpdated Check HTTP Response Status Code Is 412 +TC_MEC_SRV_APPSAQ_005_OK + [Documentation] + ... Check that the IUT executes the deletion of a service + ... for a given application instance when requested by a MEC Application + ... + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfo + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Remove individual service ${APP_INSTANCE_ID} ${SERVICE_ID} + Check HTTP Response Status Code Is 204 + + +TC_MEC_SRV_APPSAQ_005_NF + [Documentation] + ... Check that the IUT responds with an error when + ... a request for deletion of a unknown service is sent by a MEC Application + ... + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.7.3.1 + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Remove individual service ${APP_INSTANCE_ID} ${NON_EXISTENT_SERVICE_ID} + Check HTTP Response Status Code Is 404 + + *** Keywords *** Get a list of mecService of an application instance with parameters @@ -211,7 +236,7 @@ Update service Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} - Post ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceId} ${body} + PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -223,6 +248,15 @@ Update service with invalid etag Update service ${appInstanceId} ${serviceId} ${content} +Remove individual service + [Arguments] ${appInstanceId} ${serviceName} + Set Headers {"Accept":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/services/${serviceName} + ${output}= Output response + Set Suite Variable ${response} ${output} + + # Check Plaform IUT notifies the MEC Application instances # [Documentation] # ... diff --git a/SRV/APPSAQ/environment/variables.txt b/SRV/APPSAQ/environment/variables.txt index fae67a395a25e007bdf05661dee0ecde2f484535..5b218f862cb092d7b6764391342a3593044be895 100644 --- a/SRV/APPSAQ/environment/variables.txt +++ b/SRV/APPSAQ/environment/variables.txt @@ -18,17 +18,8 @@ ${SERVICE_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 ${NON_EXISTENT_SERVICE_ID} NON_EXISTENT_SERVICE_ID ${INVALID_ETAG} INVALID_ETAG -# ${SUBSCRIPTION_TYPE} MobilityProcedureSubscription -# ${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 -# ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID -# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} NON_EXISTENT_APP_MOBILITY_SERVICE_ID +## this parameter should be the same as in jsons/ServiceInfo.json on param serName +${NEW_SERVICE_NAME} NEW_SERVICE_NAME -# # Notifications variables -# ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar - -# ${callback_port} 9091 -# ${callback_uri} http://172.22.1.7:${callback_port} -# ${callback_endpoint} /amsi/subscriptions -# ${callback_endpoint_error} /subs_404 -# ${total_polling_time} 2 min -# ${polling_interval} 10 sec \ No newline at end of file +## this parameter should be the same as in jsons/ServiceInfoUpdated.json on param sversion +${SVC_NEW_VERSION} v2.0 \ No newline at end of file diff --git a/SRV/APPSAQ/jsons/ServiceInfo.json b/SRV/APPSAQ/jsons/ServiceInfo.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a7962fa6d32db172133b8e046af8da749f929b04 100644 --- a/SRV/APPSAQ/jsons/ServiceInfo.json +++ b/SRV/APPSAQ/jsons/ServiceInfo.json @@ -0,0 +1,42 @@ +{ + "serName": "NEW_SERVICE_NAME", + "version": "reprehenderit Ut non commodo", + "state": "INACTIVE", + "transportInfo": { + "id": "labore ut Excepteur sunt ipsum", + "name": "in minim enim", + "type": "MB_ROUTING", + "protocol": "veniam aliqua cillum in", + "version": "exercitation pariatur", + "endpoint": { + "addresses": [ + { + "host": "sint culpa laboris", + "port": 10968 + } + ] + }, + "security": { + "oAuth2Info": { + "grantTypes": [ + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9" + } + }, + "description": "dolor occaecat pariatur ex do" + }, + "serializer": "XML", + "serInstanceId": "cillum nostrud minim consectetur proident", + "serCategory": { + "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,", + "id": "consectetur et eiusmod", + "name": "ea ipsum irure mollit et", + "version": "et" + }, + "scopeOfLocality": "ZONE", + "consumedLocalOnly": true, + "isLocal": false +} \ No newline at end of file diff --git a/SRV/APPSAQ/jsons/ServiceInfoError.json b/SRV/APPSAQ/jsons/ServiceInfoError.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..672c8a05db8746bbfdd23b2f9888be7cc938034f 100644 --- a/SRV/APPSAQ/jsons/ServiceInfoError.json +++ b/SRV/APPSAQ/jsons/ServiceInfoError.json @@ -0,0 +1,42 @@ +{ + "Name": "WRONG_PARAMETER_NAME", + "version": "reprehenderit Ut non commodo", + "state": "INACTIVE", + "transportInfo": { + "id": "labore ut Excepteur sunt ipsum", + "name": "in minim enim", + "type": "MB_ROUTING", + "protocol": "veniam aliqua cillum in", + "version": "exercitation pariatur", + "endpoint": { + "addresses": [ + { + "host": "sint culpa laboris", + "port": 10968 + } + ] + }, + "security": { + "oAuth2Info": { + "grantTypes": [ + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9" + } + }, + "description": "dolor occaecat pariatur ex do" + }, + "serializer": "XML", + "serInstanceId": "cillum nostrud minim consectetur proident", + "serCategory": { + "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,", + "id": "consectetur et eiusmod", + "name": "ea ipsum irure mollit et", + "version": "et" + }, + "scopeOfLocality": "ZONE", + "consumedLocalOnly": true, + "isLocal": false +} \ No newline at end of file diff --git a/SRV/APPSAQ/jsons/ServiceInfoUpdated.json b/SRV/APPSAQ/jsons/ServiceInfoUpdated.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..afee85ac9419054136e278c60f5ae34d1706a1f5 100644 --- a/SRV/APPSAQ/jsons/ServiceInfoUpdated.json +++ b/SRV/APPSAQ/jsons/ServiceInfoUpdated.json @@ -0,0 +1,42 @@ +{ + "serName": "NEW_SERVICE_NAME", + "version": "v2.0", + "state": "INACTIVE", + "transportInfo": { + "id": "labore ut Excepteur sunt ipsum", + "name": "in minim enim", + "type": "MB_ROUTING", + "protocol": "veniam aliqua cillum in", + "version": "exercitation pariatur", + "endpoint": { + "addresses": [ + { + "host": "sint culpa laboris", + "port": 10968 + } + ] + }, + "security": { + "oAuth2Info": { + "grantTypes": [ + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9" + } + }, + "description": "dolor occaecat pariatur ex do" + }, + "serializer": "XML", + "serInstanceId": "cillum nostrud minim consectetur proident", + "serCategory": { + "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,", + "id": "consectetur et eiusmod", + "name": "ea ipsum irure mollit et", + "version": "et" + }, + "scopeOfLocality": "ZONE", + "consumedLocalOnly": true, + "isLocal": false +} \ No newline at end of file diff --git a/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json b/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json new file mode 100644 index 0000000000000000000000000000000000000000..6794471ccde6e94aa98b95ad8f9aa9fb35e30ab3 --- /dev/null +++ b/SRV/APPSAQ/jsons/ServiceInfoUpdatedError.json @@ -0,0 +1,42 @@ +{ + "serName": "NEW_SERVICE_NAME", + "a_version": "v2.0", + "state": "INACTIVE", + "transportInfo": { + "id": "labore ut Excepteur sunt ipsum", + "name": "in minim enim", + "type": "MB_ROUTING", + "protocol": "veniam aliqua cillum in", + "version": "exercitation pariatur", + "endpoint": { + "addresses": [ + { + "host": "sint culpa laboris", + "port": 10968 + } + ] + }, + "security": { + "oAuth2Info": { + "grantTypes": [ + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "tokenEndpoint": "https://RXjkuoqKaR.nskcJZJsyoIFJ0k86hJdxq.eTHEGqxAybM3DEZlUlYQpZ47s6RR+O9gyFrLbO92,9" + } + }, + "description": "dolor occaecat pariatur ex do" + }, + "serializer": "XML", + "serInstanceId": "cillum nostrud minim consectetur proident", + "serCategory": { + "href": "http://VWwswcAtAylGx.usasPjZ+bqQIHCMc7FfToVvk2M.SYAWYvSDKGSRL7Z.rxyfC0goFNZtoGJrlFc89,", + "id": "consectetur et eiusmod", + "name": "ea ipsum irure mollit et", + "version": "et" + }, + "scopeOfLocality": "ZONE", + "consumedLocalOnly": true, + "isLocal": false +} \ No newline at end of file diff --git a/SRV/APPSAQ/schemas/ServiceInfo.schema.json b/SRV/APPSAQ/schemas/ServiceInfo.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..50fbfe28d02dc6d410934a358a22fd4b9f7ace11 100644 --- a/SRV/APPSAQ/schemas/ServiceInfo.schema.json +++ b/SRV/APPSAQ/schemas/ServiceInfo.schema.json @@ -0,0 +1,271 @@ +{ + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "serName", + "version", + "state", + "transportInfo", + "serializer" + ], + "properties": { + "serInstanceId": { + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" + }, + "serName": { + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" + }, + "serCategory": { + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } + }, + "version": { + "description": "Service version", + "type": "string", + "example": "ServiceVersion1" + }, + "state": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + }, + "transportInfo": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [{ + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } + }, + "serializer": { + "description": "The enumeration represents types of serializers", + "type": "string", + "enum": [ + "JSON", + "XML", + "PROTOBUF3" + ], + "example": "JSON" + }, + "scopeOfLocality": { + "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", + "type": "string", + "enum": [ + "MEC_SYSTEM", + "MEC_HOST", + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ], + "example": "MEC_SYSTEM" + }, + "consumedLocalOnly": { + "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", + "type": "boolean", + "example": false + }, + "isLocal": { + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true + } + } +} \ No newline at end of file diff --git a/SRV/APPSAQ/schemas/ServiceInfoList.schema.json b/SRV/APPSAQ/schemas/ServiceInfoList.schema.json index f8bd4fc8d70a3f73dfc127e87e74ea1562a5d783..d9ddc80d9232d8fa00387a611751fc362e3ea421 100644 --- a/SRV/APPSAQ/schemas/ServiceInfoList.schema.json +++ b/SRV/APPSAQ/schemas/ServiceInfoList.schema.json @@ -1,9 +1,10 @@ { "type": "array", - "items": { + "objects": { + "description": "This type represents the general information of a MEC service.", "type": "object", "required": [ - "serInstanceId", + "serName", "version", "state", "transportInfo", @@ -11,39 +12,264 @@ ], "properties": { "serInstanceId": { - "type": "string" + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" }, "serName": { - "type": "string" + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" }, "serCategory": { - "type": "string" + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } }, "version": { - "type": "string" + "description": "Service version", + "type": "string", + "example": "ServiceVersion1" }, "state": { + "description": "This enumeration defines the possible states of a service.", "type": "string", "enum": [ "ACTIVE", "INACTIVE" - ] + ], + "example": "ACTIVE" }, "transportInfo": { - "type": "string" + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [ + { + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } }, "serializer": { - "type": "string" + "description": "The enumeration represents types of serializers", + "type": "string", + "enum": [ + "JSON", + "XML", + "PROTOBUF3" + ], + "example": "JSON" }, "scopeOfLocality": { - "type": "string" + "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", + "type": "string", + "enum": [ + "MEC_SYSTEM", + "MEC_HOST", + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ], + "example": "MEC_SYSTEM" }, "consumedLocalOnly": { - "type": "string" + "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", + "type": "boolean", + "example": false }, "isLocal": { - "type": "string" + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true } } } -} +} \ No newline at end of file diff --git a/SRV/APPSUB/PlatAppSubscriptions.robot b/SRV/APPSUB/PlatAppSubscriptions.robot index 0909017cd4a61e9247d44e672f768b8406644b11..611df12c78f7d3c1593f9fc445e3c9879a5fe55a 100644 --- a/SRV/APPSUB/PlatAppSubscriptions.robot +++ b/SRV/APPSUB/PlatAppSubscriptions.robot @@ -18,13 +18,13 @@ TC_MEC_SRV_APPSUB_001_OK ... Check that the IUT responds with a list of subscriptions for notifications ... on services availability when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.3.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/MecAppSuptApiSubscriptionLinkList + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.3.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/MecAppSuptApiSubscriptionLinkList [Tags] PIC_MEC_PLAT PIC_SERVICES Get Subscriptions list ${APP_INSTANCE_ID} Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is SubscriptionLinkList + Check HTTP Response Body Json Schema Is SubscriptionsLinkList TC_MEC_SRV_APPSUB_001_NF @@ -32,7 +32,7 @@ TC_MEC_SRV_APPSUB_001_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 011 V2.0.9, clause 7.2.3.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.3.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get Subscriptions list ${NON_EXISTENT_APP_INSTANCE_ID} @@ -44,16 +44,16 @@ TC_MEC_SRV_APPSUB_002_OK ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on service availability events ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.3.3.4 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.3.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES Create new subscription ${APP_INSTANCE_ID} AppTerminationNotificationSubscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is AppTerminationNotificationSubscription Check HTTP Response Header Contains Location - Check Result Contains ${response['body']['AppTerminationNotificationSubscription']} subscriptionType "AppTerminationNotificationSubscription" - Check Result Contains ${response['body']['AppTerminationNotificationSubscription']} callbackReference ${APP_TERM_NOTIF_CALLBACK_URI} + Check Response Contains ${response['body']} subscriptionType AppTerminationNotificationSubscription + Check Response Contains ${response['body']} callbackReference ${APP_TERM_NOTIF_CALLBACK_URI} TC_MEC_SRV_APPSUB_003_OK @@ -61,14 +61,14 @@ TC_MEC_SRV_APPSUB_003_OK ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.4.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.4.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is AppTerminationNotificationSubscription - Check Result Contains ${response['body']['AppTerminationNotificationSubscription']} subscriptionType "AppTerminationNotificationSubscription" + Check Response Contains ${response['body']} subscriptionType AppTerminationNotificationSubscription TC_MEC_SRV_APPSUB_003_NF @@ -76,7 +76,7 @@ TC_MEC_SRV_APPSUB_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 011 V2.0.9, clause 7.2.4.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.4.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -88,7 +88,7 @@ TC_MEC_SRV_APPSUB_004_OK ... Check that the IUT acknowledges the unsubscribe from service availability event notifications ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.4.3.5 + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.4.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} diff --git a/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json b/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..760b35c7fbfa597f5f792b9e367230579c475fe8 100644 --- a/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json +++ b/SRV/APPSUB/jsons/AppTerminationNotificationSubscription.json @@ -0,0 +1,10 @@ +{ + "subscriptionType": "AppTerminationNotificationSubscription", + "callbackReference": "https://somewhere.com/mecAppSuptApi/example", + "_links": { + "self": { + "href": "https://somewhere.com/mecAppSuptApi/example" + } + }, + "appInstanceId": "est eiusmod nulla exercitation" +} \ No newline at end of file diff --git a/SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json b/SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..c3d00dc84b499526db8810bb8468bfc5ad866ee4 --- /dev/null +++ b/SRV/APPSUB/schemas/AppTerminationNotificationSubscription.schema.json @@ -0,0 +1,49 @@ +{ + "description": "This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop.", + "type": "object", + "required": [ + "subscriptionType", + "callbackReference", + "_links", + "appInstanceId" + ], + "properties": { + "subscriptionType": { + "description": "Shall be set to AppTerminationNotificationSubscription.", + "type": "string", + "example": "AppTerminationNotificationSubscription" + }, + "callbackReference": { + "description": "URI selected by the MEC application instance to receive notifications on the subscribed MEC application instance management information. This shall be included in both the request and the response.", + "type": "string", + "format": "uri" + }, + "_links": { + "description": "Self-referring URI.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecAppSuptApi/example" + } + } + } + }, + "readOnly": true + }, + "appInstanceId": { + "description": "It is used as the filtering criterion for the subscribed events.", + "type": "string", + "example": "ID1" + } + } +} \ No newline at end of file diff --git a/SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json b/SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..8700a266e7d65218f07a6b4159df49bfeacdb952 --- /dev/null +++ b/SRV/APPSUB/schemas/AppTerminationNotificationSubscriptions.schema.json @@ -0,0 +1,52 @@ +{ + "tyre": "array", + "items": { + "description": "This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop.", + "type": "object", + "required": [ + "subscriptionType", + "callbackReference", + "_links", + "appInstanceId" + ], + "properties": { + "subscriptionType": { + "description": "Shall be set to AppTerminationNotificationSubscription.", + "type": "string", + "example": "AppTerminationNotificationSubscription" + }, + "callbackReference": { + "description": "URI selected by the MEC application instance to receive notifications on the subscribed MEC application instance management information. This shall be included in both the request and the response.", + "type": "string", + "format": "uri" + }, + "_links": { + "description": "Self-referring URI.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecAppSuptApi/example" + } + } + } + }, + "readOnly": true + }, + "appInstanceId": { + "description": "It is used as the filtering criterion for the subscribed events.", + "type": "string", + "example": "ID1" + } + } + } +} \ No newline at end of file diff --git a/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json b/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..87951477ee8f7169916b79f6a4ad5621316ac1b9 100644 --- a/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json +++ b/SRV/APPSUB/schemas/SubscriptionsLinkList.schema.json @@ -0,0 +1,54 @@ +{ + "description": "This type represents a list of links related to currently existing subscriptions for a MEC application instance. This information is returned when sending a request to receive current subscriptions.", + "type": "object", + "required": [ + "_links" + ], + "properties": { + "_links": { + "description": "Self-referring URI.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecAppSuptApi/example" + } + } + }, + "subscriptions": { + "description": "The MEC application instance's subscriptions", + "type": "array", + "items": { + "description": "A link to a subscription.", + "type": "object", + "required": [ + "href", + "subscriptionType" + ], + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecAppSuptApi/example" + }, + "subscriptionType": { + "description": "The values shall be set to AppTerminationNotificationSubscription.", + "type": "string" + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/SRV/CONF/PlatConfirmation.robot b/SRV/CONF/PlatConfirmation.robot new file mode 100644 index 0000000000000000000000000000000000000000..c619ff1b9e76e7a942adba0033a659bb6657c90c --- /dev/null +++ b/SRV/CONF/PlatConfirmation.robot @@ -0,0 +1,95 @@ +*** Settings *** + +Documentation +... A test suite for validating DNS rules (DNS) operations. + +Resource ../../GenericKeywords.robot +Resource environment/variables.txt +Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false +Library OperatingSystem + +Default Tags TC_MEC_SRV_CONF + + +*** Variables *** + + +*** Test Cases *** + +TC_MEC_SRV_CONF_001_OK + [Documentation] + ... Check that the IUT responds with an acknowledge + ... when requested graceful termination/stop of a MEC Application instance + ... + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.11.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationConfirmation + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Request termination of MEC Application ${APP_INSTANCE_ID} AppTerminationConfirmation + Check HTTP Response Status Code Is 204 + + +TC_MEC_SRV_CONF_001_NF + [Documentation] + ... Check that the IUT responds with an error + ... when requested graceful termination/stop of an unknown MEC Application instance + ... + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.11.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppTerminationConfirmation + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Request termination of MEC Application ${NON_ESISTENT_APP_INSTANCE_ID} AppTerminationConfirmation + Check HTTP Response Status Code Is 404 + + + + +TC_MEC_SRV_CONF_002_OK + [Documentation] + ... Check that the IUT responds with an acknowledge + ... when requested readiness status for a MEC Application instance + ... + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.12.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppReadyConfirmation + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Request readiness status of MEC Application ${APP_INSTANCE_ID} AppReadyConfirmation + Check HTTP Response Status Code Is 204 + + +TC_MEC_SRV_CONF_002_NF + [Documentation] + ... Check that the IUT responds with an error + ... when requested readiness status for an unknown MEC Application instance + ... + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.12.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/AppReadyConfirmation + + [Tags] PIC_MEC_PLAT PIC_SERVICES + Request readiness status of MEC Application ${NON_ESISTENT_APP_INSTANCE_ID} AppReadyConfirmation + Check HTTP Response Status Code Is 404 + + +*** Keywords *** +Request termination of MEC Application + [Arguments] ${appInstanceId} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_termination ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Request readiness status of MEC Application + [Arguments] ${appInstanceId} ${content} + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${file}= Catenate SEPARATOR= jsons/ ${content} .json + ${body}= Get File ${file} + PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/confirm_ready ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} diff --git a/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.json b/SRV/CONF/README.md similarity index 100% rename from SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.json rename to SRV/CONF/README.md diff --git a/SRV/CONF/environment/variables.txt b/SRV/CONF/environment/variables.txt new file mode 100644 index 0000000000000000000000000000000000000000..183991b3e8619c680ead1c4b2bc2a854179da8c2 --- /dev/null +++ b/SRV/CONF/environment/variables.txt @@ -0,0 +1,34 @@ +*** Variables *** +# Generic variables +${SCHEMA} http +${HOST} 10.192.2.172 +${PORT} 8081 +${response} {} +${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l +${apiRoot} +${apiName} mec_app_support +${apiVersion} v1 + +# Specific variables +${APP_INSTANCE_ID} 5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f +${NON_ESISTENT_APP_INSTANCE_ID} NON_ESISTENT_APP_INSTANCE_ID +# ${DNS_RULE_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +# ${NON_ESISTENT_DNS_RULE_ID} NON_ESISTENT_DNS_RULE_ID +# ${INVALID_ETAG} INVALID_ETAG + +# ${SOME_IP_ADDRESS} 146.241.7.3 + +# ${SUBSCRIPTION_TYPE} MobilityProcedureSubscription +# ${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 +# ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID +# ${NON_EXISTENT_APP_MOBILITY_SERVICE_ID} NON_EXISTENT_APP_MOBILITY_SERVICE_ID + +# # Notifications variables +# ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar + +# ${callback_port} 9091 +# ${callback_uri} http://172.22.1.7:${callback_port} +# ${callback_endpoint} /amsi/subscriptions +# ${callback_endpoint_error} /subs_404 +# ${total_polling_time} 2 min +# ${polling_interval} 10 sec \ No newline at end of file diff --git a/SRV/CONF/jsons/AppReadyConfirmation.json b/SRV/CONF/jsons/AppReadyConfirmation.json new file mode 100644 index 0000000000000000000000000000000000000000..9deacc3d95269f6dda91e700eeb5d4764da193a7 --- /dev/null +++ b/SRV/CONF/jsons/AppReadyConfirmation.json @@ -0,0 +1,3 @@ +{ + "indication": "READY" +} \ No newline at end of file diff --git a/SRV/CONF/jsons/AppTerminationConfirmation.json b/SRV/CONF/jsons/AppTerminationConfirmation.json new file mode 100644 index 0000000000000000000000000000000000000000..4717f09a8bb093a3301487ca8b62efba7ecfaf3b --- /dev/null +++ b/SRV/CONF/jsons/AppTerminationConfirmation.json @@ -0,0 +1,3 @@ +{ + "operationAction": "TERMINATING" +} \ No newline at end of file diff --git a/SRV/CONF/schemas/AppReadyConfirmation.schema.json b/SRV/CONF/schemas/AppReadyConfirmation.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..d2ebd76bf909089156b58c8cae1dc5ea2bc4d128 --- /dev/null +++ b/SRV/CONF/schemas/AppReadyConfirmation.schema.json @@ -0,0 +1,17 @@ +{ + "description": "This type represents the information that the MEC application instance indicates to the MEC platform that it is up and running.", + "type": "object", + "required": [ + "indication" + ], + "properties": { + "indication": { + "description": "Indication about the MEC application instance.", + "type": "string", + "enum": [ + "READY" + ], + "example": "READY" + } + } +} \ No newline at end of file diff --git a/SRV/CONF/schemas/AppTerminationConfirmation.schema.json b/SRV/CONF/schemas/AppTerminationConfirmation.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..553d50ce759551de1ea92d4f261dcbf272d57987 --- /dev/null +++ b/SRV/CONF/schemas/AppTerminationConfirmation.schema.json @@ -0,0 +1,18 @@ +{ + "description": "This type represents the information that the MEC application instance provides to the MEC platform when informing it that the application has completed its application level related terminate/stop actions, e.g. retention of application state in the case of stop.", + "type": "object", + "required": [ + "operationAction" + ], + "properties": { + "operationAction": { + "description": "Operation that is being performed on the MEC application instance.", + "type": "string", + "enum": [ + "STOPPING", + "TERMINATING" + ], + "example": "TERMINATING" + } + } +} \ No newline at end of file diff --git a/SRV/DNS/PlatDnsRules.robot b/SRV/DNS/PlatDnsRules.robot index 1296b6273b1f7496a3dd30b687e7a56a64e40e7a..80a0c18beefa57cb428192fa8cf32f3ff2dfaca1 100644 --- a/SRV/DNS/PlatDnsRules.robot +++ b/SRV/DNS/PlatDnsRules.robot @@ -21,8 +21,8 @@ TC_MEC_SRV_DNS_001_OK ... Check that the IUT responds with a list of active DNS rules ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.9.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.9.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of active DNS rules ${APP_INSTANCE_ID} @@ -35,14 +35,14 @@ TC_MEC_SRV_DNS_002_OK ... Check that the IUT responds with the information on a specific DNS rule ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.10.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual DNS rule ${APP_INSTANCE_ID} ${DNS_RULE_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is DnsRule - Check Result Contains ${response['body']['DnsRule']} dnsRuleId ${DNS_RULE_ID} + Check Response Contains ${response['body']} dnsRuleId ${DNS_RULE_ID} TC_MEC_SRV_DNS_002_NF @@ -50,7 +50,7 @@ TC_MEC_SRV_DNS_002_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 011 V2.0.9, clause 7.2.10.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual DNS rule ${APP_INSTANCE_ID} ${NON_ESISTENT_DNS_RULE_ID} @@ -62,15 +62,14 @@ TC_MEC_SRV_DNS_003_OK ... Check that the IUT updates a specific DNS rule ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.10.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a DNS Rule ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdate Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is DnsRule - # Check Result Contains ${response['body']['DnsRule']} dnsRuleId ${DNS_RULE_NAME} - # Check Result Contains ${response['body']['DnsRule']} ipAddress ${SOME_IP_ADDRESS} + Check Response Contains ${response['body']} ipAddress ${SOME_IP_ADDRESS} TC_MEC_SRV_DNS_003_BR @@ -78,8 +77,8 @@ TC_MEC_SRV_DNS_003_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 011 V2.0.9, clause 7.2.10.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a DNS Rule ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdateError @@ -91,8 +90,8 @@ TC_MEC_SRV_DNS_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 011 V2.0.9, clause 7.2.10.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a DNS Rule ${APP_INSTANCE_ID} ${NON_ESISTENT_DNS_RULE_ID} DnsRuleUpdate @@ -104,8 +103,8 @@ TC_MEC_SRV_DNS_003_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 011 V2.0.9, clause 7.2.10.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecAppSupportApi.yaml#/definitions/DnsRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.10.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/DnsRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a DNS Rule with invalid etag ${APP_INSTANCE_ID} ${DNS_RULE_ID} DnsRuleUpdate @@ -138,10 +137,11 @@ Update a DNS Rule Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} - Post ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules/${dnsRuleId} ${body} + PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/dns_rules/${dnsRuleId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} Update a DNS Rule with invalid etag [Arguments] ${appInstanceId} ${dnsRuleId} ${content} - Set Headers {"If-Match": ${INVALID_ETAG}} \ No newline at end of file + Set Headers {"If-Match": "${INVALID_ETAG}"} + Update a DNS Rule ${appInstanceId} ${dnsRuleId} ${content} \ No newline at end of file diff --git a/SRV/DNS/environment/variables.txt b/SRV/DNS/environment/variables.txt index bb3a06467622784f671d170e3633a89ab74ee213..1ab92ff9e402bb7a1f3c8005c8cf2cee99795cf2 100644 --- a/SRV/DNS/environment/variables.txt +++ b/SRV/DNS/environment/variables.txt @@ -15,6 +15,8 @@ ${DNS_RULE_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 ${NON_ESISTENT_DNS_RULE_ID} NON_ESISTENT_DNS_RULE_ID ${INVALID_ETAG} INVALID_ETAG +${SOME_IP_ADDRESS} 146.241.7.3 + # ${SUBSCRIPTION_TYPE} MobilityProcedureSubscription # ${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3 # ${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID diff --git a/SRV/DNS/jsons/DnsRuleUpdate.json b/SRV/DNS/jsons/DnsRuleUpdate.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f30f44ec21be15f7bf740b45f1a7cdbb631bf2d0 100644 --- a/SRV/DNS/jsons/DnsRuleUpdate.json +++ b/SRV/DNS/jsons/DnsRuleUpdate.json @@ -0,0 +1,8 @@ +{ + "dnsRuleId": "DnsRule1", + "domainName": "www.example.com", + "ipAddressType": "IP_V4", + "ipAddress": "146.241.7.3", + "ttl": 300, + "state": "ACTIVE" +} \ No newline at end of file diff --git a/SRV/DNS/jsons/DnsRuleUpdateError.json b/SRV/DNS/jsons/DnsRuleUpdateError.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6dda93b75aa89f49d8bda30ddd6723f288f3e732 100644 --- a/SRV/DNS/jsons/DnsRuleUpdateError.json +++ b/SRV/DNS/jsons/DnsRuleUpdateError.json @@ -0,0 +1,8 @@ +{ + "dnsRuleId": "DnsRule1", + "domainName": "www.example.com", + "ipAddressType": "IP_V4", + "ipAddress": "146.241.7.3", + "ttl": 300, + "state": "UNKNOWN_VALUE" +} \ No newline at end of file diff --git a/SRV/DNS/schemas/DnsRule.schema.json b/SRV/DNS/schemas/DnsRule.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9dd4c1a083e401f90db5053b373eb0c7113c940a 100644 --- a/SRV/DNS/schemas/DnsRule.schema.json +++ b/SRV/DNS/schemas/DnsRule.schema.json @@ -0,0 +1,52 @@ +{ + "description": "This type represents the general information of a DNS rule.", + "type": "object", + "required": [ + "dnsRuleId", + "domainName", + "ipAddressType", + "ipAddress", + "state" + ], + "properties": { + "dnsRuleId": { + "description": "Identifies the DNS Rule", + "type": "string", + "example": "dnsRule1" + }, + "domainName": { + "description": "FQDN resolved by the DNS rule", + "type": "string", + "example": "www.example.com" + }, + "ipAddressType": { + "description": "IP address type", + "type": "string", + "enum": [ + "IP_V6", + "IP_V4" + ], + "example": "IP_V6" + }, + "ipAddress": { + "description": "IP address associated with the FQDN resolved by the DNS rule", + "type": "string", + "example": "192.0.2.0" + }, + "ttl": { + "description": "Time to live value", + "type": "integer", + "format": "uint32", + "example": "?" + }, + "state": { + "description": "DNS rule state. This attribute may be updated using HTTP PUT method", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + } + } +} \ No newline at end of file diff --git a/SRV/DNS/schemas/DnsRuleList.schema.json b/SRV/DNS/schemas/DnsRuleList.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..02d4d41581b65b8d1c90694a99e6d2f3358fde67 100644 --- a/SRV/DNS/schemas/DnsRuleList.schema.json +++ b/SRV/DNS/schemas/DnsRuleList.schema.json @@ -0,0 +1,55 @@ +{ + "type": "array", + "objects": { + "description": "This type represents the general information of a DNS rule.", + "type": "object", + "required": [ + "dnsRuleId", + "domainName", + "ipAddressType", + "ipAddress", + "state" + ], + "properties": { + "dnsRuleId": { + "description": "Identifies the DNS Rule", + "type": "string", + "example": "dnsRule1" + }, + "domainName": { + "description": "FQDN resolved by the DNS rule", + "type": "string", + "example": "www.example.com" + }, + "ipAddressType": { + "description": "IP address type", + "type": "string", + "enum": [ + "IP_V6", + "IP_V4" + ], + "example": "IP_V6" + }, + "ipAddress": { + "description": "IP address associated with the FQDN resolved by the DNS rule", + "type": "string", + "example": "192.0.2.0" + }, + "ttl": { + "description": "Time to live value", + "type": "integer", + "format": "uint32", + "example": "?" + }, + "state": { + "description": "DNS rule state. This attribute may be updated using HTTP PUT method", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + } + } + } +} \ No newline at end of file diff --git a/SRV/FAIS/PlatFixedAcessInfo.robot b/SRV/FAIS/PlatFixedAcessInfo.robot index f0d3437556efc9421e45816b86c7285219360ed1..852c25ff254c84b349ea27761a18c350f1ae54df 100644 --- a/SRV/FAIS/PlatFixedAcessInfo.robot +++ b/SRV/FAIS/PlatFixedAcessInfo.robot @@ -212,7 +212,7 @@ TC_MEC_SRV_FAIS_006_OK Create a new subscription OnuAlarmSubscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is OnuAlarmSubscription - Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType "OnuAlarmSubscription" + Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType OnuAlarmSubscription @@ -239,7 +239,7 @@ TC_MEC_SRV_FAIS_007_OK Get an individual subscription ${ONU_ALARM_SUBSCRIPTION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is OnuAlarmSubscription - Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType "OnuAlarmSubscription" + Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType OnuAlarmSubscription TC_MEC_SRV_FAIS_007_NF @@ -265,7 +265,7 @@ TC_MEC_SRV_FAIS_008_OK Update subscription ${ONU_ALARM_SUBSCRIPTION_ID} OnuAlarmSubscriptionUpdate Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is OnuAlarmSubscription - Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType "OnuAlarmSubscription" + Check Result Contains ${response['body']['OnuAlarmSubscription']} subscriptionType OnuAlarmSubscription TC_MEC_SRV_FAIS_008_BR diff --git a/SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json b/SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..50efd4edbdfc79a1e5740017c0e89b8ab08cc56b --- /dev/null +++ b/SRV/RLOCLOOK/schemas/AccessPointList.schema.v1.1.1.json @@ -0,0 +1,128 @@ +{ + "properties": { + "accessPointList": { + "description": "A type containing list of access points.", + "type": "object", + "required": [ + "zoneId", + "resourceURL" + ], + "properties": { + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "example": "zone01" + }, + "accessPoint": { + "description": "Collection of the access point information list.", + "type": "array", + "items": { + "description": "A type containing access point information.", + "type": "object", + "required": [ + "accessPointId", + "connectionType", + "operationStatus", + "numberOfUsers", + "resourceURL" + ], + "properties": { + "accessPointId": { + "description": "Identifier of access point, (reference ETSI TS 129 171). Where the E-CGI is made up of the PLMN and Cell Identity (28 bit string). Then the PLMN is made up of the 3 digit MCC & 2 or 3 digit MNC. The Cell Portion is an optional element", + "type": "string", + "example": "001010000000000000000000000000001" + }, + "locationInfo": { + "description": "A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided.", + "type": "object", + "required": [ + "latitude", + "longitude", + "accuracy" + ], + "properties": { + "latitude": { + "type": "number", + "format": "float", + "example": "80.123" + }, + "longitude": { + "type": "number", + "format": "float", + "example": "70.123" + }, + "altitude": { + "type": "number", + "format": "float", + "example": "10.0" + }, + "accuracy": { + "type": "integer", + "format": "int32", + "example": "10" + } + } + }, + "connectionType": { + "description": "The connection type for the access point", + "type": "string", + "enum": [ + "Femto", + "LTE-femto", + "Smallcell", + "LTE-smallcell", + "Wifi", + "Pico", + "Micro", + "Macro", + "Wimax", + "Unknown" + ], + "example": "Macro" + }, + "operationStatus": { + "description": "The operation status of the access point", + "type": "string", + "enum": [ + "Serviceable", + "Unserviceable", + "Unknown" + ], + "example": "Serviceable" + }, + "numberOfUsers": { + "description": "The number of users currently on the access point.", + "type": "integer", + "format": "uint32", + "example": "7" + }, + "timezone": { + "description": "Time zone of access point", + "type": "string", + "format": "date-time", + "example": "2017-01-01T02:51:43Z" + }, + "interestRealm": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "type": "string", + "example": "LA" + }, + "resourceURL": { + "description": "Self referring URL.", + "type": "string", + "format": "uri", + "example": "http://example.com/exampleAPI/location/v1/subscriptions/userTracking/subscription123" + } + } + } + }, + "resourceURL": { + "description": "Self referring URL.", + "type": "string", + "format": "uri", + "example": "http://example.com/exampleAPI/location/v1/subscriptions/userTracking/subscription123" + } + } + } + } + } \ No newline at end of file diff --git a/SRV/RNIS/RnisNotifications.robot b/SRV/RNIS/RnisNotifications.robot index d26a86485543ed856f445822ad660e2cac04a925..1e1ea97ef5c2222d50e450718e7f493c97aab474 100644 --- a/SRV/RNIS/RnisNotifications.robot +++ b/SRV/RNIS/RnisNotifications.robot @@ -16,10 +16,10 @@ Library MockServerLibrary Cell change notification [Documentation] TC_MEC_SRV_RNIS_001_OK ... Check that the RNIS service sends an RNIS notification about cell change if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.2 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.2 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/CellChangeNotification.schema.json Log Creating mock request and response to handle Cell change notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/cell_change body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -34,10 +34,10 @@ Cell change notification RAB Establishment notification [Documentation] TC_MEC_SRV_RNIS_002_OK ... Check that the RNIS service sends an RNIS notification about RAB establishment if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.3 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.3 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/RabEstNotification.schema.json Log Creating mock request and response to handle RAB establishment notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_est body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -52,10 +52,10 @@ RAB Establishment notification RAB modification notification [Documentation] TC_MEC_SRV_RNIS_003_OK ... Check that the RNIS service sends an RNIS notification about RAB modification if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.4 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.4 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/RabModNotification.schema.json Log Creating mock request and response to handle RAB modification notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_mod body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -70,10 +70,10 @@ RAB modification notification RAB release notification [Documentation] TC_MEC_SRV_RNIS_004_OK ... Check that the RNIS service sends an RNIS notification about RAB release if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.5 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.5 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/RabRelNotification.schema.json Log Creating mock request and response to handle RAB release notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/rab_rel body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -88,10 +88,10 @@ RAB release notification UE measurement notification [Documentation] TC_MEC_SRV_RNIS_005_OK ... Check that the RNIS service sends an RNIS notification about UE measurement report if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.6 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.6 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/MeasRepUeNotification.schema.json Log Creating mock request and response to handle UE measurement notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/MeasRepUeNotification body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -106,10 +106,10 @@ UE measurement notification UE timing advance notification [Documentation] TC_MEC_SRV_RNIS_006_OK ... Check that the RNIS service sends an RNIS notification about UE timing advance if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.7 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.7 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/MeasTaSubscription.schema.json Log Creating mock request and response to handle UE timing advance notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/MeasTaNotification body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -124,10 +124,10 @@ UE timing advance notification UE carrier aggregation reconfiguration notification [Documentation] TC_MEC_SRV_RNIS_007_OK ... Check that the RNIS service sends an RNIS notification about UE carrier aggregation reconfiguration if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.8 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.8 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/CaReconfSubscription.schema.json Log Creating mock request and response to handle UE carrier aggregation reconfiguration notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/CaReconfSubscription body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -142,10 +142,10 @@ UE carrier aggregation reconfiguration notification S1-U bearer notification [Documentation] TC_MEC_SRV_RNIS_008_OK ... Check that the RNIS service sends an RNIS notification about S1-U bearer if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.10 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.9 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/S1BearerSubscription.schema.json Log Creating mock request and response to handle S1-U bearer notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/S1BearerSubscription body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -160,10 +160,10 @@ S1-U bearer notification TC_MEC_SRV_RNIS_009_OK [Documentation] TC_MEC_SRV_RNIS_009_OK ... Check that the RNIS service sends an RNIS notification about 5G NR UE measurement report if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.11 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 6.4.11 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + ${json}= Get File schemas/NrMeasRepUeSubscription.schema.json Log Creating mock request and response to handle UE Measurement notification &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint}/meas_rep_ue body_type="JSON_SCHEMA" body=${json} &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 @@ -175,22 +175,20 @@ TC_MEC_SRV_RNIS_009_OK Clear Requests ${callback_endpoint} -TC_MEC_SRV_RNIS_010_OK - [Documentation] TC_MEC_SRV_RNIS_010_OK - ... Check that the RNIS service sends an RNIS notification on subscription expiration if the RNIS service has an associated subscription and the event is generated - ... ETSI GS MEC 012 2.0.4, clause 6.4.9 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml - Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 - ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json - Log Creating mock request and response to handle UE Measurement notification - &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint} body_type="JSON_SCHEMA" body=${json} - &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 - Create Mock Expectation ${req} ${rsp} - Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} - Log Verifying results - Verify Mock Expectation ${req} - Log Cleaning the endpoint - Clear Requests ${callback_endpoint} - +# TC_MEC_SRV_RNIS_010_OK + # [Documentation] TC_MEC_SRV_RNIS_010_OK + # ... Check that the RNIS service sends an RNIS notification on subscription expiration if the RNIS service has an associated subscription and the event is generated + # ... ETSI GS MEC 012 2.0.4, clause 6.4.9 + # ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + # Should Be True ${PIC_RNIS_NOTIFICATIONS} == 1 + # ${json}= Get File schemas/RadioNetworkInformationAPI.schema.json + # Log Creating mock request and response to handle UE Measurement notification + # &{req}= Create Mock Request Matcher POST ${callback_uri}${callback_endpoint} body_type="JSON_SCHEMA" body=${json} + # &{rsp}= Create Mock Response headers="Content-Type: application/json" status_code=204 + # Create Mock Expectation ${req} ${rsp} + # Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${req} + # Log Verifying results + # Verify Mock Expectation ${req} + # Log Cleaning the endpoint + # Clear Requests ${callback_endpoint} -*** Keywords *** diff --git a/SRV/RNIS/RnisQuery_BI_BO.robot b/SRV/RNIS/RnisQuery_BI_BO.robot index 925c8e98c152aa768595898864b9bc610f24d778..efd22f109e30e9eabef6ab2f2cbb62c7615912ea 100644 --- a/SRV/RNIS/RnisQuery_BI_BO.robot +++ b/SRV/RNIS/RnisQuery_BI_BO.robot @@ -14,7 +14,7 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v Request RabInfo info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_016_BR ... Check that the RNIS service returns an error when the RAB information is requested with a malformatted message - ... ETSI GS MEC 012 2.0.4, clause 7.3.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using wrong parameters Check HTTP Response Status Code Is 400 @@ -24,7 +24,7 @@ Request RabInfo info using wrong parameters Request RabInfo info using non existing cell id [Documentation] TC_MEC_SRV_RNIS_016_BR ... Check that the RNIS service returns an error when the RAB information for a not existing element is requested - ... ETSI GS MEC 012 2.0.4, clause 7.3.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info using non existing cell id Check HTTP Response Status Code Is 404 @@ -34,7 +34,7 @@ Request RabInfo info using non existing cell id Request Plmn info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_017_BR ... Check that the RNIS service returns an error when the PLMN information is requested with a malformatted message - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using wrong parameters Check HTTP Response Status Code Is 400 @@ -44,7 +44,7 @@ Request Plmn info using wrong parameters Request Plmn info using non existing application id [Documentation] TC_MEC_SRV_RNIS_017_NF ... Check that the RNIS service returns an error when the PLMN information for a not existing element is requested - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info using non existing application id Check HTTP Response Status Code Is 404 @@ -54,7 +54,7 @@ Request Plmn info using non existing application id Request S1Bearer info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_018_BR ... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using wrong parameters Check HTTP Response Status Code Is 400 @@ -64,7 +64,7 @@ Request S1Bearer info using wrong parameters Request S1Bearer info using non existing cell id [Documentation] TC_MEC_SRV_RNIS_018_BR ... Check that the RNIS service returns an error when the S1 bearer information is requested with a malformatted message - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info using non existing cell id Check HTTP Response Status Code Is 404 @@ -74,7 +74,7 @@ Request S1Bearer info using non existing cell id Request L2Meas info using wrong parameters [Documentation] TC_MEC_SRV_RNIS_019_BR ... Check that the RNIS service returns an error when the L2 measurements information is requested with a malformatted message - ... ETSI GS MEC 012 2.0.4, clause 7.5a.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using wrong parameters Check HTTP Response Status Code Is 400 @@ -84,7 +84,7 @@ Request L2Meas info using wrong parameters Request L2Meas info using non existing cell id [Documentation] TC_MEC_SRV_RNIS_019_BR ... Check that the RNIS service returns an error when the L2 measurements information for a not existing element is requested - ... ETSI GS MEC 012 2.0.4, clause 7.5a.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get L2Meas info using non existing cell id Check HTTP Response Status Code Is 404 @@ -152,7 +152,7 @@ Get S1Bearer info using non existing cell id Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/s1_bearer_info?cell_id=${NOT_EXISTENT_CELL_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${NOT_EXISTENT_CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -163,7 +163,7 @@ Get L2Meas info using wrong parameters Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/layer2_meas?c_id=${C_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?c_id=${C_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -174,6 +174,6 @@ Get L2Meas info using non existing cell id Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/layer2_meas?cell_id=${NOT_EXISTENT_CELL_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${NOT_EXISTENT_CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/RNIS/RnisQuery_BV.robot b/SRV/RNIS/RnisQuery_BV.robot index 6a26256c61bd1bad4b53eb12bf91968e436ca422..2ba3f34bd8cc5eb8672c2bdcbf548f1909716069 100644 --- a/SRV/RNIS/RnisQuery_BV.robot +++ b/SRV/RNIS/RnisQuery_BV.robot @@ -14,43 +14,45 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v Request RabInfo info [Documentation] TC_MEC_SRV_RNIS_016_OK ... Check that the RNIS service returns the RAB information when requested - ... ETSI GS MEC 012 2.0.4, clause 7.3.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.3.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/RabInfo Get RabInfo info Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI - Check RabInfo ${response['body']['RabInfo']} + Check HTTP Response Body Json Schema Is RabInfos + Check RabInfo ${response['body']} Request Plmn info [Documentation] TC_MEC_SRV_RNIS_017_OK ... Check that the RNIS service returns the PLMN information when requested - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.4.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/PlmnInfo Get PLMN info Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI - Check PlmnInfo ${response['body']['PlmnInfo']} + Check HTTP Response Body Json Schema Is PlmnInfos + Check PlmnInfo ${response['body']} Request S1Bearer info [Documentation] TC_MEC_SRV_RNIS_018_OK ... Check that the RNIS service returns the S1 bearer information - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 + ... ETSI GS MEC 012 2.1.1, clause 7.5.3.1 ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo Get S1Bearer info Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI + Check HTTP Response Body Json Schema Is S1BearerInfos #log ${response['body']} - Check S1BearerInfo ${response['body']['S1BearerInfo']} - - + Check S1BearerInfo ${response['body']} + Request L2Meas info - [Documentation] TC_MEC_SRV_RNIS_019_OK + [Documentation] TC_MEC_SRV_RNIS_019_OK ... Check that the RNIS service returns the L2 measurements information - ... ETSI GS MEC 012 2.0.4, clause 7.4.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/S1BearerInfo - Fail msg=Too many changes in JSON data description, not implemented + ... ETSI GS MEC 012 2.1.1, clause 7.5a.3.1 + ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/L2Meas + Get Layer2Meas Info + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Layer2MeasInfos + Check L2MeasInfo ${response['body']} *** Keywords *** @@ -60,7 +62,7 @@ Get RabInfo info Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/rab_info?cell_id=${CELL_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/rab_info?cell_id=${CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -70,7 +72,7 @@ Get Plmn info Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/plmn_info?app_ins_id=${APP_INS_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/plmn_info?app_ins_id=${APP_INS_ID} ${output}= Output response Set Suite Variable ${response} ${output} @@ -81,6 +83,17 @@ Get S1Bearer info Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/queries/s1_bearer_info?cell_id=${CELL_ID} + Get ${apiRoot}/rni/${apiVersion}/queries/s1_bearer_info?cell_id=${CELL_ID} ${output}= Output response Set Suite Variable ${response} ${output} + + +Get Layer2Meas Info + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/queries/layer2_meas?cell_id=${CELL_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/RNIS/RnisSpecificSubscription_BV.robot b/SRV/RNIS/RnisSpecificSubscription_BV.robot deleted file mode 100644 index 501201edba0781eb0f9002c5119047975452251a..0000000000000000000000000000000000000000 --- a/SRV/RNIS/RnisSpecificSubscription_BV.robot +++ /dev/null @@ -1,56 +0,0 @@ -''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot -... Test Suite to validate RNIS/Subscription (RNIS) operations. - -*** Settings *** -Resource environment/variables.txt -Resource ../../pics.txt -Resource ../../GenericKeywords.robot -Resource resources/RadioNetworkInformationAPI.robot -Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false - - - -*** Test Cases *** -Request RNIS subscription list - [Documentation] TC_MEC_SRV_RNIS_011_OK - ... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested - ... ETSI GS MEC 012 2.0.4, clause 7.6.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/SubscriptionLinkList - Get RNIS subscription list - Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI - Check Subscription ${response['body']['SubscriptionLinkList']} ${SUBSCRIPTION_VALUE} - - -Create RNIS subscription - [Documentation] TC_MEC_SRV_RNIS_012_OK - ... Check that the RNIS service creates a new RNIS subscription - ... ETSI GS MEC 012 2.0.4, clause 7.6.3.4 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml - Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": "CELL_CHANGE", "callbackReference": "${HREF}", "_links": {"self": "${LINKS_SELF}"}, "filterCriteria": {"appInsId": "01", "associateId": [{"type": "UE_IPV4_ADDRESS", "value": 1}], "plmn": {"mcc": "01", "mnc": "001"}, "cellId": ["800000"], "hoStatus": "COMPLETED"}, "expiryDeadline": {"seconds": 1577836800, "nanoSeconds": 0}}} - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is RadioNetworkInformationAPI - Check CellChangeSubscription ${response['body']['CellChangeSubscription']} - - -*** Keywords *** -Get RNIS subscription list - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE} - ${output}= Output response - Set Suite Variable ${response} ${output} - - -Post RNIS subscription request - [Arguments] ${content} - Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 - Set Headers {"Accept":"application/json"} - Set Headers {"Content-Type":"application/json"} - Set Headers {"Authorization":"${TOKEN}"} - Post /exampleAPI/rni/v2/subscriptions ${content} - ${output}= Output response - Set Suite Variable ${response} ${output} diff --git a/SRV/RNIS/RnisSpecificSubscription_BI_BO.robot b/SRV/RNIS/RnisSubscriptions_BI_BO.robot similarity index 81% rename from SRV/RNIS/RnisSpecificSubscription_BI_BO.robot rename to SRV/RNIS/RnisSubscriptions_BI_BO.robot index f8c4d02b72c45f17ddb670e2a0e00ec6da6d13c5..f513c717e3b6d63cfdf35643fe4ab0d7868c28e8 100644 --- a/SRV/RNIS/RnisSpecificSubscription_BI_BO.robot +++ b/SRV/RNIS/RnisSubscriptions_BI_BO.robot @@ -14,21 +14,19 @@ Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_v Request RNIS subscription list using bad parameters [Documentation] TC_MEC_SRV_RNIS_011_BR ... Check that the RNIS service responds with an error when it receives a request to get all RNIS subscriptions with a wrong subscription type - ... ETSI GS MEC 012 2.0.4, clause 7.6.3.1 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml#/definitions/SubscriptionLinkList + ... ETSI GS MEC 012 2.1.1, clause 7.6.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList Get RNIS subscription list with wrong parameter Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 - + Create RNIS subscription using bad parameters [Documentation] TC_MEC_SRV_RNIS_012_BR ... Check that the RNIS service responds with an error when it receives a request to create a new RNIS subscription with a wrong format - ... ETSI GS MEC 012 2.0.4, clause 7.6.3.4 - ... Reference https://forge.etsi.org/gitlab/mec/gs012-rnis-api/blob/master/RniAPI.yaml + ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml Post RNIS subscription request {"CellChangeSubscription": {"subscriptionType": "CelCangeSubscription", "callbackReference": "${HREF}", "_links": {"self": "${LINKS_SELF}"}, "filterCriteria": {"appInsId": "01", "associateId": [{"type": "UE_IPV4_ADDRESS", "value": 1}], "plmn": {"mcc": "01", "mnc": "001"}, "cellId": ["800000"], "hoStatus": "COMPLETED"}, "expiryDeadline": {"seconds": 1577836800, "nanoSeconds": 0}}} Check HTTP Response Status Code Is 400 - Check ProblemDetails 400 *** Keywords *** @@ -38,7 +36,7 @@ Get RNIS subscription list with wrong parameter Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} Set Headers {"Content-Length":"0"} - Get /exampleAPI/rni/v2/subscriptions?subscription_type=wrongSubscriptionType + Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=wrongSubscriptionType ${output}= Output response Set Suite Variable ${response} ${output} @@ -49,6 +47,6 @@ Post RNIS subscription request Set Headers {"Accept":"application/json"} Set Headers {"Content-Type":"application/json"} Set Headers {"Authorization":"${TOKEN}"} - Post /exampleAPI/rni/v2/subscriptions ${content} + Post ${apiRoot}/rni/${apiVersion}/subscriptions ${content} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/RNIS/RnisSubscriptions_BV.robot b/SRV/RNIS/RnisSubscriptions_BV.robot new file mode 100644 index 0000000000000000000000000000000000000000..f351d342681e55c462b96ae9b804626db5cf5ed2 --- /dev/null +++ b/SRV/RNIS/RnisSubscriptions_BV.robot @@ -0,0 +1,118 @@ +''[Documentation] robot --outputdir ../../outputs ./RnisSpecificSubscription_BV.robot +... Test Suite to validate RNIS/Subscription (RNIS) operations. + +*** Settings *** +Library OperatingSystem +Resource environment/variables.txt +Resource ../../pics.txt +Resource ../../GenericKeywords.robot +Resource resources/RadioNetworkInformationAPI.robot +Library REST ${MEC-APP_SCHEMA}://${MEC-APP_HOST}:${MEC-APP_PORT} ssl_verify=false + + + +*** Test Cases *** +Request RNIS subscription list + [Documentation] TC_MEC_SRV_RNIS_011_OK + ... Check that the RNIS service sends the list of links to the relevant RNIS subscriptions when requested + ... ETSI GS MEC 012 2.1.1, clause 7.6.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml#/definitions/SubscriptionLinkList + Get RNIS subscription list + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is SubscriptionLinkList + Check Subscription ${response['body']} ${SUBSCRIPTION_VALUE} + + +Create RNIS subscription + [Documentation] TC_MEC_SRV_RNIS_012_OK + ... Check that the RNIS service creates a new RNIS subscription + ... ETSI GS MEC 012 2.1.1, clause 7.6.3.4 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + Post RNIS subscription request CellChangeSubscription + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is CellChangeSubscriptionRequest + Check CellChangeSubscription ${response['body']} + + +Get an Individual RNIS subscription + [Documentation] TC_MEC_SRV_RNIS_013_OK + ... Check that the RNIS service sends a RNIS subscription when requested + ... ETSI GS MEC 012 2.1.1, clause 7.8.3.1 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + Get Individual RNIS Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CellChangeSubscriptionRequest + + +Update an Individual RNIS subscription + [Documentation] TC_MEC_SRV_RNIS_014_OK + ... Check that the RNIS service modifies a RNIS subscription when requested + ... ETSI GS MEC 012 2.1.1, clause 7.8.3.2 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + Update Individual RNIS Subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is CellChangeSubscriptionRequest + +Remove an Individual RNIS subscription + [Documentation] TC_MEC_SRV_RNIS_015_OK + ... Check that the RNIS service deletes a RNIS subscription when requested + ... ETSI GS MEC 012 2.1.1, clause 7.8.3.5 + ... Reference https://forge.etsi.org/rep/mec/gs012-rnis-api/blob/automatic_generation/RniAPI.yaml + Delete Individual RNIS Subscription + Check HTTP Response Status Code Is 204 + +*** Keywords *** +Get RNIS subscription list + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/subscriptions?subscription_type=${SUBSCRIPTION_HREF_VALUE} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Post RNIS subscription request + [Arguments] ${content} + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${body} Get File jsons/CellChangeSubscriptionRequest.json + Post ${apiRoot}/rni/${apiVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Get Individual RNIS Subscription + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Get ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Update Individual RNIS Subscription + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + ${body} Get File jsons/UpdateCellChangeSubscriptionRequest.json + Put ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + + +Delete Individual RNIS Subscription + Should Be True ${PIC_RNIS_SPECIFIC_SUBSCRIPTION} == 1 + Set Headers {"Accept":"application/json"} + Set Headers {"Content-Type":"application/json"} + Set Headers {"Authorization":"${TOKEN}"} + Set Headers {"Content-Length":"0"} + Delete ${apiRoot}/rni/${apiVersion}/subscriptions/${SUBSCRIPTION_ID} + ${output}= Output response + Set Suite Variable ${response} ${output} \ No newline at end of file diff --git a/SRV/RNIS/environment/variables.txt b/SRV/RNIS/environment/variables.txt index c0846c254cddc5f7cf7f5447f8396004676e2834..d66fb53e73cde544bff20a4aaa1c3de23e89b297 100644 --- a/SRV/RNIS/environment/variables.txt +++ b/SRV/RNIS/environment/variables.txt @@ -20,6 +20,11 @@ ${NOT_EXISTENT_APP_INS_ID} 99 ${response} {} ${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l + +${apiRoot} +${apiVersion} v2 + + # Notifications variables ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies.jar diff --git a/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json b/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..321f1d20eb337cf461cca8ed1f85639e988d3157 --- /dev/null +++ b/SRV/RNIS/jsons/CellChangeSubscriptionRequest.json @@ -0,0 +1,10 @@ +{ + "subscriptionType": "CellChangeSubscription", + "callbackReference": "${HREF}", + "_links": { + "self": { + "href": "${LINKS_SELF}" + } + }, + "filterCriteriaAssocHo": {} +} \ No newline at end of file diff --git a/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json b/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..321f1d20eb337cf461cca8ed1f85639e988d3157 --- /dev/null +++ b/SRV/RNIS/jsons/UpdateCellChangeSubscriptionRequest.json @@ -0,0 +1,10 @@ +{ + "subscriptionType": "CellChangeSubscription", + "callbackReference": "${HREF}", + "_links": { + "self": { + "href": "${LINKS_SELF}" + } + }, + "filterCriteriaAssocHo": {} +} \ No newline at end of file diff --git a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot index 004d6405f4e916f46b80953bf44565eeccb04c50..05edc8fb85737f73445e0240594420731389bf1e 100644 --- a/SRV/RNIS/resources/RadioNetworkInformationAPI.robot +++ b/SRV/RNIS/resources/RadioNetworkInformationAPI.robot @@ -10,10 +10,11 @@ Library JSONSchemaLibrary schemas/ Check Subscription [Arguments] ${received_value} ${expected_value} Should Be Equal ${received_value['_links']['self']} ${LINKS_SELF} - :FOR ${item} IN @{received_value['subscription']} - \ Exit For Loop If ${item} == ${expected_value} - Log Item found ${item} - [return] ${item} + ${length} Get Length ${received_value['subscription']} + :FOR ${item} IN RANGE 0 ${length} + \ Exit For Loop If ${received_value['subscription'][${item}]} == ${expected_value} + Log Item found ${received_value['subscription'][${item}]} + [return] ${received_value['subscription'][${item}]} Check CellChangeSubscription @@ -24,23 +25,25 @@ Check CellChangeSubscription Check RabInfo [Arguments] ${received_value} log ${received_value} - Should Be Equal ${received_value['appInsId']} ${APP_INS_ID} - Should Not Contain ${received_value['requestId']} "" - Should Be Equal ${received_value['cellUserInfo'][0]['ecgi']['cellId']} ${CELL_ID} - # TODO How to check the presence of a field + Should Be Equal As Strings ${received_value['appInstanceId']} ${APP_INS_ID} + Should Not Be Empty ${received_value['requestId']} + Should Be Equal As Strings ${received_value['cellUserInfo'][0]['ecgi']['cellId']} ${CELL_ID} Check PlmnInfo [Arguments] ${received_value} log ${received_value} - Should Be Equal ${received_value['appInsId']} ${APP_INS_ID} - Should Not Contain ${received_value['plmn'][0]['mcc']} "" - Should Not Contain ${received_value['plmn'][0]['mnc']} "" - # TODO How to check the presence of a field + Should Be Equal As Strings ${received_value['appInstanceId']} ${APP_INS_ID} + Should Not Be Empty ${received_value['plmn'][0]['mcc']} + Should Not Be Empty ${received_value['plmn'][0]['mnc']} Check S1BearerInfo [Arguments] ${received_value} log ${received_value} - #Should Not Contain ${received_value['s1UeInfo'][0]['ecgi']['cellId']} ${CELL_ID} - # TODO How to check the presence of a field + Should Be Equal As Strings ${received_value['s1UeIffo']['ecgi']['cellId']} ${CELL_ID} + +Check L2MeasInfo + [Arguments] ${received_value} + log ${received_value} + Should Be Equal As Strings ${received_value['cellInfo']['ecgi']['cellId']} ${CELL_ID} diff --git a/SRV/RNIS/schemas/CaReconfSubscription.schema.json b/SRV/RNIS/schemas/CaReconfSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..898b7f001191fbbcf2b6fa3348fade0fefebf288 --- /dev/null +++ b/SRV/RNIS/schemas/CaReconfSubscription.schema.json @@ -0,0 +1,52 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "filterCriteriaAssoc": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "subscriptionType": { + "description": "Shall be set to \"CaReconfSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteriaAssoc" + ], + "type": "object", + "x-etsi-ref": "6.3.8" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/CellChangeNotification.schema.json b/SRV/RNIS/schemas/CellChangeNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..4266f1a1ba19edb6226f3fb117808d8f58d7eb5d --- /dev/null +++ b/SRV/RNIS/schemas/CellChangeNotification.schema.json @@ -0,0 +1,158 @@ +{ + "properties": { + "associateId": { + "description": "0 to N identifiers to associate the event for a specific UE or flow.", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "hoStatus": { + "description": "Indicate the status of the UE handover procedure. Values are defined as following:\n1 = IN_PREPARATION.\n2 = IN_EXECUTION.\n3 = COMPLETED.\n4 = REJECTED.\n5 = CANCELLED.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "notificationType": { + "description": "Shall be set to \"CellChangeNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "srcEcgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "tempUeId": { + "description": "The temporary identifier allocated for the specific UE as defined below.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "trgEcgi": { + "description": "E-UTRAN CelI Global Identifier of the target cell.\nNOTE: Cardinality N is valid only in case of statuses IN_PREPARATION, REJECTED and CANCELLED.", + "items": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Ecgi" + } + }, + "required": [ + "notificationType", + "srcEcgi", + "trgEcgi", + "hoStatus" + ], + "type": "object", + "x-etsi-ref": "6.4.2" + } \ No newline at end of file diff --git a/SRV/RNIS/schemas/CellChangeSubscription.schema.json b/SRV/RNIS/schemas/CellChangeSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..56911b107a5c8db55b10742088e15eba5c36aad0 --- /dev/null +++ b/SRV/RNIS/schemas/CellChangeSubscription.schema.json @@ -0,0 +1,73 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + } + }, + "required": [ + "self" + ], + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumerto receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "filterCriteriaAssocHo": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "subscriptionType": { + "description": "Shall be set to \"CellChangeSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteriaAssocHo" + ], + "type": "object", + "x-etsi-ref": "6.3.2" + } \ No newline at end of file diff --git a/SRV/RNIS/schemas/L2Meas.schema.json b/SRV/RNIS/schemas/L2Meas.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..337798fcf909ef63ed8bc44671d512274911d477 --- /dev/null +++ b/SRV/RNIS/schemas/L2Meas.schema.json @@ -0,0 +1,249 @@ +{ + "type": "object", + "properties": { + "cellInfo": { + "description": "The per cell measurement information as defined below.", + "items": { + "type": "object" + }, + "properties": { + "dl_gbr_prb_usage_cell": { + "description": "It indicates the PRB usage for downlink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_nongbr_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "ul_gbr_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for uplink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_nongbr_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + } + }, + "required": [ + "ecgi" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "cellUEInfo": { + "description": "The per cell per UE layer 2 measurements information as defined below.", + "items": { + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "dl_gbr_data_volume_ue": { + "description": "It indicates the data volume of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "dl_gbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the downlink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_gbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_gbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "dl_nongbr_data_volume_ue": { + "description": "It indicates the data volume of the downlink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "dl_nongbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the downlink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_nongbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_nongbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_dl_gbr_cell": { + "description": "It indicates the number of active UEs with downlink GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_dl_nongbr_cell": { + "description": "It indicates the number of active UEs with downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_ul_gbr_cell": { + "description": "It indicates the number of active UEs with uplink GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_ul_nongbr_cell": { + "description": "It indicates the number of active UEs with uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "received_dedicated_preambles_cell": { + "description": "It indicates (in percentage) the received dedicated preamples, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "received_randomly_selected _preambles_high_range_cell": { + "description": "It indicates (in percentage) the received randomly selected preambles in the high range, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "received_randomly_selected _preambles_low_range_cell": { + "description": "It indicates (in percentage) the received randomly selected preambles in the low range, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "ul_gbr_data_volume_ue": { + "description": "It indicates the data volume of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_gbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the uplink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_gbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_gbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_nongbr_data_volume_ue": { + "description": "It indicates the data volume of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_nongbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the uplink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_nongbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the uplink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_nongbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_total_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for total uplink traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + } + }, + "x-etsi-ref": "6.2.4a" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/L2MeasInfos.schema.json b/SRV/RNIS/schemas/L2MeasInfos.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..ed3eb81c221798df483ea3a952ee4c1b6f6603f0 --- /dev/null +++ b/SRV/RNIS/schemas/L2MeasInfos.schema.json @@ -0,0 +1,252 @@ +{ + "type": "array", + "items": { + "type": "object", + "properties": { + "cellInfo": { + "description": "The per cell measurement information as defined below.", + "items": { + "type": "object" + }, + "properties": { + "dl_gbr_prb_usage_cell": { + "description": "It indicates the PRB usage for downlink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_nongbr_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "ul_gbr_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for uplink GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_nongbr_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + } + }, + "required": [ + "ecgi" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "cellUEInfo": { + "description": "The per cell per UE layer 2 measurements information as defined below.", + "items": { + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "dl_gbr_data_volume_ue": { + "description": "It indicates the data volume of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "dl_gbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the downlink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_gbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_gbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the downlink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "dl_nongbr_data_volume_ue": { + "description": "It indicates the data volume of the downlink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "dl_nongbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the downlink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_nongbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "dl_nongbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the downlink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_dl_gbr_cell": { + "description": "It indicates the number of active UEs with downlink GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_dl_nongbr_cell": { + "description": "It indicates the number of active UEs with downlink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_ul_gbr_cell": { + "description": "It indicates the number of active UEs with uplink GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "number_of_active_ue_ul_nongbr_cell": { + "description": "It indicates the number of active UEs with uplink non-GBR traffic, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "received_dedicated_preambles_cell": { + "description": "It indicates (in percentage) the received dedicated preamples, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "received_randomly_selected _preambles_high_range_cell": { + "description": "It indicates (in percentage) the received randomly selected preambles in the high range, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "received_randomly_selected _preambles_low_range_cell": { + "description": "It indicates (in percentage) the received randomly selected preambles in the low range, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "timestamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "ul_gbr_data_volume_ue": { + "description": "It indicates the data volume of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_gbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the uplink GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_gbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_gbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the uplink GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_nongbr_data_volume_ue": { + "description": "It indicates the data volume of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_nongbr_pdr_cell": { + "description": "It indicates the packet discard rate in percentage of the uplink non-GBR traffic in a cell, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_nongbr_pdr_ue": { + "description": "It indicates the packet discard rate in percentage of the uplink nonGBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + }, + "ul_nongbr_throughput_ue": { + "description": "It indicates the scheduled throughput of the uplink non-GBR traffic of a UE, as defined in ETSI TS 136 314 [i.11].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer" + }, + "ul_total_prb_usage_cell": { + "description": "It indicates (in percentage) the PRB usage for total uplink traffic, as defined in ETSI TS 136 314 [i.11] and ETSI TS 136 423 [i.12].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Integer (0..100)" + } + }, + "x-etsi-ref": "6.2.4a" + } +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/MeasRepUeNotification.schema.json b/SRV/RNIS/schemas/MeasRepUeNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..5d9be9a02d1ba5f09bf73440a6168aaa0376057d --- /dev/null +++ b/SRV/RNIS/schemas/MeasRepUeNotification.schema.json @@ -0,0 +1,205 @@ +{ + "items": { + "properties": { + "associateId": { + "description": "0 to N identifiers to associate the event for a specific UE or flow.", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "carrierAggregationMeasInfo": { + "description": "This parameter can be repeated to contain information of all the carriers assign for Carrier Aggregation up to M.", + "type": "object", + "x-etsi-mec-cardinality": "0..M", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "eutranNeighbourCellMeasInfo": { + "description": "This parameter can be repeated to contain information of all the neighbouring cells up to N.", + "items": { + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "heightUe": { + "description": "Indicates height of the UE in meters relative to the sea level as defined in ETSI TS 136.331 [i.7].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Int" + }, + "newRadioMeasInfo": { + "description": "5G New Radio secondary serving cells measurement information.", + "items": { + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "newRadioMeasNeiInfo": { + "description": "Measurement quantities concerning the 5G NR neighbours.", + "items": { + "type": "object" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "notificationType": { + "description": "Shall be set to \"MeasRepUeNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "rsrp": { + "description": "Reference Signal Received Power as defined in ETSI TS 136 214 [i.5].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "rsrpEx": { + "description": "Extended Reference Signal Received Power, with value mapping defined in ETSI TS 136 133 [i.16].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "rsrq": { + "description": "Reference Signal Received Quality as defined in ETSI TS 136 214 [i.5].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uint8" + }, + "rsrqEx": { + "description": "Extended Reference Signal Received Quality, with value mapping defined in ETSI TS 136 133 [i.16].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "sinr": { + "description": "Reference Signal \"Signal to Interference plus Noise Ratio\", with value mapping defined in ETSI TS 136 133 [i.16].", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uint8" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "trigger": { + "description": "As defined in Ref ETSI TS 136 331 [i.7]", + "enum": [ + "0 = NOT_AVAILABLE", + "1 = PERIODICAL_REPORT_STRONGEST_CELLS", + "2 = PERIODICAL_REPORT_STRONGEST_CELLS_FOR_SON", + "3 = PERIODICAL_REPORT_CGI", + "4 = INTRA_PERIODICAL_REPORT_STRONGEST_CELLS", + "5 = INTRA_PERIODICAL_REPORT_CGI", + "10 = EVENT_A1", + "11 = EVENT_A2", + "12 = EVENT_A3", + "13 = EVENT_A4", + "14 = EVENT_A5", + "15 = EVENT_A6", + "20 = EVENT_B1", + "21 = EVENT_B2", + "20 = EVENT_B1-NR", + "21 = EVENT_B2-NR", + "30 = EVENT_C1", + "31 = EVENT_C2", + "40 = EVENT_W1", + "41 = EVENT_W2", + "42 = EVENT_W3", + "50 = EVENT_V1", + "51 = EVENT_V2", + "60 = EVENT_H1", + "61 = EVENT_H2" + ], + "type": "string" + } + }, + "type": "object" + }, + "required": [ + "notificationType", + "ecgi", + "rsrp", + "rsrq", + "trigger" + ], + "type": "object", + "x-etsi-ref": "6.4.6" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/MeasTaSubscription.schema.json b/SRV/RNIS/schemas/MeasTaSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..e8623acefcff756764dd9b1ac69d576ec3e98ea7 --- /dev/null +++ b/SRV/RNIS/schemas/MeasTaSubscription.schema.json @@ -0,0 +1,52 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "filterCriteriaAssoc": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "subscriptionType": { + "description": "Shall be set to \"MeasTaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "filterCriteriaAssoc" + ], + "type": "object", + "x-etsi-ref": "6.3.7" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json b/SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..cd9a09d542fefb29d0c0d3be34bee2ca6e3e167d --- /dev/null +++ b/SRV/RNIS/schemas/NrMeasRepUeSubscription.schema.json @@ -0,0 +1,52 @@ +{ + "properties": { + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumer to receive notifications on the subscribed RNIS information. This shall be included both in the request and in response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "filterCriteriaNrMrs": { + "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "subscriptionType\t": { + "description": "Shall be set to \"NrMeasRepUeSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType\t", + "callbackReference", + "filterCriteriaNrMrs" + ], + "type": "object", + "x-etsi-ref": "6.3.11" + } \ No newline at end of file diff --git a/SRV/RNIS/schemas/PlmnInfo.schema.json b/SRV/RNIS/schemas/PlmnInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..f176cce80d8e3950ea57fa92e52a96e400bff098 --- /dev/null +++ b/SRV/RNIS/schemas/PlmnInfo.schema.json @@ -0,0 +1,61 @@ +{ + "type": "object", + "properties": { + "appInstanceId": { + "description": "Unique identifier for the MEC application instance.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "plmn": { + "description": "Public Land Mobile Network Identity.", + "items": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Plmn" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "appInstanceId", + "plmn" + ], + "x-etsi-ref": "6.2.2" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/PlmnInfos.schema.json b/SRV/RNIS/schemas/PlmnInfos.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..72f2ac15a48bd67c8aafa13cf9d25c53fdb0e5f5 --- /dev/null +++ b/SRV/RNIS/schemas/PlmnInfos.schema.json @@ -0,0 +1,64 @@ +{ + "type": "array", + "items": { + "type": "object", + "properties": { + "appInstanceId": { + "description": "Unique identifier for the MEC application instance.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "plmn": { + "description": "Public Land Mobile Network Identity.", + "items": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Plmn" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "appInstanceId", + "plmn" + ], + "x-etsi-ref": "6.2.2" + } +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/RabEstNotification.schema.json b/SRV/RNIS/schemas/RabEstNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..095fb26c70b804b57d8fa7f93a52df4a070e1d7a --- /dev/null +++ b/SRV/RNIS/schemas/RabEstNotification.schema.json @@ -0,0 +1,129 @@ +{ + "properties": { + "associateId": { + "description": "0 to N identifiers to bind the event for a specific UE or flow. ", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "erabId": { + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "erabQosParameters": { + "description": "QoS parameters for the E-RAB as defined below.", + "properties": { + "qci": { + "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "qci" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "notificationType": { + "description": "Shall be set to \"RabEstNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "tempUeId": { + "description": "The temporary identifier allocated for the specific UE as defined below. ", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "notificationType", + "ecgi", + "erabId" + ], + "type": "object", + "x-etsi-ref": "6.4.3" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/RabInfo.schema.json b/SRV/RNIS/schemas/RabInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..c3be426815e053c535769658963eef842ac17aa9 --- /dev/null +++ b/SRV/RNIS/schemas/RabInfo.schema.json @@ -0,0 +1,155 @@ +{ + "type": "object", + "properties": { + "appInstanceId": { + "description": "Unique identifier for the MEC application instance.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "cellUserInfo": { + "description": "The information on users per cell as defined below.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "ueInfo": { + "description": "Information on UEs in the specific cell as defined below.", + "items": { + "properties": { + "associateId": { + "description": "0 to N identifiers to associate the event for a specific UE or flow.", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "erabInfo": { + "description": "Information on E-RAB as defined below.", + "items": { + "type": "object" + }, + "properties": { + "erabId": { + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "erabQosParameters": { + "description": "QoS parameters for the E-RAB as defined below.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "erabId" + ], + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "type": "object" + }, + "required": [ + "erabInfo" + ], + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "type": "object", + "required": [ + "ecgi", + "ueInfo" + ] + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "requestId": { + "description": "Unique identifier allocated by the service consumer for the RAB Information request.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + } +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/RabInfos.schema.json b/SRV/RNIS/schemas/RabInfos.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..1b9635e598c08c0e71f9433365a4ec127ebe2717 --- /dev/null +++ b/SRV/RNIS/schemas/RabInfos.schema.json @@ -0,0 +1,163 @@ +{ + "type": "array", + "items": { + "type": "object", + "properties": { + "appInstanceId": { + "description": "Unique identifier for the MEC application instance.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "cellUserInfo": { + "description": "The information on users per cell as defined below.", + "items": { + "properties": { + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "ueInfo": { + "description": "Information on UEs in the specific cell as defined below.", + "items": { + "properties": { + "associateId": { + "description": "0 to N identifiers to associate the event for a specific UE or flow.", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "erabInfo": { + "description": "Information on E-RAB as defined below.", + "items": { + "type": "object" + }, + "properties": { + "erabId": { + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "erabQosParameters": { + "description": "QoS parameters for the E-RAB as defined below.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "erabId" + ], + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "type": "object" + }, + "required": [ + "erabInfo" + ], + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "type": "object", + "required": [ + "ecgi", + "ueInfo" + ] + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "requestId": { + "description": "Unique identifier allocated by the service consumer for the RAB Information request.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + } + }, + "required": [ + "appInstanceId", + "requestId" + ], + "x-etsi-ref": "6.2.3" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/RabModNotification.schema.json b/SRV/RNIS/schemas/RabModNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..c0cd6eceb437779d81730c1af1340c0e6f885d83 --- /dev/null +++ b/SRV/RNIS/schemas/RabModNotification.schema.json @@ -0,0 +1,123 @@ +{ + "properties": { + "associateId": { + "description": "0 to N identifiers to bind the event for a specific UE or flow. ", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "erabId": { + "description": "The attribute that uniquely identifies a Radio Access bearer for specific UE as defined in ETSI TS 136 413 [i.3].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + }, + "erabQosParameters": { + "description": "The QoS parameters for the E-RAB as defined below.", + "properties": { + "qci": { + "description": "QoS Class Identifier as defined in ETSI TS 123 401 [i.4].", + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Integer" + } + }, + "required": [ + "qci" + ], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "notificationType": { + "description": "Shall be set to \"RabModNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "notificationType", + "ecgi", + "erabId" + ], + "type": "object", + "x-etsi-ref": "6.4.4" + } \ No newline at end of file diff --git a/SRV/RNIS/schemas/RabRelNotification.schema.json b/SRV/RNIS/schemas/RabRelNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..f2d980a98f586305a02b31612d7e6f36e1239808 --- /dev/null +++ b/SRV/RNIS/schemas/RabRelNotification.schema.json @@ -0,0 +1,106 @@ +{ + "properties": { + "associateId": { + "description": "0 to N identifiers to bind the event for a specific UE or flow as defined below.", + "items": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "AssociateId" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "erabReleaseInfo": { + "description": "The release information for the E-RAB as defined below.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "notificationType": { + "description": "Shall be set to \"RabRelNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "notificationType", + "ecgi", + "erabReleaseInfo" + ], + "type": "object", + "x-etsi-ref": "6.4.5" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/RadioNetworkInformationAPI.schema.json b/SRV/RNIS/schemas/RadioNetworkInformationAPI.schema.json deleted file mode 100644 index f049d5ef1f601feb2ad17f7fb86ac2ef0aa2a16e..0000000000000000000000000000000000000000 --- a/SRV/RNIS/schemas/RadioNetworkInformationAPI.schema.json +++ /dev/null @@ -1,975 +0,0 @@ -{ - "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" - }, - "PlmnInfo": { - "type": "object", - "required": [ - "appInsId", - "plmn" - ], - "properties": { - "timeStamp": { - "$ref": "#/definitions/TimeStamp" - }, - "appInsId": { - "$ref": "#/definitions/AppInsId" - }, - "plmn": { - "type": "array", - "items": { - "$ref": "#/definitions/Plmn" - } - } - } - }, - "RabInfo": { - "type": "object", - "required": [ - "appInsId", - "requestId" - ], - "properties": { - "timeStamp": { - "$ref": "#/definitions/TimeStamp" - }, - "appInsId": { - "$ref": "#/definitions/AppInsId" - }, - "requestId": { - "$ref": "#/definitions/RequestId" - }, - "cellUserInfo": { - "type": "array", - "items": { - "$ref": "#/definitions/CellUserInfo" - } - } - } - }, - "S1BearerInfo": { - "type": "object", - "required": [ - "s1UeInfo" - ], - "properties": { - "timeStamp": { - "$ref": "#/definitions/TimeStamp" - }, - "s1UeInfo": { - "type": "array", - "items": { - "$ref": "#/definitions/S1UeInfo" - } - } - } - }, - "S1UeInfo": { - "type": "object", - "required": [ - "ecgi", - "s1BearerInfoDetailed" - ], - "properties": { - "tempUeId": { - "type": "array", - "items": { - "$ref": "#/definitions/TempUeId" - } - }, - "associateId": { - "type": "array", - "items": { - "$ref": "#/definitions/AssociateId" - } - }, - "ecgi": { - "type": "array", - "items": { - "$ref": "#/definitions/Ecgi" - } - }, - "s1BearerInfoDetailed": { - "type": "array", - "items": { - "$ref": "#/definitions/S1BearerInfoDetailed" - } - } - }, - "description": "The information on users per cell." - }, - "S1BearerInfoDetailed": { - "type": "object", - "required": [ - "erabId", - "enbInfo", - "sGwInfo" - ], - "properties": { - "erabId": { - "$ref": "#/definitions/ErabId" - }, - "enbInfo": { - "$ref": "#/definitions/S1EnbInfo" - }, - "sGwInfo": { - "$ref": "#/definitions/SGwInfo" - } - }, - "description": "Information on UEs in the specific cell." - }, - "ErabId": { - "type": "integer", - "format": "int32", - "description": "The element that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413", - "example": 10 - }, - "TempUeId": { - "type": "object", - "required": [ - "mmec", - "mtmsi" - ], - "properties": { - "mmec": { - "$ref": "#/definitions/Mmec" - }, - "mtmsi": { - "$ref": "#/definitions/Mtmsi" - } - } - }, - "Mmec": { - "type": "string", - "description": "MMEC as defined in ETSI TS 136 413", - "example": "0" - }, - "Mtmsi": { - "type": "string", - "description": "M-TMSI as defined in ETSI TS 136 413", - "example": "1234" - }, - "S1EnbInfo": { - "type": "object", - "required": [ - "ipAddress", - "tunnelId" - ], - "properties": { - "ipAddress": { - "type": "string", - "description": "eNB transport layer address of this S1 bearer.", - "example": "192.0.2.0" - }, - "tunnelId": { - "type": "string", - "description": "eNB GTP-U TEID of this S1 bearer.", - "example": "1111" - } - } - }, - "SGwInfo": { - "type": "object", - "required": [ - "ipAddress", - "tunnelId" - ], - "properties": { - "ipAddress": { - "type": "string", - "description": "SGW transport layer address of this S1 bearer.", - "example": "192.0.2.1" - }, - "tunnelId": { - "type": "string", - "description": "SGW GTP-U TEID of this S1 bearer.", - "example": "2222" - } - } - }, - "TimeStamp": { - "type": "object", - "required": [ - "nanoSeconds", - "seconds" - ], - "properties": { - "seconds": { - "type": "integer", - "format": "uint32", - "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", - "example": 1577836800 - }, - "nanoSeconds": { - "type": "integer", - "format": "uint32", - "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", - "example": 0 - } - } - }, - "AppInsId": { - "type": "string", - "format": "string", - "description": "Unique identifier for the mobile edge application instance", - "example": "01" - }, - "RequestId": { - "type": "string", - "format": "string", - "description": "Unique identifier allocated by the Mobile Edge application for the Information request.", - "example": "01" - }, - "CellUserInfo": { - "type": "object", - "required": [ - "ecgi", - "ueInfo" - ], - "properties": { - "ecgi": { - "$ref": "#/definitions/Ecgi" - }, - "ueInfo": { - "type": "array", - "items": { - "$ref": "#/definitions/UeInfo" - } - } - }, - "description": "The information on users per cell." - }, - "Ecgi": { - "type": "object", - "required": [ - "cellId", - "plmn" - ], - "properties": { - "plmn": { - "$ref": "#/definitions/Plmn" - }, - "cellId": { - "$ref": "#/definitions/CellId" - } - }, - "description": "E-UTRAN CelI Global Identifier as defined in 3GPP TS 36.413" - }, - "Plmn": { - "type": "object", - "required": [ - "mcc", - "mnc" - ], - "properties": { - "mcc": { - "type": "string", - "format": "string", - "description": "The Mobile Country Code part of PLMN Identity as defined in 3GPP TS 36.413", - "example": "001" - }, - "mnc": { - "type": "string", - "format": "string", - "description": "The Mobile Network Code part of PLMN Identity as defined in 3GPP TS 36.413", - "example": "01" - } - } - }, - "CellId": { - "type": "string", - "format": "binary", - "description": "The E-UTRAN Cell Identity as a bit string (size (28)), as defined in 3GPP TS 36.413", - "example": "0x800000A" - }, - "UeInfo": { - "type": "object", - "required": [ - "erabInfo" - ], - "properties": { - "associateId": { - "type": "array", - "items": { - "$ref": "#/definitions/AssociateId" - } - }, - "erabInfo": { - "type": "array", - "items": { - "$ref": "#/definitions/ErabQosParameters" - } - } - }, - "description": "Information on UEs in the specific cell." - }, - "AssociateId": { - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "RESERVED", - "UE_IPV4_ADDRESS", - "UE_IPV6_ADDRESS", - "NATED_IP_ADDRESS", - "GTP_TEID" - ], - "description": "Numeric value (0-255) corresponding to specified type of identifier", - "example": "UE_IPV4_ADDRESS" - }, - "value": { - "type": "string", - "description": "Value for the identifier", - "example": "192.0.0.2" - } - } - }, - "ErabQosParameters": { - "type": "object", - "properties": { - "qci": { - "$ref": "#/definitions/Qci" - }, - "qosInformation": { - "type": "array", - "items": { - "$ref": "#/definitions/QosInformation" - } - } - } - }, - "Qci": { - "type": "integer", - "format": "int32", - "description": "QoS Class Identifier as defined in TS 23.401", - "example": 7 - }, - "QosInformation": { - "type": "object", - "required": [ - "erabGbrDl", - "erabGbrUl", - "erabMbrDl", - "erabMbrUl" - ], - "properties": { - "erabMbrDl": { - "type": "integer", - "format": "int32", - "description": "This IE indicates the maximum downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer.", - "example": 10 - }, - "erabMbrUl": { - "type": "integer", - "format": "int32", - "description": "This IE indicates the maximum uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer.", - "example": 10 - }, - "erabGbrDl": { - "type": "integer", - "format": "int32", - "description": "This IE indicates the guaranteed downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer.", - "example": 10 - }, - "erabGbrUl": { - "type": "integer", - "format": "int32", - "description": "This IE indicates the guaranteed uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer.", - "example": 10 - } - } - }, - "SubscriptionLinkList": { - "type": "object", - "required": [ - "_links" - ], - "properties": { - "_links": { - "$ref": "#/definitions/Link" - }, - "subscription": { - "type": "array", - "items": { - "$ref": "#/definitions/Subscription" - } - } - } - }, - "MeasRepUeSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocTri" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "MeasRepUeSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocTri" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "S1BearerSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "s1BearerSubscriptionCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "eventType": { - "$ref": "#/definitions/EventType" - }, - "s1BearerSubscriptionCriteria": { - "$ref": "#/definitions/S1BearerSubscriptionCriteria" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "S1BearerSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "s1BearerSubscriptionCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "eventType": { - "$ref": "#/definitions/EventType" - }, - "s1BearerSubscriptionCriteria": { - "$ref": "#/definitions/S1BearerSubscriptionCriteria" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "RabEstSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocQci" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "RabEstSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocQci" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "RabModSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocQci" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "RabModSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocQci" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "RabRelSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocQci" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "RabRelSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocQci" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "CaReConfSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssoc" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "CaReConfSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssoc" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "CellChangeSubscriptionPost": { - "type": "object", - "required": [ - "subscriptionType", - "callbackReference", - "filterCriteria" - ], - "properties": { - "subscriptionType": { - "$ref": "#/definitions/SubscriptionType" - }, - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocHo" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "CellChangeSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssocHo" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "MeasTaSubscriptionPost": { - "type": "object", - "required": [ - "callbackReference", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssoc" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "MeasTaSubscription": { - "type": "object", - "required": [ - "callbackReference", - "_links", - "filterCriteria" - ], - "properties": { - "callbackReference": { - "$ref": "#/definitions/CallbackReference" - }, - "_links": { - "$ref": "#/definitions/Link" - }, - "filterCriteria": { - "$ref": "#/definitions/FilterCriteriaAssoc" - }, - "expiryDeadline": { - "$ref": "#/definitions/TimeStamp" - } - } - }, - "CallbackReference": { - "type": "string", - "format": "uri", - "description": "URL selected by the Mobile Edge application to receive notifications on the subscribed RNIS information.", - "example": "http://meAppClient.example.com/rni/v1/" - }, - "Link": { - "type": "object", - "properties": { - "self": { - "$ref": "#/definitions/LinkType" - } - }, - "description": "List of hyperlinks related to the resource" - }, - "LinkType": { - "description": "URI referring to a resource", - "type": "string", - "format": "uri", - "example": "http://meAppClient.example.com/rni/v1/" - }, - "Subscription": { - "type": "object", - "required": [ - "href", - "subscriptionType" - ], - "properties": { - "href": { - "$ref": "#/definitions/LinkType" - }, - "subscriptionType": { - "$ref": "#/definitions/SubscriptionType" - } - }, - "description": "A link to a subscription." - }, - "SubscriptionType": { - "type": "string", - "description": "Numeric value corresponding to specified type of subscription.", - "enum": [ - "RESERVED", - "CELL_CHANGE", - "RAB_ESTABLISHMENT", - "RAB_MODIFICATION", - "RAB_RELEASE", - "MEAS_REPORT_UE", - "MEAS_TIMING_ADVANCE", - "CA_RECONF", - "S1_BEARE", - "WRONG_PARAMETER" - ], - "example": "CELL_CHANGE" - }, - "FilterCriteriaAssoc": { - "type": "object", - "properties": { - "appInsId": { - "$ref": "#/definitions/AppInsId" - }, - "associateId": { - "$ref": "#/definitions/AssociateId" - }, - "plmn": { - "$ref": "#/definitions/Plmn" - }, - "cellId": { - "$ref": "#/definitions/CellId" - } - }, - "description": "List of filtering criteria for the subscription." - }, - "FilterCriteriaAssocQci": { - "type": "object", - "properties": { - "appInsId": { - "$ref": "#/definitions/AppInsId" - }, - "associateId": { - "$ref": "#/definitions/AssociateId" - }, - "plmn": { - "$ref": "#/definitions/Plmn" - }, - "cellId": { - "$ref": "#/definitions/CellId" - }, - "qci": { - "$ref": "#/definitions/Qci" - } - }, - "description": "List of filtering criteria for the subscription." - }, - "FilterCriteriaAssocHo": { - "type": "object", - "properties": { - "appInsId": { - "$ref": "#/definitions/AppInsId" - }, - "associateId": { - "$ref": "#/definitions/AssociateId" - }, - "plmn": { - "$ref": "#/definitions/Plmn" - }, - "cellId": { - "$ref": "#/definitions/CellId" - }, - "hoStatus": { - "$ref": "#/definitions/HoStatus" - } - }, - "description": "List of filtering criteria for the subscription." - }, - "FilterCriteriaAssocTri": { - "type": "object", - "properties": { - "appInsId": { - "$ref": "#/definitions/AppInsId" - }, - "associateId": { - "$ref": "#/definitions/AssociateId" - }, - "plmn": { - "$ref": "#/definitions/Plmn" - }, - "cellId": { - "$ref": "#/definitions/CellId" - }, - "trigger": { - "$ref": "#/definitions/Trigger" - } - }, - "description": "List of filtering criteria for the subscription." - }, - "S1BearerSubscriptionCriteria": { - "type": "object", - "properties": { - "associateId": { - "$ref": "#/definitions/AssociateId" - }, - "plmn": { - "$ref": "#/definitions/Plmn" - }, - "cellId": { - "$ref": "#/definitions/CellId" - }, - "erabId": { - "$ref": "#/definitions/ErabId" - } - }, - "description": "List of filtering criteria for the subscription." - }, - "HoStatus": { - "type": "string", - "description": "Description of the subscribed to event", - "enum": [ - "RESERVED", - "IN_PREPARATION", - "IN_EXECUTION", - "COMPLETED", - "REJECTED", - "CANCELLED" - ], - "example": "COMPLETED" - }, - "EventType": { - "type": "string", - "description": "Description of the subscribed event.", - "enum": [ - "RESERVED", - "S1_BEARER_ESTABLISH", - "S1_BEARER_MODIFY", - "S1_BEARER_RELEASE" - ], - "example": "S1_BEARER_ESTABLISH" - }, - "Trigger": { - "type": "string", - "description": "Unique identifier for the mobile edge application instance", - "enum": [ - "NOT_AVAILABLE", - "PERIODICAL_REPORT_STRONGEST_CELLS", - "PERIODICAL_REPORT_STRONGEST_CELLS_FOR_SON", - "PERIODICAL_REPORT_CGI", - "EVENT_A1", - "EVENT_A2", - "EVENT_A3", - "EVENT_A4", - "EVENT_A5", - "EVENT_A6", - "EVENT_B1", - "EVENT_B2", - "EVENT_C1", - "EVENT_C2", - "EVENT_W1", - "EVENT_W2", - "EVENT_W3" - ], - "example": "EVENT_A3" - } -} diff --git a/SRV/RNIS/schemas/S1BearerInfo.schema.json b/SRV/RNIS/schemas/S1BearerInfo.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..700b070bd13e4e44e546f59b165b7e61b21fb008 --- /dev/null +++ b/SRV/RNIS/schemas/S1BearerInfo.schema.json @@ -0,0 +1,175 @@ +{ + "type": "object", + "properties": { + "s1UeIffo": { + "description": "1..N", + "properties": { + "associateId": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "s1BearerInfoDetailed": { + "description": "1..N", + "properties": { + "erabId": { + "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "Integer" + }, + "enbInfo": { + "description": "S1 bearer information on eNB", + "properties": { + "ipAddress": { + "type": "string", + "description": "eNB transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "eNB GTP-U TEID of this S1 bearer." + } + }, + "required": [ + "ipAddress", + "tunnelId" + ] + }, + "sGwInfo": { + "properties": { + "ipAddress": { + "type": "string", + "description": "SGW transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "SGW GTP-U TEID of this S1 bearer." + } + }, + "required": [ + "ipAddress", + "tunnelId" + ] + } + }, + "required": [ + "erabId", + "enbInfo" + ], + "type": "object", + "x-etsi-mec-cardinality": "Structure (inlined)", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "tempUeId": { + "description": "0..1", + "properties": { + "mmec": { + "description": "1", + "type": "string", + "x-etsi-mec-cardinality": "String", + "x-etsi-mec-origin-type": "String" + }, + "mtmsi": { + "description": "1", + "type": "string", + "x-etsi-mec-cardinality": "String", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mmec", + "mtmsi" + ], + "type": "object", + "x-etsi-mec-cardinality": "Structure (inlined)", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "tempUeId", + "associateId", + "ecgi", + "s1BearerInfoDetailed" + ], + "type": "object", + "x-etsi-mec-cardinality": "Structure (inlined)", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "s1UeInfo" + ], + "x-etsi-ref": "6.2.4" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/S1BearerInfos.schema.json b/SRV/RNIS/schemas/S1BearerInfos.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..35efd72ec658459c7daa4e10a5203cb9aabe0b64 --- /dev/null +++ b/SRV/RNIS/schemas/S1BearerInfos.schema.json @@ -0,0 +1,178 @@ +{ + "type": "array", + "items": { + "type": "object", + "properties": { + "s1UeIffo": { + "description": "1..N", + "properties": { + "associateId": { + "properties": { + "type": { + "description": "Numeric value (0-255) corresponding to specified type of identifier as following:\n0 = reserved.\n1= UE_IPv4_ADDRESS.\n2 = UE_IPV6_ADDRESS.\n3 = NATED_IP_ADDRESS.\n4 = GTP_TEID.", + "enum": [ + "SEE_DESCRIPTION" + ], + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum" + }, + "value": { + "description": "Value for the identifier.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "type", + "value" + ], + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "ecgi": { + "properties": { + "cellId": { + "description": "String representing the E-UTRAN Cell Identity. Encoded as a bit string (size (28)) as defined in ETSI TS 136 413 [i.3].", + "type": "string" + }, + "plmn": { + "properties": { + "mcc": { + "description": "The Mobile Country Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "mnc": { + "description": "The Mobile Network Code part of PLMN Identity as defined in ETSI TS 136 413 [i.3].", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mcc", + "mnc" + ], + "type": "object", + "x-etsi-ref": "6.5.5" + } + }, + "required": [ + "plmn", + "cellId" + ], + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "s1BearerInfoDetailed": { + "description": "1..N", + "properties": { + "erabId": { + "description": "The attribute that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413 [i.3].", + "type": "integer", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "Integer" + }, + "enbInfo": { + "description": "S1 bearer information on eNB", + "properties": { + "ipAddress": { + "type": "string", + "description": "eNB transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "eNB GTP-U TEID of this S1 bearer." + } + }, + "required": [ + "ipAddress", + "tunnelId" + ] + }, + "sGwInfo": { + "properties": { + "ipAddress": { + "type": "string", + "description": "SGW transport layer address of this S1 bearer." + }, + "tunnelId": { + "type": "string", + "description": "SGW GTP-U TEID of this S1 bearer." + } + }, + "required": [ + "ipAddress", + "tunnelId" + ] + } + }, + "required": [ + "erabId", + "enbInfo" + ], + "type": "object", + "x-etsi-mec-cardinality": "Structure (inlined)", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "tempUeId": { + "description": "0..1", + "properties": { + "mmec": { + "description": "1", + "type": "string", + "x-etsi-mec-cardinality": "String", + "x-etsi-mec-origin-type": "String" + }, + "mtmsi": { + "description": "1", + "type": "string", + "x-etsi-mec-cardinality": "String", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "mmec", + "mtmsi" + ], + "type": "object", + "x-etsi-mec-cardinality": "Structure (inlined)", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "tempUeId", + "associateId", + "ecgi", + "s1BearerInfoDetailed" + ], + "type": "object", + "x-etsi-mec-cardinality": "Structure (inlined)", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + } + }, + "required": [ + "s1UeInfo" + ], + "x-etsi-ref": "6.2.4" + } +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/S1BearerSubscription.schema.json b/SRV/RNIS/schemas/S1BearerSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..9da7b12fcd186cc037fa5c54aa89fcd824a75e6d --- /dev/null +++ b/SRV/RNIS/schemas/S1BearerSubscription.schema.json @@ -0,0 +1,62 @@ +{ + "properties": { + "S1BearerSubscriptionCriteria": { + "description": "As defined below.", + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "callbackReference": { + "description": "URI selected by the service consumer, to receive notifications on the subscribed RNIS information. This shall be included in the request and response.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "eventType": { + "description": "Description of the subscribed event. The event is included both in the request and in the response. \nFor the eventType, the following values are currently defined:\n0 = RESERVED.\n1 = S1_BEARER_ESTABLISH.\n2 = S1_BEARER_MODIFY.\n3 = S1_BEARER_RELEASE.", + "items": { + "type": "string" + }, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Enum" + }, + "expiryDeadline": { + "properties": { + "nanoSeconds": { + "type": "number" + }, + "seconds": { + "type": "number" + } + }, + "required": [ + "seconds", + "nanoSeconds" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "subscriptionType": { + "description": "Shall be set to \"S1BearerSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": [ + "subscriptionType", + "callbackReference", + "eventType", + "S1BearerSubscriptionCriteria" + ], + "type": "object", + "x-etsi-ref": "6.3.9" +} \ No newline at end of file diff --git a/SRV/RNIS/schemas/SubscriptionLinkList.schema.json b/SRV/RNIS/schemas/SubscriptionLinkList.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..ae912028332014d4efebf8cbffb81bb7956c3d72 --- /dev/null +++ b/SRV/RNIS/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,73 @@ +{ + "type": "object", + "properties": { + "_links": { + "description": "List of hyperlinks related to the resource.", + "properties": { + "self": { + "properties": { + "href": { + "description": "URI referring to a resource", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + } + }, + "required": [ + "href" + ], + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "subscription": { + "description": "A link to a subscription.", + "items": { + "type": "object" + }, + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "URI" + }, + "subscriptionType": { + "type": "string", + "description": "Type of a subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type event defined in clause 6.3.\n", + "enum": [ + "cell_change", + "rab_est", + "rab_mod", + "rab_rel", + "meas_rep_ue", + "nr_meas_rep_ue", + "timing_advance_ue", + "ca_reconf", + "s1_bearer" + ] + } + }, + "required": [ + "href", + "subscriptionType" + ], + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "self" + ], + "type": "object", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "_links" + ], + "x-etsi-ref": "6.3.10" +} \ No newline at end of file diff --git a/SRV/SAQ/PlatServices.robot b/SRV/SAQ/PlatServices.robot index 2676ca0cccaf33d1b49c258356235f1ed6ceeba3..10c254df42f1bec105446c8995612220c63c6623 100644 --- a/SRV/SAQ/PlatServices.robot +++ b/SRV/SAQ/PlatServices.robot @@ -19,8 +19,8 @@ TC_MEC_SRV_SAQ_001_OK ... Check that the IUT responds with a list of available MEC services ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.3.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.3.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of available MEC services @@ -33,7 +33,7 @@ TC_MEC_SRV_SAQ_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 011 V2.0.9, clause 8.2.3.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.3.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of available MEC services with parameters instance_id ${INVALID_VALUE} @@ -45,14 +45,14 @@ TC_MEC_SRV_SAQ_002_OK ... Check that the IUT responds with the information on a specific service ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.4.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.4.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/ServiceInfoList [Tags] PIC_MEC_PLAT PIC_SERVICES Get specific MEC service ${SERVICE_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is ServiceInfo - Check Result Contains ${response['body']['ServiceInfoList']} serInstanceId ${SERVICE_ID} + Check Response Contains ${response['body']} serInstanceId ${SERVICE_ID} TC_MEC_SRV_SAQ_002_NF @@ -60,7 +60,7 @@ TC_MEC_SRV_SAQ_002_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 011 V2.0.9, clause 8.2.4.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.4.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get specific MEC service ${NON_EXISTENT_SERVICE_ID} diff --git a/SRV/SAQ/schemas/ServiceInfo.schema.json b/SRV/SAQ/schemas/ServiceInfo.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..50fbfe28d02dc6d410934a358a22fd4b9f7ace11 100644 --- a/SRV/SAQ/schemas/ServiceInfo.schema.json +++ b/SRV/SAQ/schemas/ServiceInfo.schema.json @@ -0,0 +1,271 @@ +{ + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "serName", + "version", + "state", + "transportInfo", + "serializer" + ], + "properties": { + "serInstanceId": { + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" + }, + "serName": { + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" + }, + "serCategory": { + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } + }, + "version": { + "description": "Service version", + "type": "string", + "example": "ServiceVersion1" + }, + "state": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + }, + "transportInfo": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [{ + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } + }, + "serializer": { + "description": "The enumeration represents types of serializers", + "type": "string", + "enum": [ + "JSON", + "XML", + "PROTOBUF3" + ], + "example": "JSON" + }, + "scopeOfLocality": { + "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", + "type": "string", + "enum": [ + "MEC_SYSTEM", + "MEC_HOST", + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ], + "example": "MEC_SYSTEM" + }, + "consumedLocalOnly": { + "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", + "type": "boolean", + "example": false + }, + "isLocal": { + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true + } + } +} \ No newline at end of file diff --git a/SRV/SAQ/schemas/ServiceInfoList.schema.json b/SRV/SAQ/schemas/ServiceInfoList.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d9ddc80d9232d8fa00387a611751fc362e3ea421 100644 --- a/SRV/SAQ/schemas/ServiceInfoList.schema.json +++ b/SRV/SAQ/schemas/ServiceInfoList.schema.json @@ -0,0 +1,275 @@ +{ + "type": "array", + "objects": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "serName", + "version", + "state", + "transportInfo", + "serializer" + ], + "properties": { + "serInstanceId": { + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" + }, + "serName": { + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" + }, + "serCategory": { + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } + }, + "version": { + "description": "Service version", + "type": "string", + "example": "ServiceVersion1" + }, + "state": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + }, + "transportInfo": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [ + { + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } + }, + "serializer": { + "description": "The enumeration represents types of serializers", + "type": "string", + "enum": [ + "JSON", + "XML", + "PROTOBUF3" + ], + "example": "JSON" + }, + "scopeOfLocality": { + "description": "The scope of locality as expressed by \"consumedLocalOnly\" and \"isLocal\". If absent, defaults to MEC_HOST", + "type": "string", + "enum": [ + "MEC_SYSTEM", + "MEC_HOST", + "NFVI_POP", + "ZONE", + "ZONE_GROUP", + "NFVI_NODE" + ], + "example": "MEC_SYSTEM" + }, + "consumedLocalOnly": { + "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance.", + "type": "boolean", + "example": false + }, + "isLocal": { + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true + } + } + } +} \ No newline at end of file diff --git a/SRV/SRVSUB/PlatSrvSubscriptions.robot b/SRV/SRVSUB/PlatSrvSubscriptions.robot index 5ecd4c28be1bdbac6defb2fb2870f266d39ec465..7b61bf7b836e44057eac680ac96be0d8df2f81dc 100644 --- a/SRV/SRVSUB/PlatSrvSubscriptions.robot +++ b/SRV/SRVSUB/PlatSrvSubscriptions.robot @@ -18,8 +18,8 @@ TC_MEC_SRV_SRVSUB_001_OK ... Check that the IUT responds with a list of subscriptions for notifications ... on services availability when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.8.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/MecServiceMgmtApiSubscriptionLinkList + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/MecServiceMgmtApiSubscriptionLinkList [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of subscriptions ${APP_INSTANCE_ID} @@ -32,7 +32,7 @@ TC_MEC_SRV_SRVSUB_001_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 011 V2.0.9, clause 8.2.8.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of subscriptions ${NON_EXISTENT_INSTANCE_ID} @@ -44,16 +44,16 @@ TC_MEC_SRV_SRVSUB_002_OK ... Check that the IUT acknowledges the subscription by a MEC Application ... to notifications on service availability events ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.8.3.4 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new subscription ${APP_INSTANCE_ID} SerAvailabilityNotificationSubscription Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is SerAvailabilityNotificationSubscription Check HTTP Response Header Contains Location - Check Result Contains ${response['body']['SerAvailabilityNotificationSubscription']} subscriptionType "SerAvailabilityNotificationSubscription" - Check Result Contains ${response['body']['SerAvailabilityNotificationSubscription']} callbackReference ${APP_SRVSUB_NOTIF_CALLBACK_URI} + Check Response Contains ${response['body']} subscriptionType SerAvailabilityNotificationSubscription + Check Response Contains ${response['body']} callbackReference ${APP_SRVSUB_NOTIF_CALLBACK_URI} TC_MEC_SRV_SRVSUB_002_BR @@ -61,8 +61,8 @@ TC_MEC_SRV_SRVSUB_002_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 011 V2.0.9, clause 8.2.8.3.4 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.8.3.4 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES Create a new subscription ${APP_INSTANCE_ID} SerAvailabilityNotificationSubscriptionError @@ -74,14 +74,14 @@ TC_MEC_SRV_SRVSUB_003_OK ... Check that the IUT responds with the information on a specific subscription ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.9.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.9/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/SerAvailabilityNotificationSubscription [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is SerAvailabilityNotificationSubscription - Check Result Contains ${response['body']['SerAvailabilityNotificationSubscription']} subscriptionType "SerAvailabilityNotificationSubscription" + Check Response Contains ${response['body']} subscriptionType SerAvailabilityNotificationSubscription TC_MEC_SRV_SRVSUB_003_NF @@ -89,7 +89,7 @@ TC_MEC_SRV_SRVSUB_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 011 V2.0.9, clause 8.2.9.3.1 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.1 [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual subscription ${APP_INSTANCE_ID} ${NON_EXISTENT_SUBSCRIPTION_ID} @@ -101,7 +101,7 @@ TC_MEC_SRV_SRVSUB_004_OK ... Check that the IUT acknowledges the unsubscribe from service availability event notifications ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.9.3.5 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${APP_INSTANCE_ID} ${SUBSCRIPTION_ID} @@ -113,7 +113,7 @@ TC_MEC_SRV_SRVSUB_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 011 V2.0.9, clause 8.2.9.3.5 + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.9.3.5 [Tags] PIC_MEC_PLAT PIC_SERVICES Remove subscription ${NON_EXISTENT_INSTANCE_ID} ${SUBSCRIPTION_ID} diff --git a/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json b/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5b56946d39282f513d337e055bef4750d85ff7b4 100644 --- a/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json +++ b/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscription.json @@ -0,0 +1,9 @@ +{ + "subscriptionType": "SerAvailabilityNotificationSubscription", + "callbackReference": "http://127.0.0.1/subscribe", + "_links": { + "self": { + "href": "http://127.0.0.1/subscribe" + } + } +} \ No newline at end of file diff --git a/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json b/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7e7e1567d672490a0306b47ad7758b52081667f4 100644 --- a/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json +++ b/SRV/SRVSUB/jsons/SerAvailabilityNotificationSubscriptionError.json @@ -0,0 +1,9 @@ +{ + "subscription": "SerAvailabilityNotificationSubscription", + "callbackReference": "http://127.0.0.1/subscribe", + "_links": { + "self": { + "href": "http://127.0.0.1/subscribe" + } + } +} \ No newline at end of file diff --git a/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json b/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..26682d5b5b0302222d83fe1987fee6d044477daf --- /dev/null +++ b/SRV/SRVSUB/schemas/SerAvailabilityNotificationSubscription.schema.json @@ -0,0 +1,127 @@ +{ + "description": "This type represents a subscription to the notifications from the MEC platform regarding the availability of a MEC service or a list of MEC services.", + "type": "object", + "required": [ + "subscriptionType", + "callbackReference", + "_links" + ], + "properties": { + "subscriptionType": { + "description": "Shall be set to SerAvailabilityNotificationSubscription.", + "type": "string", + "example": "SerAvailabilityNotificationSubscription" + }, + "callbackReference": { + "description": "URI selected by the MEC application instance to receive notifications on the subscribed MEC service availability information. This shall be included in both the request and the response.", + "type": "string", + "format": "uri" + }, + "_links": { + "description": "Self-referring URI.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + } + }, + "readOnly": true + }, + "filteringCriteria": { + "description": "Filtering criteria to match services for which events are requested to be reported. If absent, matches all services. All child attributes are combined with the logical \"AND\" operation.", + "type": "object", + "properties": { + "serInstanceIds": { + "description": "Identifiers of service instances about which to report events.", + "type": "array", + "minItems": 0, + "items": { + "description": "Identifier of the service instance assigned by the MEC platform.", + "type": "string", + "readOnly": true, + "example": "ServiceInstance123" + } + }, + "serNames": { + "description": "Names of services about which to report events.", + "type": "array", + "minItems": 0, + "items": { + "description": "The name of the service. This is how the service producing MEC application identifies the service instance it produces.", + "type": "string", + "example": "ExampleService" + } + }, + "serCategories": { + "description": "Categories of services about which to report events.", + "type": "array", + "minItems": 0, + "items": { + "description": "This type represents the category reference", + "type": "object", + "required": [ + "href", + "id", + "name", + "version" + ], + "properties": { + "href": { + "description": "Reference of the catalogue", + "type": "string", + "format": "uri", + "example": "/example/catalogue1" + }, + "id": { + "description": "Unique identifier of the category", + "type": "string", + "example": "id12345" + }, + "name": { + "description": "Name of the category, example values include RNI, Location & Bandwidth Management", + "type": "string", + "example": "RNI" + }, + "version": { + "description": "Category version", + "type": "string", + "example": "version1" + } + } + } + }, + "states": { + "description": "States of the services about which to report events. If the event is a state change, this filter represents the state after the change.", + "type": "array", + "minItems": 0, + "items": { + "description": "This enumeration defines the possible states of a service.", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + } + }, + "isLocal": { + "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application.", + "type": "boolean", + "example": true + } + } + } + } +} \ No newline at end of file diff --git a/SRV/SRVSUB/schemas/SubscriptionLink.schema.json b/SRV/SRVSUB/schemas/SubscriptionLink.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..08c0b3dbef32044e4df5c7688d3ed11637573d2d --- /dev/null +++ b/SRV/SRVSUB/schemas/SubscriptionLink.schema.json @@ -0,0 +1,54 @@ +{ + "description": "This type represents a list of links related to currently existing subscriptions for a MEC application instance. This information is returned when sending a request to receive current subscriptions.", + "type": "object", + "required": [ + "_links" + ], + "properties": { + "_links": { + "description": "Self-referring URI.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + }, + "subscriptions": { + "description": "The MEC application instance's subscriptions", + "type": "array", + "items": { + "description": "A link to a subscription.", + "type": "object", + "required": [ + "href", + "subscriptionType" + ], + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + }, + "subscriptionType": { + "description": "The value shall be se to SerAvailabilityNotificationSubscription.", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json b/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..08c0b3dbef32044e4df5c7688d3ed11637573d2d 100644 --- a/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json +++ b/SRV/SRVSUB/schemas/SubscriptionLinkList.schema.json @@ -0,0 +1,54 @@ +{ + "description": "This type represents a list of links related to currently existing subscriptions for a MEC application instance. This information is returned when sending a request to receive current subscriptions.", + "type": "object", + "required": [ + "_links" + ], + "properties": { + "_links": { + "description": "Self-referring URI.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a type of link and may be referenced from data structures", + "type": "object", + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + } + } + }, + "subscriptions": { + "description": "The MEC application instance's subscriptions", + "type": "array", + "items": { + "description": "A link to a subscription.", + "type": "object", + "required": [ + "href", + "subscriptionType" + ], + "properties": { + "href": { + "description": "URI referring to a resource", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/example" + }, + "subscriptionType": { + "description": "The value shall be se to SerAvailabilityNotificationSubscription.", + "type": "string" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/SRV/TIME/PlatTiming.robot b/SRV/TIME/PlatTiming.robot index 45a41dde274453cc0b3395564bcd868781db8a08..63c90325352f5c6f5ab62f4f6098797336878896 100644 --- a/SRV/TIME/PlatTiming.robot +++ b/SRV/TIME/PlatTiming.robot @@ -19,8 +19,8 @@ TC_MEC_SRV_TIME_001_OK ... Check that the IUT responds with timing capabilities ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.5.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TimingCaps + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.5.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TimingCaps [Tags] PIC_MEC_PLAT PIC_SERVICES Get time capabilities @@ -33,8 +33,8 @@ TC_MEC_SRV_TIME_002_OK ... Check that the IUT responds with current time ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.6.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/CurrentTime + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.6.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/CurrentTime [Tags] PIC_MEC_PLAT PIC_SERVICES Get current time diff --git a/SRV/TIME/schemas/CurrentTime.schema.json b/SRV/TIME/schemas/CurrentTime.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b2eae96436273841556da785f05949b7792dc0a6 100644 --- a/SRV/TIME/schemas/CurrentTime.schema.json +++ b/SRV/TIME/schemas/CurrentTime.schema.json @@ -0,0 +1,32 @@ +{ + "description": "This type represents the information provided by the MEC platform in response to the Get Platform Time Request message.", + "type": "object", + "required": [ + "nanoSeconds", + "seconds", + "timeSourceStatus" + ], + "properties": { + "seconds": { + "type": "integer", + "format": "uint32", + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "example": 1577836800 + }, + "nanoSeconds": { + "type": "integer", + "format": "uint32", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "example": 0 + }, + "timeSourceStatus": { + "type": "string", + "enum": [ + "TRACEABLE", + "NONTRACEABLE" + ], + "description": "Platform Time Source status. 1 = TRACEABLE - time source is locked to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the UTC time source", + "example": "TRACEABLE" + } + } +} \ No newline at end of file diff --git a/SRV/TIME/schemas/TimingCaps.schema.json b/SRV/TIME/schemas/TimingCaps.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2bca36850a6d7753497072190f3a16de8f187ff0 100644 --- a/SRV/TIME/schemas/TimingCaps.schema.json +++ b/SRV/TIME/schemas/TimingCaps.schema.json @@ -0,0 +1,127 @@ +{ + "description": "This type represents the information provided by the MEC platform in response to the Timing capabilities Query message.", + "type": "object", + "properties": { + "timeStamp": { + "description": "time", + "type": "object", + "required": [ + "nanoSeconds", + "seconds" + ], + "properties": { + "seconds": { + "type": "integer", + "format": "uint32", + "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "example": 1577836800 + }, + "nanoSeconds": { + "type": "integer", + "format": "uint32", + "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", + "example": 0 + } + } + }, + "ntpServers": { + "description": "Available NTP servers", + "type": "array", + "items": { + "description": "NTP server detail.", + "type": "object", + "required": [ + "ntpServerAddrType", + "ntpServerAddr", + "minPollingInterval", + "maxPollingInterval", + "localPriority", + "authenticationOption", + "authenticationKeyNum" + ], + "properties": { + "ntpServerAddrType": { + "description": "Address type of NTP server", + "type": "string", + "enum": [ + "IP_ADDRESS", + "DNS_NAME" + ], + "example": "IP_ADDRESS" + }, + "ntpServerAddr": { + "description": "NTP server address", + "type": "string", + "example": "192.0.2.0" + }, + "minPollingInterval": { + "description": "Minimum poll interval for NTP messages, in seconds as a power of two. Range 3...17", + "type": "integer", + "format": "uint32", + "example": 3 + }, + "maxPollingInterval": { + "description": "Maximum poll interval for NTP messages, in seconds as a power of two. Range 3...17", + "type": "integer", + "format": "uint32", + "example": 17 + }, + "localPriority": { + "description": "NTP server local priority", + "type": "integer", + "format": "uint32", + "example": 1 + }, + "authenticationOption": { + "description": "NTP authentication option", + "type": "string", + "enum": [ + "NONE", + "SYMMETRIC_KEY", + "AUTO_KEY" + ], + "example": "NONE" + }, + "authenticationKeyNum": { + "description": "Authentication key number", + "type": "integer", + "format": "uint32", + "example": 1 + } + } + } + }, + "ptpMasters": { + "description": "Available PTP Masters", + "type": "array", + "items": { + "description": "NTP server detail.", + "type": "object", + "required": [ + "ptpMasterIpAddress", + "ptpMasterLocalPriority", + "delayReqMaxRate" + ], + "properties": { + "ptpMasterIpAddress": { + "description": "PTP Master IP Address", + "type": "string", + "example": "192.0.2.0" + }, + "ptpMasterLocalPriority": { + "description": "PTP Master local priority", + "type": "integer", + "format": "uint32", + "example": 1 + }, + "delayReqMaxRate": { + "description": "Acceptable maximum rate of the Delay_Req messages in packets per second", + "type": "integer", + "format": "uint32", + "example": 10 + } + } + } + } + } + } \ No newline at end of file diff --git a/SRV/TRAF/PlatTrafficRules.robot b/SRV/TRAF/PlatTrafficRules.robot index 1bddcf8b3259dae7e62db5671094358287ac75a8..f8cf514ca89ea001206f44e243bb836b74efc419 100644 --- a/SRV/TRAF/PlatTrafficRules.robot +++ b/SRV/TRAF/PlatTrafficRules.robot @@ -18,8 +18,8 @@ TC_MEC_SRV_TRAF_001_OK ... Check that the IUT responds with a list of available traffic rules ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.7.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.7.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of traffic rules ${APP_INSTANCE_ID} @@ -44,14 +44,14 @@ TC_MEC_SRV_TRAF_002_OK ... Check that the IUT responds with the information on a specific traffic rule ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.8.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Get individual traffic rule ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is TrafficRule - Check Result Contains ${response['body']['TrafficRule']} trafficRuleId ${TRAFFIC_RULE_ID} + Check Response Contains ${response['body']} trafficRuleId ${TRAFFIC_RULE_ID} TC_MEC_SRV_TRAF_003_OK @@ -59,15 +59,15 @@ TC_MEC_SRV_TRAF_003_OK ... Check that the IUT updates a specific traffic rule ... when commanded by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 7.2.8.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a traffic rule ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdate Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is TrafficRule - Check Result Contains ${response['body']['TrafficRule']} trafficRuleId ${TRAFFIC_RULE_ID} - Check Result Contains ${response['body']['TrafficRule']} action "DROP" + Check Response Contains ${response['body']} trafficRuleId ${TRAFFIC_RULE_ID} + Check Response Contains ${response['body']} action DROP TC_MEC_SRV_TRAF_003_BR @@ -75,8 +75,8 @@ TC_MEC_SRV_TRAF_003_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 011 V2.0.9, clause 7.2.8.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a traffic rule ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdateError @@ -88,8 +88,8 @@ TC_MEC_SRV_TRAF_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 011 V2.0.9, clause 7.2.8.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a traffic rule ${APP_INSTANCE_ID} ${NON_EXISTENT_TRAFFIC_RULE_ID} TrafficRuleUpdate @@ -101,8 +101,8 @@ TC_MEC_SRV_TRAF_003_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 011 V2.0.9, clause 7.2.8.3.2 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TrafficRule + ... Reference ETSI GS MEC 011 V2.1.1, clause 7.2.8.3.2 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecAppSupportApi.yaml#/definitions/TrafficRule [Tags] PIC_MEC_PLAT PIC_SERVICES Update a traffic rule with invalid etag ${APP_INSTANCE_ID} ${TRAFFIC_RULE_ID} TrafficRuleUpdate @@ -132,7 +132,7 @@ Update a traffic rule Set Headers {"Authorization":"${TOKEN}"} ${file}= Catenate SEPARATOR= jsons/ ${content} .json ${body}= Get File ${file} - Post ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules/${trafficRuleId} ${body} + PUT ${apiRoot}/${apiName}/${apiVersion}/applications/${appInstanceId}/traffic_rules/${trafficRuleId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SRV/TRAF/jsons/TrafficRuleUpdate.json b/SRV/TRAF/jsons/TrafficRuleUpdate.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ed2c8b6f4ce82ee4e4fab7d55ce7e9e58b6070f9 100644 --- a/SRV/TRAF/jsons/TrafficRuleUpdate.json +++ b/SRV/TRAF/jsons/TrafficRuleUpdate.json @@ -0,0 +1,133 @@ +{ + "trafficRuleId": "traffic_rule_01", + "filterType": "FLOW", + "priority": 1, + "trafficFilter": [ + { + "srcAddress": [ + "192.168.1.1", + "192.168.2.1", + "192.168.3.1" + ], + "dstAddress": [ + "192.168.1.2", + "192.168.2.2", + "192.168.3.2" + ], + "srcPort": [ + "30078", + "1029", + "30089" + ], + "dstPort": [ + "30099", + "30098", + "30097" + ], + "protocol": [ + "TCP", + "HTTP", + "UDP" + ], + "token": [ + "occaecat", + "reprehenderit esse", + "enim ipsum Lorem", + "nulla ad sed deserunt", + "irure" + ], + "srcTunnelAddress": [ + "159.10.1.1", + "159.10.2.1", + "159.10.3.1" + ], + "tgtTunnelAddress": [ + "159.10.1.2", + "159.10.2.2", + "159.10.3.2" + ], + "srcTunnelPort": [ + "5566", + "5567", + "5568" + ], + "dstTunnelPort": [ + "5576", + "5578", + "5579" + ], + "qCI": 1, + "dSCP": 0, + "tC": 1 + }, + { + "srcAddress": [ + "192.157.1.1", + "192.157.2.1", + "192.157.3.1" + ], + "dstAddress": [ + "192.157.1.2", + "192.157.2.2", + "192.157.3.2" + ], + "srcPort": [ + "30078", + "1029", + "30089" + ], + "dstPort": [ + "30099", + "30098", + "30097" + ], + "protocol": [ + "TCP", + "HTTP", + "UDP" + ], + "token": [ + "occaecat", + "reprehenderit esse", + "enim ipsum Lorem", + "nulla ad sed deserunt", + "irure" + ], + "srcTunnelAddress": [ + "159.20.1.1", + "159.20.2.1", + "159.20.3.1" + ], + "tgtTunnelAddress": [ + "159.20.1.2", + "159.20.2.2", + "159.20.3.2" + ], + "srcTunnelPort": [ + "5566", + "5567", + "5568" + ], + "dstTunnelPort": [ + "5576", + "5578", + "5579" + ], + "qCI": 2, + "dSCP": 0, + "tC": 4 + } + ], + "action": "DROP", + "state": "ACTIVE", + "dstInterface": { + "interfaceType": "TUNNEL", + "tunnelInfo": { + "tunnelType": "GTP_U", + "tunnelDstAddress": "169.54.61.15", + "tunnelSrcAddress": "169.54.61.31" + }, + "srcMacAddress": "fc:3f:2b:42:dc:ba", + "dstMacAddress": "02:42:2c:58:6a:7d" + } +} \ No newline at end of file diff --git a/SRV/TRAF/jsons/TrafficRuleUpdateError.json b/SRV/TRAF/jsons/TrafficRuleUpdateError.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a4af6381a61f2b877caf94db5c425bb1183220ff 100644 --- a/SRV/TRAF/jsons/TrafficRuleUpdateError.json +++ b/SRV/TRAF/jsons/TrafficRuleUpdateError.json @@ -0,0 +1,134 @@ +{ + "trafficRuleId": "elit sint id occaecat mollit", + "filterType": "FLOW", + "priority": 1, + "trafficFilter": [ + { + "srcAddress": [ + "magna tempor do", + "nisi reprehenderit veniam adipisicing", + "sed ut tempor voluptate esse", + "consectetur magna culpa" + ], + "dstAddress": [ + "dolor dolore", + "Excepteur ut aliquip" + ], + "srcPort": [ + "et anim", + "nulla in minim ea cillum", + "ipsum sunt quis qui Ut" + ], + "dstPort": [ + "dolore tempor ut voluptate dolor", + "consequat incididunt ad sed mollit", + "in amet aute non" + ], + "protocol": [ + "mollit Duis", + "irure ullamco Lorem ex tempor", + "ullamco in dolor incididunt", + "elit ea ad", + "magna officia et ad" + ], + "token": [ + "occaecat", + "reprehenderit esse", + "enim ipsum Lorem", + "nulla ad sed deserunt", + "irure" + ], + "srcTunnelAddress": [ + "ut exercitation", + "ea", + "magna et" + ], + "tgtTunnelAddress": [ + "et anim aliqua", + "dolor in sint consectetur culpa", + "eu", + "deserunt qui mollit sint commodo" + ], + "srcTunnelPort": [ + "dolore laborum", + "consequat", + "nostrud nulla", + "est id dolore commodo aliquip", + "qui dolor id dolore" + ], + "dstTunnelPort": [ + "Ut nostrud Excepteur", + "dolor culpa", + "in", + "incididunt" + ], + "qCI": 22902321, + "dSCP": -86264428, + "tC": -40655175 + }, + { + "srcAddress": [ + "incididunt sit qui", + "laborum dolore voluptate exercitation", + "ut" + ], + "dstAddress": [ + "pariatur sunt", + "id elit aute ut", + "voluptate", + "irure laboris consectetur ullamco id", + "reprehenderit laborum" + ], + "srcPort": [ + "nisi tempor ut in", + "culpa sed" + ], + "dstPort": [ + "amet laboris exercitation voluptate veniam" + ], + "protocol": [ + "incididunt sint Lorem qui" + ], + "token": [ + "sunt", + "veniam labore quis dolor", + "Ut ex esse deserunt" + ], + "srcTunnelAddress": [ + "cillum irure incididunt adipisicing", + "Duis officia laboris ea dolor" + ], + "tgtTunnelAddress": [ + "eu deserunt et", + "cupidatat proident Excepteur nisi", + "consequat fugiat Lorem adipisicing" + ], + "srcTunnelPort": [ + "velit Lorem cillum ex", + "consectetur in ad", + "officia est adipisicing irure aute" + ], + "dstTunnelPort": [ + "proident velit Lorem labore do", + "magna sit sed ea", + "cillum", + "nostrud" + ], + "qCI": -69609374, + "dSCP": 46042141, + "tC": 67400065 + } + ], + "action": "UNKNOWN_VALUE", + "state": "ACTIVE", + "dstInterface": { + "interfaceType": "TUNNEL", + "tunnelInfo": { + "tunnelType": "GTP_U", + "tunnelDstAddress": "est", + "tunnelSrcAddress": "culpa nostrud amet labore" + }, + "srcMacAddress": "esse", + "dstMacAddress": "ut nostrud voluptate ipsum cupidatat" + } +} \ No newline at end of file diff --git a/SRV/TRAF/schemas/TrafficRule.schema.json b/SRV/TRAF/schemas/TrafficRule.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..13d7f3294de5294e1d705d451d179251dbf87e70 100644 --- a/SRV/TRAF/schemas/TrafficRule.schema.json +++ b/SRV/TRAF/schemas/TrafficRule.schema.json @@ -0,0 +1,235 @@ +{ + "description": "This type represents the general information of a traffic rule.", + "type": "object", + "required": [ + "trafficRuleId", + "filterType", + "priority", + "trafficFilter", + "action", + "state" + ], + "properties": { + "trafficRuleId": { + "description": "Identify the traffic rule.", + "type": "string", + "example": "TrafficRule1" + }, + "filterType": { + "description": "Definition of filter per FLOW or PACKET. If flow the filter match UE->EPC packet and the reverse packet is handled in the same context", + "type": "string", + "enum": [ + "FLOW", + "PACKET" + ], + "example": "FLOW" + }, + "priority": { + "description": "Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence", + "type": "integer", + "format": "uint32", + "example": 1 + }, + "trafficFilter": { + "type": "array", + "items": { + "description": "This type represents the traffic filter.", + "type": "object", + "properties": { + "srcAddress": { + "description": "An IP address or a range of IP address. For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", + "type": "array", + "items": { + "description": "Identify the traffic ip address.", + "type": "string", + "example": "192.168.1.1" + } + }, + "dstAddress": { + "description": "An IP address or a range of IP address. For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", + "type": "array", + "items": { + "description": "Identify the traffic ip address.", + "type": "string", + "example": "192.168.1.1" + } + }, + "srcPort": { + "description": "A port or a range of ports", + "type": "array", + "items": { + "description": "A port", + "type": "string", + "example": "8080" + } + }, + "dstPort": { + "description": "A port or a range of ports", + "type": "array", + "items": { + "description": "A port", + "type": "string", + "example": "8080" + } + }, + "protocol": { + "description": "Specify the protocol of the traffic filter", + "type": "array", + "items": { + "description": "Protocol of the traffic filter", + "type": "string", + "example": "?" + } + }, + "token": { + "description": "Used for token based traffic rule", + "type": "array", + "items": { + "description": "Used for token based traffic rule", + "type": "string", + "example": "?" + } + }, + "srcTunnelAddress": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "tgtTunnelAddress": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "srcTunnelPort": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "dstTunnelPort": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "qCI": { + "description": "Used to match all packets that have the same Quality Class Indicator (QCI).", + "type": "integer", + "format": "uint32", + "example": 1 + }, + "dSCP": { + "description": "Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP)", + "type": "integer", + "format": "uint32", + "example": 0 + }, + "tC": { + "description": "Used to match all IPv6 packets that have the same Traffic Class.", + "type": "integer", + "format": "uint32", + "example": 1 + } + } + } + }, + "action": { + "description": "The action of the MEC host data plane when a packet matches the trafficFilter\n ", + "type": "string", + "enum": [ + "DROP", + "FORWARD_DECAPSULATED", + "FORWARD_ENCAPSULATED", + "PASSTHROUGH", + "DUPLICATE_DECAPSULATED", + "DUPLICATE_ENCAPSULATED" + ], + "example": "DROP" + }, + "dstInterface": { + "description": "This type represents the destination interface. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. If the action is DROP, no value shall be provided.", + "type": "object", + "required": [ + "interfaceType" + ], + "properties": { + "interfaceType": { + "description": "Type of the interface", + "type": "string", + "enum": [ + "TUNNEL", + "MAC", + "IP" + ], + "example": "TUNNEL" + }, + "tunnelInfo": { + "description": "This type represents the tunnel information.", + "type": "object", + "required": [ + "tunnelType" + ], + "properties": { + "tunnelType": { + "description": "This type represents the tunnel information.", + "type": "string", + "enum": [ + "GTP_U", + "GRE" + ], + "example": "GTP_U" + }, + "tunnelDstAddress": { + "description": "Destination address of the tunnel", + "type": "string", + "example": "?" + }, + "tunnelSrcAddress": { + "description": "Source address of the tunnel", + "type": "string", + "example": "?" + } + } + }, + "srcMacAddress": { + "description": "Source address identifies the MAC address of the interface", + "type": "string", + "example": "02-00-00-00-00-00" + }, + "dstMacAddress": { + "description": "Source address identifies the MAC address of the interface", + "type": "string", + "example": "02-00-00-00-00-00" + }, + "dstIpAddress": { + "description": "IP address of the remote destination", + "type": "string", + "example": "192.0.2.0" + } + } + }, + "state": { + "description": "Contains the traffic rule state. This attribute may be updated using HTTP PUT method", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + } + } +} \ No newline at end of file diff --git a/SRV/TRAF/schemas/TrafficRuleList.schema.json b/SRV/TRAF/schemas/TrafficRuleList.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c8bfdaa9aab75ab84dc6e5dd9ac036e26fa238f4 100644 --- a/SRV/TRAF/schemas/TrafficRuleList.schema.json +++ b/SRV/TRAF/schemas/TrafficRuleList.schema.json @@ -0,0 +1,238 @@ +{ + "type": "array", + "objects": { + "description": "This type represents the general information of a traffic rule.", + "type": "object", + "required": [ + "trafficRuleId", + "filterType", + "priority", + "trafficFilter", + "action", + "state" + ], + "properties": { + "trafficRuleId": { + "description": "Identify the traffic rule.", + "type": "string", + "example": "TrafficRule1" + }, + "filterType": { + "description": "Definition of filter per FLOW or PACKET. If flow the filter match UE->EPC packet and the reverse packet is handled in the same context", + "type": "string", + "enum": [ + "FLOW", + "PACKET" + ], + "example": "FLOW" + }, + "priority": { + "description": "Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence", + "type": "integer", + "format": "uint32", + "example": 1 + }, + "trafficFilter": { + "type": "array", + "items": { + "description": "This type represents the traffic filter.", + "type": "object", + "properties": { + "srcAddress": { + "description": "An IP address or a range of IP address. For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", + "type": "array", + "items": { + "description": "Identify the traffic ip address.", + "type": "string", + "example": "192.168.1.1" + } + }, + "dstAddress": { + "description": "An IP address or a range of IP address. For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses. For IPv6, the IP address could be an IP prefix, or a range of IP prefixes.", + "type": "array", + "items": { + "description": "Identify the traffic ip address.", + "type": "string", + "example": "192.168.1.1" + } + }, + "srcPort": { + "description": "A port or a range of ports", + "type": "array", + "items": { + "description": "A port", + "type": "string", + "example": "8080" + } + }, + "dstPort": { + "description": "A port or a range of ports", + "type": "array", + "items": { + "description": "A port", + "type": "string", + "example": "8080" + } + }, + "protocol": { + "description": "Specify the protocol of the traffic filter", + "type": "array", + "items": { + "description": "Protocol of the traffic filter", + "type": "string", + "example": "?" + } + }, + "token": { + "description": "Used for token based traffic rule", + "type": "array", + "items": { + "description": "Used for token based traffic rule", + "type": "string", + "example": "?" + } + }, + "srcTunnelAddress": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "tgtTunnelAddress": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "srcTunnelPort": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "dstTunnelPort": { + "description": "Used for GTP tunnel based traffic rule", + "type": "array", + "items": { + "description": "Used for GTP tunnel based traffic rule", + "type": "string", + "example": "?" + } + }, + "qCI": { + "description": "Used to match all packets that have the same Quality Class Indicator (QCI).", + "type": "integer", + "format": "uint32", + "example": 1 + }, + "dSCP": { + "description": "Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP)", + "type": "integer", + "format": "uint32", + "example": 0 + }, + "tC": { + "description": "Used to match all IPv6 packets that have the same Traffic Class.", + "type": "integer", + "format": "uint32", + "example": 1 + } + } + } + }, + "action": { + "description": "The action of the MEC host data plane when a packet matches the trafficFilter\n ", + "type": "string", + "enum": [ + "DROP", + "FORWARD_DECAPSULATED", + "FORWARD_ENCAPSULATED", + "PASSTHROUGH", + "DUPLICATE_DECAPSULATED", + "DUPLICATE_ENCAPSULATED" + ], + "example": "DROP" + }, + "dstInterface": { + "description": "This type represents the destination interface. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. If the action is DROP, no value shall be provided.", + "type": "object", + "required": [ + "interfaceType" + ], + "properties": { + "interfaceType": { + "description": "Type of the interface", + "type": "string", + "enum": [ + "TUNNEL", + "MAC", + "IP" + ], + "example": "TUNNEL" + }, + "tunnelInfo": { + "description": "This type represents the tunnel information.", + "type": "object", + "required": [ + "tunnelType" + ], + "properties": { + "tunnelType": { + "description": "This type represents the tunnel information.", + "type": "string", + "enum": [ + "GTP_U", + "GRE" + ], + "example": "GTP_U" + }, + "tunnelDstAddress": { + "description": "Destination address of the tunnel", + "type": "string", + "example": "?" + }, + "tunnelSrcAddress": { + "description": "Source address of the tunnel", + "type": "string", + "example": "?" + } + } + }, + "srcMacAddress": { + "description": "Source address identifies the MAC address of the interface", + "type": "string", + "example": "02-00-00-00-00-00" + }, + "dstMacAddress": { + "description": "Source address identifies the MAC address of the interface", + "type": "string", + "example": "02-00-00-00-00-00" + }, + "dstIpAddress": { + "description": "IP address of the remote destination", + "type": "string", + "example": "192.0.2.0" + } + } + }, + "state": { + "description": "Contains the traffic rule state. This attribute may be updated using HTTP PUT method", + "type": "string", + "enum": [ + "ACTIVE", + "INACTIVE" + ], + "example": "ACTIVE" + } + } + } +} \ No newline at end of file diff --git a/SRV/TRANS/PlatTransport.robot b/SRV/TRANS/PlatTransport.robot index f4225e06e6139eec4a14ade94d39b9b32a0855f7..ade483f8076ab46abfbfb30fa9790be044f6a3da 100644 --- a/SRV/TRANS/PlatTransport.robot +++ b/SRV/TRANS/PlatTransport.robot @@ -18,8 +18,8 @@ TC_MEC_SRV_TRANS_001_OK ... Check that the IUT responds with a list of available transports ... when queried by a MEC Application ... - ... Reference ETSI GS MEC 011 V2.0.9, clause 8.2.5.3.1 - ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/v2.0.8/Mp1.yaml#/definitions/TransportInfo + ... Reference ETSI GS MEC 011 V2.1.1, clause 8.2.5.3.1 + ... OpenAPI https://forge.etsi.org/rep/mec/gs011-app-enablement-api/blob/master/MecServiceMgmtApi.yaml#/definitions/TransportInfo [Tags] PIC_MEC_PLAT PIC_SERVICES Get list of available transports diff --git a/SRV/TRANS/schemas/TransportInfoList.schema.json b/SRV/TRANS/schemas/TransportInfoList.schema.json index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..54f8fdc09f20904fa227e42a0384329e83dc616a 100644 --- a/SRV/TRANS/schemas/TransportInfoList.schema.json +++ b/SRV/TRANS/schemas/TransportInfoList.schema.json @@ -0,0 +1,171 @@ +{ + "type": "array", + "objects": { + "description": "This type represents the general information of a MEC service.", + "type": "object", + "required": [ + "id", + "name", + "type", + "protocol", + "version", + "endpoint", + "security" + ], + "properties": { + "id": { + "description": "The identifier of this transport", + "type": "string", + "example": "TransId12345" + }, + "name": { + "description": "The name of this transport", + "type": "string", + "example": "REST" + }, + "description": { + "description": "Human-readable description of this transport", + "type": "string", + "example": "REST API" + }, + "type": { + "description": "The enumeration TransportType represents types of transports", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "example": "REST_HTTP" + }, + "protocol": { + "description": "The name of the protocol used. Shall be set to HTTP for a REST API.", + "type": "string", + "example": "HTTP" + }, + "version": { + "description": "The version of the protocol used", + "type": "string", + "example": "2.0" + }, + "endpoint": { + "description": "This type represents information about a transport endpoint", + "type": "object", + "oneOf": [ + { + "description": "Entry point information of the service as string, formatted according to URI syntax", + "type": "object", + "required": [ + "uris" + ], + "properties": { + "uris": { + "type": "array", + "minItems": 0, + "items": { + "description": "Entry point information of the service", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/service/EntryPoint" + } + } + } + }, + { + "description": "Entry point information of the service as one or more pairs of IP address and port", + "type": "object", + "required": [ + "addresses" + ], + "properties": { + "addresses": { + "type": "array", + "minItems": 0, + "items": { + "description": "A IP address and port pair", + "type": "object", + "required": [ + "host", + "port" + ], + "properties": { + "host": { + "description": "Host portion of the address", + "type": "string", + "example": "192.0.2.0" + }, + "port": { + "description": "Port portion of the address", + "type": "integer", + "format": "uint32", + "example": 8080 + } + } + } + } + } + }, + { + "description": "Entry point information of the service in a format defined by an implementation, or in an external specification.", + "type": "object", + "required": [ + "alternative" + ], + "properties": { + "alternative": { + "type": "object" + } + } + } + ] + }, + "security": { + "description": "This type represents security information related to a transport", + "type": "object", + "properties": { + "oAuth2Info": { + "description": "Parameters related to use of OAuth 2.0", + "required": [ + "grantTypes", + "tokenEndpoint" + ], + "properties": { + "grantTypes": { + "description": "List of supported OAuth 2.0 grant types.", + "type": "array", + "minItems": 1, + "maxItems": 4, + "items": { + "description": "OAuth 2.0 grant type", + "type": "string", + "enum": [ + "OAUTH2_AUTHORIZATION_CODE", + "OAUTH2_IMPLICIT_GRANT", + "OAUTH2_RESOURCE_OWNER", + "OAUTH2_CLIENT_CREDENTIALS" + ], + "example": "OAUTH2_CLIENT_CREDENTIALS" + } + }, + "tokenEndpoint": { + "description": "The token endpoint", + "type": "string", + "format": "uri", + "example": "/mecSerMgmtApi/security/TokenEndPoint" + } + }, + "type": "object" + } + } + }, + "implSpecificInfo": { + "description": "Additional implementation specific details of the transport", + "type": "object" + } + } + } +} \ No newline at end of file diff --git a/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json b/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..6b745ec421507748b6cdc299bf4a8c31d4ede14d --- /dev/null +++ b/SRV/UEAREASUB/schemas/CircleNotificationSubscription.schema.v1.1.1.json @@ -0,0 +1,142 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://example.com/root.json", + "type": "object", + "title": "The Root Schema", + "required": [ + "address", + "callbackReference", + "checkImmediate", + "clientCorrelator", + "enteringLeavingCriteria", + "frequency", + "latitude", + "longitude", + "radius", + "trackingAccuracy" + ], + "properties": { + "address": { + "$id": "#/properties/address", + "type": "string", + "title": "The Address Schema", + "default": "", + "examples": [ + "acr:10.0.0.1" + ], + "pattern": "^(.*)$" + }, + "callbackReference": { + "$id": "#/properties/callbackReference", + "type": "object", + "title": "The Callbackreference Schema", + "required": [ + "callbackData", + "notifyURL" + ], + "properties": { + "callbackData": { + "$id": "#/properties/callbackReference/properties/callbackData", + "type": "string", + "title": "The Callbackdata Schema", + "default": "", + "examples": [ + "1234" + ], + "pattern": "^(.*)$" + }, + "notifyURL": { + "$id": "#/properties/callbackReference/properties/notifyURL", + "type": "string", + "title": "The Notifyurl Schema", + "default": "", + "examples": [ + "http://application.example.com/notifications/distance_notifications/123456" + ], + "pattern": "^(.*)$" + } + } + }, + "checkImmediate": { + "$id": "#/properties/checkImmediate", + "type": "string", + "title": "The Checkimmediate Schema", + "default": "", + "examples": [ + "true" + ], + "pattern": "^(.*)$" + }, + "clientCorrelator": { + "$id": "#/properties/clientCorrelator", + "type": "string", + "title": "The Clientcorrelator Schema", + "default": "", + "examples": [ + "0123" + ], + "pattern": "^(.*)$" + }, + "enteringLeavingCriteria": { + "$id": "#/properties/enteringLeavingCriteria", + "type": "string", + "title": "The Enteringleavingcriteria Schema", + "default": "", + "examples": [ + "Entering" + ], + "pattern": "^(.*)$" + }, + "frequency": { + "$id": "#/properties/frequency", + "type": "string", + "title": "The Frequency Schema", + "default": "", + "examples": [ + "10" + ], + "pattern": "^(.*)$" + }, + "latitude": { + "$id": "#/properties/latitude", + "type": "string", + "title": "The Latitude Schema", + "default": "", + "examples": [ + "-80.86302" + ], + "pattern": "^(.*)$" + }, + "longitude": { + "$id": "#/properties/longitude", + "type": "string", + "title": "The Longitude Schema", + "default": "", + "examples": [ + "41.277306" + ], + "pattern": "^(.*)$" + }, + "radius": { + "$id": "#/properties/radius", + "type": "string", + "title": "The Radius Schema", + "default": "", + "examples": [ + "500" + ], + "pattern": "^(.*)$" + }, + "trackingAccuracy": { + "$id": "#/properties/trackingAccuracy", + "type": "string", + "title": "The Trackingaccuracy Schema", + "default": "", + "examples": [ + "10" + ], + "pattern": "^(.*)$" + } + } +} \ No newline at end of file diff --git a/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json b/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..b23ded186f8f1270e7ddcd32dd63515ebda4665c --- /dev/null +++ b/SRV/UEDISTLOOK/schemas/TerminalDistance.schema.v1.1.1.json @@ -0,0 +1,32 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://example.com/root.json", + "type": "object", + "title": "The Root Schema", + "required": [ + " terminalDistance" + ], + "properties": { + " terminalDistance": { + "$id": "#/properties/ terminalDistance", + "type": "object", + "title": "The terminaldistance Schema", + "required": [ + "distance" + ], + "properties": { + "distance": { + "$id": "#/properties/ terminalDistance/properties/distance", + "type": "string", + "title": "The Distance Schema", + "default": "", + "examples": [ + "123" + ], + "pattern": "^(.*)$" + } + } + } + } +} diff --git a/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json b/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..bc698763fb68d5a6b900dcd2e36dd995d98839a4 --- /dev/null +++ b/SRV/UEDISTSUB/schemas/DistanceNotificationSubscription.schema.v1.1.1.json @@ -0,0 +1,147 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://example.com/root.json", + "type": "object", + "title": "The Root Schema", + "required": [ + "distanceNotificationSubscription" + ], + "properties": { + "distanceNotificationSubscription": { + "$id": "#/properties/distanceNotificationSubscription", + "type": "object", + "title": "The Distancenotificationsubscription Schema", + "required": [ + "callbackReference", + "checkImmediate", + "clientCorrelator", + "criteria", + "distance", + "frequency", + "monitoredAddress", + "referenceAddress", + "trackingAccuracy" + ], + "properties": { + "callbackReference": { + "$id": "#/properties/distanceNotificationSubscription/properties/callbackReference", + "type": "object", + "title": "The Callbackreference Schema", + "required": [ + "callbackData", + "notifyURL" + ], + "properties": { + "callbackData": { + "$id": "#/properties/distanceNotificationSubscription/properties/callbackReference/properties/callbackData", + "type": "string", + "title": "The Callbackdata Schema", + "default": "", + "examples": [ + "1234" + ], + "pattern": "^(.*)$" + }, + "notifyURL": { + "$id": "#/properties/distanceNotificationSubscription/properties/callbackReference/properties/notifyURL", + "type": "string", + "title": "The Notifyurl Schema", + "default": "", + "examples": [ + "http://application.example.com/notifications/distance_notifications/123456" + ], + "pattern": "^(.*)$" + } + } + }, + "checkImmediate": { + "$id": "#/properties/distanceNotificationSubscription/properties/checkImmediate", + "type": "string", + "title": "The Checkimmediate Schema", + "default": "", + "examples": [ + "true" + ], + "pattern": "^(.*)$" + }, + "clientCorrelator": { + "$id": "#/properties/distanceNotificationSubscription/properties/clientCorrelator", + "type": "string", + "title": "The Clientcorrelator Schema", + "default": "", + "examples": [ + "0123" + ], + "pattern": "^(.*)$" + }, + "criteria": { + "$id": "#/properties/distanceNotificationSubscription/properties/criteria", + "type": "string", + "title": "The Criteria Schema", + "default": "", + "examples": [ + "AllWithinDistance" + ], + "pattern": "^(.*)$" + }, + "distance": { + "$id": "#/properties/distanceNotificationSubscription/properties/distance", + "type": "string", + "title": "The Distance Schema", + "default": "", + "examples": [ + "100" + ], + "pattern": "^(.*)$" + }, + "frequency": { + "$id": "#/properties/distanceNotificationSubscription/properties/frequency", + "type": "string", + "title": "The Frequency Schema", + "default": "", + "examples": [ + "10" + ], + "pattern": "^(.*)$" + }, + "monitoredAddress": { + "$id": "#/properties/distanceNotificationSubscription/properties/monitoredAddress", + "type": "array", + "title": "The Monitoredaddress Schema", + "items": { + "$id": "#/properties/distanceNotificationSubscription/properties/monitoredAddress/items", + "type": "string", + "title": "The Items Schema", + "default": "", + "examples": [ + "acr:10.0.0.1", + "acr:10.0.0.2" + ], + "pattern": "^(.*)$" + } + }, + "referenceAddress": { + "$id": "#/properties/distanceNotificationSubscription/properties/referenceAddress", + "type": "string", + "title": "The Referenceaddress Schema", + "default": "", + "examples": [ + "acr:10.0.0.3" + ], + "pattern": "^(.*)$" + }, + "trackingAccuracy": { + "$id": "#/properties/distanceNotificationSubscription/properties/trackingAccuracy", + "type": "string", + "title": "The Trackingaccuracy Schema", + "default": "", + "examples": [ + "10" + ], + "pattern": "^(.*)$" + } + } + } + } +} diff --git a/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json b/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..6c9a35d36307177c7cd311aba463e0f70c202875 --- /dev/null +++ b/SRV/UEINFOSUB/schemas/ZonalTrafficSubscription.schema.v1.1.1.json @@ -0,0 +1,71 @@ +{ + "zonalTrafficSubscription": { + "description": "A type containing zonal traffic subscription", + "type": "object", + "required": [ + "callbackReference", + "zoneId" + ], + "properties": { + "clientCorrelator": { + "description": "Uniquely identifies this create subscription request. If there is a communication failure during the request, using the same clientCorrelator when retrying the request allows the operator to avoid creating a duplicate subscription.", + "type": "string", + "example": "0123" + }, + "callbackReference": { + "description": "Notification callback definition.", + "type": "object", + "required": [ + "notifyURL" + ], + "properties": { + "notifyURL": { + "description": "The URL of your own listener application.", + "type": "string", + "format": "url", + "example": "http://clientApp.example.com/location_notifications/123456" + } + } + }, + "zoneId": { + "description": "Identifier of zone", + "type": "string", + "example": "zone01" + }, + "interestRealm": { + "description": "Interest realms of access points within a zone (e.g. geographical area, a type of industry etc.).", + "type": "array", + "items": { + "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "type": "string", + "example": "LA" + } + }, + "userEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event.", + "type": "array", + "items": { + "description": "User event", + "type": "string", + "enum": [ + "Entering", + "Leaving", + "Transferring" + ], + "example": "Entering" + } + }, + "duration": { + "description": "Period (in seconds) of time notifications are provided for. If set to \"0\" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid.", + "type": "string", + "example": "0" + }, + "resourceURL": { + "description": "Self referring URL.", + "type": "string", + "format": "uri", + "example": "http://example.com/exampleAPI/location/v1/subscriptions/userTracking/subscription123" + } + } + } + } \ No newline at end of file diff --git a/SRV/UELOCLOOK/schemas/UserInfo.schema.json b/SRV/UELOCLOOK/schemas/UserInfo.schema.json index d337f92e794618166440bc43ceef02579cb1f78f..6b78189622d47411c4d020195a2f965551e0b46d 100644 --- a/SRV/UELOCLOOK/schemas/UserInfo.schema.json +++ b/SRV/UELOCLOOK/schemas/UserInfo.schema.json @@ -1,155 +1,144 @@ { "type": "object", "properties": { - "userInfo": { - "type": "object", + "accessPointId": { + "description": "The identity of the access point the user is currently on, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "address": { + "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" + }, + "ancillaryInfo": { + "description": "Reserved for future use.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "contextLocationInfo": { + "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "locationInfo": { "properties": { - "accessPointId": { - "description": "The identity of the access point the user is currently on, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "accuracy": { + "type": "number" }, - "address": { - "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1.", - "format": "uri", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "AnyURI" + "accuracyAltitude": { + "type": "number" }, - "ancillaryInfo": { - "description": "Reserved for future use.", - "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "String" + "accuracySemiMinor": { + "type": "number" }, - "contextLocationInfo": { - "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", - "type": "string", + "altitude": { + "description": "Location altitude relative to the WGS84 ellipsoid surface.", + "type": "number", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "String" + "x-etsi-mec-origin-type": "Float" + }, + "confidence": { + "type": "number" + }, + "includedAngle": { + "type": "number" + }, + "innerRadius": { + "type": "number" }, - "locationInfo": { - "properties": { - "accuracy": { - "type": "number" - }, - "accuracyAltitude": { - "type": "number" - }, - "accuracySemiMinor": { - "type": "number" - }, - "altitude": { - "description": "Location altitude relative to the WGS84 ellipsoid surface.", - "type": "number", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Float" - }, - "confidence": { - "type": "number" - }, - "includedAngle": { - "type": "number" - }, - "innerRadius": { - "type": "number" - }, - "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", - "items": { - "type": "number" - }, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" - }, - "longitude": { - "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", - "items": { - "type": "number" - }, - "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" - }, - "offsetAngle": { - "type": "number" - }, - "orientationMajorAxis": { - "type": "number" - }, - "shape": { - "description": "Shape information, as detailed in [14], associated with the reported location coordinate:\n1 = Ellipsoid_Arc\n2 = ellipsoid_Point\n3 = ellipsoid_Point_Altitude\n4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid\n5 = ellipsoid_Point_Uncert_Circle\n6 = ellipsoid_Point_Uncert_Ellipse\n7 = polygon", - "enum": [ - "ELLIPSOID_ARC", - "ELLIPSOID_POINT", - "ELLIPSOID_POINT_ALTITUDE", - "ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID", - "ELLIPSOID_POINT_UNCERT_CIRCLE", - "ELLIPSOID_POINT_UNCERT_ELLIPSE", - "POLYGON" - ], - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum (inlined)" - }, - "uncertaintyRadius": { - "type": "number" - }, - "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", - "type": "object", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" - } + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "type": "number" }, - "required": [ - "latitude", - "longitude", - "shape" - ], - "type": "object", - "x-etsi-ref": "6.5.3" + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7.", + "items": { + "type": "number" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Float" }, - "resourceURL": { - "description": "Self-referring URL, see note 1.", + "offsetAngle": { + "type": "number" + }, + "orientationMajorAxis": { + "type": "number" + }, + "shape": { + "description": "Shape information, as detailed in [14], associated with the reported location coordinate:\n1 = Ellipsoid_Arc\n2 = ellipsoid_Point\n3 = ellipsoid_Point_Altitude\n4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid\n5 = ellipsoid_Point_Uncert_Circle\n6 = ellipsoid_Point_Uncert_Ellipse\n7 = polygon", "type": "string", "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "x-etsi-mec-origin-type": "Enum_inlined" }, - "timeStamp": { - "properties": { - "nanoSeconds": { - "type": "number" - }, - "seconds": { - "type": "number" - } - }, - "required": [ - "seconds", - "nanoSeconds" - ], + "uncertaintyRadius": { + "type": "number" + }, + "velocity": { + "description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].", "type": "object", - "x-etsi-ref": "6.5.2" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + } + }, + "required": [ + "latitude", + "longitude", + "shape" + ], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "resourceURL": { + "description": "Self-referring URL, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "timeStamp": { + "properties": { + "nanoSeconds": { + "type": "number" }, - "zoneId": { - "description": "The identity of the zone the user is currently within, see note 1.", - "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "String" + "seconds": { + "type": "number" } }, "required": [ - "address", - "accessPointId", - "zoneId", - "resourceURL", - "timeStamp" + "seconds", + "nanoSeconds" ], - "x-etsi-notes": ":\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.", - "x-etsi-ref": "6.2.2" + "type": "object", + "x-etsi-ref": "6.5.2" + }, + "zoneId": { + "description": "The identity of the zone the user is currently within, see note 1.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" } - } + }, + "required": [ + "address", + "accessPointId", + "zoneId", + "resourceURL", + "timeStamp" + ], + "description": "Represents the information related to a user attached to an access point associated to the MEC host, such access point is in scope of the Location Service instance.\n", + "x-etsi-notes": ":\tAs specified in [5], clause 5.2.2.7.\nNOTE 2: \tAs specified in [5], clause 5.2.2.5.", + "x-etsi-ref": "6.2.2" } diff --git a/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json b/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..c7e590d6f5398879d4daabba75e3a530263db8b3 --- /dev/null +++ b/SRV/UELOCSUB/schemas/UserTrackingSubscription.schema.v1.1.1.json @@ -0,0 +1,77 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://example.com/object1575044080.json", + "title": "Root", + "type": "object", + "required": [ + "userTrackingSubscription" + ], + "properties": { + "userTrackingSubscription": { + "$id": "#root/userTrackingSubscription", + "title": "Usertrackingsubscription", + "type": "object", + "required": [ + "clientCorrelator", + "callbackReference", + "address", + "userEventCriteria" + ], + "properties": { + "clientCorrelator": { + "$id": "#root/userTrackingSubscription/clientCorrelator", + "title": "Clientcorrelator", + "type": "string", + "default": "", + "examples": [ + "0123" + ], + "pattern": "^.*$" + }, + "callbackReference": { + "$id": "#root/userTrackingSubscription/callbackReference", + "title": "Callbackreference", + "type": "object", + "required": [ + "notifyURL" + ], + "properties": { + "notifyURL": { + "$id": "#root/userTrackingSubscription/callbackReference/notifyURL", + "title": "Notifyurl", + "type": "string", + "default": "", + "examples": [ + "http://clientApp.example.com/location_notifications/123456" + ], + "pattern": "^.*$" + } + } + } +, + "address": { + "$id": "#root/userTrackingSubscription/address", + "title": "Address", + "type": "string", + "default": "", + "examples": [ + "acr:10.0.0.1" + ], + "pattern": "^.*$" + }, + "userEventCriteria": { + "$id": "#root/userTrackingSubscription/userEventCriteria", + "title": "Usereventcriteria", + "type": "string", + "default": "", + "examples": [ + "Transferring" + ], + "pattern": "^.*$" + } + } + } + + } +} diff --git a/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json b/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json new file mode 100644 index 0000000000000000000000000000000000000000..4a1d50ec1228db0367834bb06d876e60d339c193 --- /dev/null +++ b/SRV/UETRACKSUB/schemas/PeriodicNotificationSubscription.schema.v1.1.1.json @@ -0,0 +1,99 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://example.com/object1575044234.json", + "title": "Root", + "type": "object", + "required": [ + "periodicNotificationSubscription" + ], + "properties": { + "periodicNotificationSubscription": { + "$id": "#root/periodicNotificationSubscription", + "title": "Periodicnotificationsubscription", + "type": "object", + "required": [ + "address", + "callbackReference", + "clientCorrelator", + "frequency", + "requestedAccuracy" + ], + "properties": { + "address": { + "$id": "#root/periodicNotificationSubscription/address", + "title": "Address", + "type": "string", + "default": "", + "examples": [ + "acr:10.0.0.1" + ], + "pattern": "^.*$" + }, + "callbackReference": { + "$id": "#root/periodicNotificationSubscription/callbackReference", + "title": "Callbackreference", + "type": "object", + "required": [ + "callbackData", + "notifyURL" + ], + "properties": { + "callbackData": { + "$id": "#root/periodicNotificationSubscription/callbackReference/callbackData", + "title": "Callbackdata", + "type": "string", + "default": "", + "examples": [ + "0123" + ], + "pattern": "^.*$" + }, + "notifyURL": { + "$id": "#root/periodicNotificationSubscription/callbackReference/notifyURL", + "title": "Notifyurl", + "type": "string", + "default": "", + "examples": [ + "http://clientApp.example.com/location_notifications/123456" + ], + "pattern": "^.*$" + } + } + } +, + "clientCorrelator": { + "$id": "#root/periodicNotificationSubscription/clientCorrelator", + "title": "Clientcorrelator", + "type": "string", + "default": "", + "examples": [ + "0123" + ], + "pattern": "^.*$" + }, + "frequency": { + "$id": "#root/periodicNotificationSubscription/frequency", + "title": "Frequency", + "type": "string", + "default": "", + "examples": [ + "10" + ], + "pattern": "^.*$" + }, + "requestedAccuracy": { + "$id": "#root/periodicNotificationSubscription/requestedAccuracy", + "title": "Requestedaccuracy", + "type": "string", + "default": "", + "examples": [ + "10" + ], + "pattern": "^.*$" + } + } + } + + } +} diff --git a/bin/mockserver-netty-5.5.0-jar-with-dependencies.jar b/bin/mockserver-netty-5.5.0-jar-with-dependencies.jar new file mode 100644 index 0000000000000000000000000000000000000000..454a14ad613b90be678ca9906c4a84aba9d5c2d7 Binary files /dev/null and b/bin/mockserver-netty-5.5.0-jar-with-dependencies.jar differ