Newer
Older
"contact": {
"url": "https://forge.etsi.org/rep/mec/gs013-location-api"
},
"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 V3.1.1 Location API",
"url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/03.01.01_60/gs_mec013v030101p.pdf"
"url": "https://localhost/location/v2"
}
],
"tags": [
{
"name": "location"
}
],
"paths": {
"/queries/distance": {
"get": {
"summary": "Query information about distance from a user to a location or between two users",
"description": "The GET method is used to query information about distance from a user to a location or between two users.",
"operationId": "distanceGET",
"parameters": [
{
"$ref": "#/components/parameters/Query.Address"
"$ref": "#/components/parameters/Query.Location"
"description": "Upon success, a response body containing the list of distance information is returned.",
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"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": {
"summary": "Query location information about a specific UE or a group of Ues",
"description": "The GET method is used to query location information about a specific UE or a group of Ues.",
"operationId": "usersGET",
"parameters": [
{
"$ref": "#/components/parameters/Query.ZoneId"
},
{
"$ref": "#/components/parameters/Query.AccessPointId"
},
{
"$ref": "#/components/parameters/Query.Address_3"
"description": "Upon success, a response body containing the list of user location information is returned.",
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
"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": {
"summary": "Query the information about one or more specific zones or a list of zones.",
"description": "The GET method is used to query the information about one or more specific zones or a list of zones.",
"parameters": [
{
"$ref": "#/components/parameters/Query.ZoneId"
}
],
"description": "Upon success, a response body containing the list of zone information is returned.",
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
"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": {
"summary": "Query information about a specific zone",
"description": "The GET method is used to query the information about a specific zone.",
"operationId": "zoneGetById",
"parameters": [
{
"$ref": "#/components/parameters/Path.ZoneId"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing the zone information is returned.",
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
"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": {
"summary": "Query information about a specific access point or a list of access points under a zone",
"description": "The GET method is used to query the information about a specific access point or a list of access points under a zone.",
"operationId": "accessPointsGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.ZoneId"
},
{
"$ref": "#/components/parameters/Query.AccessPointId"
"description": "Upon success, a response body containing the list of access point information is returned.",
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
"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": {
"summary": "Query information about a specific access point under a zone.",
"description": "The GET method is used to query the information about a specific access point under a zone.",
"operationId": "accessPointGetById",
"parameters": [
{
"$ref": "#/components/parameters/Path.ZoneId"
},
{
"$ref": "#/components/parameters/Path.AccessPointId"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing the access point information is returned.",
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
"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"
}
},
"summary": "Retrieves information about the subscriptions for this requestor.",
"description": "The GET method is used to request information about the subscriptions for this requestor.",
"operationId": "areaSubListGET",
"parameters": [
{
"$ref": "#/components/parameters/Query.Subscription_type"
}
],
"description": "Upon success, a response body containing the list of links to requestor's subscriptions is returned.",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["notificationSubscriptionList"],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"examples": [
{
"notificationSubscriptionList": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123",
"subscriptionType": "UserAreaSubscription"
"resourceURL": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area"
}
},
"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"
"summary": "Creates subscription to area notifications.",
"description": "The POST method is used to create a new subscription to area notifications.",
"operationId": "areaSubPOST",
"requestBody": {
"description": "Subscription to be created",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userAreaSubscription": {
"$ref": "#/components/schemas/UserAreaSubscription"
"userAreaSubscription": {
"subscriptionType": "userAreaSubscription",
"callbackReference": "http://my.callback.com/area_notification/some-id",
"_links": {
"self": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
}
"areaDefine": {
"shape": 1,
"points": [
{
"latitude": -80.86302,
"longitude": 41.277306
}
],
"radius": null
},
"addressList": ["acr:10.0.0.1", "acr:10.0.0.2"],
"trackingAccuracy": 10.99,
"expiryDeadline": {
"seconds": 1973507343,
"nanoSeconds\"": 0
}
}
}
}
},
"responses": {
"201": {
"description": "Indicates successful resource creation, where the resource URI shall be returned in the HTTP Location header field.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userAreaSubscription": {
"$ref": "#/components/schemas/UserAreaSubscription"
"userAreaSubscription": {
"subscriptionType": "userAreaSubscription",
"callbackReference": "http://my.callback.com/area_notification/some-id",
"_links": {
"self": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
}
"areaDefine": null,
"shape": 1,
"points": [
{
"latitude": -80.86302,
"longitude": 41.277306
}
],
"radius": null,
"addressList": ["acr:10.0.0.1", "acr:10.0.0.2"],
"trackingAccuracy": 10.99,
"expiryDeadline": {
"seconds": 1973507343,
"nanoSeconds\"": 0
}
}
}
}
},
"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"
},
"415": {
"$ref": "#/components/responses/415"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/userAreaSubscription.callbackReference}": {
"summary": "Callback POST used to send a notification",
"description": "Notification from Location service, content based on subscription type",
"operationId": "areaNotificationPOST",
"requestBody": {
"description": "Subscription notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userAreaNotification": {
"$ref": "#/components/schemas/UserAreaNotification"
"userAreaNotification": {
"notificationType": "UserAreaNotification",
"timestamp": {
"seconds": 1673507343,
"nanoSeconds\"": 0
"address": "acr:10.0.0.1",
"userLocationEvent": "ENTERING_AREA_EVENT",
"_links": {
"subscription": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
}
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/area/{subscriptionId}": {
"description": "The GET method is used to retrieve information about this subscription.",
"operationId": "areaSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing data type describing the specific zone subscription is returned.",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["userAreaSubscription"],
"userAreaNotification": {
"$ref": "#/components/schemas/UserAreaNotification"
"userAreaNotification": {
"notificationType": "UserAreaNotification",
"userLocationEvent": "ENTERING_AREA_EVENT",
"_links": {
"subscription": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
}
}
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
}
}
}
},
"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": {
"summary": "Updates a subscription information",
"description": "The PUT method is used to update the existing subscription.",
"operationId": "areaSubPUT",
"requestBody": {
"description": "Subscription to be modified",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userAreaNotification": {
"$ref": "#/components/schemas/UserAreaNotification"
"userAreaNotification": {
"notificationType": "UserAreaNotification",
"userLocationEvent": "ENTERING_AREA_EVENT",
"_links": {
"subscription": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
}
}
}
}
}
},
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing data type describing the updated subscription is returned.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userAreaNotification": {
"$ref": "#/components/schemas/UserAreaNotification"
"userAreaNotification": {
"notificationType": "UserAreaNotification",
"userLocationEvent": "ENTERING_AREA_EVENT",
"_links": {
"subscription": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123"
}
}
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
}
}
}
},
"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": {
"description": "The DELETE method is used to cancel the existing subscription.",
"operationId": "areaSubDELETE",
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
"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": {
"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": "Upon success, a response body containing the list of links to requestor's subscriptions is returned.",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["notificationSubscriptionList"],
"properties": {
"notificationSubscriptionList": {
"$ref": "#/components/schemas/NotificationSubscriptionList"
}
},
"examples": [
{
"notificationSubscriptionList": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123",
"subscriptionType": "UserDistanceSubscription"
"resourceURL": {
"href": "http://meAppServer.example.com/location/v2/subscriptions/distance"
}
"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": "The POST method is used to create a new subscription to user distance notifications.",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userDistanceSubscription": {
"$ref": "#/components/schemas/UserDistanceSubscription"
"userDistanceSubscription": {
"subscriptionType": "UserDistanceSubscription",
"callbackReference": "http://my.callback.com/user-distance/some-id",
"referenceAddress": ["acr:10.0.0.3"],
"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
"trackingAccuracy": 10,
"criteria": "AllWithinDistance",
"checkImmediate": true
}
}
}
},
"responses": {
"201": {
"description": "Successful subscription",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userDistanceSubscription": {
"$ref": "#/components/schemas/UserDistanceSubscription"
"userDistanceSubscription": {
"subscriptionType": "UserDistanceSubscription",
"callbackReference": "http://my.callback.com/user-distance/some-id",
"referenceAddress": ["acr:10.0.0.3"],
"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
"distance": 100,
"trackingAccuracy": 10,
"criteria": "AllWithinDistance",
"checkImmediate": true
}
}
}
},
"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"
},
"415": {
"$ref": "#/components/responses/415"
},
"422": {
"$ref": "#/components/responses/422"
},
"429": {
"$ref": "#/components/responses/429"
}
},
"callbacks": {
"notification": {
"{$request.body#/userDistanceSubscription.callbackReference}": {
"description": "Notification from Location service, content based user distance subscription type",
"description": "User Distance Notification",
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userDistanceNotification": {
"$ref": "#/components/schemas/UserDistanceNotification"
"userDistanceNotification": {
"notificationType": "UserDistanceNotification",
"timestamp": {
"seconds": 1673507343,
"nanoSeconds\"": 0
"user": {
"address": "acr:10.0.0.1",
"accessPointId": "001010000000000000000000000000001",
"zoneId": "zone01",
"resourceURL": "http://meAppServer.example.com/location/v3/queries/users"
}
],
"distanceEvent": "AllWithinDistance",
"_links": {
"subscription": {
"href": "http://meAppServer.example.com/location/v3/subscriptions/distance/subscription123"
}
}
}
},
"responses": {
"204": {
"$ref": "#/components/responses/204"
}
}
}
}
}
},
"x-swagger-router-controller": "subscriptions"
}
},
"/subscriptions/distance/{subscriptionId}": {
"get": {
"summary": "Retrieve user distance subscription information",
"description": "The GET method is used to retrieve information about user distance subscription subscription.",
"operationId": "distanceSubGET",
"parameters": [
{
"$ref": "#/components/parameters/Path.SubscrId"
}
],
"responses": {
"200": {
"description": "Upon success, a response body containing data type describing the specific distance event subscription is returned.",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["UserDistanceSubscription"],
"userDistanceSubscription": {
"$ref": "#/components/schemas/UserDistanceSubscription"
"userDistanceSubscription": {
"subscriptionType": "UserDistanceSubscription",
"callbackReference": "http://my.callback.com/user-distance/some-id",
"referenceAddress": ["acr:10.0.0.3"],
"monitoredAddress": ["acr:10.0.0.1", "acr:10.0.0.2"],
"distance": 100,
"trackingAccuracy": 10,
"criteria": "AllWithinDistance",
"checkImmediate": true