Skip to content
Snippets Groups Projects
Commit e307b4c1 authored by piscione's avatar piscione
Browse files

MEC013 v3.1.1 UEDISUB Draft TCs avaialable.

parent 1e775e75
No related branches found
No related tags found
1 merge request!3Merge of TT027 branch into master
Showing
with 1070 additions and 1104 deletions
......@@ -8,7 +8,8 @@ Resource ../../../pics.txt
Resource environment/variables.txt
Library REST ${SCHEMA}://${HOST}:${PORT} ssl_verify=false
Library OperatingSystem
Library libraries/Server.py
Library String
Default Tags TC_MEC_SRV_UEDISTSUB
......@@ -17,57 +18,83 @@ Default Tags TC_MEC_SRV_UEDISTSUB
TC_MEC_MEC013_SRV_UEDISTSUB_001_OK
[Documentation]
... Check that the IUT acknowledges the UE distance subscription request when commanded by a
... MEC Application and notifies it when (all) the requested UE(s) is (are) within the specified distance
... MEC Application and notifies it when (all) the requested UE(s) is (are) within the specified distance
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.10
... OpenAPI # TODO check this
... Reference ETSI GS MEC 013 3.1.1 Clause 5.3.4
... ETSI GS MEC 013 3.1.1 Clause 6.3.9
... ETSI GS MEC 013 3.1.1 Clause 6.4.9
... ETSI GS MEC 013 3.1.1 Clause 7.14.3.4
[Tags] PIC_MEC_PLAT PIC_SERVICES
Create new subscription DistanceNotificationSubscription
Create new subscription UserDistanceSubscription
Check HTTP Response Status Code Is 201
Check HTTP Response Body Json Schema Is DistanceNotificationSubscription
Check Result Contains ${response['body']['distanceNotificationSubscription']} clientCorrelator ${UEDISTSUB_CLIENT_ID}
Check Result Contains ${response['body']['distanceNotificationSubscription']} callbackReference ${APP_SRVSUB_NOTIF_CALLBACK_URI}
Check Result Contains ${response['body']['distanceNotificationSubscription']} monitoredAddress ${UEDISTSUB_MONITORED_IP_ADDRESS}
Check Result Contains ${response['body']['distanceNotificationSubscription']} referenceAddress ${UEDISTSUB_IP_ADDRESS}
Check HTTP Response Body Json Schema Is UserDistanceSubscription
${CLIENT_CORRELATOR} Get value entry from JSON file UserDistanceSubscription clientCorrelator
${CALLBACK_REF} Get value entry from JSON file UserDistanceSubscription callbackReference
${MON_ADDRESSED} Get value entry from JSON file UserDistanceSubscription monitoredAddress
${DISTANCE} Get value entry from JSON file UserDistanceSubscription distance
${TRACK_ACCURACY} Get value entry from JSON file UserDistanceSubscription trackingAccuracy
${CRITERIA} Get value entry from JSON file UserDistanceSubscription criteria
${CHECK_IMMEDIATE} Get value entry from JSON file UserDistanceSubscription checkImmediate
Should be Equal ${response['body']['userDistanceSubscription']['clientCorrelator']} ${CLIENT_CORRELATOR}
Should be Equal ${response['body']['userDistanceSubscription']['callbackReference']} ${CALLBACK_REF}
Should be Equal ${response['body']['userDistanceSubscription']['distance']} ${DISTANCE}
Should be Equal ${response['body']['userDistanceSubscription']['trackingAccuracy']} ${TRACK_ACCURACY}
Should be Equal ${response['body']['userDistanceSubscription']['criteria']} ${CRITERIA}
Should be Equal ${response['body']['userDistanceSubscription']['checkImmediate']} ${True}
Spawn Notification Server UserDistanceNotification
Validate Json UserDistanceNotification.schema.json ${payload_notification}
[TearDown] Remove subscription ${SUB_ID}
TC_MEC_MEC013_SRV_UEDISTSUB_001_BR
[Documentation]
... Check that the IUT responds with an error when
... a request with incorrect parameters is sent by a MEC Application
... Check that the IUT responds with an error when a request with incorrect parameters is
... sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.10
... Reference ETSI GS MEC 013 3.1.1 Clause 5.3.4
... ETSI GS MEC 013 3.1.1 Clause 6.3.9
... ETSI GS MEC 013 3.1.1 Clause 6.4.9
... ETSI GS MEC 013 3.1.1 Clause 7.14.3.4
[Tags] PIC_MEC_PLAT PIC_SERVICES
Create new subscription DistanceNotificationSubscriptionError
Create new subscription UserDistanceSubscriptionError
Check HTTP Response Status Code Is 400
TC_MEC_MEC013_SRV_UEDISTSUB_002_OK
[Documentation]
... Check that the IUT acknowledges the cancellation of UE distance notifications
... when commanded by a MEC Application
... Check that the IUT acknowledges the cancellation of UE distance
... notifications when commanded by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
... Reference ETSI GS MEC 013 3.1.1 Clause 5.3.6
... ETSI GS MEC 013 3.1.1 Clause 7.15.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
Remove subscription ${SUBSCRIPTION_ID}
[Setup] Create new subscription and get sub id UserDistanceSubscription
Remove subscription ${SUB_ID}
Check HTTP Response Status Code Is 204
TC_MEC_MEC013_SRV_UEDISTSUB_002_NF
[Documentation]
... Check that the IUT responds with an error when
... a request for an unknown URI is sent by a MEC Application
... Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI
... is sent by a MEC Application
...
... Reference ETSI GS MEC 013 V2.1.1, clause 7.3.6
... Reference ETSI GS MEC 013 3.1.1 Clause 5.3.6
... ETSI GS MEC 013 3.1.1 Clause 7.15.3.5
[Tags] PIC_MEC_PLAT PIC_SERVICES
Remove subscription ${NON_EXISTENT_SUBSCRIPTION_ID}
[Setup] Remove subscription ${NON_EXISTING_SUBSCRIPTION_ID}
Remove subscription ${NON_EXISTING_SUBSCRIPTION_ID}
Check HTTP Response Status Code Is 404
*** Keywords ***
Create new subscription and get sub id
[Arguments] ${content}
Create new subscription ${content}
${elements} = Split String ${response['headers']['Location']} /
Set Suite Variable ${SUB_ID} ${elements[3]}
Create new subscription
[Arguments] ${content}
Set Headers {"Accept":"application/json"}
......@@ -79,10 +106,15 @@ Create new subscription
${output}= Output response
Set Suite Variable ${response} ${output}
Remove subscription
Remove subscription
[Arguments] ${subscriptionId}
Set Headers {"Accept":"application/json"}
Set Headers {"Authorization":"${TOKEN}"}
Delete ${apiRoot}/${apiName}/${apiVersion}/subscriptions/distance/${subscriptionId}
${output}= Output response
Set Suite Variable ${response} ${output}
\ No newline at end of file
Set Suite Variable ${response} ${output}
Spawn Notification Server
[Arguments] ${payload_notification}
${output} Spawn Web Server ${NOTIFICATION_SERVER_IP} ${NOTIFICATION_SERVER_PORT} ${NOTIFICATION_SERVER_TIMEOUT} ${NOTIFICATION_SERVER_HTTP_METHOD} ${NOTIFICATION_SERVER_URI} ${payload_notification}
Set Suite Variable ${payload_notification} ${output}
\ No newline at end of file
*** Variables ***
# Generic variables
${SCHEMA} http
${HOST} 10.192.2.172
${HOST} 127.0.0.1
${PORT} 8081
${response} {}
${TOKEN} Basic YWxhZGRpbjpvcGVuc2VzYW1l
${apiRoot}
${apiName} location
${apiVersion} v2
${apiVersion} v3
# Specific variables
${UEDISTSUB_CLIENT_ID} 0123
${APP_SRVSUB_NOTIF_CALLBACK_URI} "callbackReference": {"callbackData": "1234","notifyURL": "http://application.example.com/notifications/distance_notifications/123456"}
${UEDISTSUB_MONITORED_IP_ADDRESS} ["acr:10.0.0.1", "acr:10.0.0.2"]
${UEDISTSUB_IP_ADDRESS} acr:10.0.0.3
${SUBSCRIPTION_ID} e0deee2b-6e50-4f33-ab09-8bf0585025d3
${NON_EXISTENT_SUBSCRIPTION_ID} NON_EXISTENT_SUBSCRIPTION_ID
\ No newline at end of file
##Notification Server variables
${NOTIFICATION_SERVER_IP} 127.0.0.1
${NOTIFICATION_SERVER_PORT} 8888
${NOTIFICATION_SERVER_HTTP_METHOD} POST
${NOTIFICATION_SERVER_URI} /callback_url
${NOTIFICATION_SERVER_TIMEOUT} 5
${SUB_ID}
${NON_EXISTING_SUBSCRIPTION_ID} NON_EXISTING_SUBSCRIPTION_ID
\ No newline at end of file
{
"distanceNotificationSubscription": {
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://application.example.com/notifications/distance_notifications/123456"
},
"checkImmediate": "true",
"clientCorrelator": "0123",
"criteria": "AllWithinDistance",
"distance": "100",
"frequency": "10",
"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
"referenceAddress": "acr:10.0.0.3",
"trackingAccuracy": "10"
}
}
\ No newline at end of file
{
"distanceNotificationSubscription": {
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://application.example.com/notifications/distance_notifications/123456"
},
"checkImmediate": "true",
"clientCorrelator": "0123",
"criteria": "AllWithinDistance",
"distance": "100",
"frequency": "10",
"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
"reference": "acr:10.0.0.3",
"trackingAccuracy": "10"
}
}
\ No newline at end of file
{
"notificationType": "UserDistanceNotification",
"_links": {
"subscription": {
"href": "https://sDZdgInDNnbFYppR.rt/aa"
}
},
"distanceEvent": "AllWithinDistance",
"monitoredUsers": {
"resourceURL": "http://meAppServer.example.com/location/v3/queries/users",
"user": [
{
"address": "acr:10.0.0.1",
"accessPointId": "001010000000000000000000000000001",
"zoneId": "zone01",
"resourceURL": "sunt",
"timestamp": {
"nanoSeconds": 22688093,
"seconds": 0
}
}
]
}
}
\ No newline at end of file
{
"subscriptionType": "UserDistanceSubscription",
"clientCorrelator": "0123",
"callbackReference": "http://my.callback.com/user-distance/some-id",
"referenceAddress": [
"acr:10.0.0.3"
],
"monitoredAddress": [
"acr:10.0.0.1",
"acr:10.0.0.2"
],
"distance": 100,
"trackingAccuracy": 10,
"criteria": "AllWithinDistance",
"checkImmediate": "true"
}
\ No newline at end of file
{
"subscriptionType": "UserDistanceSubscription",
"clientCorrelator": "0123",
"referenceAddress": [
"acr:10.0.0.3"
],
"monitoredAddress": [
"acr:10.0.0.1",
"acr:10.0.0.2"
],
"distance": 100,
"trackingAccuracy": 10,
"criteria": "AllWithinDistance",
"checkImmediate": "true"
}
\ No newline at end of file
#!/usr/bin/python3
from http.server import BaseHTTPRequestHandler, HTTPServer
import json, os
import logging
# Library version
__version__ = '0.0.1'
def import_notification_json(subscription_type):
notification_type = subscription_type.split("Subscription")[0]
file_path = "./jsons/"+notification_type+".json"
logging.info(file_path)
logging.info(os.listdir())
try:
with open(file_path, 'r') as json_file:
# Load the JSON data
data = json.load(json_file)
logging.info(data)
return data
except FileNotFoundError:
logging.error(f"Error: File not found at {file_path}")
class Server ( object ):
ROBOT_LIBRARY_VERSION = '0.0.1'
def spawn_web_server (self, host="127.0.0.1", port=8080, timeout=15, method="POST", endpoint="/callback_url", resp_body=None):
class GET_Server(BaseHTTPRequestHandler):
def __call__(self, *args, **kwargs):
"""Handle a request."""
super().__init__(*args, **kwargs)
def __init__(self, endpoint, resp_body):
self.resp_body = resp_body
self.endpoint = endpoint
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
if self.path == self.endpoint:
self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
else:
self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
class POST_Server(BaseHTTPRequestHandler):
def __call__(self, *args, **kwargs):
"""Handle a request."""
super().__init__(*args, **kwargs)
def __init__(self, endpoint, resp_body):
self.resp_body = resp_body
self.endpoint = endpoint
self.req_body = None
def do_POST(self):
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
#if self.path == self.endpoint:
# self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
#else:
# self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
content_len = int(self.headers.get('Content-Length'))
post_body = self.rfile.read(content_len)
self.req_body=post_body
def get_req_body(self):
return self.req_body
def get_resp_body(self):
return self.resp_body
class PUT_Server(BaseHTTPRequestHandler):
def __call__(self, *args, **kwargs):
"""Handle a request."""
super().__init__(*args, **kwargs)
def __init__(self, endpoint, resp_body):
self.resp_body = resp_body
self.endpoint = endpoint
def do_PUT(self):
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
if self.path == self.endpoint:
self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
else:
self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
class DELETE_Server(BaseHTTPRequestHandler):
def __call__(self, *args, **kwargs):
"""Handle a request."""
super().__init__(*args, **kwargs)
def __init__(self, endpoint, resp_body):
self.resp_body = resp_body
self.endpoint = endpoint
def do_DELETE(self):
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
if self.path == self.endpoint:
self.wfile.write(json.dumps(self.resp_body).encode(encoding='utf_8'))
else:
self.wfile.write(json.dumps("wrong endpoint").encode(encoding='utf_8'))
if method == "GET":
self.handler = GET_Server(endpoint, resp_body)
elif method == "POST":
self.handler = POST_Server(endpoint, resp_body)
elif method == "PUT":
self.handler = PUT_Server(endpoint, resp_body)
elif method == "DELETE":
self.handler = DELETE_Server(endpoint, resp_body)
else:
logging.info("Error, unknown endpoint")
exit(1)
self.app = HTTPServer((host, int(port)), self.handler)
self.app.timeout = int(timeout)
self.app.handle_request()
self.app.server_close()
logging.info(self.handler.get_resp_body())
if(self.handler.get_req_body()!=None):
return json.loads(self.handler.get_req_body().decode("windows-1252"))
notification_json= import_notification_json(self.handler.get_resp_body())
return notification_json
{
"type": "object",
"properties": {
"distanceNotificationSubscription": {
"description": "A type containing data for distance subscription, with reference to other devices.",
"properties": {
"callbackReference": {
"properties": {
"callbackData": {
"description": "Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"notificationFormat": {
"enum": [
"XML",
"JSON"
],
"type": "string"
},
"notifyURL": {
"description": "Notify Callback URL",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "anyURI"
}
},
"required": [
"notifyURL"
],
"type": "object"
},
"checkImmediate": {
"description": "Check location immediately after establishing notification.",
"type": "boolean",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "boolean"
},
"clientCorrelator": {
"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"count": {
"description": "Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "int"
},
"criteria": {
"enum": [
"AllWithinDistance",
"AnyWithinDistance",
"AllBeyondDistance",
"AnyBeyondDistance"
],
"type": "string"
},
"distance": {
"description": "Distance between devices that shall be monitored.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "float"
},
"duration": {
"description": "Period of time (in seconds) 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.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "int"
},
"frequency": {
"description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "int"
},
"link": {
"description": "Link to other resources that are in relationship with the resource.",
"items": {
"description": "Link to other resources",
"properties": {
"href": {
"description": "URI",
"format": "anyURI",
"type": "string"
},
"rel": {
"description": "Describes the relationship between the URI and the resource.",
"type": "string"
}
},
"required": [
"rel",
"href"
],
"type": "object"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"monitoredAddress": {
"description": "Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
"items": {
"type": "string"
},
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "anyURI"
},
"referenceAddress": {
"description": "Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI)",
"items": {
"type": "string"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "anyURI"
},
"requester": {
"description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "anyURI"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "anyURI"
},
"trackingAccuracy": {
"description": "Number of meters of acceptable error in tracking distance.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "float"
}
},
"required": [
"callbackReference",
"monitoredAddress",
"distance",
"trackingAccuracy",
"criteria",
"checkImmediate",
"frequency"
],
"type": "object"
}
},
"example": {
"distanceNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"monitoredAddress": [
"acr:10.0.0.1",
"acr:10.0.0.2"
],
"checkImmediate": true,
"criteria": "AllWithinDistance",
"distance": 100,
"frequency": 10,
"referenceAddress": "acr:10.0.0.3",
"trackingAccuracy": 10
}
}
}
\ No newline at end of file
{
"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": "^(.*)$"
}
}
}
}
}
This diff is collapsed.
{
"_links": {
"description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.",
"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.7.2"
}
},
"required": [
"self"
],
"type": "object",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Structure (inlined)"
},
"callbackReference": {
"description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uri"
},
"checkImmediate": {
"type": "boolean"
},
"clientCorrelator": {
"description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"criteria": {
"description": "An enumeration, defining the distance criteria between devices.",
"enum": [
"AllWithinDistance",
"AnyWithinDistance",
"AllBeyondDistance",
"AnyBeyondDistance"
],
"type": "string"
},
"distance": {
"description": "Distance between users that shall be monitored. The unit is meter.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Float"
},
"expiryDeadline": {
"properties": {
"nanoSeconds": {
"description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
},
"seconds": {
"description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Uint32"
}
},
"required": [
"seconds",
"nanoSeconds"
],
"type": "object",
"x-etsi-ref": "6.5.2"
},
"monitoredAddress": {
"description": "Contains addresses of users to monitor (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.\nIf the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored.\nIf the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "Array(Uri)"
},
"referenceAddress": {
"description": "If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.",
"items": {
"type": "string"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Array(Uri)"
},
"reportingCtrl": {
"properties": {
"maximumCount": {
"description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"maximumFrequency": {
"description": "Maximum frequency (in seconds) of notifications per subscription.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"minimumInterval": {
"description": "Minimum interval between reports in case frequently reporting. Unit is second.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
}
},
"type": "object",
"x-etsi-ref": "6.5.6"
},
"requestTestNotification": {
"description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.",
"type": "boolean",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Boolean"
},
"subscriptionType": {
"description": "Shall be set to \"UserDistanceSubscription\".",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"trackingAccuracy": {
"description": "Number of meters of acceptable error in tracking distance.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Float"
},
"websockNotifConfig": {
"properties": {
"requestWebsocketUri": {
"description": "Set to true by the service consumer to indicate that Websocket delivery is requested.",
"type": "boolean",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Boolean"
},
"websocketUri": {
"description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uri"
}
},
"type": "object",
"x-etsi-ref": "6.5.4"
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment