module IoTAPI_Functions {
// JSON
import from Json all;
// LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_Time all;
import from LibCommon_VerdictControl all;
import from LibCommon_Sync all;
// LibHttp
import from LibHttp_TypesAndValues all;
import from LibHttp_Functions all;
import from LibHttp_Templates all;
import from LibHttp_JsonTemplates all;
import from LibHttp_TestSystem all;
// LibMec/EdgePlatformApplicationEnablementAPI
import from EdgePlatformApplicationEnablementAPI_Templates all;
// LibMec/IoTAPI
import from IoTAPI_TypesAndValues all;
import from IoTAPI_Templates all;
import from IoTAPI_Pixits all;
// LibMec
import from LibMec_Templates all;
import from LibMec_Functions all;
import from LibMec_Pics all;
import from LibMec_Pixits all;
function f_create_device_info(
out DeviceInfo p_device_info
) runs on HttpComponent {
var Headers v_headers;
var HttpMessage v_response;
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
PICS_ROOT_API & PX_IOT_API_SUB,
v_headers,
m_http_message_body_json(
m_body_json_iot_device_info(
m_device_info(
PX_IOT_DEVICE_ID_1,
PX_IOT_DEVICE_AUTH_1,
false,
PX_IOT_DEVICE_SUPI_1,
PX_IOT_DEVICE_IMSI_1
))))));
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_iot_device_info(
mw_device_info(
PX_IOT_DEVICE_ID_1,
PX_IOT_DEVICE_AUTH_1,
false,
PX_IOT_DEVICE_SUPI_1,
PX_IOT_DEVICE_IMSI_1
)))))) -> value v_response {
tc_ac.stop;
p_device_info := v_response.response.body.json_body.deviceInfo_iot;
log("f_create_device_info: INFO: IUT successfully responds to the subscription: ", p_device_info);
}
[] tc_ac.timeout {
log("f_create_device_info: INCONC: Expected message not received");
}
} // End of 'alt' statement
} // End of function f_create_device_info
function f_delete_device_info(
in DeviceInfo p_device_info
) runs on HttpComponent {
var Headers v_headers;
var HttpMessage v_response;
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_delete(
PICS_ROOT_API & PX_IOT_API_SUB & "/" & oct2char(unichar2oct(p_device_info.deviceId, "UTF-8")),
v_headers
)));
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_204_no_content
)) {
tc_ac.stop;
}
[] tc_ac.timeout {
log("f_delete_device_info: INCONC: Expected message not received");
}
} // End of 'alt' statement
} // End of function f_delete_device_info
function f_create_device_info_list(
out DeviceInfoList p_device_info_list
) runs on HttpComponent {
for (var integer i := 0; i < lengthof(p_device_info_list); i := i + 1) {
f_create_device_info(p_device_info_list[i]);
}
} // End of function f_create_device_info_list
function f_delete_device_info_list(
in DeviceInfoList p_device_info_list
) runs on HttpComponent {
for (var integer i := 0; i < lengthof(p_device_info_list); i := i + 1) {
if (p_device_info_list[i].deviceId != "") {
f_delete_device_info(p_device_info_list[i]);
}
}
} // End of function f_delete_device_info_list
function f_create_iot_platform_info(
out IotPlatformInfo p_iot_platform_info
) runs on HttpComponent {
var Headers v_headers;
var HttpMessage v_response;
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
PICS_ROOT_API & PX_IOT_API_LIST_PLTF_SUB,
v_headers,
m_http_message_body_json(
m_body_json_iot_iot_platform_info(
m_iot_platform_info(
PX_IOT_PLTF_ID_1,
{
m_mb_transport_info(
PX_MB_TRANSPORTINFO_ID_1,
PX_MB_TRANSPORTINFO_NAME_1,
PX_MB_TRANSPORTINFO_TYPE_1,
PX_MB_TRANSPORTINFO_PROTOCOL_1,
PX_MB_TRANSPORTINFO_VERSION_1,
m_end_point_uris({ PX_IOT_ENDPOINT_URI_1 }),
m_security_info,
m_impl_specific_info
)
}
))))));
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_iot_iot_platform_info(
mw_iot_platform_info(
PX_IOT_PLTF_ID_1,
{
m_mb_transport_info(
PX_MB_TRANSPORTINFO_ID_1,
PX_MB_TRANSPORTINFO_NAME_1,
PX_MB_TRANSPORTINFO_TYPE_1,
PX_MB_TRANSPORTINFO_PROTOCOL_1,
PX_MB_TRANSPORTINFO_VERSION_1,
m_end_point_uris({ PX_IOT_ENDPOINT_URI_1 }),
m_security_info,
m_impl_specific_info
)
}
)))))) -> value v_response {
tc_ac.stop;
p_iot_platform_info := v_response.response.body.json_body.iotPlatformInfo;
log("f_create_iot_platform_info: INFO: IUT successfully responds to the subscription: ", p_iot_platform_info);
}
[] tc_ac.timeout {
log("f_create_iot_platform_info: INCONC: Expected message not received");
}
} // End of 'alt' statement
} // End of function f_create_iot_platform_info
function f_delete_iot_platform_info(
in IotPlatformInfo p_iot_platform_info
) runs on HttpComponent {
var Headers v_headers;
var HttpMessage v_response;
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_delete(
PICS_ROOT_API & PX_IOT_API_LIST_PLTF_SUB & "/" & oct2char(unichar2oct(p_iot_platform_info.iotPlatformId, "UTF-8")),
v_headers
)));
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_204_no_content
)) {
tc_ac.stop;
}
[] tc_ac.timeout {
log("f_delete_iot_platform_info: INCONC: Expected message not received");
}
} // End of 'alt' statement
} // End of function f_delete_iot_platform_info
function f_create_iot_platform_info_list(
out IotPlatformInfoList p_iot_platform_info_list
) runs on HttpComponent {
for (var integer i := 0; i < lengthof(p_iot_platform_info_list); i := i + 1) {
f_create_iot_platform_info(p_iot_platform_info_list[i]);
}
} // End of function f_create_iot_platform_info_list
function f_delete_iot_platform_info_list(
in IotPlatformInfoList p_iot_platform_info_list
) runs on HttpComponent {
for (var integer i := 0; i < lengthof(p_iot_platform_info_list); i := i + 1) {
if (p_iot_platform_info_list[i].iotPlatformId != "") {
f_delete_iot_platform_info(p_iot_platform_info_list[i]);
}
}
} // End of function f_delete_iot_platform_info_list
} // End of modue IoTAPI_Functions
\ No newline at end of file
module IoTAPI_Pics {
/**
* @desc Does the IUT support MEC IoT API?
*/
modulepar boolean PICS_IOT_API_SUPPORTED := true;
} // End of IoTAPI_Pics
module IoTAPI_Pixits {
// JSON
import from Json all;
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibMec/EdgePlatformApplicationEnablementAPI
import from EdgePlatformApplicationEnablementAPI_TypesAndValues all;
modulepar Json.String PX_IOT_DEVICE_ID_1 := "";
modulepar Json.String PX_IOT_DEVICE_SUPI_1 := "";
modulepar Json.String PX_IOT_DEVICE_IMSI_1 := "";
modulepar Json.String PX_IOT_DEVICE_AUTH_1 := "";
modulepar Json.String PX_IOT_DEVICE_ID_2 := "";
modulepar Json.String PX_IOT_DEVICE_SUPI_2 := "";
modulepar Json.String PX_IOT_DEVICE_IMSI_2 := "";
modulepar Json.String PX_IOT_DEVICE_AUTH_2 := "";
modulepar Json.String PX_IOT_DEVICE_ID_3 := "";
modulepar Json.String PX_IOT_DEVICE_SUPI_3 := "";
modulepar Json.String PX_IOT_DEVICE_IMSI_3 := "";
modulepar Json.String PX_IOT_DEVICE_AUTH_3 := "";
modulepar Json.String PX_IOT_DEVICE_ID_UNKNOWN := "";
modulepar Json.String PX_IOT_ENDPOINT_URI_1 := "";
modulepar Json.String PX_IOT_ENDPOINT_URI_2 := "";
modulepar Json.String PX_IOT_ENDPOINT_URI_3 := "";
modulepar Json.String PX_REQUESTED_PLTF_ID := "";
modulepar Json.String PX_IOT_PLTF_ID_1 := "";
modulepar Json.String PX_IOT_PLTF_ID_2 := "";
modulepar Json.String PX_IOT_PLTF_ID_3 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_ID_1 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_NAME_1 := "";
modulepar EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportType PX_MB_TRANSPORTINFO_TYPE_1
:= REST_HTTP;
modulepar Json.String PX_MB_TRANSPORTINFO_PROTOCOL_1 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_VERSION_1 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_ID_2 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_NAME_2 := "";
modulepar EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportType PX_MB_TRANSPORTINFO_TYPE_2
:= REST_HTTP;
modulepar Json.String PX_MB_TRANSPORTINFO_PROTOCOL_2 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_VERSION_2 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_ID_3 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_NAME_3 := "";
modulepar EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportType PX_MB_TRANSPORTINFO_TYPE_3
:= REST_HTTP;
modulepar Json.String PX_MB_TRANSPORTINFO_PROTOCOL_3 := "";
modulepar Json.String PX_MB_TRANSPORTINFO_VERSION_3 := "";
modulepar Json.String PX_IOT_PLTF_ID_UNKNOWN := "";
} // End of module IoTAPI_Pixits
\ No newline at end of file
module IoTAPI_Templates {
// JSON
import from Json all;
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibMec/LibMec_ApplicationPackageLifecycleAndOperationGrantingAPI
import from ApplicationPackageLifecycleAndOperationGrantingAPI_TypesAndValues all;
// LibMec/EdgePlatformApplicationEnablementAPI
import from EdgePlatformApplicationEnablementAPI_TypesAndValues all;
// LibMec/IoTAPI
import from IoTAPI_TypesAndValues all;
template (omit) DeviceInfo m_device_info(
in Json.String p_deviceId,
in Json.String p_deviceAuthenticationInfo,
in Json.Bool p_enabled := false,
in template (omit) Json.String p_supi := omit,
in template (omit) Json.String p_imsi := omit,
in template (omit) Json.String p_requestedIotPlatformId := omit,
in template (omit) TrafficRuleDescriptors p_requestedMecTrafficRule := omit,
in template (omit) DeviceMetatData p_deviceMetadata := omit,
in template (omit) Json.String p_gpsi := omit,
in template (omit) Json.String p_pei := omit,
in template (omit) Json.String p_msisdn := omit,
in template (omit) Json.String p_imei := omit,
in template (omit) Json.String p_iccid := omit,
in template (omit) DeviceSpecificMessageFormats p_deviceSpecificMessageFormats := omit,
in template (omit) DownlinkInfo p_downlinkInfo := omit,
in template (omit) Json.String p_clientCertificate := omit
) := {
deviceAuthenticationInfo := p_deviceAuthenticationInfo,
deviceMetadata := p_deviceMetadata,
gpsi := p_gpsi,
pei := p_pei,
supi := p_supi,
msisdn := p_msisdn,
imei := p_imei,
imsi := p_imsi,
iccid := p_iccid,
deviceId := p_deviceId,
requestedMecTrafficRule := p_requestedMecTrafficRule,
requestedIotPlatformId := p_requestedIotPlatformId,
deviceSpecificMessageFormats := p_deviceSpecificMessageFormats,
downlinkInfo := p_downlinkInfo,
clientCertificate := p_clientCertificate,
enabled := p_enabled
} // End of template m_device_info
template (present) DeviceInfo mw_device_info(
template (present) Json.String p_deviceId := ?,
template (present) Json.String p_deviceAuthenticationInfo := ?,
template (present) Json.Bool p_enabled := ?,
template Json.String p_supi := *,
template Json.String p_imsi := *,
template Json.String p_requestedIotPlatformId := *,
template TrafficRuleDescriptors p_requestedMecTrafficRule := *,
template DeviceMetatData p_deviceMetadata := *,
template Json.String p_gpsi := *,
template Json.String p_pei := *,
template Json.String p_msisdn := *,
template Json.String p_imei := *,
template Json.String p_iccid := *,
template DeviceSpecificMessageFormats p_deviceSpecificMessageFormats := *,
template DownlinkInfo p_downlinkInfo := *,
template Json.String p_clientCertificate := *
) := {
deviceAuthenticationInfo := p_deviceAuthenticationInfo,
deviceMetadata := p_deviceMetadata,
gpsi := p_gpsi,
pei := p_pei,
supi := p_supi,
msisdn := p_msisdn,
imei := p_imei,
imsi := p_imsi,
iccid := p_iccid,
deviceId := p_deviceId,
requestedMecTrafficRule := p_requestedMecTrafficRule,
requestedIotPlatformId := p_requestedIotPlatformId,
deviceSpecificMessageFormats := p_deviceSpecificMessageFormats,
downlinkInfo := p_downlinkInfo,
clientCertificate := p_clientCertificate,
enabled := p_enabled
} // End of template mw_device_info
template (omit) IotPlatformInfo m_iot_platform_info(
in Json.String p_iotPlatformId,
in template (value) MBTransportInfoList p_userTransportInfo,
in Json.Bool p_enabled := false,
in template (omit) EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportInfoList p_customServicesTransportInfo := omit
) := {
iotPlatformId := p_iotPlatformId,
userTransportInfo := p_userTransportInfo,
customServicesTransportInfo := p_customServicesTransportInfo,
enabled := p_enabled
} // End of template m_iot_platform_info
template (omit) IotPlatformInfo m_iot_platform_info_error(
in Json.String p_iotPlatformId,
in Json.Bool p_enabled := false,
in template (omit) EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportInfoList p_customServicesTransportInfo := omit
) := {
iotPlatformId := p_iotPlatformId,
userTransportInfo := omit,
customServicesTransportInfo := p_customServicesTransportInfo,
enabled := p_enabled
} // End of template m_iot_platform_info_error
template (present) IotPlatformInfo mw_iot_platform_info(
template (present) Json.String p_iotPlatformId := ?,
template (present) MBTransportInfoList p_userTransportInfo := ?,
template (present) Json.Bool p_enabled := ?,
template EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportInfoList p_customServicesTransportInfo := *
) := {
iotPlatformId := p_iotPlatformId,
userTransportInfo := p_userTransportInfo,
customServicesTransportInfo := p_customServicesTransportInfo,
enabled := p_enabled
} // End of template mw_iot_platform_info
template (omit) MBTransportInfo m_mb_transport_info(
in Json.String p_id,
in Json.String p_name,
in EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportType p_type,
in Json.String p_protocol,
in Json.String p_version,
in template (value) EdgePlatformApplicationEnablementAPI_TypesAndValues.EndPointInfo p_endpoint,
in template (value) EdgePlatformApplicationEnablementAPI_TypesAndValues.SecurityInfo p_security,
in template (value) ImplSpecificInfo p_implSpecificInfo,
in template (omit) Json.String p_description := omit
) := {
id := p_id,
name := p_name,
description := p_description,
type_ := p_type,
protocol := p_protocol,
version := p_version,
endpoint := p_endpoint,
security := p_security,
implSpecificInfo := p_implSpecificInfo
} // End of template m_mb_transport_info
template (present) MBTransportInfo mw_mb_transport_info(
template (present) Json.String p_id := ?,
template (present) Json.String p_name := ?,
template (present) EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportType p_type := ?,
template (present) Json.String p_protocol := ?,
template (present) Json.String p_version := ?,
template (present) EdgePlatformApplicationEnablementAPI_TypesAndValues.EndPointInfo p_endpoint := ?,
template (present) EdgePlatformApplicationEnablementAPI_TypesAndValues.SecurityInfo p_security := ?,
template (present) ImplSpecificInfo p_implSpecificInfo := ?,
template Json.String p_description := *
) := {
id := p_id,
name := p_name,
description := p_description,
type_ := p_type,
protocol := p_protocol,
version := p_version,
endpoint := p_endpoint,
security := p_security,
implSpecificInfo := p_implSpecificInfo
} // End of template mw_mb_transport_info
template (omit) ImplSpecificInfo m_impl_specific_info(
in template (omit) EventTopics p_eventTopics := omit,
in template (omit) UplinkTopics p_uplinkTopics := omit,
in template (omit) DownlinkTopics p_downlinkTopics := omit
) := {
eventTopics := p_eventTopics,
uplinkTopics := p_uplinkTopics,
downlinkTopics := p_downlinkTopics
} // End of template m_impl_specific_info
template ImplSpecificInfo mw_impl_specific_info(
template EventTopics p_eventTopics := *,
template UplinkTopics p_uplinkTopics := *,
template DownlinkTopics p_downlinkTopics := *
) := {
eventTopics := p_eventTopics,
uplinkTopics := p_uplinkTopics,
downlinkTopics := p_downlinkTopics
} // End of template mw_impl_specific_info
} // End of IoTAPI_Templates
/**
* @desc The ETSI MEC ISG MEC033 Radio Network Information API described using OpenAPI
* @see https://www.etsi.org/deliver/etsi_gs/MEC/001_099/033/03.01.01_60/gs_MEC033v030101p.pdf
*/
module IoTAPI_TypesAndValues {
// JSON
import from Json all;
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibMec/LibMec_ApplicationPackageLifecycleAndOperationGrantingAPI
import from ApplicationPackageLifecycleAndOperationGrantingAPI_TypesAndValues all;
// LibMec/EdgePlatformApplicationEnablementAPI
import from EdgePlatformApplicationEnablementAPI_TypesAndValues all;
/**
* @desc Information associated to an IoT device
* @member deviceAuthenticationInfo Information needed for secondary authentication of the IoT device to the data network
* @member deviceMetadata Additional information about the IoT device
* @member gpsi GPSI of the IoT device if 5G-enabled
* @member pei PEI of the IoT device if 5G-enabled
* @member supi SUPI of the IoT device if 5G-enabled
* @member msisdn MSISDN of the IoT device if LTE-enabled
* @member imei IMEI of the IoT device if LTE-enabled
* @member imsi IMSI of the IoT device if LTE-enabled
* @member iccid ICCID of the IoT device
* @member deviceId Human-readable identifier of the IoT device
* @member requestedMecTrafficRule MEC traffic rules the IoT device is requested to be associated to
* @member requestedIotPlatformId IoT platform to which the IoT device is requested to be associated to
* @member deviceSpecificMessageFormats Format of the messages to be published by the MEC IoTS on the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device
* @member downlinkInfo Downlink communication configuration of the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device
* @member clientCertificate Client-side SSL/TLS certificate to be used by the MEC IoTS to interact with the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device
* @member enabled Indication whether the IoT device has a valid associated traffic rule (TRUE) or not (FALSE)
* @see ETSI GS MEC 033 V3.1.1 (2022-12) Table 6.2.2-1: Definition of type DeviceInfo
*/
type record DeviceInfo {
Json.String deviceAuthenticationInfo,
DeviceMetatData deviceMetadata optional,
Json.String gpsi optional,
Json.String pei optional,
Json.String supi optional,
Json.String msisdn optional,
Json.String imei optional,
Json.String imsi optional,
Json.String iccid optional,
Json.String deviceId,
TrafficRuleDescriptors requestedMecTrafficRule optional,
Json.String requestedIotPlatformId optional,
DeviceSpecificMessageFormats deviceSpecificMessageFormats optional,
DownlinkInfo downlinkInfo optional,
Json.String clientCertificate optional,
Json.Bool enabled
} // End of type DeviceInfo
type record of DeviceInfo DeviceInfoList;
type record of Json.String DeviceMetatData;
/**
* @desc
* @member eventMsgFormat Event message format configuration
* @member uplinkMsgFormat Uplink message format configuration
*/
type record DeviceSpecificMessageFormats {
EventMsg eventMsgFormat optional,
UplinkMsg uplinkMsgFormat optional
} // End of type DeviceSpecificMessageFormats
/**
* @desc Downlink communication configuration of the user transport provided by the associated IoT platform in case the MEC IoTS acts on behalf of the IoT device
* @member downlinkTopic Topic associated to the IoT device
* @member devicePort UDP port to be used by the MEC IoTS for the outgoing downlink packets towards the IoT device
*/
type record DownlinkInfo {
Json.String downlinkTopic optional,
Json.Number devicePort optional
} // End of type DownlinkInfo
/**
* @desc Information associated to a IoT platform
* @member iotPlatformId Identifier of the IoT platform
* @member userTransportInfoInformation about the user transport(s) provided by the IoT platform
* @member customServicesTransportInfo Transport enabling access to vendor-specific services provided by the IoT platform. The data
* @member enabled Indication whether the IoT platform is capable of providing user transports and vendor-specific services (TRUE) or not (FALSE)
* @see ETSI GS MEC 033 V3.1.1 (2022-12) Table 6.2.3-1: Definition of type IotPlatformInfo
*/
type record IotPlatformInfo {
Json.String iotPlatformId,
MBTransportInfoList userTransportInfo optional, // optional on;ly for the 400 Bad Request TP
TransportInfoList customServicesTransportInfo optional,
Json.Bool enabled
} // End of IotPlatformInfo
type record of IotPlatformInfo IotPlatformInfoList;
/**
* @desc User transport based on a message bus
* @member id The identifier of this transport as per ETSI GS MEC 011 [i.2]
* @member name The name of this transport as per ETSI GS MEC 011 [i.2]
* @member description Human-readable description of this transport as per ETSI GS MEC 011 [i.2]
* @member type_ Type of the transport
* @member protocol The name of the protocol used
* @member version The version of the protocol used as per ETSI GS MEC 011 [i.2]
* @member endpoint Information about the endpoint to access the transport as per ETSI GS MEC 011 [i.2]
* @member security Information about the security used by the transport as per ETSI GS MEC 011 [i.2]
* @member implSpecificInfo Additional implementation specific details of the transport
* @see ETSI GS MEC 033 V3.1.1 (2022-12) Table 6.3.2-1: Definition of type MBTransportInfo
*/
type record MBTransportInfo {
Json.String id,
Json.String name,
Json.String description optional,
EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportType type_,
Json.String protocol,
Json.String version ,
EdgePlatformApplicationEnablementAPI_TypesAndValues.EndPointInfo endpoint,
EdgePlatformApplicationEnablementAPI_TypesAndValues.SecurityInfo security,
ImplSpecificInfo implSpecificInfo
} // End of type MBTransportInfo
type record of MBTransportInfo MBTransportInfoList;
/**
* @desc
* @member eventTopics Topics used to publish events related to the established session between the IoT device(s) and the end IoT application(s) on the user transport
* @member uplinkTopics Topics used to publish data generated by the IoT device(s) on the user transport, in order to be consumed by the end IoT application(s)
* @member downlinkTopics Topics used to publish data generated by the IoT applications(s) on the user transport, in order to be consumed by the end IoT device(s)
* @see ETSI GS MEC 033 V3.1.1 (2022-12) Table 6.3.2-1: Definition of type MBTransportInfo
*/
type record ImplSpecificInfo {
EventTopics eventTopics optional,
UplinkTopics uplinkTopics optional,
DownlinkTopics downlinkTopics optional
} // End of type ImplSpecificInfo
type record of Json.String EventTopics;
type record of Json.String UplinkTopics;
type record of Json.String DownlinkTopics;
type record of EdgePlatformApplicationEnablementAPI_TypesAndValues.TransportInfo TransportInfoList;
/**
* @desc Defines the format of the messages to be published on the user transport in order to provide application-specific information about events related to the established session between the IoT device and the end IoT application(s)
* @member eventTopic Topic where the message containing application-specific information should be published
* @member selectedSerializer Type of serializer to be used for the topic as per ETSI GS MEC 011 [i.2]
* @member includeDeviceAddr Indication whether to include the IP address of the IoT device (TRUE) or not (FALSE)
* @member includeDeviceMetadata Indication whether to include the metadata about the IoT device (TRUE) or not (FALSE)
* @member includeSupi Indication whether to include the SUPI of the IoT device (TRUE) or not (FALSE)
* @member includeImsi Indication whether to include the IMSI of the IoT device (TRUE) or not (FALSE)
* @member inclueIccid Indication whether to include the ICCID of the IoT device (TRUE) or not (FALSE)
* @member includeDeviceId Indication whether to include the humanreadable identified of the IoT device (TRUE) or not (FALSE)
* @member
* @see ETSI GS MEC 033 V3.1.1 (2022-12) Table 6.3.3-1: Definition of type EventMsg
*/
type record EventMsg {
Json.String eventTopic,
EdgePlatformApplicationEnablementAPI_TypesAndValues.SerializerType selectedSerializer,
Json.Bool includeDeviceAddr optional,
Json.Bool includeDeviceMetadata optional,
Json.Bool includeSupi optional,
Json.Bool includeImsi optional,
Json.Bool includeIccid optional,
Json.Bool includeDeviceId optional
} // End ot type EventMsg
/**
* @desc Defines the format of the messages containing uplink data generated by the IoT device to be published on the user transport
* @member uplinkTopic Topic where the message containing the data generated by the IoT device(s) should be published, in order to be consumed by the end IoT application(s).
* @member selectedSerializer Type of serializer to be used for the topic as per ETSI GS MEC 011 [i.2]
* @member includeDeviceAddr Indication whether to include the IP address of the IoT device (TRUE) or not (FALSE)
* @member includeDeviceMetadata Indication whether to include the metadata about the IoT device (TRUE) or not (FALSE)
* @member includeSupi Indication whether to include the SUPI of the IoT device (TRUE) or not (FALSE)
* @member includeImsi Indication whether to include the IMSI of the IoT device (TRUE) or not (FALSE)
* @member inclueIccid Indication whether to include the ICCID of the IoT device (TRUE) or not (FALSE)
* @member includeDeviceId Indication whether to include the humanreadable identified of the IoT device (TRUE) or not (FALSE)
* @member
* @see ETSI GS MEC 033 V3.1.1 (2022-12) Table 6.3.4-1: Definition of type UplinkMsg
*/
type record UplinkMsg {
Json.String uplinkTopic,
EdgePlatformApplicationEnablementAPI_TypesAndValues.SerializerType selectedSerializer,
Json.Bool includeDeviceAddr optional,
Json.Bool includeDeviceMetadata optional,
Json.Bool includeSupi optional,
Json.Bool includeImsi optional,
Json.Bool includeIccid optional,
Json.Bool includeDeviceId optional
} // End ot type UplinkMsg
} with {
encode "JSON"
} // End of module IoTAPI_TypesAndValues
\ No newline at end of file
{
"openapi": "3.0.0",
"info": {
"contact": {
"url": "https://forge.etsi.org/rep/mec/gs013-location-api"
},
"title": "ETSI GS MEC 013 - Location API",
"version": "2.1.1",
"description": "The ETSI MEC ISG MEC013 Location API described using OpenAPI.",
"license": {
"name": "BSD-3-Clause",
"url": "https://forge.etsi.org/legal-matters"
}
},
"externalDocs": {
"description": "ETSI MEC013 V2.1.1 Location API",
"url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.01.01_60/gs_mec013v020101p.pdf"
},
"servers": [
{
"url": "https://localhost/location/v2"
}
],
"tags": [
{
"name": "location"
}
],
"paths": {
"/queries/distance": {
"get": {
"tags": [
"location"
],
"summary": "UE Distance Lookup of a specific UE",
"description": "UE Distance Lookup between terminals or a terminal and a location",
"operationId": "distanceGET",
"parameters": [
{
"$ref": "#/components/parameters/Query.Requester"
},
{
"$ref": "#/components/parameters/Query.AddressMandatory"
},
{
"$ref": "#/components/parameters/Query.Latitude"
},
{
"$ref": "#/components/parameters/Query.Longitude"
}
],
"responses": {
"200": {
"description": "Successful response to a distance request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"terminalDistance": {
"$ref": "#/components/schemas/TerminalDistance"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "queries"
}
},
"/queries/users": {
"get": {
"tags": [
"location"
],
"summary": "UE Location Lookup of a specific UE or group of UEs",
"description": "UE Location Lookup of a specific UE or group of UEs",
"operationId": "usersGET",
"parameters": [
{
"$ref": "#/components/parameters/Query.ZoneId"
},
{
"$ref": "#/components/parameters/Query.AccessPointId"
},
{
"$ref": "#/components/parameters/Query.Address"
}
],
"responses": {
"200": {
"description": "Successful response to users request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userList": {
"$ref": "#/components/schemas/UserList"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "queries"
}
},
"/queries/zones": {
"get": {
"tags": [
"location"
],
"summary": "Zones information Lookup",
"description": "Used to get a list of identifiers for zones authorized for use by the application.",
"operationId": "zonesGET",
"responses": {
"200": {
"description": "Successful response to zones request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneList": {
"$ref": "#/components/schemas/ZoneList"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "queries"
}
},
"/queries/zones/{zoneId}": {
"get": {
"tags": [
"location"
],
"summary": "Zones information Lookup",
"description": "Used to get the information for an authorized zone for use by the application.",
"operationId": "zonesGetById",
"parameters": [
{
"$ref": "#/components/parameters/Path.ZoneId"
}
],
"responses": {
"200": {
"description": "Successful response to an access point Id request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneInfo": {
"$ref": "#/components/schemas/ZoneInfo"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "queries"
}
},
"/queries/zones/{zoneId}/accessPoints": {
"get": {
"tags": [
"location"
],
"summary": "Radio Node Location Lookup",
"description": "Radio Node Location Lookup to retrieve a list of radio nodes associated to a zone.",
"operationId": "apGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.ZoneId"
},
{
"$ref": "#/components/parameters/Query.InterestRealm"
}
],
"responses": {
"200": {
"description": "Successful response to an access point Id request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"accessPointList": {
"$ref": "#/components/schemas/AccessPointList"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "queries"
}
},
"/queries/zones/{zoneId}/accessPoints/{accessPointId}": {
"get": {
"tags": [
"location"
],
"summary": "Radio Node Location Lookup",
"description": "Radio Node Location Lookup to retrieve a radio node associated to a zone.",
"operationId": "apByIdGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.ZoneId"
},
{
"$ref": "#/components/parameters/Path.AccessPointId"
}
],
"responses": {
"200": {
"description": "Successful response to an access point Id request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"accessPointInfo": {
"$ref": "#/components/schemas/AccessPointInfo"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "queries"
}
},
"/subscriptions/area/circle": {
"get": {
"tags": [
"location"
],
"summary": "Retrieves all active subscriptions to area change notifications",
"description": "This operation is used for retrieving all active subscriptions to area change notifications.",
"operationId": "areaCircleSubListGET",
"responses": {
"200": {
"description": "Response to retrieve area subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"notificationSubscriptionList"
],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"example": {
"notificationSubscriptionList": {
"circleNotificationSubscription": [
{
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"checkImmediate": true,
"enteringLeavingCriteria": "Entering",
"frequency": 10,
"latitude": -80.88,
"longitude": 41.277,
"radius": 500,
"trackingAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/subscription123"
}
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle"
}
}
}
}
}
}
}
},
"post": {
"tags": [
"location"
],
"summary": "Creates a subscription for area change notification",
"description": "Creates a subscription to the Location Service for an area change notification.",
"operationId": "areaCircleSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"circleNotificationSubscription": {
"$ref": "#/components/schemas/CircleNotificationSubscription"
}
},
"example": {
"circleNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"checkImmediate": true,
"enteringLeavingCriteria": "Entering",
"frequency": 10,
"latitude": -80.88,
"longitude": 41.277,
"radius": 500,
"trackingAccuracy": 10
}
}
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"circleNotificationSubscription": {
"$ref": "#/components/schemas/CircleNotificationSubscription"
}
},
"example": {
"circleNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"checkImmediate": true,
"enteringLeavingCriteria": "Entering",
"frequency": 10,
"latitude": -80.88,
"longitude": 41.277,
"radius": 500,
"trackingAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/circleNotificationSubscription.callbackReference.notifyURL}": {
"post": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "circleNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscriptionNotification": {
"$ref": "#/components/schemas/SubscriptionNotification"
}
},
"example": {
"subscriptionNotification": {
"enteringLeavingCriteria": "Entering",
"isFinalNotification": "false,",
"link": {
"rel": "CircleNotificationSubscription",
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/sub123"
},
"terminalLocation": {
"address": "acr:10.0.0.1",
"currentLocation": {
"accuracy": 100,
"altitude": 1001,
"latitude": -80.86302,
"longitude": 41.277306,
"timestamp": {
"seconds": 1483231138,
"nanoSeconds\"": 0
}
},
"locationRetrievalStatus": "Retrieved"
}
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/area/circle/{subscriptionId}": {
"get": {
"tags": [
"location"
],
"summary": "Retrieve subscription information",
"description": "Get subscription information.",
"operationId": "areaCircleSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"circleNotificationSubscription"
],
"properties": {
"circleNotificationSubscription": {
"$ref": "#/components/schemas/CircleNotificationSubscription"
}
},
"example": {
"circleNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"checkImmediate": true,
"enteringLeavingCriteria": "Entering",
"frequency": 10,
"latitude": -80.88,
"longitude": 41.277,
"radius": 500,
"trackingAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"put": {
"tags": [
"location"
],
"summary": "Updates a subscription information",
"description": "Updates a subscription.",
"operationId": "areaCircleSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"circleNotificationSubscription": {
"$ref": "#/components/schemas/CircleNotificationSubscription"
}
},
"example": {
"circleNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"checkImmediate": true,
"enteringLeavingCriteria": "Entering",
"frequency": 10,
"latitude": -80.88,
"longitude": 41.277,
"radius": 500,
"trackingAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/subscription123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"circleNotificationSubscription": {
"$ref": "#/components/schemas/CircleNotificationSubscription"
}
},
"example": {
"circleNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"checkImmediate": true,
"enteringLeavingCriteria": "Entering",
"frequency": 10,
"latitude": -80.88,
"longitude": 41.277,
"radius": 500,
"trackingAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"412": {
"$ref": "#/components/responses/412"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"delete": {
"tags": [
"location"
],
"summary": "Cancel a subscription",
"description": "Method to delete a subscription.",
"operationId": "areaCircleSubDELETE",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/distance": {
"get": {
"tags": [
"location"
],
"summary": "Retrieves all active subscriptions to distance change notifications",
"description": "This operation is used for retrieving all active subscriptions to a distance change notifications.",
"operationId": "distanceSubListGET",
"responses": {
"200": {
"description": "Response to retrieve area subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"notificationSubscriptionList"
],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"example": {
"notificationSubscriptionList": {
"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,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance/sub123"
}
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance"
}
}
}
}
}
}
}
},
"post": {
"tags": [
"location"
],
"summary": "Creates a subscription for distance change notification",
"description": "Creates a subscription to the Location Service for a distance change notification.",
"operationId": "distanceSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"distanceNotificationSubscription": {
"$ref": "#/components/schemas/DistanceNotificationSubscription"
}
},
"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
}
}
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"distanceNotificationSubscription": {
"$ref": "#/components/schemas/DistanceNotificationSubscription"
}
},
"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,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/distanceNotificationSubscription.callbackReference.notifyURL}": {
"post": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "distanceNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscriptionNotification": {
"$ref": "#/components/schemas/SubscriptionNotification"
}
},
"example": {
"subscriptionNotification": {
"distanceCriteria": "AllWithinDistance",
"isFinalNotification": "false,",
"link": {
"rel": "DistanceNotificationSubscription",
"href": "http://meAppServer.example.com/location/v2/subscriptions/distance/sub123"
},
"terminalLocation": [
{
"address": "acr:10.0.0.1",
"currentLocation": {
"accuracy": 100,
"altitude": 1001,
"latitude": -80.86302,
"longitude": 41.277306,
"timestamp": {
"seconds": 1483231138,
"nanoSeconds\"": 0
}
},
"locationRetrievalStatus": "Retrieved"
},
{
"address": "acr:10.0.0.2",
"currentLocation": {
"accuracy": 100,
"altitude": 1001,
"latitude": -80.86301,
"longitude": 41.277306,
"timestamp": {
"seconds": 1483231138,
"nanoSeconds\"": 0
}
},
"locationRetrievalStatus": "Retrieved"
}
]
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/distance/{subscriptionId}": {
"get": {
"tags": [
"location"
],
"summary": "Retrieve subscription information",
"description": "Get subscription information.",
"operationId": "distanceSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"distanceNotificationSubscription"
],
"properties": {
"distanceNotificationSubscription": {
"$ref": "#/components/schemas/DistanceNotificationSubscription"
}
},
"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,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"put": {
"tags": [
"location"
],
"summary": "Updates a subscription information",
"description": "Updates a subscription.",
"operationId": "distanceSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"distanceNotificationSubscription": {
"$ref": "#/components/schemas/DistanceNotificationSubscription"
}
},
"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,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"distanceNotificationSubscription": {
"$ref": "#/components/schemas/DistanceNotificationSubscription"
}
},
"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,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"412": {
"$ref": "#/components/responses/412"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"delete": {
"tags": [
"location"
],
"summary": "Cancel a subscription",
"description": "Method to delete a subscription.",
"operationId": "distanceSubDELETE",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/periodic": {
"get": {
"tags": [
"location"
],
"summary": "Retrieves all active subscriptions to periodic notifications",
"description": "This operation is used for retrieving all active subscriptions to periodic notifications.",
"operationId": "periodicSubListGET",
"responses": {
"200": {
"description": "Response to retrieve area subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"notificationSubscriptionList"
],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"example": {
"notificationSubscriptionList": {
"periodicNotificationSubscription": [
{
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"frequency": 10,
"requestedAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123"
}
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic"
}
}
}
}
}
}
}
},
"post": {
"tags": [
"location"
],
"summary": "Creates a subscription for periodic notification",
"description": "Creates a subscription to the Location Service for a periodic notification.",
"operationId": "periodicSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"periodicNotificationSubscription": {
"$ref": "#/components/schemas/PeriodicNotificationSubscription"
}
},
"example": {
"periodicNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"frequency": 10,
"requestedAccuracy": 10
}
}
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"periodicNotificationSubscription": {
"$ref": "#/components/schemas/PeriodicNotificationSubscription"
}
},
"example": {
"periodicNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"frequency": 10,
"requestedAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/periodicNotificationSubscription.callbackReference.notifyURL}": {
"post": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "periodicNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscriptionNotification": {
"$ref": "#/components/schemas/SubscriptionNotification"
}
},
"example": {
"subscriptionNotification": {
"isFinalNotification": "false,",
"link": {
"rel": "PeriodicNotificationSubscription",
"href": "http://meAppServer.example.com/location/v2/subscriptions/periodic/sub123"
},
"terminalLocation": {
"address": "acr:10.0.0.1",
"currentLocation": {
"accuracy": 100,
"altitude": 1001,
"latitude": -80.86302,
"longitude": 41.277306,
"timestamp": {
"seconds": 1483231138,
"nanoSeconds\"": 0
}
},
"locationRetrievalStatus": "Retrieved"
}
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/periodic/{subscriptionId}": {
"get": {
"tags": [
"location"
],
"summary": "Retrieve subscription information",
"description": "Get subscription information.",
"operationId": "periodicSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"periodicNotificationSubscription"
],
"properties": {
"periodicNotificationSubscription": {
"$ref": "#/components/schemas/PeriodicNotificationSubscription"
}
},
"example": {
"periodicNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"frequency": 10,
"requestedAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"put": {
"tags": [
"location"
],
"summary": "Updates a subscription information",
"description": "Updates a subscription.",
"operationId": "periodicSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"periodicNotificationSubscription": {
"$ref": "#/components/schemas/PeriodicNotificationSubscription"
}
},
"example": {
"periodicNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"frequency": 10,
"requestedAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"periodicNotificationSubscription": {
"$ref": "#/components/schemas/PeriodicNotificationSubscription"
}
},
"example": {
"periodicNotificationSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"callbackData": "1234",
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:10.0.0.1",
"frequency": 10,
"requestedAccuracy": 10,
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"412": {
"$ref": "#/components/responses/412"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"delete": {
"tags": [
"location"
],
"summary": "Cancel a subscription",
"description": "Method to delete a subscription.",
"operationId": "periodicSubDELETE",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/userTracking": {
"get": {
"tags": [
"location"
],
"summary": "Retrieves all active subscriptions to user tracking notifications",
"description": "This operation is used for retrieving all active subscriptions to user tracking notifications.",
"operationId": "userTrackingSubListGET",
"responses": {
"200": {
"description": "Response to retrieve user tracking subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"notificationSubscriptionList"
],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"example": {
"notificationSubscriptionList": {
"userTrackingSubscription": [
{
"clientCorrelator": "0123",
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/subscription123",
"callbackReference": {
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:192.0.2.1",
"userEventCriteria": [
"Transferring"
]
},
{
"clientCorrelator": "0124",
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/subscription124",
"callbackReference": {
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"address": "acr:192.0.2.2",
"userEventCriteria": [
"Transferring"
]
}
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking"
}
}
}
}
}
}
}
},
"post": {
"tags": [
"location"
],
"summary": "Creates a subscription for user tracking notification",
"description": "Creates a subscription to the Location Service for user tracking change notification.",
"operationId": "userTrackingSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userTrackingSubscription": {
"$ref": "#/components/schemas/UserTrackingSubscription"
}
},
"example": {
"userTrackingSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"address": "acr:10.0.0.1",
"userEventCriteria": [
"Transferring"
]
}
}
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userTrackingSubscription": {
"$ref": "#/components/schemas/UserTrackingSubscription"
}
},
"example": {
"userTrackingSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"address": "acr:10.0.0.1",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/userTrackingSubscription.callbackReference.notifyURL}": {
"post": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "userTrackingNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zonalPresenceNotification": {
"$ref": "#/components/schemas/ZonalPresenceNotification"
}
},
"example": {
"zonalPresenceNotification": {
"clientCorrelator": "0123",
"zoneId": "zone01",
"address": "acr:10.0.0.1",
"userEventType": "Transferring",
"currentAccessPointId": "ap2",
"previousAccessPointId": "ap1",
"timestamp": {
"seconds": 1483231138,
"nanoseconds": 0
},
"link": {
"rel": "UserTrackingSubscription",
"href": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123"
}
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/userTracking/{subscriptionId}": {
"get": {
"tags": [
"location"
],
"summary": "Retrieve subscription information",
"description": "Get subscription information.",
"operationId": "userTrackingSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"userTrackingSubscription"
],
"properties": {
"userTrackingSubscription": {
"$ref": "#/components/schemas/UserTrackingSubscription"
}
},
"example": {
"userTrackingSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"address": "acr:10.0.0.1",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"put": {
"tags": [
"location"
],
"summary": "Updates a subscription information",
"description": "Updates a subscription.",
"operationId": "userTrackingSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userTrackingSubscription": {
"$ref": "#/components/schemas/UserTrackingSubscription"
}
},
"example": {
"userTrackingSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"address": "acr:10.0.0.1",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userTrackingSubscription": {
"$ref": "#/components/schemas/UserTrackingSubscription"
}
}
},
"example": {
"userTrackingSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"address": "acr:10.0.0.1",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123"
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"412": {
"$ref": "#/components/responses/412"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"delete": {
"tags": [
"location"
],
"summary": "Cancel a subscription",
"description": "Method to delete a subscription.",
"operationId": "userTrackingSubDELETE",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/zonalTraffic": {
"get": {
"tags": [
"location"
],
"summary": "Retrieves all active subscriptions to zonal traffic notifications",
"description": "This operation is used for retrieving all active subscriptions to zonal traffic change notifications.",
"operationId": "zonalTrafficSubListGET",
"responses": {
"200": {
"description": "Response to retrieve zonal traffic subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"notificationSubscriptionList"
],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"example": {
"notificationSubscriptionList": {
"zonalTrafficSubscription": [
{
"clientCorrelator": "0123",
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/subscription123",
"callbackReference": {
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"zoneId": "zone01",
"userEventCriteria": [
"Transferring"
]
},
{
"clientCorrelator": "0124",
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/subscription124",
"callbackReference": {
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"zoneId": "zone02",
"userEventCriteria": [
"Transferring"
]
}
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic"
}
}
}
}
}
}
}
},
"post": {
"tags": [
"location"
],
"summary": "Creates a subscription for zonal traffic notification",
"description": "Creates a subscription to the Location Service for zonal traffic change notification.",
"operationId": "zonalTrafficSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zonalTrafficSubscription": {
"$ref": "#/components/schemas/ZonalTrafficSubscription"
}
},
"example": {
"zonalTrafficSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"userEventCriteria": [
"Transferring"
]
}
}
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zonalTrafficSubscription": {
"$ref": "#/components/schemas/ZonalTrafficSubscription"
}
},
"example": {
"zonalTrafficSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/zonalTrafficSubscription.callbackReference.notifyURL}": {
"post": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "zonalTrafficNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zonalPresenceNotification": {
"$ref": "#/components/schemas/ZonalPresenceNotification"
}
},
"example": {
"zonalPresenceNotification": {
"clientCorrelator": "0123",
"zoneId": "zone01",
"address": "acr:10.0.0.1",
"userEventType": "Transferring",
"currentAccessPointId": "ap2",
"previousAccessPointId": "ap1",
"timestamp": {
"seconds": 1483231138,
"nanoseconds": 0
},
"link": {
"rel": "ZonalTrafficSubscription",
"href": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123"
}
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/zonalTraffic/{subscriptionId}": {
"get": {
"tags": [
"location"
],
"summary": "Retrieve subscription information",
"description": "Get subscription information.",
"operationId": "zonalTrafficSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"zonalTrafficSubscription"
],
"properties": {
"zonalTrafficSubscription": {
"$ref": "#/components/schemas/ZonalTrafficSubscription"
}
},
"example": {
"zonalTrafficSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"put": {
"tags": [
"location"
],
"summary": "Updates a subscription information",
"description": "Updates a subscription.",
"operationId": "zonalTrafficSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zonalTrafficSubscription": {
"$ref": "#/components/schemas/ZonalTrafficSubscription"
}
},
"example": {
"zonalTrafficSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zonalTrafficSubscription": {
"$ref": "#/components/schemas/ZonalTrafficSubscription"
}
}
},
"example": {
"zonalTrafficSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"userEventCriteria": [
"Transferring"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123"
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"412": {
"$ref": "#/components/responses/412"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"delete": {
"tags": [
"location"
],
"summary": "Cancel a subscription",
"description": "Method to delete a subscription.",
"operationId": "zonalTrafficSubDELETE",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/zoneStatus": {
"get": {
"tags": [
"location"
],
"summary": "Retrieves all active subscriptions to zone status notifications",
"description": "This operation is used for retrieving all active subscriptions to zone status change notifications.",
"operationId": "zoneStatusSubListGET",
"responses": {
"200": {
"description": "Response to retrieve zone status subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"notificationSubscriptionList"
],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"example": {
"notificationSubscriptionList": {
"zoneStatusSubscription": [
{
"clientCorrelator": "0123",
"resourceURL": "http://example.com/exampleAPI/location/v2/subscriptions/zoneStatus/subscription123",
"callbackReference": {
"notifyURL": "http://clientApp.example.com/location_notifications/123456"
},
"zoneId": "zone01",
"numberOfUsersZoneThreshold": 500,
"operationStatus": [
"Serviceable"
]
}
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zoneStatus"
}
}
}
}
}
}
}
},
"post": {
"tags": [
"location"
],
"summary": "Creates a subscription for zone status notification",
"description": "Creates a subscription to the Location Service for zone status change notification.",
"operationId": "zoneStatusSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneStatusSubscription": {
"$ref": "#/components/schemas/ZoneStatusSubscription"
}
},
"example": {
"zoneStatusSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"numberOfUsersZoneThreshold": 500,
"operationStatus": [
"Serviceable"
]
}
}
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneStatusSubscription": {
"$ref": "#/components/schemas/ZoneStatusSubscription"
}
},
"example": {
"zoneStatusSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"numberOfUsersZoneThreshold": 500,
"operationStatus": [
"Serviceable"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zoneStatus/sub123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/zoneStatusSubscription.callbackReference.notifyURL}": {
"post": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "zoneStatusNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneStatusNotification": {
"$ref": "#/components/schemas/ZoneStatusNotification"
}
},
"example": {
"zoneStatusNotification": {
"clientCorrelator": "0123",
"zoneId": "zone01",
"accessPointId": "poa1",
"operationStatus": "Serviceable",
"numberOfUsersInZone": "20",
"numberOfUsersInAP": "12",
"timestamp": {
"seconds": 1483231138,
"nanoseconds": 0
},
"link": {
"rel": "ZoneStatusSubscription",
"href": "http://meAppServer.example.com/location/v2/subscriptions/zoneStatus/sub123"
}
}
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/zoneStatus/{subscriptionId}": {
"get": {
"tags": [
"location"
],
"summary": "Retrieve subscription information",
"description": "Get subscription information.",
"operationId": "zoneStatusSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"zoneStatusSubscription"
],
"properties": {
"zoneStatusSubscription": {
"$ref": "#/components/schemas/ZoneStatusSubscription"
}
},
"example": {
"zoneStatusSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"numberOfUsersZoneThreshold": 500,
"operationStatus": [
"Serviceable"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zoneStatus/sub123"
}
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"put": {
"tags": [
"location"
],
"summary": "Updates a subscription information",
"description": "Updates a subscription.",
"operationId": "zoneStatusSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneStatusSubscription": {
"$ref": "#/components/schemas/ZoneStatusSubscription"
}
},
"example": {
"zoneStatusSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"numberOfUsersZoneThreshold": 500,
"operationStatus": [
"Serviceable"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zoneStatus/sub123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to subscription notifications",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"zoneStatusSubscription": {
"$ref": "#/components/schemas/ZoneStatusSubscription"
}
}
},
"example": {
"zoneStatusSubscription": {
"clientCorrelator": "0123",
"callbackReference": {
"notifyURL": "http://my.callback.com/location_notifications/some-id"
},
"zoneId": "zone01",
"numberOfUsersZoneThreshold": 500,
"operationStatus": [
"Serviceable"
],
"resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/zoneStatus/sub123"
}
}
}
}
},
"400": {
"$ref": "#/components/responses/400"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"406": {
"$ref": "#/components/responses/406"
},
"412": {
"$ref": "#/components/responses/412"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
},
"delete": {
"tags": [
"location"
],
"summary": "Cancel a subscription",
"description": "Method to delete a subscription.",
"operationId": "zoneStatusSubDELETE",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204"
},
"401": {
"$ref": "#/components/responses/401"
},
"403": {
"$ref": "#/components/responses/403"
},
"404": {
"$ref": "#/components/responses/404"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"x-swagger-router-controller": "subscriptions"
}
}
},
"components": {
"responses": {
"200": {
"description": "OK"
},
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized : used when the client did not submit credentials.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden : operation is not allowed given the current status of the resource.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"414": {
"description": "URI Too Long : used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
},
"example": {
"application/problem+json": {
"type": "https://meAppServer.example.com/rni/v2/probs/too-many targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
}
},
"429": {
"description": "Too Many Requests : used when a rate limiter has triggered.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"parameters": {
"Path.AccessPointId": {
"name": "accessPointId",
"in": "path",
"description": "Identifier of access Point",
"required": true,
"schema": {
"type": "string"
},
"x-exportParamName": "AccessPointId"
},
"Path.SubscrId": {
"name": "subscriptionId",
"in": "path",
"description": "Subscription Identifier, specifically the \"self\" returned in the subscription request",
"required": true,
"schema": {
"type": "string",
"format": "uri"
},
"x-exportParamName": "SubscriptionId"
},
"Path.ZoneId": {
"name": "zoneId",
"in": "path",
"description": "Indentifier of zone",
"required": true,
"schema": {
"type": "string"
},
"x-exportParamName": "ZoneId"
},
"Query.AccessPointId": {
"name": "accessPointId",
"in": "query",
"description": "Identifier of access point",
"required": false,
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"x-exportParamName": "AccessPointId"
},
"Query.Address": {
"name": "address",
"in": "query",
"description": "address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
"required": false,
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"x-exportParamName": "Address"
},
"Query.AddressMandatory": {
"name": "address",
"in": "query",
"description": "address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"x-exportParamName": "AddressMandatory"
},
"Query.InterestRealm": {
"name": "interestRealm",
"in": "query",
"description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).",
"required": false,
"schema": {
"type": "string"
},
"x-exportParamName": "InterestRealm"
},
"Query.Latitude": {
"name": "latitude",
"in": "query",
"description": "Latitude geo position",
"required": false,
"schema": {
"type": "number",
"format": "float"
},
"x-exportParamName": "Latitude"
},
"Query.Longitude": {
"name": "longitude",
"in": "query",
"description": "Longitude geo position",
"required": false,
"schema": {
"type": "number",
"format": "float"
},
"x-exportParamName": "Longitude"
},
"Query.Requester": {
"name": "requester",
"in": "query",
"description": "Entity that is requesting the information",
"required": false,
"schema": {
"type": "string"
},
"x-exportParamName": "Requester"
},
"Query.ZoneId": {
"name": "zoneId",
"in": "query",
"description": "Identifier of zone",
"required": false,
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"x-exportParamName": "ZoneId"
}
},
"schemas": {
"AccessPointInfo": {
"description": "A type containing access point information.",
"properties": {
"accessPointId": {
"description": "Identifier of access point.",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
},
"connectionType": {
"$ref": "#/components/schemas/ConnectionType"
},
"interestRealm": {
"description": "Interest realm of access point.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"locationInfo": {
"$ref": "#/components/schemas/LocationInfo"
},
"numberOfUsers": {
"description": "Number of users currently on the access point.",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "integer"
},
"operationStatus": {
"$ref": "#/components/schemas/OperationStatus"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"timezone": {
"description": "Time zone of access point.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "dateTimeStamp"
}
},
"required": [
"accessPointId",
"connectionType",
"operationStatus",
"numberOfUsers",
"resourceURL"
],
"type": "object"
},
"AccessPointList": {
"description": "A type containing list of access points.",
"properties": {
"accessPoint": {
"description": "Collection of the access point information list.",
"items": {
"$ref": "#/components/schemas/AccessPointInfo"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "AccessPointInfo"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"zoneId",
"resourceURL"
],
"type": "object"
},
"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": {
"$ref": "#/components/schemas/NotificationFormat"
},
"notifyURL": {
"description": "Notify Callback URL",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "anyURI"
}
},
"required": [
"notifyURL"
],
"type": "object"
},
"CircleNotificationSubscription": {
"description": "A type containing data for notifications, when the area is defined as a circle.",
"properties": {
"address": {
"description": "Address of terminals 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"
},
"callbackReference": {
"$ref": "#/components/schemas/CallbackReference"
},
"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"
},
"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"
},
"enteringLeavingCriteria": {
"$ref": "#/components/schemas/EnteringLeavingCriteria"
},
"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"
},
"latitude": {
"description": "Latitude of center point.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "float"
},
"link": {
"description": "Link to other resources that are in relationship with the resource.",
"items": {
"$ref": "#/components/schemas/Link"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"longitude": {
"description": "Longitude of center point.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "float"
},
"radius": {
"description": "Radius circle around center point in meters.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "float"
},
"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",
"address",
"latitude",
"longitude",
"radius",
"trackingAccuracy",
"enteringLeavingCriteria",
"checkImmediate",
"frequency"
],
"type": "object"
},
"ConnectionType": {
"description": "The connection type for the access point",
"enum": [
"Femto",
"LTE-femto",
"Smallcell",
"LTE-smallcell",
"Wifi",
"Pico",
"Micro",
"Macro",
"Wimax",
"Unknown"
],
"type": "string"
},
"DistanceCriteria": {
"enum": [
"AllWithinDistance",
"AnyWithinDistance",
"AllBeyondDistance",
"AnyBeyondDistance"
],
"type": "string"
},
"DistanceNotificationSubscription": {
"description": "A type containing data for distance subscription, with reference to other devices.",
"properties": {
"callbackReference": {
"$ref": "#/components/schemas/CallbackReference"
},
"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": {
"$ref": "#/components/schemas/DistanceCriteria"
},
"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": {
"$ref": "#/components/schemas/Link"
},
"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"
},
"EnteringLeavingCriteria": {
"enum": [
"Entering",
"Leaving"
],
"type": "string"
},
"Link": {
"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"
},
"LocationInfo": {
"properties": {
"accuracy": {
"description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"accuracyAltitude": {
"description": "Altitude accuracy / uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"accuracySemiMinor": {
"description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"altitude": {
"description": "Location altitude relative to the WGS84 ellipsoid surface.",
"format": "float",
"type": "number",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Float"
},
"confidence": {
"description": "Confidence by which the position of a target entity is known to be within the shape description, expressed as a percentage and defined in [14]. Present only if \"shape\" equals 1, 4 or 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"includedAngle": {
"description": "Present only if \"shape\" equals 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"innerRadius": {
"description": "Present only if \"shape\" equals 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"latitude": {
"description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.",
"items": {
"format": "float",
"type": "number"
},
"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": {
"format": "float",
"type": "number"
},
"minItems": 1,
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "Float"
},
"offsetAngle": {
"description": "Present only if \"shape\" equals 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"orientationMajorAxis": {
"description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in [14]. Present only if \"shape\" equals 4 or 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"shape": {
"description": "Shape information, as detailed in [14], associated with the reported location coordinate: <p>1 = ELLIPSOID_ARC <p>2 = ELLIPSOID_POINT <p>3 = ELLIPSOID_POINT_ALTITUDE <p>4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID <p>5 = ELLIPSOID_POINT_UNCERT_CIRCLE <p>6 = ELLIPSOID_POINT_UNCERT_ELLIPSE <p>7 = POLYGON",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Enum_inlined"
},
"timestamp": {
"$ref": "#/components/schemas/TimeStamp"
},
"uncertaintyRadius": {
"description": "Present only if \"shape\" equals 6",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"velocity": {
"description": "Structure with attributes relating to the target entity’s velocity, as defined in [14].",
"properties": {
"bearing": {
"description": "Bearing, expressed in the range 0° to 360°, as defined in [14].",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"horizontalSpeed": {
"description": "Horizontal speed, expressed in km/h and defined in [14].",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"uncertainty": {
"description": "Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
},
"velocityType": {
"description": "Velocity information, as detailed in [14], associated with the reported location coordinate: <p>1 = HORIZONTAL <p>2 = HORIZONTAL_VERTICAL <p>3 = HORIZONTAL_UNCERT <p>4 = HORIZONTAL_VERTICAL_UNCERT",
"type": "integer",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "Enum_inlined"
},
"verticalSpeed": {
"description": "Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Int"
},
"verticalUncertainty": {
"description": "Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "UnsignedInt"
}
},
"required": [
"velocityType",
"bearing",
"horizontalSpeed"
],
"type": "object",
"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"
},
"NotificationFormat": {
"enum": [
"XML",
"JSON"
],
"type": "string"
},
"NotificationSubscriptionList": {
"properties": {
"circleNotificationSubscription": {
"description": "Collection of CircleNotificationSubscription elements, see note 2.",
"items": {
"$ref": "#/components/schemas/CircleNotificationSubscription"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0.. N",
"x-etsi-mec-origin-type": "CircleNotificationSubscription"
},
"distanceNotificationSubscription": {
"description": "Collection of DistanceNotificationSubscription elements, see note 2.",
"items": {
"$ref": "#/components/schemas/DistanceNotificationSubscription"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0.. N",
"x-etsi-mec-origin-type": "DistanceNotificationSubscription"
},
"periodicNotificationSubscription": {
"description": "Collection of PeriodicNotificationSubscription elements, see note 2.",
"items": {
"$ref": "#/components/schemas/PeriodicNotificationSubscription"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0.. N",
"x-etsi-mec-origin-type": "PeriodicNotificationSubscription"
},
"resourceURL": {
"description": "Self-referring URL, see note 1.",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "AnyURI"
},
"userTrackingSubscription": {
"description": "Collection of UserTrackingSubscription elements, see note 1.",
"items": {
"$ref": "#/components/schemas/UserTrackingSubscription"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0.. N",
"x-etsi-mec-origin-type": "UserTrackingSubscription"
},
"zonalTrafficSubscription": {
"description": "Collection of ZonalTrafficSubscription elements, see note 1.",
"items": {
"$ref": "#/components/schemas/ZonalTrafficSubscription"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0.. N",
"x-etsi-mec-origin-type": "ZonalTrafficSubscription"
},
"zoneStatusSubscription": {
"description": "Collection of ZoneStatusSubscription elements, see note 1.",
"items": {
"$ref": "#/components/schemas/ZoneStatusSubscription"
},
"minItems": 0,
"type": "array",
"x-etsi-mec-cardinality": "0.. N",
"x-etsi-mec-origin-type": "ZoneStatusSubscription"
}
},
"required": [
"resourceURL"
],
"type": "object",
"x-etsi-notes": "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7.",
"x-etsi-ref": "6.3.3"
},
"OperationStatus": {
"enum": [
"Serviceable",
"Unserviceable",
"Unknown"
],
"type": "string"
},
"PeriodicNotificationSubscription": {
"description": "A type containing data for periodic subscription.",
"properties": {
"address": {
"description": "Address of terminals 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"
},
"callbackReference": {
"$ref": "#/components/schemas/CallbackReference"
},
"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"
},
"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 (can also be considered minimum time between notifications) per subscription.",
"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": {
"$ref": "#/components/schemas/Link"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"requestedAccuracy": {
"description": "Accuracy of the provided distance in meters.",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "int"
},
"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"
}
},
"required": [
"callbackReference",
"address",
"requestedAccuracy",
"frequency"
],
"type": "object"
},
"ProblemDetails": {
"properties": {
"detail": {
"description": "A human-readable explanation specific to this occurrence of the problem",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"instance": {
"description": "A URI reference that identifies the specific occurrence of the problem",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
},
"status": {
"description": "The HTTP status code for this occurrence of the problem",
"format": "uint32",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "Uint32"
},
"title": {
"description": "A short, human-readable summary of the problem type",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "String"
},
"type": {
"description": "A URI reference according to IETF RFC 3986 that identifies the problem type",
"format": "uri",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "URI"
}
},
"type": "object"
},
"RetrievalStatus": {
"enum": [
"Retrieved",
"NotRetrieved",
"Error"
],
"type": "string"
},
"ServiceError": {
"description": "used to indicate a notification termination or cancellation.",
"properties": {
"messageId": {
"description": "Message identifier, either with prefix SVC or with prefix POL",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
},
"text": {
"description": "Message text, with replacement variables marked with %n, where n is an index into the list of <variables> elements, starting at 1",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
},
"variables": {
"description": "Variables to substitute into text string",
"items": {
"type": "string"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"messageId",
"text"
],
"type": "object"
},
"SubscriptionCancellationNotification": {
"description": "A type containing the subscription cancellation notification.",
"properties": {
"address": {
"description": "Address of terminal if the error applies to an individual terminal.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "anyURI"
},
"callbackData": {
"description": "CallbackData if passed by the application in the receiptRequest element during the associated subscription operation",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"link": {
"description": "Link to other resources that are in relationship with the resource.",
"items": {
"$ref": "#/components/schemas/Link"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"reason": {
"$ref": "#/components/schemas/ServiceError"
}
},
"required": [
"terminalLocation"
],
"type": "object"
},
"SubscriptionNotification": {
"description": "A type containing the notification subscription.",
"properties": {
"callbackData": {
"description": "CallbackData if passed by the application in the receiptRequest element during the associated subscription operation",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"distanceCriteria": {
"$ref": "#/components/schemas/DistanceCriteria"
},
"enteringLeavingCriteria": {
"$ref": "#/components/schemas/EnteringLeavingCriteria"
},
"isFinalNotification": {
"description": "Set to true if it is a final notification about location change.",
"type": "boolean",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "boolean"
},
"link": {
"description": "Link to other resources that are in relationship with the resource.",
"items": {
"$ref": "#/components/schemas/Link"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"terminalLocation": {
"description": "Collection of the terminal locations.",
"items": {
"$ref": "#/components/schemas/TerminalLocation"
},
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "TerminalLocation"
}
},
"required": [
"terminalLocation"
],
"type": "object"
},
"TerminalDistance": {
"description": "A type containing information about the distance from a terminal to a location or between two terminals, in addition the accuracy and a timestamp of the information are provided.",
"properties": {
"accuracy": {
"description": "Accuracy of the provided distance in meters",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "integer"
},
"distance": {
"description": "Distance from terminal to a location or between two terminals specified in meters",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "integer"
},
"timestamp": {
"$ref": "#/components/schemas/TimeStamp"
}
},
"required": [
"distance"
],
"type": "object"
},
"TerminalLocation": {
"description": "A type containing device address, retrieval status and location information.",
"properties": {
"address": {
"description": "Address of the terminal to which the location information applies (e.g., 'sip' URI, 'tel' URI, 'acr' URI).",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"currentLocation": {
"$ref": "#/components/schemas/LocationInfo"
},
"errorInformation": {
"$ref": "#/components/schemas/ServiceError"
},
"locationRetrievalStatus": {
"$ref": "#/components/schemas/RetrievalStatus"
}
},
"required": [
"address",
"locationRetrievalStatus"
],
"type": "object"
},
"TerminalLocationList": {
"description": "Collection of the terminal locations.",
"items": {
"$ref": "#/components/schemas/TerminalLocation"
},
"type": "array",
"x-etsi-mec-cardinality": "1..N",
"x-etsi-mec-origin-type": "TerminalLocation"
},
"TimeStamp": {
"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"
},
"UserEventType": {
"enum": [
"Entering",
"Leaving",
"Transferring"
],
"type": "string"
},
"UserInfo": {
"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"
},
"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": {
"$ref": "#/components/schemas/LocationInfo"
},
"resourceURL": {
"description": "Self-referring URL, see note 1.",
"type": "string",
"x-etsi-mec-cardinality": "1",
"x-etsi-mec-origin-type": "String"
},
"timestamp": {
"$ref": "#/components/schemas/TimeStamp"
},
"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"
],
"type": "object",
"x-etsi-notes": "NOTE 1:\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"
},
"UserList": {
"description": "A type containing list of users.",
"properties": {
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"user": {
"description": "Collection of the zone information list.",
"items": {
"$ref": "#/components/schemas/UserInfo"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "UserInfo"
}
},
"required": [
"resourceURL"
],
"type": "object"
},
"UserTrackingSubscription": {
"description": "A type containing user tracking subscription.",
"properties": {
"address": {
"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"callbackReference": {
"$ref": "#/components/schemas/CallbackReference"
},
"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"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "anyURI"
},
"userEventCriteria": {
"description": "List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event.",
"items": {
"$ref": "#/components/schemas/UserEventType"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "UserEventType"
}
},
"required": [
"callbackReference",
"address"
],
"type": "object"
},
"ZonalPresenceNotification": {
"description": "A type containing zonal presence notification",
"properties": {
"address": {
"description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"callbackData": {
"description": "CallBackData if passed by the application during the associated ZonalTrafficSubscription and UserTrackingSubscription operation. See [REST_NetAPI_Common].",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"currentAccessPointId": {
"description": "Identifier of access point.",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
},
"interestRealm": {
"description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"link": {
"description": "Link to other resources that are in relationship with this notification. The server SHOULD include a link to the related subscription. No other links are required or suggested by this specification",
"items": {
"$ref": "#/components/schemas/Link"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"previousAccessPointId": {
"description": "Identifier of access point.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"timestamp": {
"$ref": "#/components/schemas/TimeStamp"
},
"userEventType": {
"$ref": "#/components/schemas/UserEventType"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"zoneId",
"address",
"userEventType",
"currentAccessPointId",
"timestamp"
],
"type": "object"
},
"ZonalTrafficSubscription": {
"description": "A type containing zonal traffic subscription",
"properties": {
"callbackReference": {
"$ref": "#/components/schemas/CallbackReference"
},
"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"
},
"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": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "unsignedInt"
},
"interestRealm": {
"description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).",
"items": {
"type": "string"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "string"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "anyURI"
},
"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.",
"items": {
"$ref": "#/components/schemas/UserEventType"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "UserEventType"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"callbackReference",
"zoneId"
],
"type": "object"
},
"ZoneInfo": {
"description": "A type containing zone information.",
"properties": {
"numberOfAccessPoints": {
"description": "The number of access points within the zone",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "unsignedInt"
},
"numberOfUnserviceableAccessPoints": {
"description": "Number of inoperable access points within the zone.",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "unsignedInt"
},
"numberOfUsers": {
"description": "The number of users currently on the access point.",
"type": "integer",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "unsignedInt"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"zoneId",
"numberOfAccessPoints",
"numberOfUnserviceableAccessPoints",
"numberOfUsers",
"resourceURL"
],
"type": "object"
},
"ZoneList": {
"description": "A type containing a list of zones.",
"properties": {
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "anyURI"
},
"zone": {
"description": "Collection of the zone information list.",
"items": {
"$ref": "#/components/schemas/ZoneInfo"
},
"type": "array"
}
},
"required": [
"resourceURL"
],
"type": "object"
},
"ZoneStatusNotification": {
"description": "A type containing zone status notification.",
"properties": {
"accessPointId": {
"description": "Identifier of an access point.",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"callbackData": {
"description": "CallBackData if passed by the application during the associated ZoneStatusSubscription operation. See [REST_NetAPI_Common].",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "string"
},
"link": {
"description": "Link to other resources that are in relationship with this notification. The server SHOULD include a link to the related subscription. No other links are required or suggested by this specification",
"items": {
"$ref": "#/components/schemas/Link"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "Link"
},
"numberOfUsersInAP": {
"description": "This element shall be present when ZoneStatusSubscription includes numberOfUsersAPThreshold element and the number of users in an access point exceeds the threshold defined in the subscription.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "unsignedInt"
},
"numberOfUsersInZone": {
"description": "This element shall be present when ZoneStatusSubscription includes numberOfUsersZoneThreshold element and the number of users in a zone exceeds the threshold defined in this subscription.",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "unsignedInt"
},
"operationStatus": {
"$ref": "#/components/schemas/OperationStatus"
},
"timestamp": {
"$ref": "#/components/schemas/TimeStamp"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"zoneId",
"timestamp"
],
"type": "object"
},
"ZoneStatusSubscription": {
"description": "A type containing zone status subscription.",
"properties": {
"callbackReference": {
"$ref": "#/components/schemas/CallbackReference"
},
"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"
},
"numberOfUsersAPThreshold": {
"description": "Threshold number of users in an access point which if crossed shall cause a notification",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "unsignedInt"
},
"numberOfUsersZoneThreshold": {
"description": "Threshold number of users in a zone which if crossed shall cause a notification",
"type": "integer",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "unsignedInt"
},
"operationStatus": {
"description": "List of operation status values to generate notifications for (these apply to all access points within a zone).",
"items": {
"$ref": "#/components/schemas/OperationStatus"
},
"type": "array",
"x-etsi-mec-cardinality": "0..N",
"x-etsi-mec-origin-type": "OperationStatus"
},
"resourceURL": {
"description": "Self referring URL",
"type": "string",
"x-etsi-mec-cardinality": "0..1",
"x-etsi-mec-origin-type": "anyURI"
},
"zoneId": {
"description": "Identifier of zone",
"type": "string",
"x-etsi-mec-cardinality": 1,
"x-etsi-mec-origin-type": "string"
}
},
"required": [
"callbackReference",
"zoneId"
],
"type": "object"
}
}
}
}
...@@ -37,9 +37,11 @@ module LocationAPI_Functions { ...@@ -37,9 +37,11 @@ module LocationAPI_Functions {
import from LibMec_Pics all; import from LibMec_Pics all;
import from LibMec_Pixits all; import from LibMec_Pixits all;
function f_create_user_tracking_subscription( function f_create_user_location_event_subscription(
out UserTrackingSubscription p_user_tracking_subscription out UserLocationEventNotification p_user_location_event_notification,
) runs on HttpComponent { out charstring p_subscription_id,
in Address p_address := PX_USER
) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
...@@ -47,75 +49,77 @@ module LocationAPI_Functions { ...@@ -47,75 +49,77 @@ module LocationAPI_Functions {
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_post( m_http_request_post(
PICS_ROOT_API & PX_ME_APP_Q_USERS_LOC_SUB_URI, PICS_ROOT_API & PX_LOC_API_USERS_SUB_URI,
v_headers, v_headers,
m_http_message_body_json( m_http_message_body_json(
m_body_json_user_tracking_subscription( m_body_json_user_location_event_subscription(
m_user_tracking_subscription( m_user_location_event_subscription(
PX_CLIENT_ID, PX_CALLBACK_REF_URL,
PX_CALLBACK_REF_URL, p_address
PX_USER ))))));
))))));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_201_created( mw_http_response_201_created(
mw_http_message_body_json( mw_http_message_body_json(
mw_body_json_user_tracking_subscription( mw_body_json_user_location_event_notification(
mw_user_tracking_subscription( mw_user_location_event_notification(
PX_CLIENT_ID, p_address
PX_CALLBACK_REF_URL, )))))) -> value v_response {
PX_USER
)))))) -> value v_response {
tc_ac.stop; tc_ac.stop;
p_user_tracking_subscription := v_response.response.body.json_body.userTrackingSubscription; // Extract HTTP Location header
log("f_create_user_tracking_subscription: INFO: IUT successfully responds to the subscription: ", p_user_tracking_subscription); var charstring_list v_subscription_id;
f_get_header(v_response.response.header, "Location", v_subscription_id);
// Extract HTTP subssription id
p_subscription_id := regexp(
v_subscription_id[0],
"?+" & PX_LOC_API_USERS_SUB_URI & "/(?*)",
0
);
p_user_location_event_notification := v_response.response.body.json_body.userLocationEventNotification;
log("f_create_user_location_event_subscription: INFO: IUT successfully responds to the subscription: ", p_user_location_event_notification);
log("f_create_user_location_event_subscription: INFO: p_subscription_id: ", p_subscription_id);
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_create_user_tracking_subscription: INCONC: Expected message not received"); log("f_create_user_location_event_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_create_user_tracking_subscription } // End of function f_create_user_location_event_subscription
function f_delete_user_tracking_subscription( function f_delete_user_location_event_subscription(
in UserTrackingSubscription p_user_tracking_subscription in charstring p_subscription_id
) runs on HttpComponent { ) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response;
var charstring v_uri :=regexp(
oct2char(unichar2oct(p_user_tracking_subscription.resourceURL)),
"?+" & PX_ME_APP_Q_USERS_LOC_SUB_URI & "/(?*)",
0
);
f_init_default_headers_list(-, -, v_headers); f_init_default_headers_list(-, -, v_headers);
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_delete( m_http_request_delete(
PICS_ROOT_API & PX_ME_APP_Q_USERS_LOC_SUB_URI & "/" & v_uri, PICS_ROOT_API & PX_LOC_API_USERS_SUB_URI & "/" & p_subscription_id,
v_headers v_headers
))); )));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_204_no_content mw_http_response_204_no_content
)) { )) {
tc_ac.stop; tc_ac.stop;
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_delete_user_tracking_subscription: INCONC: Expected message not received"); log("f_delete_user_location_event_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_delete_user_tracking_subscription } // End of function f_delete_user_location_event_subscription
function f_create_periodic_notification_subscription( function f_create_user_location_periodic_subscription(
out PeriodicNotificationSubscription p_periodic_notification_subscription out UserLocationPeriodicNotification p_user_location_periodic_notification,
) runs on HttpComponent { out charstring p_subscription_id
) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
...@@ -123,58 +127,55 @@ module LocationAPI_Functions { ...@@ -123,58 +127,55 @@ module LocationAPI_Functions {
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_post( m_http_request_post(
PICS_ROOT_API & PX_ME_APP_Q_USERS_TRACK_SUB_URI, PICS_ROOT_API & PX_LOC_API_USERS_SUB_URI,
v_headers, v_headers,
m_http_message_body_json( m_http_message_body_json(
m_body_json_periodic_notification_subscription( m_body_json_user_location_periodic_subscription(
m_periodic_notification_subscription( m_user_location_periodic_subscription(
{ PX_IP_ADDRESS }, PX_CALLBACK_REF_URL
PX_CALLBACK_REF_URL, ))))));
-, -,
PX_USER
))))));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_201_created( mw_http_response_201_created(
mw_http_message_body_json( mw_http_message_body_json(
mw_body_json_periodic_notification_subscription( mw_body_json_user_location_periodic_notification(
mw_periodic_notification_subscription( mw_user_location_periodic_notification(
{ PX_IP_ADDRESS }, PX_CALLBACK_REF_URL
PX_CALLBACK_REF_URL, )))))) -> value v_response {
-, -,
PX_USER,
?
)))))) -> value v_response {
tc_ac.stop; tc_ac.stop;
p_periodic_notification_subscription := v_response.response.body.json_body.periodicNotificationSubscription; // Extract HTTP Location header
log("f_create_periodic_notification_subscription: INFO: IUT successfully responds to the subscription: ", p_periodic_notification_subscription); var charstring_list v_subscription_id;
f_get_header(v_response.response.header, "Location", v_subscription_id);
// Extract HTTP subssription id
p_subscription_id := regexp(
v_subscription_id[0],
"?+" & PX_LOC_API_USERS_SUB_URI & "/(?*)",
0
);
p_user_location_periodic_notification := v_response.response.body.json_body.userLocationPeriodicNotification;
log("f_create_user_location_periodic_subscription: INFO: IUT successfully responds to the subscription: ", p_user_location_periodic_notification);
log("f_create_user_location_periodic_subscription: INFO: p_subscription_id: ", p_subscription_id);
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_create_periodic_notification_subscription: INCONC: Expected message not received"); log("f_create_user_location_periodic_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_create_periodic_notification_subscription } // End of function f_create_user_location_periodic_subscription
function f_delete_periodic_notification_subscription( function f_delete_user_location_periodic_subscription(
in PeriodicNotificationSubscription p_position_notification_subscription in charstring p_subscription_id
) runs on HttpComponent { ) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response;
var charstring v_uri := regexp(
oct2char(unichar2oct(p_position_notification_subscription.resourceURL)),
"?+" & PX_ME_APP_Q_USERS_TRACK_SUB_URI & "/(?*)",
0
);
f_init_default_headers_list(-, -, v_headers); f_init_default_headers_list(-, -, v_headers);
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_delete( m_http_request_delete(
PICS_ROOT_API & PX_ME_APP_Q_USERS_TRACK_SUB_URI & "/" & v_uri, PICS_ROOT_API & PX_LOC_API_USERS_SUB_URI & "/" & p_subscription_id,
v_headers v_headers
))); )));
tc_ac.start; tc_ac.start;
...@@ -186,14 +187,16 @@ module LocationAPI_Functions { ...@@ -186,14 +187,16 @@ module LocationAPI_Functions {
tc_ac.stop; tc_ac.stop;
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_delete_periodic_notification_subscription: INCONC: Expected message not received"); log("f_delete_user_location_periodic_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_delete_periodic_notification_subscription } // End of function f_delete_user_location_periodic_subscription
function f_create_zonal_traffic_subscription( function f_create_zone_location_event_subscription(
out ZonalTrafficSubscription p_zonal_traffic_subscription out ZoneLocationEventNotification p_zone_location_event_notification,
) runs on HttpComponent { out charstring p_subscription_id,
in Address p_user := PX_USER
) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
...@@ -201,55 +204,58 @@ module LocationAPI_Functions { ...@@ -201,55 +204,58 @@ module LocationAPI_Functions {
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_post( m_http_request_post(
PICS_ROOT_API & PX_ME_APP_Q_USERS_INF_SUB_URI, PICS_ROOT_API & PX_LOC_API_ZONES_SUB_URI,
v_headers, v_headers,
m_http_message_body_json( m_http_message_body_json(
m_body_json_zonal_traffic_subscription( m_body_json_zone_location_event_subscription(
m_zonal_traffic_subscription( m_zone_location_event_subscription(
PX_CLIENT_ID, PX_CALLBACK_REF_URL,
PX_CALLBACK_REF_URL, p_user,
PX_ZONE_ID PX_ZONE_ID
)))))); ))))));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_201_created( mw_http_response_201_created(
mw_http_message_body_json( mw_http_message_body_json(
mw_body_json_zonal_traffic_subscription( mw_body_json_zone_location_event_notification(
mw_zonal_traffic_subscription( mw_zone_location_event_notification(
PX_CLIENT_ID, // FIXME
PX_CALLBACK_REF_URL, )))))) -> value v_response {
PX_ZONE_ID tc_ac.stop;
)))))) -> value v_response {
tc_ac.stop;
p_zonal_traffic_subscription := v_response.response.body.json_body.zonalTrafficSubscription; // Extract HTTP Location header
log("f_create_zonal_traffic_subscription: INFO: IUT successfully responds to the subscription: ", p_zonal_traffic_subscription); var charstring_list v_subscription_id;
f_get_header(v_response.response.header, "Location", v_subscription_id);
// Extract HTTP subssription id
p_subscription_id := regexp(
v_subscription_id[0],
"?+" & PX_LOC_API_ZONES_SUB_URI & "/(?*)",
0
);
p_zone_location_event_notification := v_response.response.body.json_body.zoneLocationEventNotification;
log("f_create_zone_location_event_subscription: INFO: IUT successfully responds to the subscription: ", p_zone_location_event_notification);
log("f_create_zone_location_event_subscription: INFO: p_subscription_id: ", p_subscription_id);
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_create_zonal_traffic_subscription: INCONC: Expected message not received"); log("f_create_zone_location_event_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_create_zonal_traffic_subscription } // End of function f_create_zone_location_event_subscription
function f_delete_zonal_traffic_subscription( function f_delete_zone_location_event_subscription(
in ZonalTrafficSubscription p_zonal_traffic_subscription in charstring p_subscription_id
) runs on HttpComponent { ) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
var charstring v_uri := regexp(
oct2char(unichar2oct(p_zonal_traffic_subscription.resourceURL)),
"?+" & PX_ME_APP_Q_USERS_INF_SUB_URI & "/(?*)",
0
);
f_init_default_headers_list(-, -, v_headers); f_init_default_headers_list(-, -, v_headers);
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_delete( m_http_request_delete(
PICS_ROOT_API & PX_ME_APP_Q_USERS_INF_SUB_URI & "/" & v_uri, PICS_ROOT_API & PX_LOC_API_ZONES_SUB_URI & "/" & p_subscription_id,
v_headers v_headers
))); )));
tc_ac.start; tc_ac.start;
...@@ -261,14 +267,18 @@ module LocationAPI_Functions { ...@@ -261,14 +267,18 @@ module LocationAPI_Functions {
tc_ac.stop; tc_ac.stop;
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_delete_zonal_traffic_subscription: INCONC: Expected message not received"); log("f_delete_zone_location_event_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_delete_zonal_traffic_subscription } // End of function f_delete_zone_location_event_subscription
function f_create_circle_notification_subscription( function f_create_zone_status_subscription(
out CircleNotificationSubscription p_circle_notification_subscription out ZoneStatusNotification p_zone_status_notification,
) runs on HttpComponent { out charstring p_subscription_id,
in template (omit) OperationStatus p_operationStatus := Serviceable,
in template (omit) Json.UInteger p_upper_num_user_threshold := omit,
in template (omit) Json.UInteger p_lower_num_user_threshold := omit
) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
...@@ -276,53 +286,146 @@ module LocationAPI_Functions { ...@@ -276,53 +286,146 @@ module LocationAPI_Functions {
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_post( m_http_request_post(
PICS_ROOT_API & PX_ME_APP_Q_AREA_SUB_URI, PICS_ROOT_API & PX_LOC_API_ZONES_SUB_URI,
v_headers, v_headers,
m_http_message_body_json( m_http_message_body_json(
m_body_json_circle_notification_subscription( m_body_json_zone_status_subscription(
m_circle_notification_subscription( m_zone_status_subscription(
PX_CLIENT_ID, //clientCorrelator PX_AREA_SUB_CALLBACK_URI,
PX_AREA_SUB_CALLBACK_URI, // callbackReference -,
{ PX_IP_ADDRESS } // address PX_ZONE_ID,
)))))); -, -, -, -, -,
p_upper_num_user_threshold,
p_lower_num_user_threshold,
p_operationStatus
))))));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_201_created( mw_http_response_201_created(
mw_http_message_body_json( mw_http_message_body_json(
mw_body_json_circle_notification_subscription( mw_body_json_zone_status_notification(
mw_circle_notification_subscription( mw_zone_status_notification(
PX_CLIENT_ID -, -,
)))))) -> value v_response { p_operationStatus,
-,
PX_ZONE_ID
)))))) -> value v_response {
tc_ac.stop; tc_ac.stop;
p_circle_notification_subscription := v_response.response.body.json_body.circleNotificationSubscription; // Extract HTTP Location header
log("f_create_circle_notification_subscription: INFO: IUT successfully responds to the subscription: ", p_circle_notification_subscription); var charstring_list v_subscription_id;
} f_get_header(v_response.response.header, "Location", v_subscription_id);
// Extract HTTP subssription id
p_subscription_id := regexp(
v_subscription_id[0],
"?+" & PX_LOC_API_ZONES_SUB_URI & "/(?*)",
0
);
p_zone_status_notification := v_response.response.body.json_body.zoneStatusNotification;
log("f_create_zone_status_subscription: INFO: IUT successfully responds to the subscription: ", p_zone_status_notification);
log("f_create_zone_status_subscription: INFO: p_subscription_id: ", p_subscription_id); }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_create_circle_notification_subscription: INCONC: Expected message not received"); log("f_create_zone_status_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_create_circle_notification_subscription } // End of function f_create_zone_status_subscription
function f_delete_circle_notification_subscription( function f_delete_zone_status_subscription(
in CircleNotificationSubscription p_circle_notification_subscription in charstring p_subscription_id
) runs on HttpComponent { ) runs on HttpComponent {
var Headers v_headers;
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_delete(
PICS_ROOT_API & PX_LOC_API_ZONES_SUB_URI & "/" & p_subscription_id,
v_headers
)));
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_204_no_content
)) {
tc_ac.stop;
}
[] tc_ac.timeout {
log("f_delete_zone_status_subscription: INCONC: Expected message not received");
}
} // End of 'alt' statement
} // End of function f_delete_zone_status_subscription
function f_create_user_area_subscription(
out UserAreaNotification p_user_area_notification,
out charstring p_subscription_id
) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
var charstring v_uri := regexp(
oct2char(unichar2oct(p_circle_notification_subscription.resourceURL)), f_init_default_headers_list(-, -, v_headers);
"?+" & PX_ME_APP_Q_AREA_SUB_URI & "/(?*)", httpPort.send(
0 m_http_request(
); m_http_request_post(
PICS_ROOT_API & PX_LOC_API_AREA_SUB_URI,
v_headers,
m_http_message_body_json(
m_body_json_user_area_subscription(
m_user_area_subscription(
PX_UE_DIST_SUB_CALLBACK_URI, // callbackReference
PX_USER,
m_area_info(
ELLIPSOID_POINT_UNCERT_CIRCLE,
{ m_point({PX_UE_COORD_LAT}, {PX_UE_COORD_LONG}) },
PX_RADIUS
), // AreaInfo
PX_TRACKIMNG_ACCURACY // TrackingAccuracy
))))));
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_user_area_notification(
mw_user_area_notification(
// FIXME PX_UE_DIST_SUB_CALLBACK_URI
)))))) -> value v_response {
tc_ac.stop;
// Extract HTTP Location header
var charstring_list v_subscription_id;
f_get_header(v_response.response.header, "Location", v_subscription_id);
// Extract HTTP subssription id
p_subscription_id := regexp(
v_subscription_id[0],
"?+" & PX_LOC_API_USERS_SUB_URI & "/(?*)",
0
);
p_user_area_notification := v_response.response.body.json_body.userAreaNotification;
log("f_create_user_area_subscription: INFO: IUT successfully responds to the subscription: ", p_user_area_notification);
log("f_create_user_area_subscription: INFO: p_subscription_id: ", p_subscription_id);
}
[] tc_ac.timeout {
log("f_create_user_area_subscription: INCONC: Expected message not received");
}
} // End of 'alt' statement
} // End of function f_create_user_area_subscription
function f_delete_user_area_subscription(
in charstring p_subscription_id
) runs on HttpComponent {
var Headers v_headers;
f_init_default_headers_list(-, -, v_headers); f_init_default_headers_list(-, -, v_headers);
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_delete( m_http_request_delete(
PICS_ROOT_API & PX_ME_APP_Q_AREA_SUB_URI & "/" & v_uri, PICS_ROOT_API & PX_LOC_API_AREA_SUB_URI & "/" & p_subscription_id,
v_headers v_headers
))); )));
tc_ac.start; tc_ac.start;
...@@ -334,24 +437,15 @@ module LocationAPI_Functions { ...@@ -334,24 +437,15 @@ module LocationAPI_Functions {
tc_ac.stop; tc_ac.stop;
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_delete_circle_notification_subscription: INCONC: Expected message not received"); log("f_delete_user_area_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_delete_circle_notification_subscription } // End of function f_delete_user_area_subscription
function f_create_user_distance_subscription(
out UserDistanceNotification p_user_distance_notification,
function f_create_distance_notification_subscription( out charstring p_subscription_id
out DistanceNotificationSubscription p_distance_notification_subscription ) runs on HttpComponent {
) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response; var HttpMessage v_response;
...@@ -359,75 +453,73 @@ module LocationAPI_Functions { ...@@ -359,75 +453,73 @@ module LocationAPI_Functions {
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_post( m_http_request_post(
PICS_ROOT_API & PX_ME_APP_Q_DIST_URI, PICS_ROOT_API & PX_LOC_API_DISTANCE_SUB_URI,
v_headers, v_headers,
m_http_message_body_json( m_http_message_body_json(
m_body_json_distance_notification_subscription( m_body_json_user_distance_subscription(
m_distance_notification_subscription( m_user_distance_subscription(
PX_UE_DIST_SUB_CALLBACK_URI, // callbackReference PX_UE_DIST_SUB_CALLBACK_URI, // callbackReference
-, // checkImmediate PX_USER,
PX_CLIENT_ID, //clientCorrelator { PX_UE_MONITORED_IP_ADDRESS },
-, // criteria PX_DISTANCE,
10.0, // distance PX_TRACKIMNG_ACCURACY
-, ))))));
{ PX_UE_MONITORED_IP_ADDRESS } // monitoredAddress
))))));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_201_created( mw_http_response_201_created(
mw_http_message_body_json( mw_http_message_body_json(
mw_body_json_distance_notification_subscription( mw_body_json_user_distance_notification(
mw_distance_notification_subscription( mw_user_distance_notification(
PX_UE_DIST_SUB_CALLBACK_URI, // callbackReference // FIXME PX_UE_DIST_SUB_CALLBACK_URI
-, )))))) -> value v_response {
PX_CLIENT_ID, //clientCorrelator
-, -, -,
{ PX_UE_MONITORED_IP_ADDRESS } // monitoredAddress
)))))) -> value v_response {
tc_ac.stop; tc_ac.stop;
p_distance_notification_subscription := v_response.response.body.json_body.distanceNotificationSubscription; // Extract HTTP Location header
log("f_create_distance_notification_subscription: INFO: IUT successfully responds to the subscription: ", p_distance_notification_subscription); var charstring_list v_subscription_id;
f_get_header(v_response.response.header, "Location", v_subscription_id);
// Extract HTTP subssription id
p_subscription_id := regexp(
v_subscription_id[0],
"?+" & PX_LOC_API_DISTANCE_SUB_URI & "/(?*)",
0
);
p_user_distance_notification := v_response.response.body.json_body.userDistanceNotification;
log("f_create_user_distance_subscription: INFO: IUT successfully responds to the subscription: ", p_user_distance_notification);
log("f_create_user_distance_subscription: INFO: p_subscription_id: ", p_subscription_id);
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_create_distance_notification_subscription: INCONC: Expected message not received"); log("f_create_user_distance_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_create_distance_notification_subscription } // End of function f_create_user_distance_subscription
function f_delete_distance_notification_subscription( function f_delete_user_distance_subscription(
in DistanceNotificationSubscription p_distance_notification_subscription charstring p_subscription_id
) runs on HttpComponent { ) runs on HttpComponent {
var Headers v_headers; var Headers v_headers;
var HttpMessage v_response;
var charstring v_uri := regexp(
oct2char(unichar2oct(p_distance_notification_subscription.resourceURL)),
"?+" & PX_ME_APP_Q_DIST_URI & "/(?*)",
0
);
f_init_default_headers_list(-, -, v_headers); f_init_default_headers_list(-, -, v_headers);
httpPort.send( httpPort.send(
m_http_request( m_http_request(
m_http_request_delete( m_http_request_delete(
PICS_ROOT_API & PX_ME_APP_Q_DIST_URI & "/" & v_uri, PICS_ROOT_API & PX_LOC_API_DISTANCE_SUB_URI & "/" & p_subscription_id,
v_headers v_headers
))); )));
tc_ac.start; tc_ac.start;
alt { alt {
[] httpPort.receive( [] httpPort.receive(
mw_http_response( mw_http_response(
mw_http_response_204_no_content mw_http_response_204_no_content
)) { )) {
tc_ac.stop; tc_ac.stop;
} }
[] tc_ac.timeout { [] tc_ac.timeout {
log("f_delete_distance_notification_subscription: INCONC: Expected message not received"); log("f_delete_user_distance_subscription: INCONC: Expected message not received");
} }
} // End of 'alt' statement } // End of 'alt' statement
} // End of function f_delete_distance_notification_subscription } // End of function f_delete_user_distance_subscription
} // End of module LocationAPI_Functions } // End of module LocationAPI_Functions
...@@ -11,6 +11,8 @@ module LocationAPI_Pixits { ...@@ -11,6 +11,8 @@ module LocationAPI_Pixits {
modulepar Address PX_USER := "ue1"; modulepar Address PX_USER := "ue1";
modulepar Address PX_USER_2 := "ue2";
modulepar Address PX_USER_UNKNOWN := "acr:192.168.5.1.1"; modulepar Address PX_USER_UNKNOWN := "acr:192.168.5.1.1";
modulepar ClientCorrelator PX_CLIENT_ID := "0123"; modulepar ClientCorrelator PX_CLIENT_ID := "0123";
...@@ -25,9 +27,11 @@ module LocationAPI_Pixits { ...@@ -25,9 +27,11 @@ module LocationAPI_Pixits {
modulepar ZoneId PX_ZONE_ID := "zone1"; modulepar ZoneId PX_ZONE_ID := "zone1";
modulepar ZoneId PX_ZONE_ID_1 := "zone2";
modulepar ZoneId PX_NON_EXISTENT_ZONE_ID := "zone51"; modulepar ZoneId PX_NON_EXISTENT_ZONE_ID := "zone51";
modulepar ResourceURL PX_RESOURCE_URL := "http://meep-loc-serv/etsi-013/location/v2/users/ue1"; modulepar ResourceURL PX_RESOURCE_URL := "http://meep-loc-serv/etsi-013/location/v3/users/ue1";
modulepar NumberOfAccessPoints PX_NB_ACCESS_POINTS := 3; modulepar NumberOfAccessPoints PX_NB_ACCESS_POINTS := 3;
...@@ -35,32 +39,48 @@ module LocationAPI_Pixits { ...@@ -35,32 +39,48 @@ module LocationAPI_Pixits {
modulepar UInt32 PX_NB_USERS := 10; modulepar UInt32 PX_NB_USERS := 10;
modulepar CallbackReference PX_CALLBACK_REF_URL := { notifyURL := "http://clientApp.example.com/location_notifications/123456", callbackData := omit, notificationFormat := omit }; modulepar CallbackReference PX_CALLBACK_REF_URL := "http://clientApp.example.com/location_notifications/123456";
modulepar CallbackReference PX_UE_PERIODIC_SUB_CALLBACK_URI := { notifyURL := "http://clientApp.example.com/location_notifications/123456", callbackData := omit, notificationFormat := omit }; modulepar CallbackReference PX_UE_PERIODIC_SUB_CALLBACK_URI := "http://clientApp.example.com/location_notifications/123456";
modulepar Address PX_IP_ADDRESS := "acr:10.0.0.3"; modulepar Address PX_IP_ADDRESS := "acr:10.0.0.3";
modulepar CallbackReference PX_AREA_SUB_CALLBACK_URI := { notifyURL := "http://clientApp.example.com/location_notifications/123456", callbackData := omit, notificationFormat := omit }; modulepar Address PX_IP_ADDRESS_1 := "acr:10.0.0.10";
modulepar CallbackReference PX_AREA_SUB_CALLBACK_URI := "http://clientApp.example.com/location_notifications/123456";
modulepar CallbackReference PX_UE_DIST_SUB_CALLBACK_URI := { notifyURL := "http://clientApp.example.com/location_notifications/123456", callbackData := omit, notificationFormat := omit }; modulepar CallbackReference PX_UE_DIST_SUB_CALLBACK_URI := "http://clientApp.example.com/location_notifications/123456";
modulepar CallbackReference PX_UE_NEW_SUB_CALLBACK_URI := "http://clientApp.example.com/new_location_notifications/123456";
modulepar Address PX_UE_MONITORED_IP_ADDRESS := "acr:10.0.0.1"; modulepar Address PX_UE_MONITORED_IP_ADDRESS := "acr:10.0.0.1";
modulepar Address PX_ACR_UNKNOWN_IP := "acr:10.0.0.254"; modulepar Address PX_ACR_UNKNOWN_IP := "acr:10.0.0.254";
modulepar Address PX_UE_ZONAL_TRAF_SUB_URI := ""; modulepar Address PX_UE_ZONAL_TRAF_SUB_URI := "";
modulepar Json.AnyURI PX_UE_LOC_QRY_URI := "/location/v2/queries/distance"; modulepar Json.AnyURI PX_UE_LOC_QRY_URI := "/location/v3/queries/distance";
modulepar Json.Number PX_UE_COORD_LAT := -80.86302; modulepar Json.Number PX_UE_COORD_LAT := -80.86302;
modulepar Json.Number PX_UE_COORD_LONG := 41.277306; modulepar Json.Number PX_UE_COORD_LONG := 41.277306;
modulepar Json.Number PX_DISTANCE := 1000.0;
modulepar Json.UInteger PX_RADIUS := 500;
modulepar Json.Number PX_TRACKIMNG_ACCURACY := 1000.0;
modulepar Address PX_ACR_SOME_IP := ""; modulepar Address PX_ACR_SOME_IP := "";
modulepar CallbackReference PX_USERTRACK_SUB_CALLBACK_URI := { "" }; modulepar CallbackReference PX_USERTRACK_SUB_CALLBACK_URI := "";
modulepar CallbackReference PX_TRAFFIC_SUB_CALLBACK_URI := { "" }; modulepar CallbackReference PX_TRAFFIC_SUB_CALLBACK_URI := "";
modulepar float PX_NOTIF_EXPIRY := 60.0;
modulepar Json.UInteger PX_UPPER_NUM_USER_THRESHOLD := 10;
modulepar Json.UInteger PX_LOWER_NUM_USER_THRESHOLD := 1;
} // End of module LocationAPI_Pixits } // End of module LocationAPI_Pixits
module LocationAPI_Templates { module LocationAPI_Templates {
// JSON // JSON
import from Json all; import from Json all;
// LibCommon // LibCommon
import from LibCommon_BasicTypesAndValues all; import from LibCommon_BasicTypesAndValues all;
// LibMec
import from LibMec_TypesAndValues all;
// LibMec/LocationAPI // LibMec/LocationAPI
import from LocationAPI_TypesAndValues all; import from LocationAPI_TypesAndValues all;
import from LocationAPI_Pixits all; import from LocationAPI_Pixits all;
template (value) UserInfo m_user_info( template (value) UserInfo m_user_info(
in Address p_address := PX_USER, in Address p_address := PX_USER,
in AccessPointId p_access_point_id := PX_ACCESS_POINT_ID, in AccessPointId p_access_point_id := PX_ACCESS_POINT_ID,
...@@ -20,13 +23,14 @@ module LocationAPI_Templates { ...@@ -20,13 +23,14 @@ module LocationAPI_Templates {
address_ := p_address, address_ := p_address,
accessPointId := p_access_point_id, accessPointId := p_access_point_id,
zoneId := p_zone_id, zoneId := p_zone_id,
timestamp_ := p_timestamp,
resourceURL := p_resource_url, resourceURL := p_resource_url,
timestamp_ := p_timestamp,
locationInfo := omit, locationInfo := omit,
civicInfo := omit,
contextLocationInfo := omit, contextLocationInfo := omit,
ancillaryInfo := omit ancillaryInfo := omit
} // End of template m_user_info } // End of template m_user_info
template (present) UserInfo mw_user_info( template (present) UserInfo mw_user_info(
template (present) Address p_address := ?, template (present) Address p_address := ?,
template (present) AccessPointId p_access_point_id := ?, template (present) AccessPointId p_access_point_id := ?,
...@@ -37,9 +41,10 @@ module LocationAPI_Templates { ...@@ -37,9 +41,10 @@ module LocationAPI_Templates {
address_ := p_address, address_ := p_address,
accessPointId := p_access_point_id, accessPointId := p_access_point_id,
zoneId := p_zone_id, zoneId := p_zone_id,
timestamp_ := p_timestamp,
resourceURL := p_resource_url, resourceURL := p_resource_url,
timestamp_ := p_timestamp,
locationInfo := *, locationInfo := *,
civicInfo := *,
contextLocationInfo := *, contextLocationInfo := *,
ancillaryInfo := * ancillaryInfo := *
} // End of template mw_user_info } // End of template mw_user_info
...@@ -51,7 +56,7 @@ module LocationAPI_Templates { ...@@ -51,7 +56,7 @@ module LocationAPI_Templates {
user := p_userInfo, user := p_userInfo,
resourceURL := p_resource_url resourceURL := p_resource_url
} // End of template m_user_list } // End of template m_user_list
template UserList mw_user_list( template UserList mw_user_list(
template UserInfos p_userInfo := *, template UserInfos p_userInfo := *,
template (present) ResourceURL p_resource_url := ? template (present) ResourceURL p_resource_url := ?
...@@ -59,7 +64,7 @@ module LocationAPI_Templates { ...@@ -59,7 +64,7 @@ module LocationAPI_Templates {
user := p_userInfo, user := p_userInfo,
resourceURL := p_resource_url resourceURL := p_resource_url
} // End of template mw_user_list } // End of template mw_user_list
template (value) LocationInfo m_location_info( template (value) LocationInfo m_location_info(
in Latitude p_latitude, in Latitude p_latitude,
in Longitude p_longitude, in Longitude p_longitude,
...@@ -82,7 +87,7 @@ module LocationAPI_Templates { ...@@ -82,7 +87,7 @@ module LocationAPI_Templates {
timestamp_ := omit, timestamp_ := omit,
velocity := omit velocity := omit
} // End of template m_location_info } // End of template m_location_info
template (present) LocationInfo mw_location_info( template (present) LocationInfo mw_location_info(
template (present) Latitude p_latitude := ?, template (present) Latitude p_latitude := ?,
template (present) Longitude p_longitude := ?, template (present) Longitude p_longitude := ?,
...@@ -104,7 +109,7 @@ module LocationAPI_Templates { ...@@ -104,7 +109,7 @@ module LocationAPI_Templates {
timestamp_ := *, timestamp_ := *,
velocity := * velocity := *
} // End of template mw_location_info } // End of template mw_location_info
template (value) ZoneInfo m_zone_info( template (value) ZoneInfo m_zone_info(
in ZoneId p_zone_id := PX_ZONE_ID, in ZoneId p_zone_id := PX_ZONE_ID,
in NumberOfAccessPoints p_number_of_access_points := PX_NB_ACCESS_POINTS, in NumberOfAccessPoints p_number_of_access_points := PX_NB_ACCESS_POINTS,
...@@ -118,7 +123,7 @@ module LocationAPI_Templates { ...@@ -118,7 +123,7 @@ module LocationAPI_Templates {
numberOfUsers := p_number_of_users, numberOfUsers := p_number_of_users,
resourceURL := p_resource_url resourceURL := p_resource_url
} // End of template m_zone_info } // End of template m_zone_info
template (present) ZoneInfo mw_zone_info( template (present) ZoneInfo mw_zone_info(
template (present) ZoneId p_zone_id := ?, template (present) ZoneId p_zone_id := ?,
template (present) NumberOfAccessPoints p_number_of_access_points := ?, template (present) NumberOfAccessPoints p_number_of_access_points := ?,
...@@ -132,7 +137,7 @@ module LocationAPI_Templates { ...@@ -132,7 +137,7 @@ module LocationAPI_Templates {
numberOfUsers := p_number_of_users, numberOfUsers := p_number_of_users,
resourceURL := p_resource_url resourceURL := p_resource_url
} // End of template mw_zone_info } // End of template mw_zone_info
template (omit) AccessPointList m_access_point_list( template (omit) AccessPointList m_access_point_list(
in ZoneId p_zoneId := PX_ZONE_ID, in ZoneId p_zoneId := PX_ZONE_ID,
in ResourceURL p_resourceURL, in ResourceURL p_resourceURL,
...@@ -142,267 +147,708 @@ module LocationAPI_Templates { ...@@ -142,267 +147,708 @@ module LocationAPI_Templates {
accessPoint := p_accessPoint, accessPoint := p_accessPoint,
resourceURL := p_resourceURL resourceURL := p_resourceURL
} // End of template m_access_point_list } // End of template m_access_point_list
template AccessPointList mw_access_point_list( template (present) AccessPointList mw_access_point_list(
template (present) ZoneId p_zoneId := ?, template (present) ZoneId p_zoneId := ?,
template (present) ResourceURL p_resourceURL := ?, template (present) ResourceURL p_resourceURL := ?,
template AccessPointInfos p_accessPoint := * template AccessPointInfos p_accessPoint := *
) := { ) := {
zoneId := p_zoneId, zoneId := p_zoneId,
accessPoint := p_accessPoint, accessPoint := p_accessPoint,
resourceURL := p_resourceURL resourceURL := p_resourceURL
} // End of template mw_access_point_list } // End of template mw_access_point_list
template (value) UserTrackingSubscription m_user_tracking_subscription( template (omit) AccessPointInfo m_access_point_info(
in ClientCorrelator p_clientCorrelator, in AccessPointId p_accessPointId,
in CallbackReference p_callbackReference, in ConnectionType p_connectionType,
in Address p_address := PX_USER, in OperationStatus p_operationStatus,
in UserEventCriteria p_userEventCriteria := { Entering } in NumberOfUsers p_numberOfUsers,
) := { in template (value) ResourceURL p_resourceURL,
clientCorrelator := p_clientCorrelator, in template (omit) LocationInfo p_locationInfo := omit,
callbackReference := p_callbackReference, in template (omit) InterestRealm p_interestRealm := omit,
address_ := p_address, in template (omit) DateTimeStamp p_timezone := omit
userEventCriteria := p_userEventCriteria, ) := {
resourceURL := omit accessPointId := p_accessPointId,
} // End of template m_user_tracking_subscription locationInfo := p_locationInfo,
connectionType := p_connectionType,
template (present) UserTrackingSubscription mw_user_tracking_subscription( operationStatus := p_operationStatus,
template (present) ClientCorrelator p_clientCorrelator := ?, numberOfUsers := p_numberOfUsers,
template (present) CallbackReference p_callbackReference := ?, interestRealm := p_interestRealm,
template (present) Address p_address := PX_USER, timezone := p_timezone,
template (present) UserEventCriteria p_userEventCriteria := { Entering }, resourceURL := p_resourceURL
template (present) ResourceURL p_resourceURL := ? } // End of template m_access_point_info
) := {
clientCorrelator := p_clientCorrelator, template (present) AccessPointInfo mw_access_point_info(
callbackReference := p_callbackReference, template (present) AccessPointId p_accessPointId := ?,
address_ := p_address, template (present) ConnectionType p_connectionType := ?,
userEventCriteria := p_userEventCriteria, template (present) OperationStatus p_operationStatus := ?,
resourceURL := p_resourceURL template (present) NumberOfUsers p_numberOfUsers := ?,
} // End of template mw_user_tracking_subscription template (present) ResourceURL p_resourceURL := ?,
template LocationInfo p_locationInfo := *,
template (value) PeriodicTrackingSubscription m_periodic_tracking_subscription( template InterestRealm p_interestRealm := *,
in ClientCorrelator p_clientCorrelator, template DateTimeStamp p_timezone := *
in CallbackReference p_callbackReference, ) := {
in Address p_address := PX_USER, accessPointId := p_accessPointId,
in Json.Number p_frequency := 10.0, locationInfo := p_locationInfo,
in Json.Number p_requestedAccuracy := 10.0 connectionType := p_connectionType,
) := { operationStatus := p_operationStatus,
clientCorrelator := p_clientCorrelator, numberOfUsers := p_numberOfUsers,
callbackReference := p_callbackReference, interestRealm := p_interestRealm,
address_ := p_address, timezone := p_timezone,
frequency := p_frequency, resourceURL := p_resourceURL
requestedAccuracy := p_requestedAccuracy, } // End of template mw_access_point_info
resourceURL := omit
} // End of template m_periodic_tracking_subscription template (omit) Subscription m_subscription(
in Json.String p_subscriptionType,
template (present) PeriodicTrackingSubscription mw_periodic_tracking_subscription( in template (omit) Json.AnyURI p_href := omit
template (present) ClientCorrelator p_clientCorrelator := ?, ) := {
template (present) CallbackReference p_callbackReference := ?, href := p_href,
template (present) Address p_address := PX_USER, subscriptionType := p_subscriptionType
template (present) Json.Number p_frequency := ?, } // End of template m_subscription
template (present) Json.Number p_requestedAccuracy := ?
template (present) Subscription mw_subscription(
template (present) Json.String p_subscriptionType := ?,
template Json.AnyURI p_href := *
) := {
href := p_href,
subscriptionType := p_subscriptionType
} // End of template mw_subscription
template (omit) NotificationSubscriptionList m_notification_subscription_list(
in template (value) ResourceURL p_resourceURL,
in template (omit) Subscriptions p_subscription := omit
) := {
subscription := p_subscription,
resourceURL := p_resourceURL
} // End of template m_notification_subscription_list
template (present) NotificationSubscriptionList mw_notification_subscription_list(
template (present) ResourceURL p_resourceURL := ?,
template Subscriptions p_subscription := *
) := { ) := {
clientCorrelator := p_clientCorrelator, subscription := p_subscription,
callbackReference := p_callbackReference, resourceURL := p_resourceURL
address_ := p_address, } // End of template mw_notification_subscription_list
frequency := p_frequency,
requestedAccuracy := p_requestedAccuracy, template (omit) UserAreaNotification m_user_area_notification(
resourceURL := * in template (value) Address p_address_,
} // End of template mw_periodic_tracking_subscription in template (value) LocationEventType p_userLocationEvent,
in template (value) Links p_links_,
template (value) ZonalTrafficSubscription m_zonal_traffic_subscription( in template (omit) TimeStamp p_timeStamp := omit,
in ClientCorrelator p_client_correlator, in template (omit) LocationInfo p_locationInfo := omit,
in CallbackReference p_callback_reference, in template (omit) CivicAddress p_civicInfo := omit,
in ZoneId p_zone_id, in template (omit) RelativeLocationInfo p_relativeLocationInfo := omit
in UserEventCriteria p_user_event_criteria := { Entering } ) :={
) := { notificationType := "UserAreaNotification",
clientCorrelator := p_client_correlator, timeStamp := p_timeStamp,
callbackReference := p_callback_reference, address_ := p_address_,
zoneId := p_zone_id, locationInfo := p_locationInfo,
interestRealm := omit, civicInfo := p_civicInfo,
userEventCriteria := p_user_event_criteria, relativeLocationInfo := p_relativeLocationInfo,
duration := omit, userLocationEvent := p_userLocationEvent,
resourceURL := omit links_ := p_links_
} // End of template m_zonal_traffic_subscription } // End of template m_user_area_notification
template (present) ZonalTrafficSubscription mw_zonal_traffic_subscription( template (present) UserAreaNotification mw_user_area_notification(
template (present) ClientCorrelator p_client_correlator := ?, template (present) Address p_address_ := ?,
template (present) CallbackReference p_callback_reference := ?, template (present) LocationEventType p_userLocationEvent := ?,
template (present) ZoneId p_zone_id := ? template (present) Links p_links_ := ?,
) := { template TimeStamp p_timeStamp := *,
clientCorrelator := p_client_correlator, template LocationInfo p_locationInfo := *,
callbackReference := p_callback_reference, template CivicAddress p_civicInfo := *,
zoneId := p_zone_id, template RelativeLocationInfo p_relativeLocationInfo := *
interestRealm := *, ) :={
userEventCriteria := *, notificationType := "UserAreaNotification",
duration := *, timeStamp := p_timeStamp,
resourceURL := * address_ := p_address_,
} // End of template mw_zonal_traffic_subscription locationInfo := p_locationInfo,
civicInfo := p_civicInfo,
template (omit) CircleNotificationSubscription m_circle_notification_subscription( relativeLocationInfo := p_relativeLocationInfo,
in template (omit) ClientCorrelator p_clientCorrelator := omit, userLocationEvent := p_userLocationEvent,
in template (value) CallbackReference p_callbackReference, links_ := p_links_
in template (value) Addresses p_address, } // End of template mw_user_area_notification
in template (value) Json.Number p_latitude := PX_UE_COORD_LAT,
in template (value) Json.Number p_longitude := PX_UE_COORD_LONG, template (omit) UserLocationEventSubscription m_user_location_event_subscription(
in template (value) Json.Number p_radius := 200.0, in CallbackReference p_callbackReference,
in template (value) Json.Number p_trackingAccuracy := 10.0, in Address p_address := PX_USER,
in template (value) EnteringLeavingCriteria p_enteringLeavingCriteria := Entering, in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (value) Json.Bool p_checkImmediate := true, in template (omit) Json.Bool p_requestTestNotification := omit,
in template (value) UInt32 p_frequency := 10, in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) ResourceURL p_resourceURL := omit in template (omit) UserEventPara p_userEventPara := omit,
) := { in template (omit) LocationEventCriteria p_locationEventCriteria := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "UserLocationEventSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
address_ := p_address, address_ := p_address,
userEventPara := p_userEventPara,
locationEventCriteria := p_locationEventCriteria,
expiryDeadline := p_expiryDeadline
} // End of template m_user_location_event_subscription
template (omit) UserLocationEventSubscription m_user_location_event_subscription_error(
in Address p_address := PX_USER,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) Json.Bool p_requestTestNotification := omit,
in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) UserEventPara p_userEventPara := omit,
in template (omit) LocationEventCriteria p_locationEventCriteria := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "UserLocationEventSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := omit,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
address_ := p_address,
userEventPara := p_userEventPara,
locationEventCriteria := p_locationEventCriteria,
expiryDeadline := p_expiryDeadline
} // End of template m_user_location_event_subscription_error
template (present) UserLocationEventSubscription mw_user_location_event_subscription(
template (present) CallbackReference p_callbackReference := ?,
template (present) Address p_address := ?,
template (present) Links p_links_ := ?,
template ClientCorrelator p_clientCorrelator := *,
template Json.Bool p_requestTestNotification := *,
template WebsockNotifConfig p_websockNotifConfig := *,
template UserEventPara p_userEventPara := *,
template LocationEventCriteria p_locationEventCriteria := *,
template TimeStamp p_expiryDeadline := *
) := {
subscriptionType := "UserLocationEventSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference, callbackReference := p_callbackReference,
checkImmediate := p_checkImmediate, requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := p_links_,
address_ := p_address,
userEventPara := p_userEventPara,
locationEventCriteria := p_locationEventCriteria,
expiryDeadline := p_expiryDeadline
} // End of template mw_user_location_event_subscription
template (omit) UserLocationPeriodicSubscription m_user_location_periodic_subscription(
in CallbackReference p_callbackReference,
in Address p_address := PX_USER,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) Json.Bool p_requestTestNotification := omit,
in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) PeriodicEventInfo p_periodicEventInfo := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "UserLocationPeriodicSubscription",
clientCorrelator := p_clientCorrelator, clientCorrelator := p_clientCorrelator,
count := omit, callbackReference := p_callbackReference,
duration := omit, requestTestNotification := p_requestTestNotification,
enteringLeavingCriteria := p_enteringLeavingCriteria, websockNotifConfig := p_websockNotifConfig,
frequency := p_frequency, links_ := omit,
latitude := p_latitude, address_ := p_address,
link := omit, periodicEventInfo := p_periodicEventInfo,
longitude := p_longitude, expiryDeadline := p_expiryDeadline
radius := p_radius, } // End of template m_user_location_periodic_subscription
requester := omit,
resourceURL := p_resourceURL, template (present) UserLocationPeriodicSubscription mw_user_location_periodic_subscription(
trackingAccuracy := p_trackingAccuracy template (present) CallbackReference p_callbackReference := ?,
} // End of template m_circle_notification_subscription template (present) Address p_address := ?,
template (present) Links p_links_ := ?,
template CircleNotificationSubscription mw_circle_notification_subscription( template ClientCorrelator p_clientCorrelator := *,
template ClientCorrelator p_clientCorrelator := *, template Json.Bool p_requestTestNotification := *,
template (present) CallbackReference p_callbackReference := ?, template WebsockNotifConfig p_websockNotifConfig := *,
template (present) Addresses p_address := ?, template PeriodicEventInfo p_periodicEventInfo := *,
template (present) Json.Number p_latitude := ?, template TimeStamp p_expiryDeadline := *
template (present) Json.Number p_longitude := ?, ) := {
template (present) Json.Number p_radius := ?, subscriptionType := "UserLocationPeriodicSubscription",
template (present) Json.Number p_trackingAccuracy := ?, clientCorrelator := p_clientCorrelator,
template (present) EnteringLeavingCriteria p_enteringLeavingCriteria := ?, callbackReference := p_callbackReference,
template (present) Json.Bool p_checkImmediate := ?, requestTestNotification := p_requestTestNotification,
template (present) UInt32 p_frequency := ?, websockNotifConfig := p_websockNotifConfig,
template ResourceURL p_resourceURL := * links_ := omit,
) := {
address_ := p_address, address_ := p_address,
periodicEventInfo := p_periodicEventInfo,
expiryDeadline := p_expiryDeadline
} // End of template mw_user_location_periodic_subscription
template (omit) ZoneLocationEventSubscription m_zone_location_event_subscription(
in CallbackReference p_callbackReference,
in Address p_address := PX_USER,
in ZoneId p_zoneId,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) Json.Bool p_requestTestNotification := omit,
in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) LocationEventCriteria p_locationEventCriteria := omit,
in template (omit) ReportingCtrl p_reportingCtrl := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "ZoneLocationEventSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
zoneId := p_zoneId,
locationEventCriteria := p_locationEventCriteria,
reportingCtrl := p_reportingCtrl,
expiryDeadline := p_expiryDeadline
} // End of template m_zone_location_event_subscription
template (present) ZoneLocationEventSubscription mw_zone_location_event_subscription(
template (present) CallbackReference p_callbackReference := ?,
template (present) Address p_address := ?,
template (present) ZoneId p_zoneId := ?,
template (present) Links p_links_ := ?,
template ClientCorrelator p_clientCorrelator := *,
template Json.Bool p_requestTestNotification := *,
template WebsockNotifConfig p_websockNotifConfig := *,
template LocationEventCriteria p_locationEventCriteria := *,
template ReportingCtrl p_reportingCtrl := *,
template TimeStamp p_expiryDeadline := *
) := {
subscriptionType := "ZoneLocationEventSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference, callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := p_links_,
zoneId := p_zoneId,
locationEventCriteria := p_locationEventCriteria,
reportingCtrl := p_reportingCtrl,
expiryDeadline := p_expiryDeadline
} // End of template mw_zone_location_event_subscription
template (omit) ZoneStatusSubscription m_zone_status_subscription(
in CallbackReference p_callbackReference,
in Address p_address := PX_USER,
in ZoneId p_zoneId,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) Json.Bool p_requestTestNotification := omit,
in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) Json.UInteger p_upperNumberOfUsersZoneThreshold := omit,
in template (omit) Json.UInteger p_lowerNumberOfUsersZoneThreshold := omit,
in template (omit) Json.UInteger p_upperNumberOfUsersAPThreshold := omit,
in template (omit) Json.UInteger p_lowerNumberOfUsersAPThreshold := omit,
in template (omit) OperationStatus p_operationStatus := omit,
in template (omit) ReportingCtrl p_reportingCtrl := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "ZoneStatusSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
zoneId := p_zoneId,
upperNumberOfUsersZoneThreshold := p_upperNumberOfUsersZoneThreshold,
lowerNumberOfUsersZoneThreshold := p_lowerNumberOfUsersZoneThreshold,
upperNumberOfUsersAPThreshold := p_upperNumberOfUsersAPThreshold,
lowerNumberOfUsersAPThreshold := p_lowerNumberOfUsersAPThreshold,
operationStatus := p_operationStatus,
reportingCtrl := p_reportingCtrl,
expiryDeadline := p_expiryDeadline
} // End of template m_zone_status_subscription
template (present) ZoneStatusSubscription mw_zone_status_subscription(
template (present) CallbackReference p_callbackReference := ?,
template (present) Address p_address := ?,
template (present) ZoneId p_zoneId := ?,
template (present) Links p_links_ := ?,
template ClientCorrelator p_clientCorrelator := *,
template Json.Bool p_requestTestNotification := *,
template WebsockNotifConfig p_websockNotifConfig := *,
template Json.UInteger p_upperNumberOfUsersZoneThreshold := *,
template Json.UInteger p_lowerNumberOfUsersZoneThreshold := *,
template Json.UInteger p_upperNumberOfUsersAPThreshold := *,
template Json.UInteger p_lowerNumberOfUsersAPThreshold := *,
template OperationStatus p_operationStatus := *,
template ReportingCtrl p_reportingCtrl := *,
template TimeStamp p_expiryDeadline := *
) := {
subscriptionType := "ZoneStatusSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := p_links_,
zoneId := p_zoneId,
upperNumberOfUsersZoneThreshold := p_upperNumberOfUsersZoneThreshold,
lowerNumberOfUsersZoneThreshold := p_lowerNumberOfUsersZoneThreshold,
upperNumberOfUsersAPThreshold := p_upperNumberOfUsersAPThreshold,
lowerNumberOfUsersAPThreshold := p_lowerNumberOfUsersAPThreshold,
operationStatus := p_operationStatus,
reportingCtrl := p_reportingCtrl,
expiryDeadline := p_expiryDeadline
} // End of template mw_zone_status_subscription
template (omit) UserAreaSubscription m_user_area_subscription(
in CallbackReference p_callbackReference,
in Address p_address := PX_USER,
in template (value) AreaInfo p_areaDefine,
in Json.Number p_trackingAccuracy,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) Json.Bool p_requestTestNotification := omit,
in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) LocationEventCriteria p_locationEventCriteria := omit,
in template (omit) ReportingCtrl p_reportingCtrl := omit,
in template (omit) Json.Bool p_reportingLocationReq := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "UserAreaSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
areaDefine := p_areaDefine,
trackingAccuracy := p_trackingAccuracy,
locationEventCriteria := p_locationEventCriteria,
reportingCtrl := p_reportingCtrl,
reportingLocationReq := p_reportingLocationReq,
expiryDeadline := p_expiryDeadline
} // End of template m_user_area_subscription
template (present) UserAreaSubscription mw_user_area_subscription(
template (present) CallbackReference p_callbackReference := ?,
template (present) Address p_address := ?,
template (present) Links p_links_ := ?,
template (present) AreaInfo p_areaDefine := ?,
template (present) Json.Number p_trackingAccuracy := ?,
template ClientCorrelator p_clientCorrelator := *,
template Json.Bool p_requestTestNotification := *,
template WebsockNotifConfig p_websockNotifConfig := *,
template LocationEventCriteria p_locationEventCriteria := *,
template ReportingCtrl p_reportingCtrl := *,
template Json.Bool p_reportingLocationReq := *,
template TimeStamp p_expiryDeadline := *
) := {
subscriptionType := "UserAreaSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
areaDefine := p_areaDefine,
trackingAccuracy := p_trackingAccuracy,
locationEventCriteria := p_locationEventCriteria,
reportingCtrl := p_reportingCtrl,
reportingLocationReq := p_reportingLocationReq,
expiryDeadline := p_expiryDeadline
} // End of template mw_user_area_subscription
template (omit) UserDistanceSubscription m_user_distance_subscription(
in CallbackReference p_callbackReference,
in Address p_address := PX_USER,
in template (value) Json.AnyURIArray p_monitoredAddress,
in Json.Number p_distance,
in Json.Number p_trackingAccuracy,
in template (value) DistanceCriteria p_criteria := AllWithinDistance,
in Json.Bool p_checkImmediate := true,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) Json.Bool p_requestTestNotification := omit,
in template (omit) WebsockNotifConfig p_websockNotifConfig := omit,
in template (omit) Json.AnyURI p_referenceAddress := omit,
in template (omit) ReportingCtrl p_reportingCtrl := omit,
in template (omit) TimeStamp p_expiryDeadline := omit
) := {
subscriptionType := "UserAreaSubscription",
clientCorrelator := p_clientCorrelator,
callbackReference := p_callbackReference,
requestTestNotification := p_requestTestNotification,
websockNotifConfig := p_websockNotifConfig,
links_ := omit,
referenceAddress := p_referenceAddress,
monitoredAddress := p_monitoredAddress,
distance := p_distance,
trackingAccuracy := p_trackingAccuracy,
criteria := p_criteria,
checkImmediate := p_checkImmediate, checkImmediate := p_checkImmediate,
reportingCtrl := p_reportingCtrl,
expiryDeadline := p_expiryDeadline
} // End of template m_user_distance_subscription
template (present) UserDistanceSubscription mw_user_distance_subscription(
template (present) CallbackReference p_callbackReference := ?,
template (present) Links p_links_ := ?,
template (present) Address p_address := ?,
template (present) Json.AnyURIArray p_monitoredAddress := ?,
template (present) Json.Number p_distance := ?,
template (present) Json.Number p_trackingAccuracy := ?,
template (present) DistanceCriteria p_criteria := ?,
template (present) Json.Bool p_checkImmediate := ?,
template ClientCorrelator p_clientCorrelator := *,
template Json.Bool p_requestTestNotification := *,
template WebsockNotifConfig p_websockNotifConfig := *,
template Json.AnyURI p_referenceAddress := *,
template ReportingCtrl p_reportingCtrl := *,
template TimeStamp p_expiryDeadline := *
) := {
subscriptionType := "UserAreaSubscription",
clientCorrelator := p_clientCorrelator, clientCorrelator := p_clientCorrelator,
count := *, callbackReference := p_callbackReference,
duration := *, requestTestNotification := p_requestTestNotification,
enteringLeavingCriteria := p_enteringLeavingCriteria, websockNotifConfig := p_websockNotifConfig,
frequency := p_frequency, links_ := p_links_,
latitude := p_latitude, referenceAddress := p_referenceAddress,
link := *, monitoredAddress := p_monitoredAddress,
longitude := p_longitude, distance := p_distance,
radius := p_radius, trackingAccuracy := p_trackingAccuracy,
requester := *, criteria := p_criteria,
resourceURL := p_resourceURL, checkImmediate := p_checkImmediate,
trackingAccuracy := p_trackingAccuracy reportingCtrl := p_reportingCtrl,
} // End of template m_wcircle_notification_subscription expiryDeadline := p_expiryDeadline
} // End of template mw_user_distance_subscription
template (omit) UserDistanceNotification m_user_distance_notification(
in template (value) UserList p_monitoredUsers,
in template (value) DistanceCriteria p_distanceEvent,
in template (value) Links p_links_,
in template (omit) TimeStamp p_timeStamp := omit
) := {
notificationType := "UserDistanceNotification",
timeStamp := p_timeStamp,
monitoredUsers := p_monitoredUsers,
distanceEvent := p_distanceEvent,
links_ := p_links_
} // End of template m_user_distance_notification
template (present) UserDistanceNotification mw_user_distance_notification(
template (present) UserList p_monitoredUsers := ?,
template (present) DistanceCriteria p_distanceEvent := ?,
template (present) Links p_links_ := ?,
template TimeStamp p_timeStamp := *
) := {
notificationType := "UserDistanceNotification",
timeStamp := p_timeStamp,
monitoredUsers := p_monitoredUsers,
distanceEvent := p_distanceEvent,
links_ := p_links_
} // End of template mw_user_distance_notification
template (omit) UserLocationEventNotification m_user_location_event_notification(
in template (value) Address p_address_,
in template (value) LocationEventType p_userLocationEvent,
in template (value) Links p_links_,
in template (omit) TimeStamp p_timeStamp := omit,
in template (omit) LocationInfo p_locationInfo := omit,
in template (omit) CivicAddress p_civicInfo := omit,
in template (omit) RelativeLocationInfo p_relativeLocationInfo := omit,
in template (omit) ZoneId p_zoneId := omit,
in template (omit) AccessPointId p_accessPointId := omit
) :={
notificationType := "UserLocationEventNotification",
timeStamp := p_timeStamp,
address_ := p_address_,
userLocationEvent := p_userLocationEvent,
locationInfo := p_locationInfo,
civicInfo := p_civicInfo,
relativeLocationInfo := p_relativeLocationInfo,
zoneId := p_zoneId,
accessPointId := p_accessPointId,
links_ := p_links_
} // End of template m_user_location_event_notification
template (present) UserLocationEventNotification mw_user_location_event_notification(
template (present) Address p_address_ := ?,
template (present) LocationEventType p_userLocationEvent := ?,
template (present) Links p_links_ := ?,
template TimeStamp p_timeStamp := *,
template LocationInfo p_locationInfo := *,
template CivicAddress p_civicInfo := *,
template RelativeLocationInfo p_relativeLocationInfo := *,
template ZoneId p_zoneId := *,
template AccessPointId p_accessPointId := *
) :={
notificationType := "UserLocationEventNotification",
timeStamp := p_timeStamp,
address_ := p_address_,
userLocationEvent := p_userLocationEvent,
locationInfo := p_locationInfo,
civicInfo := p_civicInfo,
relativeLocationInfo := p_relativeLocationInfo,
zoneId := p_zoneId,
accessPointId := p_accessPointId,
links_ := p_links_
} // End of template mw_user_location_event_notification
template (omit) UserLocationPeriodicNotification m_user_location_periodic_notification(
in template (value) Address p_address_,
in template (value) LocationEventType p_userLocationEvent,
in template (value) Links p_links_,
in template (omit) TimeStamp p_timeStamp := omit,
in template (omit) LocationInfo p_locationInfo := omit,
in template (omit) CivicAddress p_civicInfo := omit,
in template (omit) RelativeLocationInfo p_relativeLocationInfo := omit,
in template (omit) ZoneId p_zoneId := omit,
in template (omit) AccessPointId p_accessPointId := omit,
in template (omit) Json.Bool p_isFinalNotification := omit
) :={
notificationType := "UserLocationPeriodicNotification",
timeStamp := p_timeStamp,
address_ := p_address_,
userLocationEvent := p_userLocationEvent,
locationInfo := p_locationInfo,
civicInfo := p_civicInfo,
relativeLocationInfo := p_relativeLocationInfo,
zoneId := p_zoneId,
accessPointId := p_accessPointId,
isFinalNotification := p_isFinalNotification,
links_ := p_links_
} // End of template m_user_location_periodic_notification
template (present) UserLocationPeriodicNotification mw_user_location_periodic_notification(
template (present) Address p_address_ := ?,
template (present) LocationEventType p_userLocationEvent := ?,
template (present) Links p_links_ := ?,
template TimeStamp p_timeStamp := *,
template LocationInfo p_locationInfo := *,
template CivicAddress p_civicInfo := *,
template RelativeLocationInfo p_relativeLocationInfo := *,
template ZoneId p_zoneId := *,
template AccessPointId p_accessPointId := *,
template Json.Bool p_isFinalNotification := *
) :={
notificationType := "UserLocationPeriodicNotification",
timeStamp := p_timeStamp,
address_ := p_address_,
userLocationEvent := p_userLocationEvent,
locationInfo := p_locationInfo,
civicInfo := p_civicInfo,
relativeLocationInfo := p_relativeLocationInfo,
zoneId := p_zoneId,
accessPointId := p_accessPointId,
isFinalNotification := p_isFinalNotification,
links_ := p_links_
} // End of template mw_user_location_periodic_notification
template (omit) ZoneLocationEventNotification m_zone_location_event_notification(
in template (value) Address p_address_,
in template (value) Links p_links_,
in template (value) LocationEventType p_userLocationEvent,
in template (omit) TimeStamp p_timeStamp := omit,
in template (omit) ZoneId p_zoneId := omit
) := {
notificationType := "ZoneLocationEventNotification",
timeStamp := p_timeStamp,
address_ := p_address_,
userLocationEvent := p_userLocationEvent,
zoneId := p_zoneId,
links_ := p_links_
} // End of template m_zone_location_event_notification
template (present) ZoneLocationEventNotification mw_zone_location_event_notification(
template (present) Address p_address_ := ?,
template (present) Links p_links_ := ?,
template (present) LocationEventType p_userLocationEvent := ?,
template TimeStamp p_timeStamp := *,
template ZoneId p_zoneId := *
) := {
notificationType := "ZoneLocationEventNotification",
timeStamp := p_timeStamp,
address_ := p_address_,
userLocationEvent := p_userLocationEvent,
zoneId := p_zoneId,
links_ := p_links_
} // End of template mw_zone_location_event_notification
template (omit) ZoneStatusNotification m_zone_status_notification(
in template (value) Links p_links_,
in template (omit) UserNumEvent p_userNumEvent := omit,
in template (omit) OperationStatus p_operationStatus := omit,
in template (omit) TimeStamp p_timeStamp := omit,
in template (omit) ZoneId p_zoneId := omit,
in template (omit) AccessPointId p_accessPointId := omit
) := {
notificationType := "ZoneStatusNotification",
timeStamp := p_timeStamp,
userNumEvent := p_userNumEvent,
operationStatus := p_operationStatus,
zoneId := p_zoneId,
accessPointId := p_accessPointId,
links_ := p_links_
} // End of template m_zone_status_notification
template (present) ZoneStatusNotification mw_zone_status_notification(
template (present) Links p_links_ := ?,
template UserNumEvent p_userNumEvent := *,
template OperationStatus p_operationStatus := *,
template TimeStamp p_timeStamp := *,
template ZoneId p_zoneId := *,
template AccessPointId p_accessPointId := *
) := {
notificationType := "ZoneStatusNotification",
timeStamp := p_timeStamp,
userNumEvent := p_userNumEvent,
operationStatus := p_operationStatus,
zoneId := p_zoneId,
accessPointId := p_accessPointId,
links_ := p_links_
} // End of template mw_zone_status_notification
template (value) TestNotification m_test_notification(
in template (value) LinksSubscription p_links_
) := {
notificationType := "TestNotification",
links_ := p_links_
} // End of template m_test_notification
template (present) TestNotification mw_test_notification(
template (present) LinksSubscription p_links_ := ?
) := {
notificationType := "TestNotification",
links_ := p_links_
} // End of template mw_test_notification
template (omit) AreaInfo m_area_info(
in template (value) Shape p_shape,
in template (value) Points p_points,
in template (omit) Json.UInteger p_radius := omit
) := {
shape := p_shape,
points := p_points,
radius := p_radius
} // End of template m_area_info
template (present) AreaInfo mw_area_info(
template (present) Shape p_shape := ?,
template (present) Points p_points := ?,
template Json.UInteger p_radius := *
) := {
shape := p_shape,
points := p_points,
radius := p_radius
} // End of template mw_area_info
template (value) Point m_point(
in Latitude p_latitude,
in Longitude p_longitude
) := {
latitude := p_latitude,
longitude := p_longitude
} // End of template m_point
template (present) Point mw_point(
template (present) Latitude p_latitude := ?,
template (present) Longitude p_longitude := ?
) := {
latitude := p_latitude,
longitude := p_longitude
} // End of template mw_point
template (value) TerminalDistance m_terminal_distance(in Json.Number p_distance) := { template (value) TerminalDistance m_terminal_distance(in Json.Number p_distance) := {
distance := p_distance, distance := p_distance,
accuracy := omit, accuracy := omit,
timestamp_ := omit timestamp_ := omit
} // End of template m_terminal_distance } // End of template m_terminal_distance
template (present) TerminalDistance mw_terminal_distance(template (present) Json.Number p_distance := ?) := { template (present) TerminalDistance mw_terminal_distance(template (present) Json.Number p_distance := ?) := {
distance := p_distance, distance := p_distance,
accuracy := *, accuracy := *,
timestamp_ := * timestamp_ := *
} // End of template mw_terminal_distance } // End of template mw_terminal_distance
template (omit) DistanceNotificationSubscription m_distance_notification_subscription(
in template (value) CallbackReference p_callbackReference,
in template (value) Json.Bool p_checkImmediate := true,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (value) DistanceCriteria p_criteria := AllWithinDistance,
in template (value) Json.Number p_distance,
in template (value) UInt32 p_frequency := 10,
in template (value) Addresses p_monitoredAddress,
in template (omit) Addresses p_referenceAddress := omit,
in template (value) Json.Number p_trackingAccuracy := 10.0,
in template (omit) ResourceURL p_resourceURL := omit
) := {
callbackReference := p_callbackReference,
checkImmediate := p_checkImmediate,
clientCorrelator := p_clientCorrelator,
count := omit,
criteria := p_criteria,
distance := p_distance,
duration := omit,
frequency := p_frequency,
link := omit,
monitoredAddress := p_monitoredAddress,
referenceAddress := p_referenceAddress,
requester := omit,
resourceURL := p_resourceURL,
trackingAccuracy := p_trackingAccuracy
} // End of template m_distance_notification_subscription
template DistanceNotificationSubscription mw_distance_notification_subscription(
template (present) CallbackReference p_callbackReference := ?,
template (present) Json.Bool p_checkImmediate := ?,
template ClientCorrelator p_clientCorrelator := *,
template (present) DistanceCriteria p_criteria := ?,
template (present) Json.Number p_distance := ?,
template (present) UInt32 p_frequency := ?,
template (present) Addresses p_monitoredAddress := ?,
template Addresses p_referenceAddress := *,
template (present) Json.Number p_trackingAccuracy := ?,
template ResourceURL p_resourceURL := *
) := {
callbackReference := p_callbackReference,
checkImmediate := p_checkImmediate,
clientCorrelator := p_clientCorrelator,
count := *,
criteria := p_criteria,
distance := p_distance,
duration := *,
frequency := p_frequency,
link := *,
monitoredAddress := p_monitoredAddress,
referenceAddress := p_referenceAddress,
requester := *,
resourceURL := p_resourceURL,
trackingAccuracy := p_trackingAccuracy
} // End of template mw_distance_notification_subscription
template (omit) PeriodicNotificationSubscription m_periodic_notification_subscription(
in template (value) Addresses p_address,
in template (value) CallbackReference p_callbackReference,
in template (value) UInt32 p_frequency := 10,
in template (value) UInt32 p_requestedAccuracy := 1,
in template (omit) ClientCorrelator p_clientCorrelator := omit,
in template (omit) ResourceURL p_resourceURL := omit
) := {
address_ := p_address,
callbackReference := p_callbackReference,
clientCorrelator := p_clientCorrelator,
duration := omit,
frequency := p_frequency,
link := omit,
requestedAccuracy := p_requestedAccuracy,
requester := omit,
resourceURL := p_resourceURL
} // End of template m_periodic_notification_subscription
template PeriodicNotificationSubscription mw_periodic_notification_subscription(
template (present) Addresses p_address := ?,
template (present) CallbackReference p_callbackReference := ?,
template (present) UInt32 p_frequency := ?,
template (present) UInt32 p_requestedAccuracy := ?,
template ClientCorrelator p_clientCorrelator := *,
template ResourceURL p_resourceURL := *
) := {
address_ := p_address,
callbackReference := p_callbackReference,
clientCorrelator := p_clientCorrelator,
duration := *,
frequency := p_frequency,
link := *,
requestedAccuracy := p_requestedAccuracy,
requester := *,
resourceURL := p_resourceURL
} // End of template mw_periodic_notification_subscription
} // End of module LocationAPI_Templates } // End of module LocationAPI_Templates
/** /**
* @author ETSI / STF569 * @author ETSI / STF569 / TTF T027
* @version $Url$ * @version $Url$
* $Id$ * $Id$
* @desc Types ANd Values for ETSI GS MEC 013 V2.1.1 (2019-09) * @desc Types ANd Values for ETSI GS MEC 013 V3.1.1 (2019-09)
* @copyright ETSI Copyright Notification * @copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission. * No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media. * The copyright and the foregoing restriction extend to reproduction in all media.
...@@ -13,81 +13,104 @@ module LocationAPI_TypesAndValues { ...@@ -13,81 +13,104 @@ module LocationAPI_TypesAndValues {
// JSON // JSON
import from Json all; import from Json all;
// LibCommon // LibMec
import from LibCommon_BasicTypesAndValues all; import from LibMec_TypesAndValues all;
/** /**
* @desc The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC * @desc This type represents a list of UserInfo.
* @member user Collection of the user location information list.
* @member resourceURL Self referring URL.
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.5 Type: UserList
*/ */
type UInt32 Seconds; type record UserList {
UserInfos user optional,
ResourceURL resourceURL optional
}
type record of UserInfo UserInfos;
/** /**
* @desc The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC * @desc This type represents configuration for the delivery of subscription notifications over Websockets
* @member websocketUri Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications
* @member requestWebsocketUri Set to true by the service consumer to indicate that Websocket delivery is requested
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.5.4 Type: WebsockNotifConfig
*/ */
type UInt32 NanoSeconds; type record WebsockNotifConfig {
Json.AnyURI websocketUri optional,
Json.Bool requestWebsocketUri optional
}
/** /**
* @desc * @desc This type represents some requirements about reporting the event of user locationreportingLocationReq This IE shall be set to true if a location estimate is required for each event report
* @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC * @member accessPointList One or more access points forming a monitoring area that could be any shape
* @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC * @member zoneId Identifier of zone (e.g. zone001) to monitor
* @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.5.2 Type: TimeStamp * @member occurrenceInfo One time only report indication
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.5.5 Type: UserEventPara
*/
type record UserEventPara {
Json.Bool reportingLocationReq optional,
AccessPointList accessPointList optional,
ZoneId zoneId optional,
OccurrenceInfo occurrenceInfo optional
} // End of type UserEventPara
/**
* @desc Indicates whether event reporting is one time
* @see ETSI TS 129 572 V16.7.0 (2021-08) Clause 6.1.6.3.16 Enumeration: OccurrenceInfo
*/ */
type record TimeStamp { type enumerated OccurrenceInfo {
Seconds seconds, ONE_TIME_EVENT,
NanoSeconds nanoSeconds MULTIPLE_TIME_EVENT
} }
/** /**
* @desc A type containing list of users. * @desc This type represents the parameters that control the report times and frequency
* @member user Collection of the zone information list. * @member minimumInterval Minimum interval between reports in case frequently reporting. Unit is second.
* @member resourceURL Self referring URL. * @member maximumFrequency Maximum frequency (in seconds) of notifications per subscription
* @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.2.2 Type: UserInfo * @member maximumCount Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.5.6 Type: ReportingCtrl
*/ */
type record of UserInfo UserInfos; type record ReportingCtrl {
type record UserList { Json.UInteger minimumInterval optional,
UserInfos user optional, Json.UInteger maximumFrequency optional,
ResourceURL resourceURL Json.UInteger maximumCount optional
} } // End of type ReportingCtrl
/** /**
* @desc Shape information, as detailed in [14], associated with the reported location coordinate * @desc This type represents the parameters that describe an area
* @see ETSI GS MEC 013 V2.1.1 (2019-09) Table 6.5.3-1: Definition of type LocationInfo * @member shape The shape of the area monitored
* @member points Shall include one point if the shape is CIRCLE
* @member radius
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.5.7 Type: AreaInfo
*/ */
type enumerated Shape { type record AreaInfo {
ELLIPSOID_ARC (1), Shape shape,
ELLIPSOID_POINT (2), Points points,
ELLIPSOID_POINT_ALTITUDE (3), Json.UInteger radius optional
ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID (4), } // End of type AreaInfo
ELLIPSOID_POINT_UNCERT_CIRCLE (5),
ELLIPSOID_POINT_UNCERT_ELLIPSE (6),
POLYGON (7)
} with {
variant "JSON: as number"
}
/** /**
* @desc Velocity information, as detailed in [14], associated with the reported location coordinate * @desc Location latitude, expressed in the range -90° to +90°
* @see ETSI GS MEC 013 V2.1.1 (2019-09) Table 6.5.3-1: Definition of type LocationInfo
*/ */
type enumerated VelocityType {
HORIZONTAL (1),
HORIZONTAL_VERTICAL (2),
HORIZONTAL_UNCERT (3),
HORIZONTAL_VERTICAL_UNCERT (4)
}
type record Velocity {
VelocityType velocityType,
UInt32 bearing,
UInt32 horizontalSpeed,
Int32 verticalSpeed optional,
UInt32 verticalUncertainty optional
}
type record of Json.Number Latitude; type record of Json.Number Latitude;
/**
* @desc Location longitude, expressed in the range -180° to +180°
*/
type record of Json.Number Longitude; type record of Json.Number Longitude;
/**
* @desc This type represents the geographical location of a point
* @member latitude Location latitude, expressed in the range -90° to +90°
* @member longitude Location longitude, expressed in the range -180° to +180°
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.5.8 Type: Point
*/
type record Point {
Latitude latitude,
Longitude longitude
} // End of type Point
type record of Point Points;
/** /**
* @desc A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided. * @desc A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided.
* @member latitude Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if "shape" equals 7. * @member latitude Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if "shape" equals 7.
...@@ -104,28 +127,85 @@ module LocationAPI_TypesAndValues { ...@@ -104,28 +127,85 @@ module LocationAPI_TypesAndValues {
* @member includedAngle Present only if \"shape\" equals 6 * @member includedAngle Present only if \"shape\" equals 6
* @member shape Shape information, as detailed in [14], associated with the reported location coordinate * @member shape Shape information, as detailed in [14], associated with the reported location coordinate
* @member velocity Structure with attributes relating to the target entity’s velocity, as defined in [14] * @member velocity Structure with attributes relating to the target entity’s velocity, as defined in [14]
* @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.5.3 Type: LocationInfo * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.5.3 Type: LocationInfo
*/ */
type record LocationInfo { type record LocationInfo {
Latitude latitude, Latitude latitude,
Longitude longitude, Longitude longitude,
Json.Number altitude optional, Json.Number altitude optional,
UInt32 accuracy optional, Json.UInteger accuracy optional,
UInt32 accuracySemiMinor optional, Json.UInteger accuracySemiMinor optional,
UInt32 accuracyAltitude optional, Json.UInteger accuracyAltitude optional,
UInt32 orientationMajorAxis optional, Json.UInteger orientationMajorAxis optional,
UInt32 confidence optional, Json.UInteger confidence optional,
UInt32 innerRadius optional, Json.UInteger innerRadius optional,
UInt32 uncertaintyRadius optional, Json.UInteger uncertaintyRadius optional,
UInt32 offsetAngle optional, Json.UInteger offsetAngle optional,
UInt32 includedAngle optional, Json.UInteger includedAngle optional,
Shape shape, Shape shape,
TimeStamp timestamp_ optional, TimeStamp timestamp_ optional,
Velocity velocity optional Velocity velocity optional
} with { } with {
variant (timestamp_) "name as 'timestamp'"; variant (timestamp_) "name as 'timestamp'";
} // End of type LocationInfo } // End of type LocationInfo
/**
* @desc Shape information, as detailed in [14], associated with the reported location coordinate
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Table 6.5.3-1: Definition of type LocationInfo
*/
type enumerated Shape {
ELLIPSOID_ARC (1),
ELLIPSOID_POINT (2),
ELLIPSOID_POINT_ALTITUDE (3),
ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID (4),
ELLIPSOID_POINT_UNCERT_CIRCLE (5),
ELLIPSOID_POINT_UNCERT_ELLIPSE (6),
POLYGON (7)
} with {
variant "JSON: as number"
}
/**
* @desc Velocity information, as detailed in [14], associated with the reported location coordinate
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Table 6.5.3-1: Definition of type LocationInfo
*/
type enumerated VelocityType {
HORIZONTAL (1),
HORIZONTAL_VERTICAL (2),
HORIZONTAL_UNCERT (3),
HORIZONTAL_VERTICAL_UNCERT (4),
ELLIPSOID_POINT_UNCERT_CIRCLE (5),
ELLIPSOID_POINT_UNCERT_ELLIPSE (6),
POLYGON (7)
} with {
variant "JSON: as number"
}
/**
* @desc Structure with attributes relating to the target entity's velocity
* @member velocityType Velocity information
* @member bearing Bearing, expressed in the range 0° to 360°
* @member horizontalSpeed Horizontal speed
* @member uncertainty Horizontal uncertainty
* @member verticalSpeed Vertical speed, expressed in km/h
* @member verticalUncertainty Vertical uncertainty
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Table 6.5.3-1: Definition of type LocationInfo
*/
type record Velocity {
VelocityType velocityType,
Json.UInteger bearing,
Json.UInteger horizontalSpeed,
Json.UInteger uncertainty optional,
Json.Integer verticalSpeed optional,
Json.UInteger verticalUncertainty optional
} // End of type Velocity
/**
* @desc Identifier of access point, <E-CGI><Cell Portion ID> (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
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.6.1 accessPointId
*/
type Json.String AccessPointId;
/** /**
* @desc A type containing zone information. * @desc A type containing zone information.
* @member zoneId Identifier of zone * @member zoneId Identifier of zone
...@@ -133,33 +213,31 @@ module LocationAPI_TypesAndValues { ...@@ -133,33 +213,31 @@ module LocationAPI_TypesAndValues {
* @member numberOfUnservicableAccessPoints Number of inoperable access points within the zone. * @member numberOfUnservicableAccessPoints Number of inoperable access points within the zone.
* @member numberOfUsers The number of users currently on the access point. * @member numberOfUsers The number of users currently on the access point.
* @member resourceURL Self referring URL. * @member resourceURL Self referring URL.
* @see OMA-TS-REST_NetAPI_ZonalPresence-V1_0-20160308-C Clause 5.2.2.2 Type: ZoneInfo
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.1 Zonal presence data types
*/ */
type record ZoneInfo { type record ZoneInfo {
ZoneId zoneId, ZoneId zoneId,
NumberOfAccessPoints numberOfAccessPoints, NumberOfAccessPoints numberOfAccessPoints,
NumberOfUnserviceableAccessPoints numberOfUnservicableAccessPoints, NumberOfUnserviceableAccessPoints numberOfUnservicableAccessPoints,
NumberOfUsers numberOfUsers, NumberOfUsers numberOfUsers,
ResourceURL resourceURL ResourceURL resourceURL
} }
type record of ZoneInfo ZoneInfos;
/** /**
* @desc Collection of the zone information list. * @desc Collection of the zone information list.
* @member zone Collection of the zone information list. * @member zone Collection of the zone information list.
* @member resourceURL Self referring URL. * @member resourceURL Self referring URL.
* @see OMA-TS-REST_NetAPI_ZonalPresence-V1_0-20160308-C Clause 5.2.2.1 Type: ZoneList
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.1 Zonal presence data types
*/ */
type record of ZoneInfo ZoneInfos;
type record ZoneList { type record ZoneList {
ZoneInfos zone optional, ZoneInfos zone optional,
ResourceURL resourceURL ResourceURL resourceURL
} }
/** type Json.UInteger DateTimeStamp; // FIXME To be reviewed
* @desc Identifier of access point, <E-CGI><Cell Portion ID> (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
* @see ETSI GS MEC 013 V2.1.1 (2019-09) 6.6.1 accessPointId
*/
type Json.String AccessPointId;
type UInt32 DateTimeStamp; // FIXME To be reviewed
/** /**
* @desc A type containing access point information. * @desc A type containing access point information.
...@@ -170,17 +248,20 @@ module LocationAPI_TypesAndValues { ...@@ -170,17 +248,20 @@ module LocationAPI_TypesAndValues {
* @member interestRealm Interest realm of access point * @member interestRealm Interest realm of access point
* @member timezone Time zone of access point * @member timezone Time zone of access point
* @member resourceURL Self referring URL. * @member resourceURL Self referring URL.
* @see OMA-TS-REST_NetAPI_ZonalPresence-V1_0-20160308-C Clause 5.2.2.4 Type: AccessPointInfo
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.1 Zonal presence data types
*/ */
type record AccessPointInfo { type record AccessPointInfo {
AccessPointId accessPointId, AccessPointId accessPointId,
LocationInfo locationInfo optional, LocationInfo locationInfo optional,
ConnectionType connectionType, ConnectionType connectionType,
OperationStatus operationStatus, OperationStatus operationStatus,
NumberOfUsers numberOfUsers, NumberOfUsers numberOfUsers,
InterestRealm interestRealm optional, InterestRealm interestRealm optional,
DateTimeStamp timezone optional, DateTimeStamp timezone optional,
ResourceURL resourceURL ResourceURL resourceURL
} }
/** /**
* @desc Collection of the access point information list * @desc Collection of the access point information list
*/ */
...@@ -191,15 +272,17 @@ module LocationAPI_TypesAndValues { ...@@ -191,15 +272,17 @@ module LocationAPI_TypesAndValues {
* @member zoneId Identifier of zone * @member zoneId Identifier of zone
* @member accessPoint Collection of the access point information list. * @member accessPoint Collection of the access point information list.
* @member resourceURL Self referring URL * @member resourceURL Self referring URL
* @see OMA-TS-REST_NetAPI_ZonalPresence-V1_0-20160308-C Clause 5.2.2.3 Type: AccessPointList
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.1 Zonal presence data types
*/ */
type record AccessPointList { type record AccessPointList {
ZoneId zoneId, ZoneId zoneId,
AccessPointInfos accessPoint optional, AccessPointInfos accessPoint optional,
ResourceURL resourceURL ResourceURL resourceURL
} }
/** /**
* @desc Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI). * @desc Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
*/ */
type Json.AnyURI Address type Json.AnyURI Address
type record of Address Addresses; type record of Address Addresses;
...@@ -209,31 +292,10 @@ module LocationAPI_TypesAndValues { ...@@ -209,31 +292,10 @@ module LocationAPI_TypesAndValues {
*/ */
type Json.String AncillaryInfo; type Json.String AncillaryInfo;
/**
* @desc CallBackData if passed by the application during the associated ZonalTrafficSubscription and UserTrackingSubscription operation. See [\
REST_NetAPI_Common].
*/
type Json.String CallbackData;
/**
* @desc Notification serialization format
*/
type enumerated NotificationFormat {
JSON (1),
XML (2)
}
/** /**
* @desc CallbackData description * @desc CallbackData description
* @member callbackData 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 */
* @member notificationFormat type Json.AnyURI CallbackReference;
* @member notifyURL Notify Callback URL
*/
type record CallbackReference {
NotifyURL notifyURL,
CallbackData callbackData optional,
NotificationFormat notificationFormat optional
}
/** /**
* @desc 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. * @desc 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.
...@@ -241,19 +303,20 @@ REST_NetAPI_Common]. ...@@ -241,19 +303,20 @@ REST_NetAPI_Common].
type Json.String ClientCorrelator; type Json.String ClientCorrelator;
/** /**
* @desc The connection type for the access point * @desc This enumeration represents the connection type of an access point.
* @member LTE Access point provides a LTE-Femto connection
* @member Wifi Access point provides a Wifi® connection
* @member Wimax Access point provides a Wimax® connection
* @member FiveG_NR Access point provides a 5G NR connection
* @member UNKNOWN Access point connection type is unknown
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.7.5 Enumeration: ConnectionType
*/ */
type enumerated ConnectionType { type enumerated ConnectionType {
Femto, LTE,
LTE_femto,
Smallcell,
LTE_smallcell,
Wifi, Wifi,
Pico,
Micro,
Macro,
Wimax, Wimax,
Unknown FiveG_NR,
UNKNOWN
} }
/** /**
...@@ -277,54 +340,86 @@ REST_NetAPI_Common]. ...@@ -277,54 +340,86 @@ REST_NetAPI_Common].
type Json.String InterestRealm; type Json.String InterestRealm;
/** /**
* @desc Link to other resources * @desc This type represents a type of link and may be referenced from data structures
* @member rel Describes the relationship between the URI and the resource. * @member href URI referring to a resource
* @member href UTI * @see ETSI TS 129 572 V16.7.0 (2021 08) Clause 6.7.2 Type: LinkType
*/
type record LinkType {
Json.AnyURI href
}
/**
* @desc This type represents specified event types for UE location report
* @member ENTERING_AREA_EVENT Entering area reporting event
* @member LEAVING_AREA_EVENT Leaving area reporting event
* @see ETSI TS 129 572 V16.7.0 (2021 08) Clause 6.7.3 Enumeration: LocationEventType
*/ */
type record Link { type enumerated LocationEventType {
Json.String rel, ENTERING_AREA_EVENT,
Json.String href LEAVING_AREA_EVENT
}
type record of LocationEventType LocationEventCriteria;
/**
* @desc This enumeration represents the result of a localization associated with a notification
* @member SUCCESS Localization is successful
* @member ABNORMAL Localization is failed due to timeout or other unspecific errors
* @see ETSI TS 129 572 V16.7.0 (2021 08) 6.7.4 Enumeration: NotificationResult
*/
type enumerated NotificationResult {
SUCCESS,
ABNORMAL
} }
/** /**
* @desc The URL of your own listener application. * @desc The URL of your own listener application.
*/ */
type Json.String NotifyURL; type Json.AnyURI NotifyURL;
/**
* @desc Hyperlink related to the resource
* @member self_ Self-referring URI
*/
type record Links {
LinkType self_
} with {
variant (self_) "name as 'self'";
}
/** /**
* @desc The number of access points within the zone * @desc The number of access points within the zone
*/ */
type UInt32 NumberOfAccessPoints; type Json.UInteger NumberOfAccessPoints;
/** /**
* @desc Number of inoperable access points within the zone. * @desc Number of inoperable access points within the zone.
*/ */
type UInt32 NumberOfUnserviceableAccessPoints; type Json.UInteger NumberOfUnserviceableAccessPoints;
/** /**
* @desc The number of users currently on the access point. * @desc The number of users currently on the access point.
*/ */
type UInt32 NumberOfUsers; type Json.UInteger NumberOfUsers;
/** /**
* @desc Threshold number of users in an access point which if crossed shall cause a notification. * @desc Threshold number of users in an access point which if crossed shall cause a notification.
*/ */
type UInt32 NumberOfUsersAPThreshold; type Json.UInteger NumberOfUsersAPThreshold;
/** /**
* @desc This element shall be present when ZoneStatusSubscription includes numberOfUsersAPThreshold element and the number of users in an access point exceeds the threshold defined in the subscription. * @desc This element shall be present when ZoneStatusSubscription includes numberOfUsersAPThreshold element and the number of users in an access point exceeds the threshold defined in the subscription.
*/ */
type UInt32 NumberOfUsersInAP; type Json.UInteger NumberOfUsersInAP;
/** /**
* @desc Threshold number of users in a zone which if crossed shall cause a notification. * @desc Threshold number of users in a zone which if crossed shall cause a notification.
*/ */
type UInt32 NumberOfUsersInZone; type Json.UInteger NumberOfUsersInZone;
/** /**
* @desc Threshold number of users in a zone which if crossed shall cause a notification. * @desc Threshold number of users in a zone which if crossed shall cause a notification.
*/ */
type UInt32 NumberOfUsersZoneThreshold; type Json.UInteger NumberOfUsersZoneThreshold;
/** /**
* @desc The operation status of the access point * @desc The operation status of the access point
...@@ -373,199 +468,152 @@ REST_NetAPI_Common]. ...@@ -373,199 +468,152 @@ REST_NetAPI_Common].
*/ */
type record of UserEventType UserEventCriteria; type record of UserEventType UserEventCriteria;
/**
* @desc Definition of type CivicAddress
* @member country The two-letter ISO 3166 country code in capital ASCII letters
* @member A1 National subdivisions
* @member A2 County, parish
* @member A3 City, township
* @member A4 City division, borough, city district
* @member A5 Neighbourhood
* @member A6 Group of streets below the neighbourhood level IETF RFC 4776 [6]
* @member PRD Leading street direction IETF RFC 4776 [6]
* @member POD Trailing street suffix IETF RFC 4776 [6]
* @member STS Street suffix or type IETF RFC 4776 [6]
* @member HNO House number IETF RFC 4776 [6]
* @member HNS House number suffix IETF RFC 4776 [6]
* @member LMK Landmark or vanity address IETF RFC 4776 [6]
* @member LOC Additional location information IETF RFC 4776 [6]
* @member NAM Name (residence and office occupant) IETF RFC 4776 [6]
* @member PC Postal/zip code IETF RFC 4776 [6]
* @member BLD Building (structure) IETF RFC 5139 [7]
* @member UNIT Unit (apartment, suite) IETF RFC 5139 [7]
* @member FLR Floor IETF RFC 4776 [6]
* @member Room Place-type IETF RFC 5139 [7]
* @member PCN Postal community name IETF RFC 5139 [7]
* @member POBOX Post office box (P.O. box) IETF RFC 5139 [7]
* @member ADDCODE Additional code IETF RFC 5139 [7]
* @member SEAT Seat (desk, cubicle, workstation) IETF RFC 5139 [7]
* @member RD Primary road or street IETF RFC 5139 [7]
* @member RDSEC Road clause IETF RFC 5139 [7]
* @member RDBR Road branch IETF RFC 5139 [7]
* @member RDSUBBR Road sub-branch IETF RFC 5139 [7]
* @member PRM Road pre-modifier IETF RFC 5139 [7]
* @member POM Road post-modifier IETF RFC 5139 [7]
* @member usageRules When present, this IE shall carry the value of "usagerules" Element of the PIDL-LO XML document
* @member method When present, this IE shall contain the method token, carried by the "method" Element of the PIDLLO XML document. IETF RFC 4119 [25] providedBy string O 0..1 When present, this IE shall carry the value of "provided-by" Element of the PIDL-LO XML document
* @member providedBy When present, this IE shall carry the value of "provided-by" Element of the PIDL-LO XML document
* @see ETSI TS 129 572 V16.7.0 (2021 08) Table 6.1.6.2.14-1
*/
type record CivicAddress {
Json.String country,
Json.String A1 optional,
Json.String A3 optional,
Json.String A4 optional,
Json.String A5 optional,
Json.String A6 optional,
Json.String PRD optional,
Json.String POD optional,
Json.String STS optional,
Json.String HNO optional,
Json.String HNS optional,
Json.String LMK optional,
Json.String LOC optional,
Json.String NAM optional,
Json.String PC optional,
Json.String BLD optional,
Json.String UNIT optional,
Json.String FLR optional,
Json.String Room optional,
Json.String PCN optional,
Json.String POBOX optional,
Json.String ADDCODE optional,
Json.String SEAT optional,
Json.String RD optional,
Json.String RDSEC optional,
Json.String RDBR optional,
Json.String RDSUBBR optional,
Json.String PRM optional,
Json.String POM optional,
Json.String usageRules optional,
Json.String method optional,
Json.String providedBy
}
/** /**
* @desc A type containing user information. * @desc A type containing user information.
* @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI). * @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI).
* @member accessPointId Identifier of access point, <E-CGI><Cell Portion ID> (reference ETSI TS 129 171). * @member accessPointId Identifier of access point, <E-CGI><Cell Portion ID> (reference ETSI TS 129 171).
* @member zoneId Identifier of zone * @member zoneId The identity of the zone the user is currently within,
* @member timestamp * @member timestamp Date and time that location was collected
* @member resourceURL Self referring URL. * @member resourceURL Self referring URL.
* @member locationInfo A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided. * @member locationInfo A type containing location information with latitude, longitude and altitude, in addition the accuracy of the information are provided.
* @member civicInfo Contextual information of a user location
* @member contextLocationInfo Contextual information of a user location (e.g. aisle, floor, room number, etc.). * @member contextLocationInfo Contextual information of a user location (e.g. aisle, floor, room number, etc.).
* @member ancillaryInfo Reserved for future use * @member ancillaryInfo Reserved for future use
* @see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.2.2 Type: UserInfo * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.2 Type: UserInfo
*/ */
type record UserInfo { type record UserInfo {
Address address_, Address address_,
AccessPointId accessPointId, AccessPointId accessPointId,
ZoneId zoneId, ZoneId zoneId,
TimeStamp timestamp_, ResourceURL resourceURL optional,
ResourceURL resourceURL, TimeStamp timestamp_,
LocationInfo locationInfo optional, LocationInfo locationInfo optional,
CivicAddress civicInfo optional,
ContextLocationInfo contextLocationInfo optional, ContextLocationInfo contextLocationInfo optional,
AncillaryInfo ancillaryInfo optional AncillaryInfo ancillaryInfo optional
} with { } with {
variant (address_) "name as 'address'"; variant (address_) "name as 'address'";
variant (timestamp_) "name as 'timestamp'"; variant (timestamp_) "name as 'timestamp'";
} // End of type UserInfo } // End of type UserInfo
/** /**
* @desc A type containing user tracking subscription. * @desc Represents the relative location in a reference system that is a Cartesian coordinate system and described by a map
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server * @member mapInfo Indicates a map corresponding to a location area
* @member callbackReference * @member X Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system
* @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor * @member Y Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system
* @member userEventCriteria List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event * @member Z Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3D-Point
* @member resourceURL Self referring URL * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.3
*/ */
type record UserTrackingSubscription { type record RelativeLocationInfo {
ClientCorrelator clientCorrelator optional, MapInfo mapInfo,
CallbackReference callbackReference, Json.Number X,
Address address_, Json.Number Y,
UserEventCriteria userEventCriteria optional, Json.Number Z optional
ResourceURL resourceURL optional
} with {
variant (address_) "name as 'address'";
} }
/** /**
* @desc A type containing periodic tracking subscription. * @desc Indicates the location of the map origin in the local Cartesian coordinate system
* @member * @member latitude Location latitude, expressed in the range -90° to +90°
* @member longitude Location longitude, expressed in the range -180° to +180°
* @member Location altitude relative to the WGS84 ellipsoid surface
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.4
*/ */
type record PeriodicTrackingSubscription { type record MapInfoOrigin {
ClientCorrelator clientCorrelator optional, Latitude latitude,
CallbackReference callbackReference, Longitude longitude,
Address address_, Json.Number altitude optional
Json.Number frequency,
Json.Number requestedAccuracy,
ResourceURL resourceURL optional
} with {
variant (address_) "name as 'address'";
} }
/** /**
* @desc A type containing zonal presence notification * @desc This type represents a map that may incorporates an origin
* @member callbackData CallBackData if passed by the application during the associated ZonalTrafficSubscription and UserTrackingSubscription operation. See * @member mapId Indicates the ID of the map
* @member zoneId Identifier of zone * @member Indicates the location of the map origin in the local Cartesian coordinate system
* @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor * @member ancillaryMapInfo Ancillary map information may be used to convert coordinates between different coordinate systems
* @member interestRealm Interest realm of access point (e.g. geographical area, a type of industry etc.) * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.4
* @member userEventType
* @member currentAccessPointId Identifier of access point
* @member previousAccessPointId Identifier of access point
* @member timestamp_
* @member link Link to other resources that are in relationship with this notification. The server SHOULD include a link to the related subscription. No other links are required or suggested by this specification.
*/
type record ZonalPresenceNotification {
CallbackData callbackData optional,
ZoneId zoneId,
Address address_,
InterestRealm interestRealm optional,
UserEventType userEventType,
CurrentAccessPointId currentAccessPointId,
PreviousAccessPointId previousAccessPointId optional,
TimeStamp timestamp_,
Link link optional
} with {
variant (address_) "name as 'address'";
variant (timestamp_) "name as 'timestamp'";
}
/**
* @desc A type containing zonal traffic subscription
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference
* @member zoneId Identifier of zone
* @member interestRealm Interest realms of access points within a zone (e.g. geographical area, a type of industry etc.).
* @member userEventCriteria 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.
* @member duration Period (in seconds) of time notifications are provided for
* @member resourceURL Self referring URL
*/ */
type record ZonalTrafficSubscription { type record MapInfo {
ClientCorrelator clientCorrelator optional, Json.String mapId,
CallbackReference callbackReference, MapInfoOrigin origin optional,
ZoneId zoneId, AncillaryMapInfo ancillaryMapInfo optional
InterestRealm interestRealm optional,
UserEventCriteria userEventCriteria optional,
Duration duration optional,
ResourceURL resourceURL optional
} }
type Json.String AncillaryMapInfo;
/** /**
* @desc Identifier of zone * @desc Identifier of zone
*/ */
type Json.String ZoneId; type Json.String ZoneId;
/**
* @desc A type containing zone status notification.
* @member callbackData CallBackData if passed by the application during the associated ZoneStatusSubscription operation
* @member zoneId Identifier of zone
* @member accessPointId Identifier of an access point
* @member numberOfUsersInZone This element shall be present when ZoneStatusSubscription includes numberOfUsersZoneThreshold element and the number of users in a zone exceeds the threshold defined in this subscription
* @member numberOfUsersInAP This element shall be present when ZoneStatusSubscription includes numberOfUsersAPThreshold element and the number of users in an access point exceeds the threshold defined in the subscription
* @member operationStatus
* @member timestamp_
* @member link Link to other resources that are in relationship with this notification
*/
type record ZoneStatusNotification {
CallbackData callbackData optional,
ZoneId zoneId,
AccessPointId accessPointId optional,
NumberOfUsersInZone numberOfUsersInZone optional,
NumberOfUsersInAP numberOfUsersInAP optional,
OperationStatus operationStatus optional,
TimeStamp timestamp_,
Link link optional
} with {
variant (timestamp_) "name as 'timestamp'";
}
/**
* @desc A type containing zone status subscription.
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member resourceURL Self referring URL
* @member callbackReference
* @member zoneId Identifier of zone
* @member numberOfUsersZoneThreshold Threshold number of users in a zone which if crossed shall cause a notification
* @member numberOfUsersAPThreshold Threshold number of users in an access point which if crossed shall cause a notification
* @member operationStatus List of operation status values to generate notifications for (these apply to all access points within a zone).
*/
type record ZoneStatusSubscription {
ClientCorrelator clientCorrelator optional,
ResourceURL resourceURL optional,
CallbackReference callbackReference,
ZoneId zoneId,
NumberOfUsersZoneThreshold numberOfUsersZoneThreshold optional,
NumberOfUsersAPThreshold numberOfUsersAPThreshold optional,
OperationStatus operationStatus optional
}
/**
* @desc A type containing data for notifications, when the area is defined as a circle
* @member address Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member callbackReference
* @member checkImmediate Check location immediately after establishing notification
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member count 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
* @member duration 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
* @member enteringLeavingCriteria
* @member frequency Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications)
* @member latitude Latitude of center point
* @member link Link to other resources that are in relationship with the resource
* @member longitude Longitude of center point
* @member radius Radius circle around center point in meters
* @member requester Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member resourceURL Self referring URL
* @member trackingAccuracy Number of meters of acceptable error in tracking distance
*/
type record CircleNotificationSubscription {
Addresses address_,
CallbackReference callbackReference,
Json.Bool checkImmediate,
ClientCorrelator clientCorrelator optional,
UInt32 count optional,
UInt32 duration optional,
EnteringLeavingCriteria enteringLeavingCriteria,
UInt32 frequency,
Json.Number latitude,
Link link optional,
Json.Number longitude,
Json.Number radius,
Json.AnyURI requester optional,
ResourceURL resourceURL optional,
Json.Number trackingAccuracy
} with {
variant (address_) "name as 'address'";
}
type enumerated EnteringLeavingCriteria { type enumerated EnteringLeavingCriteria {
Entering, Entering,
Leaving Leaving
...@@ -576,17 +624,23 @@ REST_NetAPI_Common]. ...@@ -576,17 +624,23 @@ REST_NetAPI_Common].
* @member distance Distance from terminal to a location or between two terminals specified in meters * @member distance Distance from terminal to a location or between two terminals specified in meters
* @member accuracy Accuracy of the provided distance in meters * @member accuracy Accuracy of the provided distance in meters
* @member timestamp Date and time that location from which distance is calculated was collected * @member timestamp Date and time that location from which distance is calculated was collected
* @see OMA-TS-REST_NetAPI_TerminalLocation-V1_0_1-20151029-A Clause 5.2.2.5 Type: TerminalDistance
*/ */
type record TerminalDistance { type record TerminalDistance {
Json.Number distance, Json.Number distance,
Json.Number accuracy optional, Json.Number accuracy optional,
TimeStamp timestamp_ optional TimeStamp timestamp_ optional
} with { } with {
variant (timestamp_) "name as 'timestamp'"; variant (timestamp_) "name as 'timestamp'";
} }
/** /**
* @desc Distance criterium * @desc Distance criterium
* @member AllWithinDistance All monitored devices are within the specified distance
* @member AnyWithinDistance Any of monitored devices gets within the specified distance
* @member AllBeyondDistance All monitored devices are beyond the specified distance
* @member AnyBeyondDistance Any of monitored devices gets beyond the specified distance
* @see OMA-TS-REST_NetAPI_TerminalLocation-V1_0_1-20151029-A Clause 5.2.3.2 Enumeration: DistanceCriteria
*/ */
type enumerated DistanceCriteria { type enumerated DistanceCriteria {
AllWithinDistance, AllWithinDistance,
...@@ -596,147 +650,466 @@ REST_NetAPI_Common]. ...@@ -596,147 +650,466 @@ REST_NetAPI_Common].
} }
/** /**
* @desc A type containing data for distance subscription, with reference to other devices * @desc A type containing device address, retrieval status and location information
* @member callbackReference * @member address_ Address of the terminal to which the location information applies (e.g., 'sip' URI, 'tel' URI, 'acr' URI)
* @member checkImmediate Check location immediately after establishing notification * @member locationRetrievalStatus Status of retrieval for this terminal address
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server * @member currentLocation Location of terminal
* @member count 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 * @member errorInformation Used to indicate a notification termination or cancellation
* @member criteria * @see OMA-TS-REST_NetAPI_TerminalLocation-V1_0_1-20151029-A Clause 5.2.2.1 Type: TerminalLocation
* @member distance Distance between devices that shall be monitored * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.1A Terminal location data types
* @member duration 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
* @member frequency Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications)
* @member link Link to other resources that are in relationship with the resource
* @member monitoredAddress Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)
* @member referenceAddress 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)
* @member requester Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member resourceURL Self referring URL
* @member trackingAccuracy Number of meters of acceptable error in tracking distance
*/
type record DistanceNotificationSubscription {
CallbackReference callbackReference,
Json.Bool checkImmediate,
ClientCorrelator clientCorrelator optional,
UInt32 count optional,
DistanceCriteria criteria,
Json.Number distance,
UInt32 duration optional,
UInt32 frequency,
Link link optional,
Addresses monitoredAddress,
Addresses referenceAddress optional,
Json.AnyURI requester optional,
ResourceURL resourceURL optional,
Json.Number trackingAccuracy
}
/**
* @desc A type containing data for periodic subscription
* @member address_ Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member callbackReference
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member duration 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
* @member frequency Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications)
* @member link Link to other resources that are in relationship with the resource
* @member monitoredAddress Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI)
* @member requestedAccuracy Accuracy of the provided distance in meters
* @member requester Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member resourceURL Self referring URL
*/ */
type record PeriodicNotificationSubscription { type record TerminalLocation {
Addresses address_, Address address_,
CallbackReference callbackReference, RetrievalStatus locationRetrievalStatus,
ClientCorrelator clientCorrelator optional, LocationInfo currentLocation optional,
UInt32 duration optional, ServiceError errorInformation optional
UInt32 frequency,
Link link optional,
UInt32 requestedAccuracy,
Json.AnyURI requester optional,
ResourceURL resourceURL optional
} with { } with {
variant (address_) "name as 'address'"; variant (address_) "name as 'address'";
} } // End of type TerminalLocation
type record of TerminalLocation TerminalLocationList
type record of Json.String Variables;
/** /**
* @desc Used to indicate a notification termination or cancellation * @desc Indicate a notification termination or cancellation
* @member messageId Message identifier, either with prefix SVC or with prefix POL * @member messageId Message identifier, either with prefix SVC or with prefix POL
* @member text Message text, with replacement variables marked with %n, where n is an index into the list of <variables> elements, starting at 1 * @member text Message text, with replacement variables marked with %n, where n is an index into the list of <variables> elements, starting at 1
* @member variables Variables to substitute into text string * @member variables Variables to substitute into text string
* @see OMA-TS-REST_NetAPI_Common-V1_0-20180116-A Clause B.1.4 Type: ServiceError
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.2.1A Terminal location data types
*/ */
type record ServiceError { type record ServiceError {
Json.String messageId, Json.String messageId,
Json.String text, Json.String text,
Variables variables optional Json.String variables optional
} // End of type ServiceError
/**
* @desc This type contains a list of subscriptions
* @member href The URI referring to the subscription
* @member subscriptionType Type of the subscription
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.3 Type: NotificationSubscriptionList
*/
type record Subscription {
Json.AnyURI href optional,
Json.String subscriptionType
} }
type record of Subscription Subscriptions;
/** /**
* @desc A type containing device address, retrieval status and location information * @desc This type contains a list of subscriptions
* @member address_ Address of the terminal to which the location information applies (e.g., 'sip' URI, 'tel' URI, 'acr' URI) * @member subscription Subscription elements
* @member currentLocation * @member resourceURL Self-referring URL
* @member errorInformation Used to indicate a notification termination or cancellation * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.3 Type: NotificationSubscriptionList
* @member locationRetrievalStatus
*/ */
type record TerminalLocation { type record NotificationSubscriptionList {
Address address_, Subscriptions subscription optional,
LocationInfo currentLocation optional, ResourceURL resourceURL
ServiceError errorInformation optional, }
RetrievalStatus locationRetrievalStatus
/**
* @desc This type represents a subscription to the notifications from location server about events related with user location
* @member subscriptionType Shall be set to "UserLocationEventSubscription"
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference URI exposed by the client on which to receive notifications via HTTP
* @member requestTestNotification 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]
* @member websockNotifConfig Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications
* @member _links Hyperlink related to the resource
* @member address Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) to monitor
* @member userEventPara Requirements for user event reporting.
* @member locationEventCriteria List of user event values to generate notifications for (these apply to address specified).
* @member expiryDeadline The expiration time of the subscription determined by the UE Location Subscribe Service
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.4 Type: UserLocationEventSubscription
*/
type record UserLocationEventSubscription {
Json.String subscriptionType,
Json.String clientCorrelator optional,
CallbackReference callbackReference optional,
Json.Bool requestTestNotification optional,
WebsockNotifConfig websockNotifConfig optional,
Links links_ optional,
Address address_,
UserEventPara userEventPara optional,
LocationEventCriteria locationEventCriteria optional,
TimeStamp expiryDeadline optional
} with {
variant (links_) "name as '_links'";
variant (address_) "name as 'address'";
} // End of type UserLocationEventSubscription
/**
* @desc This type represents a subscription to the notifications from location server about events triggered by timer expiration
* @member subscriptionType Shall be set to "UserLocationEventSubscription"
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference URI exposed by the client on which to receive notifications via HTTP
* @member requestTestNotification 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]
* @member websockNotifConfig Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications
* @member _links Hyperlink related to the resource
* @member address_ Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) to monitor
* @member periodicEventInfo Information for periodic event reporting
* @member expiryDeadline The expiration time of the subscription determined by the UE Location Subscribe Service
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.5 Type: UserLocationPeriodicSubscription
*/
type record UserLocationPeriodicSubscription{
Json.String subscriptionType,
Json.String clientCorrelator optional,
CallbackReference callbackReference optional,
Json.Bool requestTestNotification optional,
WebsockNotifConfig websockNotifConfig optional,
Links links_ optional,
Address address_,
PeriodicEventInfo periodicEventInfo,
TimeStamp expiryDeadline optional
} with { } with {
variant (links_) "name as '_links'";
variant (address_) "name as 'address'"; variant (address_) "name as 'address'";
} // End of type UserLocationPeriodicSubscription
/**
* @desc Information for periodic event reporting
* @member reportingAmount Number of event reports
* @member reportingInterval Interval of event reports
* @see ETSI TS 129 572 V16.7.0 Clause 6.1.6.2.24 Type: PeriodicEventInfo
*/
type record PeriodicEventInfo {
ReportingAmount reportingAmount,
ReportingInterval reportingInterval
} // End of type PeriodicEventInfo
/**
* @desc Number of required periodic event reports.
* Minimum: 1. Maximum: 8639999.
* @see ETSI TS 129 572 V16.7.0 Clause 6.1.6.3.2 Simple data types
*/
type integer ReportingAmount;
/**
* @desc Event reporting periodic interval in seconds.
* Minimum: 1. Maximum: 8639999.
* @remark ReportingInterval * ReportingAmount shall not exceed 8639999
* @see ETSI TS 129 572 V16.7.0 Clause 6.1.6.3.2 Simple data types
*/
type integer ReportingInterval;
/**
* @desc This type represents a subscription to the notifications from location server about user location events happened in the zone
* @desc This type represents a subscription to the notifications from location server about events related with user location
* @member subscriptionType Shall be set to "UserLocationEventSubscription"
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference URI exposed by the client on which to receive notifications via HTTP
* @member requestTestNotification 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]
* @member websockNotifConfig Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications
* @member _links Hyperlink related to the resource
* @member zoneId Identifier of zone (e.g. zone001) to monitor
* @member reportingCtrl Provides parameters that ctrl the reporting
* @member expiryDeadline The expiration time of the subscription determined by the UE Location Subscribe Service
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.6 Type: ZoneLocationEventSubscription
*/
type record ZoneLocationEventSubscription {
Json.String subscriptionType,
Json.String clientCorrelator optional,
CallbackReference callbackReference optional,
Json.Bool requestTestNotification optional,
WebsockNotifConfig websockNotifConfig optional,
Links links_ optional,
ZoneId zoneId,
LocationEventCriteria locationEventCriteria optional,
ReportingCtrl reportingCtrl optional,
TimeStamp expiryDeadline optional
} with {
variant (links_) "name as '_links'";
} // End of type ZoneLocationEventSubscription
/**
* @desc This type represents a subscription to the notifications from location server about the number of users reaching the threshold or the status of access points changing
* @member subscriptionType Shall be set to "UserLocationEventSubscription"
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference URI exposed by the client on which to receive notifications via HTTP
* @member requestTestNotification 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]
* @member websockNotifConfig Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications
* @member _links Hyperlink related to the resource
* @member zoneId Identifier of zone (e.g. zone001) to monitor
* @member upperNumberOfUsersZoneThreshold Threshold number of users in a zone which if crossed upward shall cause a notification
* @member lowerNumberOfUsersZoneThreshold Threshold number of users in a zone which if crossed downward shall cause a notification
* @member upperNumberOfUsersAPThreshold Threshold number of users in an access point which if crossed upward shall cause a notification
* @member lowerNumberOfUsersAPThresholdThreshold number of users in an access point which ifcrossed downward shall cause a notification
* @member operationStatus List of operation status values to generate notifications for (these apply to all access points within a zone)
* @member reportingCtrl Provides parameters that ctrl the reporting
* @member expiryDeadline The expiration time of the subscription determined by the UE Location Subscribe Service
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.7 Type: ZoneStatusSubscription
*/
type record ZoneStatusSubscription {
Json.String subscriptionType,
Json.String clientCorrelator optional,
CallbackReference callbackReference optional,
Json.Bool requestTestNotification optional,
WebsockNotifConfig websockNotifConfig optional,
Links links_ optional,
ZoneId zoneId,
Json.UInteger upperNumberOfUsersZoneThreshold optional,
Json.UInteger lowerNumberOfUsersZoneThreshold optional,
Json.UInteger upperNumberOfUsersAPThreshold optional,
Json.UInteger lowerNumberOfUsersAPThreshold optional,
OperationStatus operationStatus optional,
ReportingCtrl reportingCtrl optional,
TimeStamp expiryDeadline optional
} with {
variant (links_) "name as '_links'";
} // End of type ZoneStatusSubscription
/**
* @desc This type represents a subscription to the notifications from location server about user location events happened in the area.
* @member subscriptionType Shall be set to "UserLocationEventSubscription"
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference URI exposed by the client on which to receive notifications via HTTP
* @member requestTestNotification 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]
* @member websockNotifConfig Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications
* @member _links Hyperlink related to the resource
* @member areaDefine The parameters describing the area to subscribe
* @member trackingAccuracy Number of meters of acceptable error
* @member reportingCtrl Provides parameters that ctrl the reporting
* @member locationEventCriteria List of user event values to generate notifications for (these apply to address specified)
* @member reportingLocationReq This IE shall be set to true if a location estimate is required for each event report
* @member expiryDeadline The expiration time of the subscription determined by the UE Location Subscribe Service
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.8 Type: UserAreaSubscription
*/
type record UserAreaSubscription {
Json.String subscriptionType,
Json.String clientCorrelator optional,
CallbackReference callbackReference optional,
Json.Bool requestTestNotification optional,
WebsockNotifConfig websockNotifConfig optional,
Links links_ optional,
AreaInfo areaDefine,
Json.Number trackingAccuracy,
LocationEventCriteria locationEventCriteria optional,
ReportingCtrl reportingCtrl optional,
Json.Bool reportingLocationReq optional,
TimeStamp expiryDeadline optional
} with {
variant (links_) "name as '_links'";
} // End of type UserAreaSubscription
/**
* @desc This type represents a subscription to the notifications from location server about changes in the geographical relationships between monitored users or between monitored users and reference users
* @member subscriptionType Shall be set to "UserLocationEventSubscription"
* @member clientCorrelator A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server
* @member callbackReference URI exposed by the client on which to receive notifications via HTTP
* @member requestTestNotification 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]
* @member websockNotifConfig Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications
* @member _links Hyperlink related to the resource
* @member referenceAddress 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
* @member monitoredAddress 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
* @member distance Distance between users that shall be monitored. The unit is meter
* @member trackingAccuracy Number of meters of acceptable error in tracking distance
* @member criteria Indicates whether the notification should occur when the geographical relationship between monitored and referenced users' changes
* @member checkImmediate Check location immediately after establishing notification
* @member reportingCtrl Provides parameters that ctrl the reporting
* @member locationEventCriteria List of user event values to generate notifications for (these apply to address specified)
* @member expiryDeadline The expiration time of the subscription determined by the UE Location Subscribe Service
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.3.9 Type: UserDistanceSubscription
*/
type record UserDistanceSubscription {
Json.String subscriptionType,
Json.String clientCorrelator optional,
CallbackReference callbackReference optional,
Json.Bool requestTestNotification optional,
WebsockNotifConfig websockNotifConfig optional,
Links links_ optional,
Json.AnyURI referenceAddress optional,
Json.AnyURIArray monitoredAddress,
Json.Number distance,
Json.Number trackingAccuracy,
DistanceCriteria criteria,
Json.Bool checkImmediate,
ReportingCtrl reportingCtrl optional,
TimeStamp expiryDeadline optional
} with {
variant (links_) "name as '_links'";
} // End of type UserDistanceSubscription
/**
* @desc This type represents a test notification from a location server to determine if the Websocket method is to be utilized for the location server to issue notifications for a subscription, as defined in clause 6.12a of ETSI GS MEC 009 [4]
* @member notificationType Shall be set to "TestNotification"
* @member _links Hyperlink related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.3 Type: TestNotification
*/
type record TestNotification {
Json.String notificationType,
LinksSubscription links_
} with {
variant (links_) "name as '_links'";
} }
type record of TerminalLocation TerminalLocationList
/** /**
* @desc A type containing the notification subscription * @desc Hyperlink related to the resource
* @member callbackData CallbackData if passed by the application in the receiptRequest element during the associated subscription operation * @member Identifying the subscription for the test notification
* @member link Link to other resources that are in relationship with the resource * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.3 Type: TestNotification
* @member isFinalNotification Set to true if it is a final notification about location change * @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.4 Type: UserLocationEventNotification
* @member terminalLocation Collection of the terminal locations
*/ */
type record SubscriptionNotification { type record LinksSubscription {
CallbackData callbackData optional, LinkType subscription
DistanceCriteria distanceCriteria optional,
Json.Bool isFinalNotification optional,
Link link optional,
TerminalLocationList terminalLocation
} }
/** /**
* @desc A type containing the subscription cancellation notification * @desc This type represents a notification from location server with regards to UE location event.
* @member address_ Address of terminal if the error applies to an individual terminal * @member notificationType Shall be set to "UserLocationEventNotification"
* @member callbackData CallbackData if passed by the application in the receiptRequest element during the associated subscription operation * @member timeStamp TimeStamp
* @member link Link to other resources that are in relationship with the resource * @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member reason Used to indicate a notification termination or cancellation * @member userLocationEvent The specific event triggering this notification
* @member locationInfo The geographical coordinates where the user is
* @member civicInfo Contextual information of a user location
* @member relativeLocationInfo The relative location in a reference system
* @member zoneId The identity of the zone
* @member accessPointId The identity of the access point
* @member _links Object containing hyperlinks related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.4 Type: UserLocationEventNotification
*/ */
type record SubscriptionCancellationNotification { type record UserLocationEventNotification {
Address address_, Json.String notificationType,
CallbackData callbackData optional, TimeStamp timeStamp optional,
Link link optional, Address address_,
ServiceError reason LocationEventType userLocationEvent,
LocationInfo locationInfo optional,
CivicAddress civicInfo optional,
RelativeLocationInfo relativeLocationInfo optional,
ZoneId zoneId optional,
AccessPointId accessPointId optional,
Links links_
} with { } with {
variant (links_) "name as '_links'";
variant (address_) "name as 'address'"; variant (address_) "name as 'address'";
} // End of type UserLocationEventNotification
/**
* @desc This type represents a notification from location server with regards to UE location periodic reporting.
* @member notificationType Shall be set to "UserLocationPeriodicNotification"
* @member timeStamp TimeStamp
* @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member userLocationEvent The specific event triggering this notification
* @member locationInfo The geographical coordinates where the user is
* @member civicInfo Contextual information of a user location
* @member relativeLocationInfo The relative location in a reference system
* @member zoneId The identity of the zone
* @member accessPointId The identity of the access point
* @member isFinalNotification Shall be set to true if it is a final notification
* @member _links Object containing hyperlinks related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.5 Type: UserLocationPeriodicNotification
*/
type record UserLocationPeriodicNotification {
Json.String notificationType,
TimeStamp timeStamp optional,
Address address_,
LocationEventType userLocationEvent,
LocationInfo locationInfo optional,
CivicAddress civicInfo optional,
RelativeLocationInfo relativeLocationInfo optional,
ZoneId zoneId optional,
AccessPointId accessPointId optional,
Json.Bool isFinalNotification optional,
Links links_
} with {
variant (links_) "name as '_links'";
variant (address_) "name as 'address'";
} // End of type UserLocationPeriodicNotification
/**
* @desc This type represents a notification from location server with regards to UE location periodic reporting.
* @member notificationType Shall be set to "ZoneLocationEventNotification"
* @member timeStamp TimeStamp
* @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member userLocationEvent The specific event triggering this notification
* @member zoneId The identity of the zone
* @member _links Object containing hyperlinks related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.6 Type: ZoneLocationEventNotification
*/
type record ZoneLocationEventNotification {
Json.String notificationType,
TimeStamp timeStamp optional,
Address address_,
LocationEventType userLocationEvent,
ZoneId zoneId optional,
Links links_
} with {
variant (links_) "name as '_links'";
variant (address_) "name as 'address'";
} // End of type ZoneLocationEventNotification
/**
* @desc This type represents a notification from location server with regards to status changing event or user number threshold event happened in a zone
* @member notificationType Shall be set to "ZoneStatusNotification"
* @member timeStamp TimeStamp
* @member userNumEvent
* @member operationStatus The specific event triggering this notification
* @member zoneId The identity of the zone
* @member accessPointId The identity of the access point
* @member _links Object containing hyperlinks related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.7 Type: ZoneStatusNotification
*/
type record ZoneStatusNotification {
Json.String notificationType,
TimeStamp timeStamp optional,
UserNumEvent userNumEvent optional,
OperationStatus operationStatus optional,
ZoneId zoneId optional,
AccessPointId accessPointId optional,
Links links_
} with {
variant (links_) "name as '_links'";
} // End of type ZoneStatusNotification
type enumerated UserNumEvent {
OVER_ZONE_UPPER_THD,
UNDER_ZONE_LOWER_THD,
OVER_AP_UPPER_THD,
UNDER_AP_LOWER_THD
} with {
variant "JSON: as number"
} }
/** /**
* @desc This type contains a list of subscriptions * @desc This type represents a notification from location server with regards to UE location events happened in an area.
* @member zonalTrafficSubscription Collection of ZonalTrafficSubscription elements * @member notificationType Shall be set to "UserAreaNotification"
* @member userTrackingSubscription Collection of UserTrackingSubscription elements * @member timeStamp TimeStamp
* @member periodicTrackingSubscription Collection of PeriodicNotificationSubscription elements * @member address_ Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)
* @member zoneStatusSubscription Collection of ZoneStatusSubscription elements * @member locationInfo The geographical coordinates where the user is
* @member circleNotificationSubscription Collection of CircleNotificationSubscription elements * @member civicInfo Contextual information of a user location
* @member distanceNotificationSubscription Collection of DistanceNotificationSubscription elements * @member relativeLocationInfo The relative location in a reference system
* @member resourceURL Self-referring URL * @member userLocationEvent The specific event triggering this notification
* @ see ETSI GS MEC 013 V2.1.1 (2019-09) Clause 6.3.3 Type: NotificationSubscriptionList * @member _links Object containing hyperlinks related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.8 Type: UserAreaNotification
*/ */
type record NotificationSubscriptionList { type record UserAreaNotification {
ZonalTrafficSubscription zonalTrafficSubscription optional, Json.String notificationType,
UserTrackingSubscription userTrackingSubscription optional, TimeStamp timeStamp optional,
PeriodicTrackingSubscription periodicTrackingSubscription optional, Address address_,
ZoneStatusSubscription zoneStatusSubscription optional, LocationInfo locationInfo optional,
CircleNotificationSubscription circleNotificationSubscription optional, CivicAddress civicInfo optional,
DistanceNotificationSubscription distanceNotificationSubscription optional, RelativeLocationInfo relativeLocationInfo optional,
ResourceURL resourceURL LocationEventType userLocationEvent,
} Links links_
} with {
variant (links_) "name as '_links'";
variant (address_) "name as 'address'";
} // End of type UserAreaNotification
/**
* @desc This type represents a notification from location server with regards to UE location events happened in an area.
* @member notificationType Shall be set to "UserDistanceNotification"
* @member timeStamp TimeStamp
* @member monitoredUsers Indicates the location information related to monitored users
* @member distanceEvent Indicates the distance event triggering the notification
* @member _links Object containing hyperlinks related to the resource
* @see ETSI GS MEC 013 V3.1.1 (2023-01) Clause 6.4.9 Type: UserDistanceNotification
*/
type record UserDistanceNotification {
Json.String notificationType,
TimeStamp timeStamp optional,
UserList monitoredUsers,
DistanceCriteria distanceEvent,
Links links_
} with {
variant (links_) "name as '_links'";
} // End of type UserDistanceNotification
} with { } with {
encode "JSON" encode "JSON"
} // End of module LocationAPI_TypesAndValues } // End of module LocationAPI_TypesAndValues
{
"swagger": "2.0",
"info": {
"description": "The ETSI MEC ISG MEC012 Radio Network Information API described using OpenAPI",
"version": "1.1.1",
"title": "RNI API",
"license": {
"name": "ETSI Forge copyright notice",
"url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
}
},
"externalDocs": {
"description": "ETSI GS MEC012 Radio Network Information API, V1.1.1",
"url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/01.01.01_60/gs_mec012v010101p.pdf"
},
"host": "127.0.0.1:8081",
"basePath": "/rni/v1",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"security": [
{
"OauthSecurity": [
"all"
]
}
],
"securityDefinitions": {
"OauthSecurity": {
"type": "oauth2",
"flow": "application",
"tokenUrl": "https://oauth.exampleAPI/token",
"scopes": {
"all": "Single oauth2 scope for API"
}
}
},
"parameters": {
"Body.CellChangeSubscriptionPost": {
"name": "CellChangeSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to cell change notifications based on the\n filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"CellChangeSubscription": {
"$ref": "#/definitions/CellChangeSubscriptionPost"
}
}
}
},
"Body.CellChangeSubscription": {
"name": "CellChangeSubscription",
"in": "body",
"description": "Use to creates a subscription to cell change notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"CellChangeSubscription": {
"$ref": "#/definitions/CellChangeSubscription"
}
}
}
},
"Body.S1BearerSubscriptionPost": {
"name": "S1BearerSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to S1 Bearer notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"S1BearerSubscription": {
"$ref": "#/definitions/S1BearerSubscriptionPost"
}
}
}
},
"Body.S1BearerSubscription": {
"name": "S1BearerSubscription",
"in": "body",
"description": "Use to creates a subscription to S1 Bearer notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"S1BearerSubscription": {
"$ref": "#/definitions/S1BearerSubscription"
}
}
}
},
"Body.MeasTaSubscriptionPost": {
"name": "MeasTaSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to UE Timing Advance notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"MeasTaSubscription": {
"$ref": "#/definitions/MeasTaSubscriptionPost"
}
}
}
},
"Body.MeasTaSubscription": {
"name": "MeasTaSubscription",
"in": "body",
"description": "Use to creates a subscription to UE Timing Advance notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"MeasTaSubscription": {
"$ref": "#/definitions/MeasTaSubscription"
}
}
}
},
"Body.MeasRepUeSubscriptionPost": {
"name": "MeasRepUeSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to UE measurement report notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"MeasRepUeSubscription": {
"$ref": "#/definitions/MeasRepUeSubscriptionPost"
}
}
}
},
"Body.MeasRepUeSubscription": {
"name": "MeasRepUeSubscription",
"in": "body",
"description": "Use to creates a subscription to UE measurement report notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"MeasRepUeSubscription": {
"$ref": "#/definitions/MeasRepUeSubscription"
}
}
}
},
"Body.RabEstSubscriptionPost": {
"name": "RabEstSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to RAB establishment notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"RabEstSubscription": {
"$ref": "#/definitions/RabEstSubscriptionPost"
}
}
}
},
"Body.RabEstSubscription": {
"name": "RabEstSubscription",
"in": "body",
"description": "Use to creates a subscription to RAB establishment notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"RabEstSubscription": {
"$ref": "#/definitions/RabEstSubscription"
}
}
}
},
"Body.RabModSubscriptionPost": {
"name": "RabEstSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to RAB Modification notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"RabModSubscription": {
"$ref": "#/definitions/RabModSubscriptionPost"
}
}
}
},
"Body.RabModSubscription": {
"name": "RabEstSubscription",
"in": "body",
"description": "Use to creates a subscription to RAB Modification notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"RabModSubscription": {
"$ref": "#/definitions/RabModSubscription"
}
}
}
},
"Body.RabRelSubscriptionPost": {
"name": "RabRelSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to RAB Release notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"RabRelSubscription": {
"$ref": "#/definitions/RabRelSubscriptionPost"
}
}
}
},
"Body.RabRelSubscription": {
"name": "RabRelSubscription",
"in": "body",
"description": "Use to creates a subscription to RAB Release notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"RabRelSubscription": {
"$ref": "#/definitions/RabRelSubscription"
}
}
}
},
"Body.CaReConfSubscriptionPost": {
"name": "CaReConfSubscriptionPost",
"in": "body",
"description": "Use to creates a subscription to Carrier Aggregation Reconfiguration notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"CaReConfSubscription": {
"$ref": "#/definitions/CaReConfSubscriptionPost"
}
}
}
},
"Body.CaReConfSubscription": {
"name": "CaReConfSubscription",
"in": "body",
"description": "Use to creates a subscription to Carrier Aggregation Reconfiguration notifications based on the filter criteria",
"required": true,
"schema": {
"type": "object",
"properties": {
"CaReConfSubscription": {
"$ref": "#/definitions/CaReConfSubscription"
}
}
}
},
"Path.subscrId": {
"name": "subscriptionId",
"in": "path",
"description": "Subscription Id, specifically the \"self\" returned in the subscription request",
"required": true,
"type": "string",
"format": "uri"
},
"Query.AppInsId": {
"name": "app_ins_id",
"in": "query",
"description": "Application instance identifier",
"required": false,
"type": "string"
},
"Query.AppInsIdArr": {
"name": "app_ins_id",
"in": "query",
"description": "Application instance identifier",
"required": true,
"type": "array",
"items": {
"type": "string"
}
},
"Query.UeIpv4Address": {
"name": "ue_ipv4_address",
"in": "query",
"description": "Comma separated list of IE IPv4 addresses as defined for the type for AssociateId",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.UeIpv6Address": {
"name": "ue_ipv6_address",
"in": "query",
"description": "Comma separated list of IE IPv6 addresses as defined for the type for AssociateId",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.NatedIpAddress": {
"name": "nated_ip_address",
"in": "query",
"description": "Comma separated list of IE NATed IP addresses as defined for the type for AssociateId",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.GtpTeId": {
"name": "gtp_teid",
"in": "query",
"description": "Comma separated list of GTP TEID addresses as defined for the type for AssociateId",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.CellId": {
"name": "cell_id",
"in": "query",
"description": "E-UTRAN Cell Identity as a bit string (size (28)), as defined in ETSI TS 136 413",
"required": false,
"type": "array",
"items": {
"type": "string"
}
},
"Query.ErabGbrDl": {
"name": "erab_gbr_dl",
"in": "query",
"description": "Guaranteed downlink E-RAB Bit Rate as defined in ETSI TS 123 401",
"required": false,
"type": "integer",
"format": "uint32"
},
"Query.ErabGbrUl": {
"name": "erab_gbr_ul",
"in": "query",
"description": "Guaranteed uplink E-RAB Bit Rate as defined in ETSI TS 123 401",
"required": false,
"type": "integer",
"format": "uint32"
},
"Query.ErabId": {
"name": "erab_id",
"in": "query",
"description": "E-RAB identifier",
"required": false,
"type": "integer",
"format": "uint32"
},
"Query.ErabIdArr": {
"name": "erab_id",
"in": "query",
"description": "E-RAB identifier",
"required": false,
"type": "array",
"items": {
"type": "integer",
"format": "uint32"
}
},
"Query.ErabMbrDl": {
"name": "erab_mbr_dl",
"in": "query",
"description": "Maximum downlink E-RAB Bit Rate as defined in ETSI TS 123 401",
"required": false,
"type": "integer",
"format": "uint32"
},
"Query.ErabMbrUl": {
"name": "erab_mbr_ul",
"in": "query",
"description": "Maximum uplink E-RAB Bit Rate as defined in ETSI TS 123 401",
"required": false,
"type": "integer",
"format": "uint32"
},
"Query.Qci": {
"name": "qci",
"in": "query",
"description": "QoS Class Identifier as defined in ETSI TS 123 401",
"required": false,
"type": "integer",
"format": "uint32"
},
"Query.TempUeId": {
"name": "temp_ue_id",
"in": "query",
"description": "The temporary identifier allocated for the specific UE as defined in ETSI TS 136 413",
"required": false,
"type": "array",
"items": {
"type": "string"
}
}
},
"paths": {
"/resources/rab_info": {
"get": {
"description": "Gets information on existing E-RABs that are associated with a specific mobile edge application instance",
"operationId": "rab_infoGET",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Query.AppInsId"
},
{
"$ref": "#/parameters/Query.CellId"
},
{
"$ref": "#/parameters/Query.UeIpv4Address"
},
{
"$ref": "#/parameters/Query.UeIpv6Address"
},
{
"$ref": "#/parameters/Query.NatedIpAddress"
},
{
"$ref": "#/parameters/Query.GtpTeId"
},
{
"$ref": "#/parameters/Query.ErabId"
},
{
"$ref": "#/parameters/Query.Qci"
},
{
"$ref": "#/parameters/Query.ErabMbrDl"
},
{
"$ref": "#/parameters/Query.ErabMbrUl"
},
{
"$ref": "#/parameters/Query.ErabGbrDl"
},
{
"$ref": "#/parameters/Query.ErabGbrUl"
}
],
"responses": {
"200": {
"description": "Successful response to rab_info request",
"schema": {
"type": "object",
"required": [
"RabInfo"
],
"properties": {
"RabInfo": {
"$ref": "#/definitions/RabInfo"
}
}
},
"examples": {
"application/json": {
"RabInfo": {
"timeStamp": {
"seconds": 1577836800,
"nanoSeconds": 0
},
"appInId": "01",
"requestId": "01",
"cellUserInfo": {
"ecgi": {
"plmn": {
"mcc": "001",
"mnc": "01"
},
"cellId": "0x800000A"
},
"ueInfo": {
"associateId": null,
"type": "1",
"value": "192.0.2.0",
"erabInfo": {
"erabId": 10
},
"erabQosParameters": {
"qci": 7,
"qosInformation": {
"erabMbrDl": 10,
"erabMbrUl": 10,
"erabGbrDl": 10,
"erabGbrUl": 10
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/resources/plmn_info": {
"get": {
"description": "Gets the information on Mobile Network(s) that are associated with a specific mobile edge application instance",
"operationId": "plmn_infoGET",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Query.AppInsIdArr"
}
],
"responses": {
"200": {
"description": "Successful response to rab_info request",
"schema": {
"type": "object",
"properties": {
"PlmnInfo": {
"$ref": "#/definitions/PlmnInfo"
}
}
},
"examples": {
"application/json": {
"PlmnInfo": {
"timeStamp": {
"seconds": 1577836800,
"nanoSeconds": 0
},
"appInId": "01",
"ecgi": {
"plmn": {
"mcc": "001",
"mnc": "01"
},
"cellId": "0x800000A"
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/resources/s1_bearer_info": {
"get": {
"description": "Gets information on existing E-RABs that are associated with a specific mobile edge application instance",
"operationId": "s1_bearer_infoGET",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Query.TempUeId"
},
{
"$ref": "#/parameters/Query.UeIpv4Address"
},
{
"$ref": "#/parameters/Query.UeIpv6Address"
},
{
"$ref": "#/parameters/Query.NatedIpAddress"
},
{
"$ref": "#/parameters/Query.GtpTeId"
},
{
"$ref": "#/parameters/Query.CellId"
},
{
"$ref": "#/parameters/Query.ErabIdArr"
}
],
"responses": {
"200": {
"description": "Successful response to s1_bearer_info request",
"schema": {
"type": "object",
"required": [
"S1BearerInfo"
],
"properties": {
"S1BearerInfo": {
"$ref": "#/definitions/S1BearerInfo"
}
}
},
"examples": {
"application/json": {
"S1BearerInfo": {
"timeStamp": {
"seconds": 1577836800,
"nanoSeconds": 0
},
"s1UeInfo": [
{
"tempUeId": {
"mmec": "0",
"mtmsi": "1234"
},
"associateId": [
{
"type": "1",
"value": "192.0.2.0"
},
{
"type": "3",
"value": "198.51.100.0"
}
],
"ecgi": {
"plmn": {
"mcc": "001",
"mnc": "01"
},
"cellId": "0x800000A"
},
"s1BearerInfoDetailed": [
{
"erabId": 1,
"s1EnbInfo": {
"ipAddress": "192.0.2.0",
"tunnelId": "1111"
},
"sGwInfo": {
"ipAddress": "192.0.2.1",
"tunnelId": "2222"
}
}
]
},
{
"tempUeId": {
"mmec": "0",
"mtmsi": "1234"
},
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"ecgi": {
"plmn": {
"mcc": "001",
"mnc": "01"
},
"cellId": "0x800000B"
},
"s1BearerInfoDetailed": [
{
"erabId": 2,
"s1EnbInfo": {
"ipAddress": "192.0.2.0",
"tunnelId": "3333"
},
"sGwInfo": {
"ipAddress": "192.0.2.1",
"tunnelId": "4444"
}
}
]
}
]
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/": {
"get": {
"description": "The GET method can be used to request information about the subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/cell_change/77777",
"subscriptionType": "CELL_CHANGE"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/MeasTa/77777",
"subscriptionType": "MEAS_TIMING_ADVANCE"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/cell_change": {
"get": {
"description": "The GET method can be used to request information about the cell_change subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_cc_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors cell_change subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/cell_change",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/cell_change/77777",
"subscriptionType": "CELL_CHANGE"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/cell_change/77778",
"subscriptionType": "CELL_CHANGE"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to cell change notifications from Radio Network Information Service",
"operationId": "CellChange_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.CellChangeSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to response to UE cell change notifications",
"schema": {
"type": "object",
"properties": {
"CellChangeSubscription": {
"$ref": "#/definitions/CellChangeSubscription"
}
}
},
"examples": {
"application/json": {
"CellChangeSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/cell_change/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/cell_change/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/cell_change/{subscriptionId}": {
"get": {
"description": "Get cell change subscription information",
"operationId": "CellChange_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding cell change notifications",
"schema": {
"type": "object",
"required": [
"CellChangeSubscription"
],
"properties": {
"CellChangeSubscription": {
"$ref": "#/definitions/CellChangeSubscription"
}
}
},
"examples": {
"application/json": {
"CellChangeSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/cell_change/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/cell_change/sub123"
},
"filterCriteria": {
"appInsId": "01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"hoStatus": 3
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to cell change notifications from Radio Network Information Service",
"operationId": "CellChange_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.CellChangeSubscription"
},
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to cell change notifications",
"schema": {
"type": "object",
"properties": {
"CellChangeSubscription": {
"$ref": "#/definitions/CellChangeSubscription"
}
}
},
"examples": {
"application/json": {
"CellChangeSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/cell_change/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/cell_change/sub123"
},
"filterCriteria": {
"appInsId": "01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"hoStatus": 3
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "CellChange_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/s1_bearer": {
"get": {
"description": "The GET method can be used to request information about the s1_bearer subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_s1_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors s1_bearer subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/s1_bearer",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/s1_bearer/77777",
"subscriptionType": "S1_BEARER"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/s1_bearer/77778",
"subscriptionType": "S1_BEARER"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to S1 bearer notifications from Radio Network Information Service",
"operationId": "S1BearerSubscription_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.S1BearerSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to response to S1 Bearer notifications",
"schema": {
"type": "object",
"properties": {
"S1BearerSubscription": {
"$ref": "#/definitions/S1BearerSubscription"
}
}
},
"examples": {
"application/json": {
"S1BearerSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/s1_bearer/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/s1_bearer/sub123"
},
"eventType": 1,
"s1BearerSubscriptionCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"erabId": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/s1_bearer/{subscriptionId}": {
"get": {
"description": "Gets a subscription to S1 bearer notifications from Radio Network Information Service",
"operationId": "S1BearerSubscription_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to S1 Bearer notifications",
"schema": {
"type": "object",
"properties": {
"S1BearerSubscription": {
"$ref": "#/definitions/S1BearerSubscription"
}
}
},
"examples": {
"application/json": {
"S1BearerSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/s1_bearer/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/s1_bearer/sub123"
},
"eventType": 1,
"s1BearerSubscriptionCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"erabId": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to S1 bearer notifications from Radio Network Information Service",
"operationId": "S1BearerSubscription_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.S1BearerSubscription"
}
],
"responses": {
"200": {
"description": "Successful subscription update to response to S1 Bearer notifications",
"schema": {
"type": "object",
"properties": {
"S1BearerSubscription": {
"$ref": "#/definitions/S1BearerSubscription"
}
}
},
"examples": {
"application/json": {
"S1BearerSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/s1_bearer/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/s1_bearer/sub123"
},
"eventType": 1,
"s1BearerSubscriptionCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"erabId": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "S1Bearer_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/ta": {
"get": {
"description": "The GET method can be used to request information about the ta subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_ta_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors ta subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ta",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/ta/77777",
"subscriptionType": "MEAS_REPORT_UE"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/ta/77778",
"subscriptionType": "MEAS_REPORT_UE"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to UE Timing Advance notifications from Radio Network Information Service",
"operationId": "MeasTa_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.MeasTaSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to response to UE Timing Advance notifications",
"schema": {
"type": "object",
"properties": {
"MeasTaSubscription": {
"$ref": "#/definitions/MeasTaSubscription"
}
}
},
"examples": {
"application/json": {
"MeasTaSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/ta/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ta/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/ta/{subscriptionId}": {
"get": {
"description": "Gets UE Timing Advance subscription information from Radio Network Information Service",
"operationId": "MeasTa_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding UE Timing Advance notifications",
"schema": {
"type": "object",
"required": [
"MeasTaSubscription"
],
"properties": {
"MeasTaSubscription": {
"$ref": "#/definitions/MeasTaSubscription"
}
}
},
"examples": {
"application/json": {
"MeasTaSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/ta/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ta/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to UE Timing Advance notifications from Radio Network Information Service",
"operationId": "MeasTa_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.MeasTaSubscription"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to UE Timing Advance notifications",
"schema": {
"type": "object",
"properties": {
"MeasTaSubscription": {
"$ref": "#/definitions/MeasTaSubscription"
}
}
},
"examples": {
"application/json": {
"MeasTaSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/ta/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ta/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "MeasTa_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/meas_rep_ue": {
"get": {
"description": "The GET method can be used to request information about the meas_rep_ue subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_mr_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors meas_rep_ue subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/meas_rep_ue",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/meas_rep_ue/77777",
"subscriptionType": "MEAS_REPORT_UE"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/meas_rep_ue/77778",
"subscriptionType": "MEAS_REPORT_UE"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to UE measurement report notifications from Radio Network Information Service",
"operationId": "MeasRepUe_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.MeasRepUeSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to response to UE measurement report notifications",
"schema": {
"type": "object",
"properties": {
"MeasRepUeSubscription": {
"$ref": "#/definitions/MeasRepUeSubscription"
}
}
},
"examples": {
"application/json": {
"MeasRepUeSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/meas_rep_ue/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/meas_rep_ue/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/meas_rep_ue/{subscriptionId}": {
"get": {
"description": "Gets a subscription to UE measurement report notifications from Radio Network Information Service",
"operationId": "MeasRepUe_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Successful subscription to response to UE measurement report notifications",
"schema": {
"type": "object",
"required": [
"MeasRepUeSubscription"
],
"properties": {
"MeasRepUeSubscription": {
"$ref": "#/definitions/MeasRepUeSubscription"
}
}
},
"examples": {
"application/json": {
"MeasRepUeSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/meas_rep_ue/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/meas_rep_ue/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to UE measurement report notifications from Radio Network Information Service",
"operationId": "MeasRepUeReport_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.MeasRepUeSubscription"
}
],
"responses": {
"200": {
"description": "Successful update subscription to response to UE measurement report notifications",
"schema": {
"type": "object",
"properties": {
"MeasRepUeSubscription": {
"$ref": "#/definitions/MeasRepUeSubscription"
}
}
},
"examples": {
"application/json": {
"MeasRepUeSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/meas_rep_ue/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/meas_rep_ue/sub123"
},
"filterCriteria": {
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"appInsId": "01",
"trigger": 6,
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "MeasRepUe_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content. Successful deletion of UE Measurment Report subscription"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/rab_est": {
"get": {
"description": "The GET method can be used to request information about the rab_est subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_re_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors rab_est subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_est",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/rab_est/77777",
"subscriptionType": "RAB_ESTABLISHMENT"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/rab_est/77778",
"subscriptionType": "RAB_ESTABLISHMENT"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to RAB establishment notifications from Radio Network Information Service",
"operationId": "RabEstSubscription_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.RabEstSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to RAB establishment notifications",
"schema": {
"type": "object",
"properties": {
"RabEstSubscription": {
"$ref": "#/definitions/RabEstSubscription"
}
}
},
"examples": {
"application/json": {
"RabEstSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_est/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_est/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/rab_est/{subscriptionId}": {
"get": {
"description": "Gets a subscription to RAB establishment notifications from Radio Network Information Service",
"operationId": "RabEstSubscription_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding RAB establishment notifications",
"schema": {
"type": "object",
"required": [
"RabEstSubscription"
],
"properties": {
"RabEstSubscription": {
"$ref": "#/definitions/RabEstSubscription"
}
}
},
"examples": {
"application/json": {
"RabEstSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_est/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_est/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to RAB establishment notifications from Radio Network Information Service",
"operationId": "RabEstSubscription_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.RabEstSubscription"
}
],
"responses": {
"200": {
"description": "Successful subscription update to RAB establishment notifications",
"schema": {
"type": "object",
"properties": {
"RabEstSubscription": {
"$ref": "#/definitions/RabEstSubscription"
}
}
},
"examples": {
"application/json": {
"RabEstSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_est/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_est/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "RabEst_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content. Successful deletion of Rab Establishment subscription"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/rab_mod": {
"get": {
"description": "The GET method can be used to request information about the rab_mod subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_rm_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors rab_mod subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_mod",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/rab_mod/77777",
"subscriptionType": "RAB_MODIFICATION"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/rab_mod/77778",
"subscriptionType": "RAB_MODIFICATION"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to RAB Modification notifications from Radio Network Information Service",
"operationId": "RabModSubscription_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.RabModSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to RAB Modification notifications",
"schema": {
"type": "object",
"properties": {
"RabModSubscription": {
"$ref": "#/definitions/RabModSubscription"
}
}
},
"examples": {
"application/json": {
"RabModSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_mod/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_mod/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/rab_mod/{subscriptionId}": {
"get": {
"description": "Gets a subscription to RAB Modification notifications from Radio Network Information Service",
"operationId": "RabModSubscription_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding RAB Modification notifications",
"schema": {
"type": "object",
"required": [
"RabModSubscription"
],
"properties": {
"RabModSubscription": {
"$ref": "#/definitions/RabModSubscription"
}
}
},
"examples": {
"application/json": {
"RabModSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_mod/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_mod/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to RAB Modification notifications from Radio Network Information Service",
"operationId": "RabModSubscription_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.RabModSubscription"
}
],
"responses": {
"200": {
"description": "Successful subscription update to RAB Modification notifications",
"schema": {
"type": "object",
"properties": {
"RabModSubscription": {
"$ref": "#/definitions/RabModSubscription"
}
}
},
"examples": {
"application/json": {
"RabModSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_mod/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_mod/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "RabMod_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content. Successful deletion of Rab Modification subscription"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/rab_rel": {
"get": {
"description": "The GET method can be used to request information about the rab_rel subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_rr_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors rab_rel subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_rel",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/rab_rel/77777",
"subscriptionType": "RAB_RELEASE"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/rab_rel/77778",
"subscriptionType": "RAB_RELEASE"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to RAB Release notifications from Radio Network Information Service",
"operationId": "RabRelSubscription_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.RabRelSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to RAB Release notifications",
"schema": {
"type": "object",
"properties": {
"RabRelSubscription": {
"$ref": "#/definitions/RabRelSubscription"
}
}
},
"examples": {
"application/json": {
"RabRelSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_rel/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_rel/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/rab_rel/{subscriptionId}": {
"get": {
"description": "Gets a subscription to RAB Release notifications from Radio Network Information Service",
"operationId": "RabRelSubscription_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding RAB Release notifications",
"schema": {
"type": "object",
"required": [
"RabRelSubscription"
],
"properties": {
"RabRelSubscription": {
"$ref": "#/definitions/RabRelSubscription"
}
}
},
"examples": {
"application/json": {
"RabRelSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_rel/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_rel/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to RAB Release notifications from Radio Network Information Service",
"operationId": "RabRelSubscription_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.RabRelSubscription"
}
],
"responses": {
"200": {
"description": "Successful subscription update to RAB Release notifications",
"schema": {
"type": "object",
"properties": {
"RabRelSubscription": {
"$ref": "#/definitions/RabRelSubscription"
}
}
},
"examples": {
"application/json": {
"RabRelSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/rab_rel/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/rab_rel/sub123"
},
"filterCriteriaAssocQci": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B",
"qci": 1
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "RabRel_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content. Successful deletion of Rab Release subscription"
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/ca_reconf": {
"get": {
"description": "The GET method can be used to request information about the ca_reconf subscriptions for this requestor",
"operationId": "SubscriptionLinkList_subscriptions_cr_GET",
"produces": [
"application/json",
"application/problem+json"
],
"responses": {
"200": {
"description": "Response body contains the list of links to requestors ca_reconf subscriptions.",
"schema": {
"type": "object",
"required": [
"SubscriptionLinkList"
],
"properties": {
"SubscriptionLinkList": {
"$ref": "#/definitions/SubscriptionLinkList"
}
}
},
"examples": {
"application/json": {
"SubscriptionLinkList": {
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ca_reconf",
"susbcription": [
{
"href": "http://meAppClient.example.com/rni/v1/notifications/ca_reconf/77777",
"subscriptionType": "CA_RECONF"
},
{
"href": "http://meAppClient.example.com/rni/v1/notifications/ca_reconf/77778",
"subscriptionType": "CA_RECONF"
}
]
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
},
"post": {
"description": "Creates a subscription to Carrier Aggregation Reconfiguration notifications from Radio Network Information Service",
"operationId": "CaReConfSubscription_subscriptionsPOST",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Body.CaReConfSubscriptionPost"
}
],
"responses": {
"201": {
"description": "Successful subscription to Carrier Aggregation Reconfiguration notifications",
"schema": {
"type": "object",
"properties": {
"CaReConfSubscription": {
"$ref": "#/definitions/CaReConfSubscription"
}
}
},
"examples": {
"application/json": {
"CaReConfSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/ca_reconf/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ca_reconf/sub123"
},
"filterCriteriaAssoc": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
},
"x-swagger-router-controller": "Default"
}
},
"/subscriptions/ca_reconf/{subscriptionId}": {
"get": {
"description": "Gets a subscription to Carrier Aggregation Reconfiguration notifications from Radio Network Information Service",
"operationId": "CaReConfSubscription_subscriptionsGET",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"200": {
"description": "Subscription information regarding Carrier Aggregation Reconfiguration notifications",
"schema": {
"type": "object",
"required": [
"CaReConfSubscription"
],
"properties": {
"CaReConfSubscription": {
"$ref": "#/definitions/CaReConfSubscription"
}
}
},
"examples": {
"application/json": {
"CaReConfSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/ca_reconf/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ca_reconf/sub123"
},
"filterCriteriaAssoc": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"put": {
"description": "Updates a subscription to Carrier Aggregation Reconfiguration notifications from Radio Network Information Service",
"operationId": "CaReConfSubscription_subscriptionsPUT",
"produces": [
"application/json",
"application/problem+json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
},
{
"$ref": "#/parameters/Body.CaReConfSubscription"
}
],
"responses": {
"200": {
"description": "Successful subscription to Carrier Aggregation Reconfiguration notifications",
"schema": {
"type": "object",
"properties": {
"CaReConfSubscription": {
"$ref": "#/definitions/CaReConfSubscription"
}
}
},
"examples": {
"application/json": {
"CaReConfSubscription": {
"callbackReference": "http://meAppClient.example.com/rni/v1/notifications/ca_reconf/77777",
"_links": {
"self": "http://meAppServer.example.com/rni/v1/subscriptions/ca_reconf/sub123"
},
"filterCriteriaAssoc": {
"appInsId": "app01",
"associateId": {
"type": "1",
"value": "192.0.2.0"
},
"plmn": {
"mnc": "01",
"mcc": "001"
},
"cellId": "0x800000B"
},
"expiryDeadline": {
"seconds": 1577836800,
"nanoSeconds": 0
}
}
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"required": [
"ProblemDetails"
],
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"406": {
"description": "Not Acceptable",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"412": {
"description": "Precondition failed",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
},
"examples": {
"application/problem+json": {
"ProblemDetails": {
"type": "https://meAppServer.example.com/rni/v1/probs/too-many-targets",
"title": "Too many targets",
"status": "422",
"detail": "The target area for the request is considered too large",
"instance": "/meAppClient.example.com/77777/msgs/abc"
}
}
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"type": "object",
"properties": {
"ProblemDetails": {
"$ref": "#/definitions/ProblemDetails"
}
}
}
}
}
},
"delete": {
"description": "Method to delete a subscription",
"operationId": "CaReConf_subscriptionsSubscrIdDELETE",
"produces": [
"application/json"
],
"parameters": [
{
"$ref": "#/parameters/Path.subscrId"
}
],
"responses": {
"204": {
"description": "No Content"
}
},
"x-swagger-router-controller": "Default"
}
}
},
"definitions": {
"ProblemDetails": {
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/Problem.type"
},
"title": {
"$ref": "#/definitions/Problem.title"
},
"status": {
"$ref": "#/definitions/Problem.status"
},
"detail": {
"$ref": "#/definitions/Problem.detail"
},
"instance": {
"$ref": "#/definitions/Problem.instance"
}
}
},
"Problem.type": {
"type": "string",
"format": "uri",
"description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
},
"Problem.title": {
"type": "string",
"description": "A short, human-readable summary of the problem type"
},
"Problem.status": {
"type": "integer",
"format": "uint32",
"description": "The HTTP status code for this occurrence of the problem"
},
"Problem.detail": {
"type": "string",
"description": "A human-readable explanation specific to this occurrence of the problem"
},
"Problem.instance": {
"type": "string",
"format": "uri",
"description": "A URI reference that identifies the specific occurrence of the problem"
},
"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": "array",
"items": {
"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",
"format": "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": [
"callbackReference",
"filterCriteria"
],
"properties": {
"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"
],
"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"
}
}
}
...@@ -13,7 +13,7 @@ module RnisAPI_Pixits { ...@@ -13,7 +13,7 @@ module RnisAPI_Pixits {
modulepar Json.String PX_UNKNOWN_SUBSCRIPTION_ID := "0666"; modulepar Json.String PX_UNKNOWN_SUBSCRIPTION_ID := "0666";
modulepar Link PX_LINKS_SELF := { self_ := { href := "http://example.com/exampleAPI/rni/v2/subscriptions" } }; modulepar Links PX_LINKS_SELF := { self_ := { href := "http://example.com/exampleAPI/rni/v2/subscriptions" } };
modulepar charstring PX_CALLBACK_URI := "/"; modulepar charstring PX_CALLBACK_URI := "/";
...@@ -21,9 +21,9 @@ module RnisAPI_Pixits { ...@@ -21,9 +21,9 @@ module RnisAPI_Pixits {
modulepar Json.String PX_ASSOCIATE_ID_VALUE := "192.0.0.2"; modulepar Json.String PX_ASSOCIATE_ID_VALUE := "192.0.0.2";
modulepar CellId PX_CELL_ID := "0x0800000A"; modulepar CellId PX_V2X_CELL_ID := "0x0800000A";
modulepar CellId PX_UNKNOWN_CELL_ID := "0x0800000A"; modulepar CellId PX_V2X_UNKNOWN_CELL_ID := "0x0800000A";
modulepar CellId PX_C_ID := "0xFFFFFFFF"; modulepar CellId PX_C_ID := "0xFFFFFFFF";
......