From b72b7c33bbb92875347da6fec0f58b85a6d7b907 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 12 Jan 2023 17:42:45 +0500 Subject: [PATCH 01/16] update Location API OAS as per MEC013 v3.1.1 --- LocationAPI.yaml | 3495 ++++++++++++++++++++++++---------------------- 1 file changed, 1842 insertions(+), 1653 deletions(-) diff --git a/LocationAPI.yaml b/LocationAPI.yaml index ff9685f..e2119b4 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -3,34 +3,33 @@ info: contact: url: https://forge.etsi.org/rep/mec/gs013-location-api title: ETSI GS MEC 013 - Location API - version: 2.2.1 + version: 3.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.2.1 Location API - url: 'http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.02.01_60/gs_mec013v020201p.pdf' + 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' 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' + 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.Requester' - - $ref: '#/components/parameters/Query.AddressMandatory' - - $ref: '#/components/parameters/Query.Latitude' - - $ref: '#/components/parameters/Query.Longitude' + - $ref: '#/components/parameters/Query.Address' + - $ref: '#/components/parameters/Query.Location' responses: '200': - description: 'Successful response to a distance request' + description: 'Upon success, a response body containing the list of distance information is returned.' content: application/json: schema: @@ -55,16 +54,16 @@ paths: 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' + 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' + - $ref: '#/components/parameters/Query.Address_3' responses: '200': - description: 'Successful response to users request' + description: 'Upon success, a response body containing the list of user location information is returned.' content: application/json: schema: @@ -89,12 +88,14 @@ paths: get: tags: - 'location' - summary: 'Zones information Lookup' - description: 'Used to get a list of identifiers for zones authorized for use by the application.' + 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.' operationId: zonesGET + parameters: + - $ref: '#/components/parameters/Query.ZoneId' responses: '200': - description: 'Successful response to zones request' + description: 'Upon success, a response body containing the list of zone information is returned.' content: application/json: schema: @@ -119,14 +120,14 @@ paths: get: tags: - 'location' - summary: 'Zones information Lookup' - description: 'Used to get the information for an authorized zone for use by the application.' - operationId: zonesGetById + 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: 'Successful response to an access point Id request' + description: 'Upon success, a response body containing the zone information is returned.' content: application/json: schema: @@ -151,15 +152,15 @@ paths: 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 + 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.InterestRealm' + - $ref: '#/components/parameters/Query.AccessPointId' responses: '200': - description: 'Successful response to an access point Id request' + description: 'Upon success, a response body containing the list of access point information is returned.' content: application/json: schema: @@ -184,15 +185,15 @@ paths: get: tags: - 'location' - summary: 'Radio Node Location Lookup' - description: 'Radio Node Location Lookup to retrieve a radio node associated to a zone.' - operationId: apByIdGET + 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: 'Successful response to an access point Id request' + description: 'Upon success, a response body containing the access point information is returned.' content: application/json: schema: @@ -213,16 +214,18 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'queries' - /subscriptions/area/circle: + /subscriptions/area: 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 + 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' responses: '200': - description: 'Response to retrieve area subscriptions' + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." content: application/json: schema: @@ -234,27 +237,29 @@ paths: $ref: '#/components/schemas/NotificationSubscriptionList' examples: - 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' + subscription: + - 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' 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 + 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 @@ -263,47 +268,60 @@ paths: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' examples: - - circleNotificationSubscription: + - userAreaSubscription: + subscriptionType: 'userAreaSubscription' 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 + 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: + addressList: + - acr:10.0.0.1 + - acr:10.0.0.2 + trackingAccuracy: 10.99 + expiryDeadline: + seconds: 1973507343 + nanoSeconds": 0 responses: '201': - description: 'Successful subscription' + 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: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' examples: - - circleNotificationSubscription: + - userAreaSubscription: + subscriptionType: 'userAreaSubscription' 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' + 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: + 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': @@ -314,15 +332,17 @@ paths: $ref: '#/components/responses/404' '406': $ref: '#/components/responses/406' + '415': + $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' callbacks: notification: - '{$request.body#/circleNotificationSubscription.callbackReference.notifyURL}': + '{$request.body#/userAreaSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: circleNotificationPOST + operationId: areaNotificationPOST requestBody: description: 'Subscription notification' required: true @@ -331,66 +351,52 @@ paths: schema: type: object properties: - subscriptionNotification: - $ref: '#/components/schemas/SubscriptionNotification' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' examples: - - 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.0 - latitude: -80.86302 - longitude: 41.277306 - timestamp: - seconds: 1483231138 - nanoSeconds": 0 - locationRetrievalStatus: 'Retrieved' + - 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/circle/{subscriptionId}: + /subscriptions/area/{subscriptionId}: get: tags: - 'location' summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: areaCircleSubGET + description: 'The GET method is used to retrieve information about this subscription.' + operationId: areaSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.' content: application/json: schema: type: object required: - - circleNotificationSubscription + - userAreaSubscription properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' examples: - - circleNotificationSubscription: - clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + - userAreaNotification: + notificationType: 'UserAreaNotification' 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' + userLocationEvent: 'ENTERING_AREA_EVENT' + _links: + subscription: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 '400': $ref: '#/components/responses/400' '401': @@ -408,8 +414,8 @@ paths: tags: - 'location' summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: areaCircleSubPUT + description: 'The PUT method is used to update the existing subscription.' + operationId: areaSubPUT requestBody: description: 'Subscription to be modified' required: true @@ -418,50 +424,36 @@ paths: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' examples: - - circleNotificationSubscription: - clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + - userAreaNotification: + notificationType: 'UserAreaNotification' 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' + 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: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' content: application/json: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' examples: - - circleNotificationSubscription: - clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + - userAreaNotification: + notificationType: 'UserAreaNotification' 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' + userLocationEvent: 'ENTERING_AREA_EVENT' + _links: + subscription: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 '400': $ref: '#/components/responses/400' '401': @@ -483,8 +475,8 @@ paths: tags: - 'location' summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: areaCircleSubDELETE + description: 'The DELETE method is used to cancel the existing subscription.' + operationId: areaSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -508,7 +500,7 @@ paths: operationId: distanceSubListGET responses: '200': - description: 'Response to retrieve area subscriptions' + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." content: application/json: schema: @@ -520,22 +512,11 @@ paths: $ref: '#/components/schemas/NotificationSubscriptionList' examples: - 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' + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123' + subscriptionType: 'UserDistanceSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/distance' post: tags: - 'location' @@ -543,30 +524,29 @@ paths: description: 'Creates a subscription to the Location Service for a distance change notification.' operationId: distanceSubPOST requestBody: - description: 'Subscription to be created' + description: 'The POST method is used to create a new subscription to user distance notifications.' required: true content: application/json: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' examples: - - distanceNotificationSubscription: + - userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + 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' - checkImmediate: true - criteria: 'AllWithinDistance' distance: 100 - frequency: 10 - referenceAddress: 'acr:10.0.0.3' trackingAccuracy: 10 + criteria: 'AllWithinDistance' + checkImmediate: true responses: '201': description: 'Successful subscription' @@ -575,24 +555,22 @@ paths: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' examples: - - distanceNotificationSubscription: + - userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + 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' - 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' + criteria: 'AllWithinDistance' + checkImmediate: true '400': $ref: '#/components/responses/400' '401': @@ -603,53 +581,48 @@ paths: $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#/distanceNotificationSubscription.callbackReference.notifyURL}': + '{$request.body#/userDistanceSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' - description: 'Notification from Location service, content based on subscription type' + description: 'Notification from Location service, content based user distance subscription type' operationId: distanceNotificationPOST requestBody: - description: 'Subscription notification' + description: 'User Distance Notification' required: true content: application/json: schema: type: object properties: - subscriptionNotification: - $ref: '#/components/schemas/SubscriptionNotification' + userDistanceNotification: + $ref: '#/components/schemas/UserDistanceNotification' examples: - - 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.0 - latitude: -80.86302 - longitude: 41.277306 - timestamp: - seconds: 1483231138 - nanoSeconds": 0 - locationRetrievalStatus: 'Retrieved' - - address: 'acr:10.0.0.2' - currentLocation: - accuracy: 100 - altitude: 1001.0 - latitude: -80.86301 - longitude: 41.277306 + - userDistanceNotification: + notificationType: 'UserDistanceNotification' + timestamp: + seconds: 1673507343 + nanoSeconds": 0 + monitoredUsers: + - user: + address: 'acr:10.0.0.1' + accessPointId: '001010000000000000000000000000001' + zoneId: 'zone01' timestamp: - seconds: 1483231138 + seconds: 1673507343 nanoSeconds": 0 - locationRetrievalStatus: 'Retrieved' + 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' @@ -658,39 +631,37 @@ paths: get: tags: - 'location' - summary: 'Retrieve subscription information' - description: 'Get subscription information.' + 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: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific distance event subscription is returned.' content: application/json: schema: type: object required: - - distanceNotificationSubscription + - UserDistanceSubscription properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' examples: - - distanceNotificationSubscription: + - userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + 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' - 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' + criteria: 'AllWithinDistance' + checkImmediate: true '400': $ref: '#/components/responses/400' '401': @@ -707,8 +678,8 @@ paths: put: tags: - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' + summary: 'Updates a user distance subscription information' + description: 'The PUT method is used to update the existing user distance subscription.' operationId: distanceSubPUT requestBody: description: 'Subscription to be modified' @@ -718,52 +689,48 @@ paths: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' examples: - - distanceNotificationSubscription: + - userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + 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' - 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' + criteria: 'AllWithinDistance' + checkImmediate: true parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' content: application/json: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' examples: - - distanceNotificationSubscription: + - userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://clientApp.example.com/location_notifications/123456' + 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' - 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' + criteria: 'AllWithinDistance' + checkImmediate: true '400': $ref: '#/components/responses/400' '401': @@ -785,7 +752,7 @@ paths: tags: - 'location' summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' + description: 'The DELETE method is used to cancel the existing subscription.' operationId: distanceSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' @@ -801,16 +768,19 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' - /subscriptions/periodic: + /subscriptions/users: 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 + summary: 'Retrieves information about the subscriptions for the requestor' + description: 'The GET method is used to request information about the subscriptions for the requestor. ' + operationId: userSubListGET + parameters: + - $ref: '#/components/parameters/Query.Subscription_type_2' + - $ref: '#/components/parameters/Query.Address_2' responses: '200': - description: 'Response to retrieve area subscriptions' + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." content: application/json: schema: @@ -822,203 +792,13 @@ paths: $ref: '#/components/schemas/NotificationSubscriptionList' examples: - 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' - examples: - - 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' - examples: - - 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' - examples: - - 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.0 - 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' - examples: - - 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' - examples: - - 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' - examples: - - 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' + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription123' + subscriptionType: 'UserLocationEventSubscription' + - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription456' + subscriptionType: 'UserLocationPeriodicSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/users' '400': $ref: '#/components/responses/400' '401': @@ -1029,74 +809,14 @@ paths: $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' - examples: - - 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 + summary: 'Create subscription to UE location notifications.' + description: 'The POST method is used to create a new subscription to UE location notifications.' + operationId: userSubPOST requestBody: description: 'Subscription to be created' required: true @@ -1105,33 +825,36 @@ paths: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' examples: - - userTrackingSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' address: 'acr:10.0.0.1' - userEventCriteria: ['Transferring'] + locationEventCriteria: + - ENTERING_AREA_EVENT responses: '201': - description: 'Successful subscription' + description: 'Indicates successful subscription creation.' content: application/json: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' examples: - - userTrackingSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' address: 'acr:10.0.0.1' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -1146,68 +869,68 @@ paths: $ref: '#/components/responses/429' callbacks: notification: - '{$request.body#/userTrackingSubscription.callbackReference.notifyURL}': + '{$request.body#/userLocationEventSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: userTrackingNotificationPOST + operationId: userNotificationPOST requestBody: - description: 'Subscription notification' + description: 'User LocationEvent Notification' required: true content: application/json: schema: type: object properties: - zonalPresenceNotification: - $ref: '#/components/schemas/ZonalPresenceNotification' + userLocationEventNotification: + $ref: '#/components/schemas/UserLocationEventNotification' examples: - - zonalPresenceNotification: - clientCorrelator: '0123' - zoneId: 'zone01' - address: 'acr:10.0.0.1' - userEventType: 'Transferring' - currentAccessPointId: 'ap2' - previousAccessPointId: 'ap1' + - userLocationEventNotification: + notificationType: 'UserLocationEventNotification' timestamp: - seconds: 1483231138 + seconds: 1673507343 nanoseconds: 0 - link: - rel: UserTrackingSubscription - href: 'http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123' + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + zoneId: 'zone01' + accessPointId: '001010000000000000000000000000001' + _links: + subscription: + href: "http://meAppServer.example.com/location/v3/subscriptions/user/subscription123" responses: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/userTracking/{subscriptionId}: + /subscriptions/users/{subscriptionId}: get: tags: - 'location' summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: userTrackingSubGET + description: 'The GET method is used to retrieve information about this subscription. ' + operationId: userSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific Location event subscription is returned.' content: application/json: schema: type: object required: - - userTrackingSubscription + - UserLocationEventSubscription properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' examples: - - userTrackingSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' address: 'acr:10.0.0.1' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -1225,8 +948,8 @@ paths: tags: - 'location' summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: userTrackingSubPUT + description: 'The PUT method is used to update the existing subscription.' + operationId: userSubPUT requestBody: description: 'Subscription to be modified' required: true @@ -1235,36 +958,38 @@ paths: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' examples: - - userTrackingSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' address: 'acr:10.0.0.1' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned. ' content: application/json: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' examples: - - userTrackingSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' address: 'acr:10.0.0.1' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -1286,8 +1011,8 @@ paths: tags: - 'location' summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: userTrackingSubDELETE + description: 'The DELETE method is used to cancel the existing subscription.' + operationId: userSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -1302,16 +1027,19 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' - /subscriptions/zonalTraffic: + /subscriptions/zones: 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 + summary: 'Retrieves all active subscriptions to zone notifications' + description: 'This operation is used for retrieving all active subscriptions to zone notifications.' + operationId: zoneSubListGET + parameters: + - $ref: '#/components/parameters/Query.Subscription_type_3' + - $ref: '#/components/parameters/Query.ZoneId_2' responses: '200': - description: 'Response to retrieve zonal traffic subscriptions' + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." content: application/json: schema: @@ -1323,26 +1051,19 @@ paths: $ref: '#/components/schemas/NotificationSubscriptionList' examples: - 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' + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/zones/subscription123' + subscriptionType: 'ZoneLocationEventSubscription' + - href: 'http://meAppServer.example.com/location/v2/subscriptions/zones/subscription456' + subscriptionType: 'ZoneStatusSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/zones' 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 + summary: 'Creates a subscription to zone notifications' + description: 'The POST method is used to create a new subscription to zone notifications.' + operationId: zoneSubPOST requestBody: description: 'Subscription to be created' required: true @@ -1351,33 +1072,42 @@ paths: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' examples: - - zonalTrafficSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' zoneId: 'zone01' - userEventCriteria: ['Transferring'] + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 responses: '201': - description: 'Successful subscription' + description: 'Indicates successful resource creation' content: application/json: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' examples: - - zonalTrafficSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' zoneId: 'zone01' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -1388,15 +1118,19 @@ paths: $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#/zonalTrafficSubscription.callbackReference.notifyURL}': + '{$request.body#/zoneLocationEventSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: zonalTrafficNotificationPOST + operationId: zoneNotificationPOST requestBody: description: 'Subscription notification' required: true @@ -1405,55 +1139,57 @@ paths: schema: type: object properties: - zonalPresenceNotification: - $ref: '#/components/schemas/ZonalPresenceNotification' + zoneLocationEventNotification: + $ref: '#/components/schemas/ZoneLocationEventNotification' examples: - - zonalPresenceNotification: - clientCorrelator: '0123' - zoneId: 'zone01' - address: 'acr:10.0.0.1' - userEventType: 'Transferring' - currentAccessPointId: 'ap2' - previousAccessPointId: 'ap1' + - zoneLocationEventNotification: + notificationType: 'ZoneLocationEventNotification' timestamp: - seconds: 1483231138 + seconds: 1673507343 nanoseconds: 0 - link: - rel: ZonalTrafficSubscription - href: 'http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123' + address: 'acr:10.0.0.1' + zoneId: 'zone01' + _links: + subscription: + href: "http://meAppServer.example.com/location/v3/subscriptions/zone/subscription123" responses: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/zonalTraffic/{subscriptionId}: + /subscriptions/zones/{subscriptionId}: get: tags: - 'location' - summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: zonalTrafficSubGET + summary: 'Retrieve zone subscription information' + description: 'The GET method is used to retrieve information about zone subscription. ' + operationId: zoneSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.' content: application/json: schema: type: object required: - - zonalTrafficSubscription + - zoneLocationEventSubscription + - zoneStatusSubscription properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' examples: - - zonalTrafficSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' zoneId: 'zone01' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -1470,9 +1206,9 @@ paths: put: tags: - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: zonalTrafficSubPUT + summary: 'Updates a zone subscription information' + description: 'The PUT method is used to update the existing zone subscription.' + operationId: zoneSubPUT requestBody: description: 'Subscription to be modified' required: true @@ -1481,36 +1217,44 @@ paths: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' examples: - - zonalTrafficSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' zoneId: 'zone01' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' content: application/json: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' examples: - - zonalTrafficSubscription: - clientCorrelator: '0123' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' zoneId: 'zone01' - userEventCriteria: ['Transferring'] - resourceURL: 'http://meAppServer.example.com/location/v2/subscriptions/zonalTraffic/sub123' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -1531,255 +1275,9 @@ paths: 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' - examples: - - 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' - examples: - - 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' - examples: - - 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' - examples: - - 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' - examples: - - 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' - examples: - - 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' - examples: - - 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 + summary: 'Cancel a zone subscription' + description: 'The DELETE method is used to cancel the existing zone subscription.' + operationId: zoneSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -1894,6 +1392,35 @@ components: schema: type: string x-exportParamName: ZoneId + Query.Subscription_type: + name: subscription_type + in: query + description: "Query parameter to filter on a specific subscription type. Permitted values: + event" + required: false + schema: + type: string + x-exportParamName: Subscription_type + Query.Subscription_type_2: + name: subscription_type + in: query + description: "Query parameter to filter on a specific subscription type. Permitted values: + -event + -periodic" + required: false + schema: + type: string + x-exportParamName: Subscription_type_2 + Query.Subscription_type_3: + name: subscription_type + in: query + description: "Query parameter to filter on a specific subscription type. Permitted values: + -event + -status" + required: false + schema: + type: string + x-exportParamName: Subscription_type_3 Query.AccessPointId: name: accessPointId in: query @@ -1907,57 +1434,54 @@ components: Query.Address: name: address in: query - description: 'address of users (e.g. "sip" URI, "tel" URI, "acr" URI)' + description: One or two addresses of user to check. + The second "address" parameter shall not be included when the distance between a user and a location is requested. + The second "address" parameter shall be included when a location is not provided. required: false schema: type: array items: type: string x-exportParamName: Address - Query.AddressMandatory: + Query.Address_2: 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.).' + description: Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI). 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 + x-exportParamName: Address_2 + Query.Address_3: + name: address in: query - description: Longitude geo position + description: Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI). required: false schema: - type: number - format: float - x-exportParamName: Longitude - Query.Requester: - name: requester + type: array + items: + type: string + x-exportParamName: Address_3 + Query.Location: + name: location in: query - description: Entity that is requesting the information + description: Shall not be included when the distance between two terminals is requested. required: false schema: - type: string - x-exportParamName: Requester + type: object + properties: + latitude: + description: "Location latitude, expressed in the range -90\xB0 to +90\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + longitude: + description: "Location longitude, expressed in the range -180\xB0 to +180\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + x-exportParamName: Location Query.ZoneId: name: zoneId in: query @@ -1968,6 +1492,14 @@ components: items: type: string x-exportParamName: ZoneId + Query.ZoneId_2: + name: zoneId + in: query + description: The identity of the zone + required: false + schema: + type: string + x-exportParamName: ZoneId_2 schemas: AccessPointInfo: description: A type containing access point information. @@ -2010,6 +1542,15 @@ components: - numberOfUsers - resourceURL type: object + + OperationStatus: + description: An enumeration defining the operations status of an access point. + enum: + - Serviceable + - Unserviceable + - Unknown + type: string + AccessPointList: description: A type containing list of access points. properties: @@ -2034,252 +1575,31 @@ components: - 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. + + ConnectionType: + description: This enumeration represents the connection type of an access point + enum: + - LTE + - Wifi + - Wimax + - 5G NR + - UNKNOWN + type: string + + LocationInfo: 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. + 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: int - duration: - description: "Period of time (in seconds) notifications are provided for. If set to \u201C0\u201D (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." + 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: 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 \u201C0\u201D (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 ETSI TS 123 032 [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 ETSI TS 123 032 [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 ETSI TS 123 032 [14]. Present only if "shape" equals 4, 5 or 6 + 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 @@ -2290,24 +1610,24 @@ components: 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 ETSI TS 123 032 [14]. Present only if "shape" equals 1, 4 or 6 + 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 + 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 + 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\xB0 to +90\xB0. Cardinality greater than one only if \"shape\" equals 7." + format: float items: - format: float type: number minItems: 1 type: array @@ -2315,208 +1635,112 @@ components: x-etsi-mec-origin-type: Float longitude: description: "Location longitude, expressed in the range -180\xB0 to +180\xB0. Cardinality greater than one only if \"shape\" equals 7." + format: float 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 + 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\xB0 to 180\xB0, as defined in ETSI TS 123 032 [14]. Present only if \"shape\" equals 4 or 6" + description: "Angle of orientation of the major axis, expressed in the range 0\xB0 to 180\xB0, 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 ETSI TS 123 032 [14], associated with the reported location coordinate:

1 = ELLIPSOID_ARC

2 = ELLIPSOID_POINT

3 = ELLIPSOID_POINT_ALTITUDE

4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID

5 = ELLIPSOID_POINT_UNCERT_CIRCLE

6 = ELLIPSOID_POINT_UNCERT_ELLIPSE

7 = POLYGON' + description: 'Shape information, as detailed in [14], associated with the reported location coordinate: + 1 = Ellipsoid_Arc + 2 = ellipsoid_Point + 3 = ellipsoid_Point_Altitude + 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid + 5 = ellipsoid_Point_Uncert_Circle + 6 = ellipsoid_Point_Uncert_Ellipse + 7 = polygon' + enum: + - SEE_DESCRIPTION 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 + 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\u2019s velocity, as defined in ETSI TS 123 032 [14]." - properties: - bearing: - description: "Bearing, expressed in the range 0\xB0 to 360\xB0, as defined in ETSI TS 123 032 [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 ETSI TS 123 032 [14]. - type: integer - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: UnsignedInt - uncertainty: - description: Horizontal uncertainty, as defined in ETSI TS 123 032 [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 ETSI TS 123 032 [14], associated with the reported location coordinate:

1 = HORIZONTAL

2 = HORIZONTAL_VERTICAL

3 = HORIZONTAL_UNCERT

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 ETSI TS 123 032 [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 ETSI TS 123 032 [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) + $ref: '#/components/schemas/Velocity' required: - - latitude - - longitude - - shape + - latitude + - longitude + - shape type: object x-etsi-ref: 6.5.3 - NotificationFormat: - enum: - - XML - - JSON - type: string - NotificationSubscriptionList: + + Velocity: + description: "Structure with attributes relating to the target entity\u2019s velocity, as defined in [14]." 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 + bearing: + description: "Bearing, expressed in the range 0\xB0 to 360\xB0, as defined in [14]." + type: integer 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 \u201C0\u201D (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." + 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: int - frequency: - description: Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription. + x-etsi-mec-origin-type: UnsignedInt + velocityType: + description: 'Velocity information, as detailed in [14], associated with the reported location coordinate: + 1 = Horizontal + 2 = Horizontal_Vertical + 3 = Horizontal_Uncert + 4 = Horizontal_Vertical_Uncert' + enum: + - SEE_DESCRIPTION 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. + 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: 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-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: anyURI + x-etsi-mec-origin-type: UnsignedInt required: - - callbackReference - - address - - requestedAccuracy - - frequency + - velocityType + - bearing + - horizontalSpeed type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + + NotificationSubscriptionList: + description: This type contains a list of subscriptions. + properties: + resourceURL: + $ref: '#/components/schemas/LinkType' + subscription: + items: + $ref: '#/components/schemas/Subscription' + type: array + required: + - resourceURL + type: object + x-etsi-ref: 6.3.3 + ProblemDetails: properties: detail: @@ -2548,70 +1772,7 @@ components: 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 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 - 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: @@ -2630,6 +1791,7 @@ components: required: - distance type: object + TerminalLocation: description: A type containing device address, retrieval status and location information. properties: @@ -2648,10 +1810,43 @@ components: - address - locationRetrievalStatus type: object - TimeStamp: + + RetrievalStatus: + enum: + - Retrieved + - NotRetrieved + - Error + type: string + + ServiceError: + description: Used to indicate a notification termination or cancellation. properties: - nanoSeconds: - description: 'The nanoseconds part of the time. Time is defined as + 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 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 + + 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 @@ -2669,37 +1864,36 @@ components: - nanoSeconds type: object x-etsi-ref: 6.5.2 - UserEventType: - enum: - - Entering - - Leaving - - Transferring - type: string + UserInfo: + description: This type represents the information related to a user attached to an access point + associated to the MEC host, such access point is in scope of the Location Service instance. + 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 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. + AccessPointId: + description: The identity of the access point the user is currently on, see note 1. type: string - x-etsi-mec-cardinality: 0..1 + x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: String - contextLocationInfo: - description: Contextual information of a user location (e.g. aisle, floor, room number, etc.). + zoneId: + description: The identity of the zone the user is currently within, see note 1. type: string - x-etsi-mec-cardinality: 0..1 + x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: String - locationInfo: - $ref: '#/components/schemas/LocationInfo' resourceURL: description: Self-referring URL, see note 1. type: string @@ -2707,20 +1901,18 @@ components: x-etsi-mec-origin-type: AnyURI timestamp: $ref: '#/components/schemas/TimeStamp' - zoneId: - description: The identity of the zone the user is currently within, see note 1. + locationInfo: + $ref: '#/components/schemas/LocationInfo' + civicInfo: + $ref: '#/components/schemas/CivicAddress' + ancillaryInfo: + description: Reserved for future use. type: string - x-etsi-mec-cardinality: '1' + x-etsi-mec-cardinality: 0..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 + relativeLocationInfo: + $ref: '#/components/schemas/RelativeLocationInfo' + UserList: description: A type containing list of users. properties: @@ -2739,131 +1931,7 @@ components: 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: @@ -2899,6 +1967,7 @@ components: - numberOfUsers - resourceURL type: object + ZoneList: description: A type containing a list of zones. properties: @@ -2915,87 +1984,1207 @@ components: required: - resourceURL type: object + ZoneStatusNotification: - description: A type containing zone status notification. properties: + _links: + $ref: '#/components/schemas/_links' accessPointId: - description: Identifier of an access point. + description: Identifier of an access point (e.g. ap01). Shall be included when userNumEvent related with access point or operationStatus is included. 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]. + x-etsi-mec-origin-type: String + notificationType: + description: Shall be set to "ZoneStatusNotification". 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 + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String operationStatus: + # description': Shall be present when ZoneStatusSubscription includes operationStatus and the operation status value of an access point meets Serviceable or Unserviceable or Unknown defined in the subscription. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': OperationStatus $ref: '#/components/schemas/OperationStatus' - timestamp: + timeStamp: + # description': Time stamp. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' + userNumEvent: + description: 'Shall be present when ZoneStatusSubscription includes upperNumberOfUsersZoneThreshold, lowerNumberOfUsersZoneThreshold, upperNumberOfUsersAPThreshold or lowerNumberOfUsersAPThreshold, and the number of users in a zone or an access point crosses the threshold defined in the subscription: + 1 = OVER_ZONE_UPPER_THD. + 2 = UNDER_ZONE_LOWER_THD. + 3 = OVER_AP_UPPER_THD. + 4 = UNDER_AP_LOWER_THD.' + enum: + - SEE_DESCRIPTION + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Enum(inlined) zoneId: - description: Identifier of zone + description: 'The identity of the zone. ' type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String required: - - zoneId - - timestamp + - notificationType + - zoneId + - _links type: object + x-etsi-notes: "NOTE:\tAs specified in [5], clause 5.2.3.2." + x-etsi-ref: 6.4.7 + ZoneStatusSubscription: - description: A type containing zone status subscription. properties: + _links: + $ref: '#/components/schemas/_links' callbackReference: - $ref: '#/components/schemas/CallbackReference' + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri 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. + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. type: string x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - numberOfUsersAPThreshold: - description: Threshold number of users in an access point which if crossed shall cause a notification + x-etsi-mec-origin-type: String + expiryDeadline: + # description': The expiration time of the subscription determined by the Zone Status Service. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + lowerNumberOfUsersAPThreshold: + description: Threshold number of users in an access point which if crossed downward 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 + x-etsi-mec-origin-type: UnsignedInt + lowerNumberOfUsersZoneThreshold: + description: Threshold number of users in a zone which if crossed downward shall cause a notification type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: unsignedInt + 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). + description: List of operation status values to generate notifications for (these apply to all access points within a zone). See note 3. items: $ref: '#/components/schemas/OperationStatus' + minItems: 0 type: array x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: OperationStatus - resourceURL: - description: Self referring URL + reportingCtrl: + # description': Provides parameters that ctrl the reporting. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "ZoneStatusSubscription". type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + upperNumberOfUsersAPThreshold: + description: Threshold number of users in an access point which if crossed upward shall cause a notification. + type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI + x-etsi-mec-origin-type: UnsignedInt + upperNumberOfUsersZoneThreshold: + description: Threshold number of users in a zone which if crossed upward shall cause a notification. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + websockNotifConfig: + # description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' zoneId: - description: Identifier of zone + description: Identifier of zone (e.g. zone001) to monitor. type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String required: - - callbackReference - - zoneId + - subscriptionType + - zoneId + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [5], clause 5.2.3.2." + x-etsi-ref: 6.3.7 + + RelativeLocationInfo: + properties: + X: + description: 'Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. + Positive value represents easting from origin.' + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + Y: + description: 'Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. + Positive value represents northing from origin.' + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + Z: + description: 'Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. + Positive value represents height above origin.' + format: float + type: number + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Float + mapInfo: + $ref: '#/components/schemas/MapInfo' + required: + - mapInfo + - 'X' + - 'Y' + type: object + x-etsi-ref: 6.2.3 + + MapInfo: + properties: + ancillaryMapInfo: + description: Ancillary map information may be used to convert coordinates between different coordinate systems. + type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Not_specified + mapId: + description: 'Indicates the ID of the map. ' + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + origin: + $ref: '#/components/schemas/Origin' + required: + - mapId + type: object + x-etsi-ref: 6.2.4 + + Origin: + description: Indicates the location of the map origin in the local Cartesian coordinate system. + properties: + 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 + latitude: + description: "Location latitude, expressed in the range -90\xB0 to +90\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + longitude: + description: "Location longitude, expressed in the range -180\xB0 to +180\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + required: + - latitude + - longitude type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure(inlined) + + Subscription: + description: '' + minItems: 0 + properties: + href: + description: The URI referring to the subscription. + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + subscriptionType: + description: "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses\_6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"" + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - href + - subscriptionType + type: object + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Structure (inlined) + + LinkType: + properties: + href: + description: URI referring to a resource. + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + required: + - href + type: object + x-etsi-ref: 6.7.2 + + UserLocationEventSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI) to monitor." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + # description': The expiration time of the subscription determined by the UE Location Subscribe Service. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + locationEventCriteria: + description: 'List of user event values to generate notifications for (these apply to address specified). ' + items: + $ref: '#/components/schemas/LocationEventType' + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(LocationEventType) + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserLocationEventSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + userEventPara: + # description': Requirements for user event reporting. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': UserEventPara + $ref: '#/components/schemas/UserEventPara' + websockNotifConfig: + # description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - address + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." + x-etsi-ref: 6.3.4 + + UserLocationPeriodicSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI) to monitor." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + # description': The expiration time of the subscription determined by the UE Location Subscribe Service. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + periodicEventInfo: + # description': Information for periodic event reporting. See note 3. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': PeriodicEventInfo + $ref: '#/components/schemas/PeriodicEventInfo' + requestTestNotification: + description: Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserLocationPeriodicSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + websockNotifConfig: + # description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - address + - periodicEventInfo + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [17], clause 6.1.6.2.24." + x-etsi-ref: 6.3.5 + + PeriodicEventInfo: + description: "NOTE: reportingAmount x reportingInterval shall not exceed 8639999 (99 days, 23 hours, 59 minutes and 59 seconds) + for compatibility with OMA MLP and RLP." + type: object + required: + - reportingAmount + - reportingInterval + properties: + reportingAmount: + description: Number of event reports + type: number + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: ReportingAmount + reportingInterval: + description: Interval of event reports + type: number + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: reportingInterval + + ZoneLocationEventSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + addressList: + description: List of the users to be monitored. If not present, all the users need to be monitored. + items: + type: string + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(Uri) + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + # description': The expiration time of the subscription determined by the Zone Location Event Service. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + locationEventCriteria: + description: 'List of user event values to generate notifications for. ' + items: + $ref: '#/components/schemas/LocationEventType' + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(LocationEventType) + reportingCtrl: + # description': Provides parameters that ctrl the reporting. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "ZoneLocationEventSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + websockNotifConfig: + # description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + zoneId: + description: Identifier of zone (e.g. zone001) to monitor. + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - subscriptionType + - zoneId + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." + x-etsi-ref: 6.3.6 + + UserAreaSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + addressList: + description: 'List of the users to be monitored. ' + items: + type: string + minItems: 1 + type: array + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Array(Uri) + areaDefine: + # description': The parameters describing the area to subscribe. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': AreaInfo + $ref: '#/components/schemas/AreaInfo' + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + # description': The expiration time of the subscription determined by the UE Area Subscribe Service. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + locationEventCriteria: + description: 'List of user event values to generate notifications for (these apply to address specified). ' + items: + $ref: '#/components/schemas/LocationEventType' + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(LocationEventType) + reportingCtrl: + # description': Provides parameters that ctrl the reporting. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + reportingLocationReq: + description: This IE shall be set to true if a location estimate is required for each event report. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: boolean + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserAreaSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + trackingAccuracy: + description: Number of meters of acceptable error. + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + websockNotifConfig: + # description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - areaDefine + - addressList + - trackingAccuracy + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." + x-etsi-ref: 6.3.8 + + UserDistanceSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + checkImmediate: + # description': Check location immediately after establishing notification. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': Bool + type: boolean + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + criteria: + # description': "Indicates whether the notification should occur when the geographical relationship between monitored and referenced users\u2019 changes. See note 3." + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': DistanceCriteria + $ref: '#/components/schemas/DistanceCriteria' + distance: + description: Distance between users that shall be monitored. The unit is meter. + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + expiryDeadline: + # description': The expiration time of the subscription determined by the UE Distance Subscribe Service. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + monitoredAddress: + description: "Contains addresses of users to monitor (e.g., \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI). Reference to a group could be provided here if supported by implementation.\nIf the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored.\nIf the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here." + items: + type: string + minItems: 1 + type: array + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Array(Uri) + referenceAddress: + description: "If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI). Reference to a group could be provided here if supported by implementation." + items: + type: string + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(Uri) + reportingCtrl: + # description': Provides parameters that ctrl the reporting. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserDistanceSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + trackingAccuracy: + description: Number of meters of acceptable error in tracking distance. + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + websockNotifConfig: + # description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - monitoredAddress + - distance + - trackingAccuracy + - criteria + - checkImmediate + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [6], clause 5.2.3.2." + x-etsi-ref: 6.3.9 + + DistanceCriteria: + description: An enumeration, defining the distance criteria between devices. + enum: + - AllWithinDistance + - AnyWithinDistance + - AllBeyondDistance + - AnyBeyondDistance + type: string + + UserDistanceNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + distanceEvent: + # description': Indicates the distance event triggering the notification. See note. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': DistanceCriteria + $ref: '#/components/schemas/DistanceCriteria' + monitoredUsers: + # description': Indicates the location information related to monitored users. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': UserList + $ref: '#/components/schemas/UserList' + notificationType: + description: Shall be set to "UserDistanceNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + timeStamp: + # description': Time stamp. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + required: + - notificationType + - monitoredUsers + - distanceEvent + - _links + type: object + x-etsi-notes: "NOTE:\tAs specified in [6], clause 5.2.3.2." + x-etsi-ref: 6.4.9 + + UserLocationEventNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + accessPointId: + description: "The identity of the access point.\nFor the events of \"ENTERING_AREA_EVENT\", it indicates the access point that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it indicates the access point that the user used to be within.\nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + civicInfo: + # description': Contextual information of a user location (e.g. aisle, floor, room number, etc.). See note 1. See note 3. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': CivicAddress + $ref: '#/components/schemas/CivicAddress' + locationInfo: + # description': The geographical coordinates where the user is. See note 3. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': LocationInfo + $ref: '#/components/schemas/LocationInfo' + notificationType: + description: Shall be set to "UserLocationEventNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + relativeLocationInfo: + # description': The relative location in a reference system. See note 3. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': RelativeLocationInfo + $ref: '#/components/schemas/RelativeLocationInfo' + timeStamp: + # description': Time stamp. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + userLocationEvent: + # description': The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT".. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': LocationEventType + $ref: '#/components/schemas/LocationEventType' + zoneId: + description: "The identity of the zone. \nFor the events of \"ENTERING_AREA_EVENT\", it is the zone that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it is the zone that the user used to be within.\nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + required: + - notificationType + - userLocationEvent + - _links + type: object + x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserLocationEventSubscription." + x-etsi-ref: 6.4.4 + + UserLocationPeriodicNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + accessPointId: + description: "The identity of the access point that the user is currently within. \nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + civicInfo: + # description': Contextual information of a user location (e.g. aisle, floor, room number, etc.). See note 1. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': CivicAddress + $ref: '#/components/schemas/CivicAddress' + isFinalNotification: + description: Shall be set to true if it is a final notification. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + locationInfo: + # description': The geographical coordinates where the user is. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': LocationInfo + $ref: '#/components/schemas/LocationInfo' + notificationType: + description: Shall be set to "UserLocationPeriodicNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + relativeLocationInfo: + # description': The relative location in a reference system. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': RelativeLocationInfo + $ref: '#/components/schemas/RelativeLocationInfo' + result: + # description': The result of Localization. See note 3. + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': NotificationResult + $ref: '#/components/schemas/NotificationResult' + timeStamp: + # description': Time stamp. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + zoneId: + description: "The identity of the zone that the user is currently within. \nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + required: + - notificationType + - result + - _links + type: object + x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tIf the result is SUCCESS, at least one of locationInfo, civicInfo and relativeLocationInfo shall be present." + x-etsi-ref: 6.4.5 + + ZoneLocationEventNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + notificationType: + description: Shall be set to "ZoneLocationEventNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + timeStamp: + # description': Time stamp. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + userLocationEvent: + # description': The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT","LEAVING_AREA_EVENT". + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': LocationEventType + $ref: '#/components/schemas/LocationEventType' + zoneId: + description: 'The identity of the zone. ' + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - notificationType + - address + - userLocationEvent + - zoneId + - _links + type: object + x-etsi-ref: 6.4.6 + + UserAreaNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + civicInfo: + # description': Contextual information of a user location (e.g. aisle, floor, room number, etc.). See note 1. See note 2. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': CivicAddress + $ref: '#/components/schemas/CivicAddress' + locationInfo: + # description': The geographical coordinates where the user is. See note 2. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': LocationInfo + $ref: '#/components/schemas/LocationInfo' + notificationType: + description: Shall be set to "UserAreaNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + relativeLocationInfo: + # description': The relative location in a reference system. See note 2. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': RelativeLocationInfo + $ref: '#/components/schemas/RelativeLocationInfo' + timeStamp: + # description': Time stamp. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + userLocationEvent: + # description': The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT". + # x-etsi-mec-cardinality': '1' + # x-etsi-mec-origin-type': LocationEventType + $ref: '#/components/schemas/LocationEventType' + required: + - notificationType + - address + - userLocationEvent + - _links + type: object + x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserAreaSubscription." + x-etsi-ref: 6.4.8 + + AreaInfo: + properties: + points: + description: Shall include one point if the shape is CIRCLE. Shall include 3-15 points if the shape is POLYGON. + items: + $ref: '#/components/schemas/Point' + minItems: 1 + type: array + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Array(Point) + radius: + description: Shall be present if the shape is CIRCLE. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + shape: + description: 'The shape of the area monitored: + 1 = CIRCLE. + 2 = POLYGON' + enum: + - SEE_DESCRIPTION + type: integer + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Enum(inlined) + required: + - shape + - points + type: object + x-etsi-ref: 6.5.7 + + Point: + properties: + latitude: + description: "Location latitude, expressed in the range -90\xB0 to +90\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + longitude: + description: "Location longitude, expressed in the range -180\xB0 to +180\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + required: + - latitude + - longitude + type: object + x-etsi-ref: 6.5.8 + + ReportingCtrl: + properties: + maximumCount: + description: Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + maximumFrequency: + description: Maximum frequency (in seconds) of notifications per subscription. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + minimumInterval: + description: Minimum interval between reports in case frequently reporting. Unit is second. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + type: object + x-etsi-ref: 6.5.6 + + _links: + description: Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests. + properties: + self: + $ref: '#/components/schemas/LinkType' + required: + - self + type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + + UserEventPara: + properties: + accessPointList: + description: One or more access points forming a monitoring area that could be any shape. See note 1. + items: + type: string + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(String) + occurrenceInfo: + # description': One time only report indication. See note 2. + # x-etsi-mec-cardinality': 0..1 + # x-etsi-mec-origin-type': OccurrenceInfo + $ref: '#/components/schemas/OccurrenceInfo' + reportingLocationReq: + description: This IE shall be set to true if a location estimate is required for each event report. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: boolean + zoneId: + description: "Identifier of zone (e.g. zone001) to monitor. See note\_1." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + type: object + x-etsi-notes: "NOTE 1:\tOnly one of accessPointList and zoneId may be present.\nNOTE 2:\tAs specified in [17], clause 6.1.6.3.16." + x-etsi-ref: 6.5.5 + + WebsockNotifConfig: + properties: + requestWebsocketUri: + description: Set to true by the service consumer to indicate that Websocket delivery is requested. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + websocketUri: + description: Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + type: object + x-etsi-ref: 6.5.4 + + TestNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + notificationType: + description: Shall be set to "TestNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - notificationType + - _links + type: object + x-etsi-ref: 6.4.3 + + LocationEventType: + description: This type represents specified event types for UE location report. + enum: + - ENTERING_AREA_EVENT + - LEAVING_AREA_EVENT + type: string + + NotificationResult: + description: This enumeration represents the result of a localization associated with a notification + enum: + - SUCCESS + - ABNORMAL + type: string + + OccurrenceInfo: + description: The enumeration OccurrenceInfo indicates whether event reporting is one time. + enum: + - ONE_TIME_EVENT + - MULTIPLE_TIME_EVENT + type: string + + CivicAddress: + description: Indicates a Civic address + type: object + required: + - country + properties: + country: + description: The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US + type: string + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + A1: + description: National subdivisions (state, canton, region, province, prefecture) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A2: + description: County, parish, gun (JP), district (IN) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A3: + description: City, township, shi (JP) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A4: + description: City division, borough, city district, ward, chou (JP) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A5: + description: Neighbourhood, block + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A6: + description: Group of streets below the neighbourhood level + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PRD: + description: Leading street direction + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + POD: + description: Trailing street suffix + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + STS: + description: Street suffix or type + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + HNO: + description: House number + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + HNS: + description: House number suffix + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + LMK: + description: Landmark or vanity address + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + LOC: + description: Additional location information + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + NAM: + description: Name (residence and office occupant) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PC: + description: Postal/zip code + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + BLD: + description: Building (structure) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + UNIT: + description: Unit (apartment, suite) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + FLR: + description: Floor + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + ROOM: + description: Room + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PLC: + description: Place-type + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PCN: + description: Postal community name + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + POBOX: + description: Post office box (P.O. box) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + ADDCODE: + description: Additional code + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + SEAT: + description: Seat (desk, cubicle, workstation) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RD: + description: Primary road or street + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RDSEC: + description: Road clause + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RDBR: + description: Road branch + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RDSUBBR: + description: Road sub-branch + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PRM: + description: Road pre-modifier + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + POM: + description: Road post-modifier + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + usageRules: + description: When present, this IE shall carry the value of "usagerules" Element of the PIDL-LO XML document, with UTF-8 encoding. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + method: + description: When present, this IE shall contain the method token, carried by the "method" Element of the PIDLLO XML document. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + providedBy: + description: When present, this IE shall carry the value of "provided-by" Element of the PIDL-LO XML document, with UTF-8 encoding. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String \ No newline at end of file -- GitLab From 1f84792481280dafc7605f4a1daaaabef525adc4 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 12 Jan 2023 18:18:19 +0500 Subject: [PATCH 02/16] update Location API JSON as per MEC013 v3.1.1 --- LocationAPI.json | 4204 ++++++++++++++++++++++------------------------ 1 file changed, 2021 insertions(+), 2183 deletions(-) diff --git a/LocationAPI.json b/LocationAPI.json index c5c2055..faa5d95 100644 --- a/LocationAPI.json +++ b/LocationAPI.json @@ -5,7 +5,7 @@ "url": "https://forge.etsi.org/rep/mec/gs013-location-api" }, "title": "ETSI GS MEC 013 - Location API", - "version": "2.2.1", + "version": "3.1.1", "description": "The ETSI MEC ISG MEC013 Location API described using OpenAPI.", "license": { "name": "BSD-3-Clause", @@ -13,8 +13,8 @@ } }, "externalDocs": { - "description": "ETSI MEC013 V2.2.1 Location API", - "url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.02.01_60/gs_mec013v020201p.pdf" + "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" }, "servers": [ { @@ -30,26 +30,20 @@ "/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", + "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.Requester" - }, - { - "$ref": "#/components/parameters/Query.AddressMandatory" - }, - { - "$ref": "#/components/parameters/Query.Latitude" + "$ref": "#/components/parameters/Query.Address" }, { - "$ref": "#/components/parameters/Query.Longitude" + "$ref": "#/components/parameters/Query.Location" } ], "responses": { "200": { - "description": "Successful response to a distance request", + "description": "Upon success, a response body containing the list of distance information is returned.", "content": { "application/json": { "schema": { @@ -88,8 +82,8 @@ "/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", + "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": [ { @@ -99,12 +93,12 @@ "$ref": "#/components/parameters/Query.AccessPointId" }, { - "$ref": "#/components/parameters/Query.Address" + "$ref": "#/components/parameters/Query.Address_3" } ], "responses": { "200": { - "description": "Successful response to users request", + "description": "Upon success, a response body containing the list of user location information is returned.", "content": { "application/json": { "schema": { @@ -143,12 +137,17 @@ "/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.", + "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.", "operationId": "zonesGET", + "parameters": [ + { + "$ref": "#/components/parameters/Query.ZoneId" + } + ], "responses": { "200": { - "description": "Successful response to zones request", + "description": "Upon success, a response body containing the list of zone information is returned.", "content": { "application/json": { "schema": { @@ -187,9 +186,9 @@ "/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", + "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" @@ -197,7 +196,7 @@ ], "responses": { "200": { - "description": "Successful response to an access point Id request", + "description": "Upon success, a response body containing the zone information is returned.", "content": { "application/json": { "schema": { @@ -236,20 +235,20 @@ "/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", + "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.InterestRealm" + "$ref": "#/components/parameters/Query.AccessPointId" } ], "responses": { "200": { - "description": "Successful response to an access point Id request", + "description": "Upon success, a response body containing the list of access point information is returned.", "content": { "application/json": { "schema": { @@ -288,9 +287,9 @@ "/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", + "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" @@ -301,7 +300,7 @@ ], "responses": { "200": { - "description": "Successful response to an access point Id request", + "description": "Upon success, a response body containing the access point information is returned.", "content": { "application/json": { "schema": { @@ -337,15 +336,20 @@ "x-swagger-router-controller": "queries" } }, - "/subscriptions/area/circle": { + "/subscriptions/area": { "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", + "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" + } + ], "responses": { "200": { - "description": "Response to retrieve area subscriptions", + "description": "Upon success, a response body containing the list of links to requestor's subscriptions is returned.", "content": { "application/json": { "schema": { @@ -359,39 +363,47 @@ "examples": [ { "notificationSubscriptionList": { - "circleNotificationSubscription": [ + "subscription": [ { - "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" + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123", + "subscriptionType": "UserAreaSubscription" } ], - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/area/circle" + "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" } } }, "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", + "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, @@ -400,26 +412,37 @@ "schema": { "type": "object", "properties": { - "circleNotificationSubscription": { - "$ref": "#/components/schemas/CircleNotificationSubscription" + "userAreaSubscription": { + "$ref": "#/components/schemas/UserAreaSubscription" } }, "examples": [ { - "circleNotificationSubscription": { + "userAreaSubscription": { + "subscriptionType": "userAreaSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" + "callbackReference": "http://my.callback.com/area_notification/some-id", + "_links": { + "self": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123" + } }, - "address": "acr:10.0.0.1", - "checkImmediate": true, - "enteringLeavingCriteria": "Entering", - "frequency": 10, - "latitude": -80.88, - "longitude": 41.277, - "radius": 500, - "trackingAccuracy": 10 + "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 + } } } ] @@ -429,33 +452,42 @@ }, "responses": { "201": { - "description": "Successful subscription", + "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": { - "circleNotificationSubscription": { - "$ref": "#/components/schemas/CircleNotificationSubscription" + "userAreaSubscription": { + "$ref": "#/components/schemas/UserAreaSubscription" } }, "examples": [ { - "circleNotificationSubscription": { + "userAreaSubscription": { + "subscriptionType": "userAreaSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" + "callbackReference": "http://my.callback.com/area_notification/some-id", + "_links": { + "self": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123" + } }, - "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" + "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 + } } } ] @@ -478,17 +510,20 @@ "406": { "$ref": "#/components/responses/406" }, + "415": { + "$ref": "#/components/responses/415" + }, "429": { "$ref": "#/components/responses/429" } }, "callbacks": { "notification": { - "{$request.body#/circleNotificationSubscription.callbackReference.notifyURL}": { + "{$request.body#/userAreaSubscription.callbackReference}": { "post": { "summary": "Callback POST used to send a notification", "description": "Notification from Location service, content based on subscription type", - "operationId": "circleNotificationPOST", + "operationId": "areaNotificationPOST", "requestBody": { "description": "Subscription notification", "required": true, @@ -497,32 +532,24 @@ "schema": { "type": "object", "properties": { - "subscriptionNotification": { - "$ref": "#/components/schemas/SubscriptionNotification" + "userAreaNotification": { + "$ref": "#/components/schemas/UserAreaNotification" } }, "examples": [ { - "subscriptionNotification": { - "enteringLeavingCriteria": "Entering", - "isFinalNotification": "false,", - "link": { - "rel": "CircleNotificationSubscription", - "href": "http://meAppServer.example.com/location/v2/subscriptions/area/circle/sub123" + "userAreaNotification": { + "notificationType": "UserAreaNotification", + "timestamp": { + "seconds": 1673507343, + "nanoSeconds\"": 0 }, - "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.1", + "userLocationEvent": "ENTERING_AREA_EVENT", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123" + } } } } @@ -543,12 +570,12 @@ "x-swagger-router-controller": "subscriptions" } }, - "/subscriptions/area/circle/{subscriptionId}": { + "/subscriptions/area/{subscriptionId}": { "get": { "tags": ["location"], "summary": "Retrieve subscription information", - "description": "Get subscription information.", - "operationId": "areaCircleSubGET", + "description": "The GET method is used to retrieve information about this subscription.", + "operationId": "areaSubGET", "parameters": [ { "$ref": "#/components/parameters/Path.SubscrId" @@ -556,34 +583,28 @@ ], "responses": { "200": { - "description": "Subscription information regarding subscription notifications", + "description": "Upon success, a response body containing data type describing the specific zone subscription is returned.", "content": { "application/json": { "schema": { "type": "object", - "required": ["circleNotificationSubscription"], + "required": ["userAreaSubscription"], "properties": { - "circleNotificationSubscription": { - "$ref": "#/components/schemas/CircleNotificationSubscription" + "userAreaNotification": { + "$ref": "#/components/schemas/UserAreaNotification" } }, "examples": [ { - "circleNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userAreaNotification": { + "notificationType": "UserAreaNotification", "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" + "userLocationEvent": "ENTERING_AREA_EVENT", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123" + } + } } } ] @@ -615,8 +636,8 @@ "put": { "tags": ["location"], "summary": "Updates a subscription information", - "description": "Updates a subscription.", - "operationId": "areaCircleSubPUT", + "description": "The PUT method is used to update the existing subscription.", + "operationId": "areaSubPUT", "requestBody": { "description": "Subscription to be modified", "required": true, @@ -625,27 +646,21 @@ "schema": { "type": "object", "properties": { - "circleNotificationSubscription": { - "$ref": "#/components/schemas/CircleNotificationSubscription" + "userAreaNotification": { + "$ref": "#/components/schemas/UserAreaNotification" } }, "examples": [ { - "circleNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userAreaNotification": { + "notificationType": "UserAreaNotification", "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" + "userLocationEvent": "ENTERING_AREA_EVENT", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123" + } + } } } ] @@ -660,33 +675,27 @@ ], "responses": { "200": { - "description": "Successful subscription to response to subscription notifications", + "description": "Upon success, a response body containing data type describing the updated subscription is returned.", "content": { "application/json": { "schema": { "type": "object", "properties": { - "circleNotificationSubscription": { - "$ref": "#/components/schemas/CircleNotificationSubscription" + "userAreaNotification": { + "$ref": "#/components/schemas/UserAreaNotification" } }, "examples": [ { - "circleNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userAreaNotification": { + "notificationType": "UserAreaNotification", "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" + "userLocationEvent": "ENTERING_AREA_EVENT", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/area/subscription123" + } + } } } ] @@ -724,8 +733,8 @@ "delete": { "tags": ["location"], "summary": "Cancel a subscription", - "description": "Method to delete a subscription.", - "operationId": "areaCircleSubDELETE", + "description": "The DELETE method is used to cancel the existing subscription.", + "operationId": "areaSubDELETE", "parameters": [ { "$ref": "#/components/parameters/Path.SubscrId" @@ -759,7 +768,7 @@ "operationId": "distanceSubListGET", "responses": { "200": { - "description": "Response to retrieve area subscriptions", + "description": "Upon success, a response body containing the list of links to requestor's subscriptions is returned.", "content": { "application/json": { "schema": { @@ -773,27 +782,15 @@ "examples": [ { "notificationSubscriptionList": { - "distanceNotificationSubscription": [ + "subscription": [ { - "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" + "href": "http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123", + "subscriptionType": "UserDistanceSubscription" } ], - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/distance" + "resourceURL": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/distance" + } } } ] @@ -809,32 +806,29 @@ "description": "Creates a subscription to the Location Service for a distance change notification.", "operationId": "distanceSubPOST", "requestBody": { - "description": "Subscription to be created", + "description": "The POST method is used to create a new subscription to user distance notifications.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "distanceNotificationSubscription": { - "$ref": "#/components/schemas/DistanceNotificationSubscription" + "userDistanceSubscription": { + "$ref": "#/components/schemas/UserDistanceSubscription" } }, "examples": [ { - "distanceNotificationSubscription": { + "userDistanceSubscription": { + "subscriptionType": "UserDistanceSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "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"], - "checkImmediate": true, - "criteria": "AllWithinDistance", "distance": 100, - "frequency": 10, - "referenceAddress": "acr:10.0.0.3", - "trackingAccuracy": 10 + "trackingAccuracy": 10, + "criteria": "AllWithinDistance", + "checkImmediate": true } } ] @@ -850,26 +844,22 @@ "schema": { "type": "object", "properties": { - "distanceNotificationSubscription": { - "$ref": "#/components/schemas/DistanceNotificationSubscription" + "userDistanceSubscription": { + "$ref": "#/components/schemas/UserDistanceSubscription" } }, "examples": [ { - "distanceNotificationSubscription": { + "userDistanceSubscription": { + "subscriptionType": "UserDistanceSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "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"], - "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" + "criteria": "AllWithinDistance", + "checkImmediate": true } } ] @@ -892,68 +882,63 @@ "406": { "$ref": "#/components/responses/406" }, + "415": { + "$ref": "#/components/responses/415" + }, + "422": { + "$ref": "#/components/responses/422" + }, "429": { "$ref": "#/components/responses/429" } }, "callbacks": { "notification": { - "{$request.body#/distanceNotificationSubscription.callbackReference.notifyURL}": { + "{$request.body#/userDistanceSubscription.callbackReference}": { "post": { "summary": "Callback POST used to send a notification", - "description": "Notification from Location service, content based on subscription type", + "description": "Notification from Location service, content based user distance subscription type", "operationId": "distanceNotificationPOST", "requestBody": { - "description": "Subscription notification", + "description": "User Distance Notification", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "subscriptionNotification": { - "$ref": "#/components/schemas/SubscriptionNotification" + "userDistanceNotification": { + "$ref": "#/components/schemas/UserDistanceNotification" } }, "examples": [ { - "subscriptionNotification": { - "distanceCriteria": "AllWithinDistance", - "isFinalNotification": "false,", - "link": { - "rel": "DistanceNotificationSubscription", - "href": "http://meAppServer.example.com/location/v2/subscriptions/distance/sub123" + "userDistanceNotification": { + "notificationType": "UserDistanceNotification", + "timestamp": { + "seconds": 1673507343, + "nanoSeconds\"": 0 }, - "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" - }, + "monitoredUsers": [ { - "address": "acr:10.0.0.2", - "currentLocation": { - "accuracy": 100, - "altitude": 1001, - "latitude": -80.86301, - "longitude": 41.277306, + "user": { + "address": "acr:10.0.0.1", + "accessPointId": "001010000000000000000000000000001", + "zoneId": "zone01", "timestamp": { - "seconds": 1483231138, + "seconds": 1673507343, "nanoSeconds\"": 0 } }, - "locationRetrievalStatus": "Retrieved" + "resourceURL": "http://meAppServer.example.com/location/v3/queries/users" + } + ], + "distanceEvent": "AllWithinDistance", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v3/subscriptions/distance/subscription123" } - ] + } } } ] @@ -976,8 +961,8 @@ "/subscriptions/distance/{subscriptionId}": { "get": { "tags": ["location"], - "summary": "Retrieve subscription information", - "description": "Get subscription information.", + "summary": "Retrieve user distance subscription information", + "description": "The GET method is used to retrieve information about user distance subscription subscription.", "operationId": "distanceSubGET", "parameters": [ { @@ -986,33 +971,29 @@ ], "responses": { "200": { - "description": "Subscription information regarding subscription notifications", + "description": "Upon success, a response body containing data type describing the specific distance event subscription is returned.", "content": { "application/json": { "schema": { "type": "object", - "required": ["distanceNotificationSubscription"], + "required": ["UserDistanceSubscription"], "properties": { - "distanceNotificationSubscription": { - "$ref": "#/components/schemas/DistanceNotificationSubscription" + "userDistanceSubscription": { + "$ref": "#/components/schemas/UserDistanceSubscription" } }, "examples": [ { - "distanceNotificationSubscription": { + "userDistanceSubscription": { + "subscriptionType": "UserDistanceSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "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"], - "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" + "criteria": "AllWithinDistance", + "checkImmediate": true } } ] @@ -1043,8 +1024,8 @@ }, "put": { "tags": ["location"], - "summary": "Updates a subscription information", - "description": "Updates a subscription.", + "summary": "Updates a user distance subscription information", + "description": "The PUT method is used to update the existing user distance subscription.", "operationId": "distanceSubPUT", "requestBody": { "description": "Subscription to be modified", @@ -1054,26 +1035,22 @@ "schema": { "type": "object", "properties": { - "distanceNotificationSubscription": { - "$ref": "#/components/schemas/DistanceNotificationSubscription" + "userDistanceSubscription": { + "$ref": "#/components/schemas/UserDistanceSubscription" } }, "examples": [ { - "distanceNotificationSubscription": { + "userDistanceSubscription": { + "subscriptionType": "UserDistanceSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "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"], - "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" + "criteria": "AllWithinDistance", + "checkImmediate": true } } ] @@ -1088,32 +1065,28 @@ ], "responses": { "200": { - "description": "Successful subscription to response to subscription notifications", + "description": "Upon success, a response body containing data type describing the updated subscription is returned.", "content": { "application/json": { "schema": { "type": "object", "properties": { - "distanceNotificationSubscription": { - "$ref": "#/components/schemas/DistanceNotificationSubscription" + "userDistanceSubscription": { + "$ref": "#/components/schemas/UserDistanceSubscription" } }, "examples": [ { - "distanceNotificationSubscription": { + "userDistanceSubscription": { + "subscriptionType": "UserDistanceSubscription", "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "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"], - "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" + "criteria": "AllWithinDistance", + "checkImmediate": true } } ] @@ -1151,7 +1124,7 @@ "delete": { "tags": ["location"], "summary": "Cancel a subscription", - "description": "Method to delete a subscription.", + "description": "The DELETE method is used to cancel the existing subscription.", "operationId": "distanceSubDELETE", "parameters": [ { @@ -1178,15 +1151,23 @@ "x-swagger-router-controller": "subscriptions" } }, - "/subscriptions/periodic": { + "/subscriptions/users": { "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", + "summary": "Retrieves information about the subscriptions for the requestor", + "description": "The GET method is used to request information about the subscriptions for the requestor. ", + "operationId": "userSubListGET", + "parameters": [ + { + "$ref": "#/components/parameters/Query.Subscription_type_2" + }, + { + "$ref": "#/components/parameters/Query.Address_2" + } + ], "responses": { "200": { - "description": "Response to retrieve area subscriptions", + "description": "Upon success, a response body containing the list of links to requestor's subscriptions is returned.", "content": { "application/json": { "schema": { @@ -1200,34 +1181,51 @@ "examples": [ { "notificationSubscriptionList": { - "periodicNotificationSubscription": [ + "subscription": [ + { + "href": "http://meAppServer.example.com/location/v2/subscriptions/users/subscription123", + "subscriptionType": "UserLocationEventSubscription" + }, { - "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" + "href": "http://meAppServer.example.com/location/v2/subscriptions/users/subscription456", + "subscriptionType": "UserLocationPeriodicSubscription" } ], - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic" + "resourceURL": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/users" + } } } ] } } } + }, + "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" } } }, "post": { "tags": ["location"], - "summary": "Creates a subscription for periodic notification", - "description": "Creates a subscription to the Location Service for a periodic notification.", - "operationId": "periodicSubPOST", + "summary": "Create subscription to UE location notifications.", + "description": "The POST method is used to create a new subscription to UE location notifications.", + "operationId": "userSubPOST", "requestBody": { "description": "Subscription to be created", "required": true, @@ -1236,21 +1234,20 @@ "schema": { "type": "object", "properties": { - "periodicNotificationSubscription": { - "$ref": "#/components/schemas/PeriodicNotificationSubscription" + "userLocationEventSubscription": { + "$ref": "#/components/schemas/UserLocationEventSubscription" + }, + "userLocationPeriodicSubscription": { + "$ref": "#/components/schemas/UserLocationPeriodicSubscription" } }, "examples": [ { - "periodicNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userLocationEventSubscription": { + "subscriptionType": "UserLocationEventSubscription", + "callbackReference": "http://my.callback.com/user-location-notification/some-id", "address": "acr:10.0.0.1", - "frequency": 10, - "requestedAccuracy": 10 + "locationEventCriteria": ["ENTERING_AREA_EVENT"] } } ] @@ -1260,28 +1257,26 @@ }, "responses": { "201": { - "description": "Successful subscription", + "description": "Indicates successful subscription creation.", "content": { "application/json": { "schema": { "type": "object", "properties": { - "periodicNotificationSubscription": { - "$ref": "#/components/schemas/PeriodicNotificationSubscription" + "userLocationEventSubscription": { + "$ref": "#/components/schemas/UserLocationEventSubscription" + }, + "userLocationPeriodicSubscription": { + "$ref": "#/components/schemas/UserLocationPeriodicSubscription" } }, "examples": [ { - "periodicNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userLocationEventSubscription": { + "subscriptionType": "UserLocationEventSubscription", + "callbackReference": "http://my.callback.com/user-location-notification/some-id", "address": "acr:10.0.0.1", - "frequency": 10, - "requestedAccuracy": 10, - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123" + "locationEventCriteria": ["ENTERING_AREA_EVENT"] } } ] @@ -1310,44 +1305,39 @@ }, "callbacks": { "notification": { - "{$request.body#/periodicNotificationSubscription.callbackReference.notifyURL}": { + "{$request.body#/userLocationEventSubscription.callbackReference}": { "post": { "summary": "Callback POST used to send a notification", "description": "Notification from Location service, content based on subscription type", - "operationId": "periodicNotificationPOST", + "operationId": "userNotificationPOST", "requestBody": { - "description": "Subscription notification", + "description": "User LocationEvent Notification", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { - "subscriptionNotification": { - "$ref": "#/components/schemas/SubscriptionNotification" + "userLocationEventNotification": { + "$ref": "#/components/schemas/UserLocationEventNotification" } }, "examples": [ { - "subscriptionNotification": { - "isFinalNotification": "false,", - "link": { - "rel": "PeriodicNotificationSubscription", - "href": "http://meAppServer.example.com/location/v2/subscriptions/periodic/sub123" + "userLocationEventNotification": { + "notificationType": "UserLocationEventNotification", + "timestamp": { + "seconds": 1673507343, + "nanoseconds": 0 }, - "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.1", + "userLocationEvent": "ENTERING_AREA_EVENT", + "zoneId": "zone01", + "accessPointId": "001010000000000000000000000000001", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v3/subscriptions/user/subscription123" + } } } } @@ -1368,12 +1358,12 @@ "x-swagger-router-controller": "subscriptions" } }, - "/subscriptions/periodic/{subscriptionId}": { + "/subscriptions/users/{subscriptionId}": { "get": { "tags": ["location"], "summary": "Retrieve subscription information", - "description": "Get subscription information.", - "operationId": "periodicSubGET", + "description": "The GET method is used to retrieve information about this subscription. ", + "operationId": "userSubGET", "parameters": [ { "$ref": "#/components/parameters/Path.SubscrId" @@ -1381,29 +1371,27 @@ ], "responses": { "200": { - "description": "Subscription information regarding subscription notifications", + "description": "Upon success, a response body containing data type describing the specific Location event subscription is returned.", "content": { "application/json": { "schema": { "type": "object", - "required": ["periodicNotificationSubscription"], + "required": ["UserLocationEventSubscription"], "properties": { - "periodicNotificationSubscription": { - "$ref": "#/components/schemas/PeriodicNotificationSubscription" + "userLocationEventSubscription": { + "$ref": "#/components/schemas/UserLocationEventSubscription" + }, + "userLocationPeriodicSubscription": { + "$ref": "#/components/schemas/UserLocationPeriodicSubscription" } }, "examples": [ { - "periodicNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userLocationEventSubscription": { + "subscriptionType": "UserLocationEventSubscription", + "callbackReference": "http://my.callback.com/user-location-notification/some-id", "address": "acr:10.0.0.1", - "frequency": 10, - "requestedAccuracy": 10, - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123" + "locationEventCriteria": ["ENTERING_AREA_EVENT"] } } ] @@ -1435,8 +1423,8 @@ "put": { "tags": ["location"], "summary": "Updates a subscription information", - "description": "Updates a subscription.", - "operationId": "periodicSubPUT", + "description": "The PUT method is used to update the existing subscription.", + "operationId": "userSubPUT", "requestBody": { "description": "Subscription to be modified", "required": true, @@ -1445,22 +1433,20 @@ "schema": { "type": "object", "properties": { - "periodicNotificationSubscription": { - "$ref": "#/components/schemas/PeriodicNotificationSubscription" + "userLocationEventSubscription": { + "$ref": "#/components/schemas/UserLocationEventSubscription" + }, + "userLocationPeriodicSubscription": { + "$ref": "#/components/schemas/UserLocationPeriodicSubscription" } }, "examples": [ { - "periodicNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userLocationEventSubscription": { + "subscriptionType": "UserLocationEventSubscription", + "callbackReference": "http://my.callback.com/user-location-notification/some-id", "address": "acr:10.0.0.1", - "frequency": 10, - "requestedAccuracy": 10, - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123" + "locationEventCriteria": ["ENTERING_AREA_EVENT"] } } ] @@ -1475,28 +1461,26 @@ ], "responses": { "200": { - "description": "Successful subscription to response to subscription notifications", + "description": "Upon success, a response body containing data type describing the updated subscription is returned. ", "content": { "application/json": { "schema": { "type": "object", "properties": { - "periodicNotificationSubscription": { - "$ref": "#/components/schemas/PeriodicNotificationSubscription" + "userLocationEventSubscription": { + "$ref": "#/components/schemas/UserLocationEventSubscription" + }, + "userLocationPeriodicSubscription": { + "$ref": "#/components/schemas/UserLocationPeriodicSubscription" } }, "examples": [ { - "periodicNotificationSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "callbackData": "1234", - "notifyURL": "http://clientApp.example.com/location_notifications/123456" - }, + "userLocationEventSubscription": { + "subscriptionType": "UserLocationEventSubscription", + "callbackReference": "http://my.callback.com/user-location-notification/some-id", "address": "acr:10.0.0.1", - "frequency": 10, - "requestedAccuracy": 10, - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/periodic/subscription123" + "locationEventCriteria": ["ENTERING_AREA_EVENT"] } } ] @@ -1534,8 +1518,8 @@ "delete": { "tags": ["location"], "summary": "Cancel a subscription", - "description": "Method to delete a subscription.", - "operationId": "periodicSubDELETE", + "description": "The DELETE method is used to cancel the existing subscription.", + "operationId": "userSubDELETE", "parameters": [ { "$ref": "#/components/parameters/Path.SubscrId" @@ -1561,15 +1545,23 @@ "x-swagger-router-controller": "subscriptions" } }, - "/subscriptions/userTracking": { + "/subscriptions/zones": { "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", + "summary": "Retrieves all active subscriptions to zone notifications", + "description": "This operation is used for retrieving all active subscriptions to zone notifications.", + "operationId": "zoneSubListGET", + "parameters": [ + { + "$ref": "#/components/parameters/Query.Subscription_type_3" + }, + { + "$ref": "#/components/parameters/Query.ZoneId_2" + } + ], "responses": { "200": { - "description": "Response to retrieve user tracking subscriptions", + "description": "Upon success, a response body containing the list of links to requestor's subscriptions is returned.", "content": { "application/json": { "schema": { @@ -1583,27 +1575,19 @@ "examples": [ { "notificationSubscriptionList": { - "userTrackingSubscription": [ + "subscription": [ { - "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"] + "href": "http://meAppServer.example.com/location/v2/subscriptions/zones/subscription123", + "subscriptionType": "ZoneLocationEventSubscription" }, { - "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"] + "href": "http://meAppServer.example.com/location/v2/subscriptions/zones/subscription456", + "subscriptionType": "ZoneStatusSubscription" } ], - "resourceURL": "http://meAppServer.example.com/location/v2/subscriptions/userTracking" + "resourceURL": { + "href": "http://meAppServer.example.com/location/v2/subscriptions/zones" + } } } ] @@ -1615,9 +1599,9 @@ }, "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", + "summary": "Creates a subscription to zone notifications", + "description": "The POST method is used to create a new subscription to zone notifications.", + "operationId": "zoneSubPOST", "requestBody": { "description": "Subscription to be created", "required": true, @@ -1626,19 +1610,24 @@ "schema": { "type": "object", "properties": { - "userTrackingSubscription": { - "$ref": "#/components/schemas/UserTrackingSubscription" + "zoneLocationEventSubscription": { + "$ref": "#/components/schemas/ZoneLocationEventSubscription" + }, + "zoneStatusSubscription": { + "$ref": "#/components/schemas/ZoneStatusSubscription" } }, "examples": [ { - "userTrackingSubscription": { - "clientCorrelator": "0123", - "callbackReference": { - "notifyURL": "http://my.callback.com/location_notifications/some-id" - }, - "address": "acr:10.0.0.1", - "userEventCriteria": ["Transferring"] + "zoneLocationEventSubscription": { + "subscriptionType": "ZoneLocationEventSubscription", + "callbackReference": "http://my.callback.com/zone-notification/some-id", + "zoneId": "zone01", + "locationEventCriteria": ["ENTERING_AREA_EVENT"], + "expiryDeadline\"": { + "seconds": 1977836800, + "nanoseconds\"": 0 + } } } ] @@ -1648,26 +1637,30 @@ }, "responses": { "201": { - "description": "Successful subscription", + "description": "Indicates successful resource creation", "content": { "application/json": { "schema": { "type": "object", "properties": { - "userTrackingSubscription": { - "$ref": "#/components/schemas/UserTrackingSubscription" + "zoneLocationEventSubscription": { + "$ref": "#/components/schemas/ZoneLocationEventSubscription" + }, + "zoneStatusSubscription": { + "$ref": "#/components/schemas/ZoneStatusSubscription" } }, "examples": [ { - "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" + "zoneLocationEventSubscription": { + "subscriptionType": "ZoneLocationEventSubscription", + "callbackReference": "http://my.callback.com/zone-notification/some-id", + "zoneId": "zone01", + "locationEventCriteria": ["ENTERING_AREA_EVENT"], + "expiryDeadline\"": { + "seconds": 1977836800, + "nanoseconds\"": 0 + } } } ] @@ -1690,17 +1683,23 @@ "406": { "$ref": "#/components/responses/406" }, + "415": { + "$ref": "#/components/responses/415" + }, + "422": { + "$ref": "#/components/responses/422" + }, "429": { "$ref": "#/components/responses/429" } }, "callbacks": { "notification": { - "{$request.body#/userTrackingSubscription.callbackReference.notifyURL}": { + "{$request.body#/zoneLocationEventSubscription.callbackReference}": { "post": { "summary": "Callback POST used to send a notification", "description": "Notification from Location service, content based on subscription type", - "operationId": "userTrackingNotificationPOST", + "operationId": "zoneNotificationPOST", "requestBody": { "description": "Subscription notification", "required": true, @@ -1709,26 +1708,24 @@ "schema": { "type": "object", "properties": { - "zonalPresenceNotification": { - "$ref": "#/components/schemas/ZonalPresenceNotification" + "zoneLocationEventNotification": { + "$ref": "#/components/schemas/ZoneLocationEventNotification" } }, "examples": [ { - "zonalPresenceNotification": { - "clientCorrelator": "0123", - "zoneId": "zone01", - "address": "acr:10.0.0.1", - "userEventType": "Transferring", - "currentAccessPointId": "ap2", - "previousAccessPointId": "ap1", + "zoneLocationEventNotification": { + "notificationType": "ZoneLocationEventNotification", "timestamp": { - "seconds": 1483231138, + "seconds": 1673507343, "nanoseconds": 0 }, - "link": { - "rel": "UserTrackingSubscription", - "href": "http://meAppServer.example.com/location/v2/subscriptions/userTracking/sub123" + "address": "acr:10.0.0.1", + "zoneId": "zone01", + "_links": { + "subscription": { + "href": "http://meAppServer.example.com/location/v3/subscriptions/zone/subscription123" + } } } } @@ -1749,12 +1746,12 @@ "x-swagger-router-controller": "subscriptions" } }, - "/subscriptions/userTracking/{subscriptionId}": { + "/subscriptions/zones/{subscriptionId}": { "get": { "tags": ["location"], - "summary": "Retrieve subscription information", - "description": "Get subscription information.", - "operationId": "userTrackingSubGET", + "summary": "Retrieve zone subscription information", + "description": "The GET method is used to retrieve information about zone subscription. ", + "operationId": "zoneSubGET", "parameters": [ { "$ref": "#/components/parameters/Path.SubscrId" @@ -1762,27 +1759,34 @@ ], "responses": { "200": { - "description": "Subscription information regarding subscription notifications", + "description": "Upon success, a response body containing data type describing the specific zone subscription is returned.", "content": { "application/json": { "schema": { "type": "object", - "required": ["userTrackingSubscription"], + "required": [ + "zoneLocationEventSubscription", + "zoneStatusSubscription" + ], "properties": { - "userTrackingSubscription": { - "$ref": "#/components/schemas/UserTrackingSubscription" + "zoneLocationEventSubscription": { + "$ref": "#/components/schemas/ZoneLocationEventSubscription" + }, + "zoneStatusSubscription": { + "$ref": "#/components/schemas/ZoneStatusSubscription" } }, "examples": [ { - "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" + "zoneLocationEventSubscription": { + "subscriptionType": "ZoneLocationEventSubscription", + "callbackReference": "http://my.callback.com/zone-notification/some-id", + "zoneId": "zone01", + "locationEventCriteria": ["ENTERING_AREA_EVENT"], + "expiryDeadline\"": { + "seconds": 1977836800, + "nanoseconds\"": 0 + } } } ] @@ -1813,9 +1817,9 @@ }, "put": { "tags": ["location"], - "summary": "Updates a subscription information", - "description": "Updates a subscription.", - "operationId": "userTrackingSubPUT", + "summary": "Updates a zone subscription information", + "description": "The PUT method is used to update the existing zone subscription.", + "operationId": "zoneSubPUT", "requestBody": { "description": "Subscription to be modified", "required": true, @@ -1824,20 +1828,24 @@ "schema": { "type": "object", "properties": { - "userTrackingSubscription": { - "$ref": "#/components/schemas/UserTrackingSubscription" + "zoneLocationEventSubscription": { + "$ref": "#/components/schemas/ZoneLocationEventSubscription" + }, + "zoneStatusSubscription": { + "$ref": "#/components/schemas/ZoneStatusSubscription" } }, "examples": [ { - "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" + "zoneLocationEventSubscription": { + "subscriptionType": "ZoneLocationEventSubscription", + "callbackReference": "http://my.callback.com/zone-notification/some-id", + "zoneId": "zone01", + "locationEventCriteria": ["ENTERING_AREA_EVENT"], + "expiryDeadline\"": { + "seconds": 1977836800, + "nanoseconds\"": 0 + } } } ] @@ -1852,26 +1860,30 @@ ], "responses": { "200": { - "description": "Successful subscription to response to subscription notifications", + "description": "Upon success, a response body containing data type describing the updated subscription is returned.", "content": { "application/json": { "schema": { "type": "object", "properties": { - "userTrackingSubscription": { - "$ref": "#/components/schemas/UserTrackingSubscription" + "zoneLocationEventSubscription": { + "$ref": "#/components/schemas/ZoneLocationEventSubscription" + }, + "zoneStatusSubscription": { + "$ref": "#/components/schemas/ZoneStatusSubscription" } }, "examples": [ { - "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" + "zoneLocationEventSubscription": { + "subscriptionType": "ZoneLocationEventSubscription", + "callbackReference": "http://my.callback.com/zone-notification/some-id", + "zoneId": "zone01", + "locationEventCriteria": ["ENTERING_AREA_EVENT"], + "expiryDeadline\"": { + "seconds": 1977836800, + "nanoseconds\"": 0 + } } } ] @@ -1908,9 +1920,9 @@ }, "delete": { "tags": ["location"], - "summary": "Cancel a subscription", - "description": "Method to delete a subscription.", - "operationId": "userTrackingSubDELETE", + "summary": "Cancel a zone subscription", + "description": "The DELETE method is used to cancel the existing zone subscription.", + "operationId": "zoneSubDELETE", "parameters": [ { "$ref": "#/components/parameters/Path.SubscrId" @@ -1935,769 +1947,22 @@ }, "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" - } - }, - "examples": [ - { - "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" + } + }, + "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" } } } @@ -2825,23 +2090,40 @@ }, "x-exportParamName": "ZoneId" }, - "Query.AccessPointId": { - "name": "accessPointId", + "Query.Subscription_type": { + "name": "subscription_type", "in": "query", - "description": "Identifier of access point", + "description": "Query parameter to filter on a specific subscription type. Permitted values: event", "required": false, "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" }, - "x-exportParamName": "AccessPointId" + "x-exportParamName": "Subscription_type" }, - "Query.Address": { - "name": "address", + "Query.Subscription_type_2": { + "name": "subscription_type", + "in": "query", + "description": "Query parameter to filter on a specific subscription type. Permitted values: -event -periodic", + "required": false, + "schema": { + "type": "string" + }, + "x-exportParamName": "Subscription_type_2" + }, + "Query.Subscription_type_3": { + "name": "subscription_type", + "in": "query", + "description": "Query parameter to filter on a specific subscription type. Permitted values: -event -status", + "required": false, + "schema": { + "type": "string" + }, + "x-exportParamName": "Subscription_type_3" + }, + "Query.AccessPointId": { + "name": "accessPointId", "in": "query", - "description": "address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "description": "Identifier of access point", "required": false, "schema": { "type": "array", @@ -2849,62 +2131,69 @@ "type": "string" } }, - "x-exportParamName": "Address" + "x-exportParamName": "AccessPointId" }, - "Query.AddressMandatory": { + "Query.Address": { "name": "address", "in": "query", - "description": "address of users (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", - "required": true, + "description": "One or two addresses of user to check. The second \"address\" parameter shall not be included when the distance between a user and a location is requested. The second \"address\" parameter shall be included when a location is not provided.", + "required": false, "schema": { "type": "array", "items": { "type": "string" } }, - "x-exportParamName": "AddressMandatory" + "x-exportParamName": "Address" }, - "Query.InterestRealm": { - "name": "interestRealm", + "Query.Address_2": { + "name": "address", "in": "query", - "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI).", "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" + "x-exportParamName": "Address_2" }, - "Query.Longitude": { - "name": "longitude", + "Query.Address_3": { + "name": "address", "in": "query", - "description": "Longitude geo position", + "description": "Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI).", "required": false, "schema": { - "type": "number", - "format": "float" + "type": "array", + "items": { + "type": "string" + } }, - "x-exportParamName": "Longitude" + "x-exportParamName": "Address_3" }, - "Query.Requester": { - "name": "requester", + "Query.Location": { + "name": "location", "in": "query", - "description": "Entity that is requesting the information", + "description": "Shall not be included when the distance between two terminals is requested.", "required": false, "schema": { - "type": "string" + "type": "object", + "properties": { + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + } }, - "x-exportParamName": "Requester" + "x-exportParamName": "Location" }, "Query.ZoneId": { "name": "zoneId", @@ -2918,6 +2207,16 @@ } }, "x-exportParamName": "ZoneId" + }, + "Query.ZoneId_2": { + "name": "zoneId", + "in": "query", + "description": "The identity of the zone", + "required": false, + "schema": { + "type": "string" + }, + "x-exportParamName": "ZoneId_2" } }, "schemas": { @@ -2937,371 +2236,704 @@ "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" + "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" + }, + "OperationStatus": { + "description": "An enumeration defining the operations status of an access point.", + "enum": ["Serviceable", "Unserviceable", "Unknown"], + "type": "string" + }, + "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" + }, + "ConnectionType": { + "description": "This enumeration represents the connection type of an access point", + "enum": ["LTE", "Wifi", "Wimax", "5G NR", "UNKNOWN"], + "type": "string" + }, + "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.", + "format": "float", + "items": { + "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.", + "format": "float", + "items": { + "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: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon", + "enum": ["SEE_DESCRIPTION"], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum_inlined" + }, + "uncertaintyRadius": { + "description": "Present only if \"shape\" equals 6.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "velocity": { + "$ref": "#/components/schemas/Velocity" + } + }, + "required": ["latitude", "longitude", "shape"], + "type": "object", + "x-etsi-ref": "6.5.3" + }, + "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: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert", + "enum": ["SEE_DESCRIPTION"], + "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)" + }, + "NotificationSubscriptionList": { + "description": "This type contains a list of subscriptions.", + "properties": { + "resourceURL": { + "$ref": "#/components/schemas/LinkType" + }, + "subscription": { + "items": { + "$ref": "#/components/schemas/Subscription" + }, + "type": "array" + } + }, + "required": ["resourceURL"], + "type": "object", + "x-etsi-ref": "6.3.3" + }, + "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" + }, + "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" }, - "numberOfUsers": { - "description": "Number of users currently on the access point.", + "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" }, - "operationStatus": { - "$ref": "#/components/schemas/OperationStatus" - }, - "resourceURL": { - "description": "Self referring URL", + "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" }, - "timezone": { - "description": "Time zone of access point.", - "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "dateTimeStamp" + "currentLocation": { + "$ref": "#/components/schemas/LocationInfo" + }, + "errorInformation": { + "$ref": "#/components/schemas/ServiceError" + }, + "locationRetrievalStatus": { + "$ref": "#/components/schemas/RetrievalStatus" } }, - "required": [ - "accessPointId", - "connectionType", - "operationStatus", - "numberOfUsers", - "resourceURL" - ], + "required": ["address", "locationRetrievalStatus"], "type": "object" }, - "AccessPointList": { - "description": "A type containing list of access points.", + "RetrievalStatus": { + "enum": ["Retrieved", "NotRetrieved", "Error"], + "type": "string" + }, + "ServiceError": { + "description": "Used to indicate a notification termination or cancellation.", "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", + "messageId": { + "description": "Message identifier, either with prefix SVC or with prefix POL", "type": "string", "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "string" }, - "zoneId": { - "description": "Identifier of zone", + "text": { + "description": "Message text, with replacement variables marked with %n, where n is an index into the list of 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": ["zoneId", "resourceURL"], + "required": ["messageId", "text"], "type": "object" }, - "CallbackReference": { + "TimeStamp": { "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" + "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" }, - "notifyURL": { - "description": "Notify Callback URL", - "type": "string", + "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": "anyURI" + "x-etsi-mec-origin-type": "Uint32" } }, - "required": ["notifyURL"], - "type": "object" + "required": ["seconds", "nanoSeconds"], + "type": "object", + "x-etsi-ref": "6.5.2" }, - "CircleNotificationSubscription": { - "description": "A type containing data for notifications, when the area is defined as a circle.", + "UserInfo": { + "description": "This type represents the information related to a user attached to an access point associated to the MEC host, such access point is in scope of the Location Service instance.", + "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", "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" + "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" }, - "callbackReference": { - "$ref": "#/components/schemas/CallbackReference" + "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" }, - "checkImmediate": { - "description": "Check location immediately after establishing notification.", - "type": "boolean", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "boolean" + "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" }, - "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.", + "resourceURL": { + "description": "Self-referring URL, see note 1.", "type": "string", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "AnyURI" }, - "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" + "timestamp": { + "$ref": "#/components/schemas/TimeStamp" }, - "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" + "locationInfo": { + "$ref": "#/components/schemas/LocationInfo" }, - "enteringLeavingCriteria": { - "$ref": "#/components/schemas/EnteringLeavingCriteria" + "civicInfo": { + "$ref": "#/components/schemas/CivicAddress" }, - "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" + "ancillaryInfo": { + "description": "Reserved for future use.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "latitude": { - "description": "Latitude of center point.", - "format": "float", - "type": "number", + "relativeLocationInfo": { + "$ref": "#/components/schemas/RelativeLocationInfo" + } + } + }, + "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": "float" + "x-etsi-mec-origin-type": "anyURI" }, - "link": { - "description": "Link to other resources that are in relationship with the resource.", + "user": { + "description": "Collection of the zone information list.", "items": { - "$ref": "#/components/schemas/Link" + "$ref": "#/components/schemas/UserInfo" }, "type": "array", "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "Link" + "x-etsi-mec-origin-type": "UserInfo" + } + }, + "required": ["resourceURL"], + "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" }, - "longitude": { - "description": "Longitude of center point.", - "format": "float", - "type": "number", + "numberOfUnserviceableAccessPoints": { + "description": "Number of inoperable access points within the zone.", + "type": "integer", "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "float" + "x-etsi-mec-origin-type": "unsignedInt" }, - "radius": { - "description": "Radius circle around center point in meters.", - "format": "float", - "type": "number", + "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": "float" + "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": { + "properties": { + "_links": { + "$ref": "#/components/schemas/_links" }, - "requester": { - "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "accessPointId": { + "description": "Identifier of an access point (e.g. ap01). Shall be included when userNumEvent related with access point or operationStatus is included.", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "String" }, - "resourceURL": { - "description": "Self referring URL", + "notificationType": { + "description": "Shall be set to \"ZoneStatusNotification\".", "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "operationStatus": { + "$ref": "#/components/schemas/OperationStatus" + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "userNumEvent": { + "description": "Shall be present when ZoneStatusSubscription includes upperNumberOfUsersZoneThreshold, lowerNumberOfUsersZoneThreshold, upperNumberOfUsersAPThreshold or lowerNumberOfUsersAPThreshold, and the number of users in a zone or an access point crosses the threshold defined in the subscription: 1 = OVER_ZONE_UPPER_THD. 2 = UNDER_ZONE_LOWER_THD. 3 = OVER_AP_UPPER_THD. 4 = UNDER_AP_LOWER_THD.", + "enum": ["SEE_DESCRIPTION"], + "type": "integer", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "Enum(inlined)" }, - "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" + "zoneId": { + "description": "The identity of the zone. ", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" } }, - "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" + "required": ["notificationType", "zoneId", "_links"], + "type": "object", + "x-etsi-notes": "NOTE:\tAs specified in [5], clause 5.2.3.2.", + "x-etsi-ref": "6.4.7" }, - "DistanceNotificationSubscription": { - "description": "A type containing data for distance subscription, with reference to other devices.", + "ZoneStatusSubscription": { "properties": { - "callbackReference": { - "$ref": "#/components/schemas/CallbackReference" + "_links": { + "$ref": "#/components/schemas/_links" }, - "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.", + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.", + "format": "uri", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "Uri" }, - "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", + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "int" - }, - "criteria": { - "$ref": "#/components/schemas/DistanceCriteria" + "x-etsi-mec-origin-type": "String" }, - "distance": { - "description": "Distance between devices that shall be monitored.", - "format": "float", - "type": "number", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "float" + "expiryDeadline": { + "$ref": "#/components/schemas/TimeStamp" }, - "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.", + "lowerNumberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed downward shall cause a notification", "type": "integer", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "int" + "x-etsi-mec-origin-type": "UnsignedInt" }, - "frequency": { - "description": "Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications).", + "lowerNumberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed downward shall cause a notification", "type": "integer", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "int" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" }, - "link": { - "description": "Link to other resources that are in relationship with the resource.", + "operationStatus": { + "description": "List of operation status values to generate notifications for (these apply to all access points within a zone). See note 3.", "items": { - "$ref": "#/components/schemas/Link" + "$ref": "#/components/schemas/OperationStatus" }, + "minItems": 0, "type": "array", "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "Link" + "x-etsi-mec-origin-type": "OperationStatus" }, - "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" + "reportingCtrl": { + "$ref": "#/components/schemas/ReportingCtrl" }, - "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" + "requestTestNotification": { + "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" }, - "requester": { - "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "subscriptionType": { + "description": "Shall be set to \"ZoneStatusSubscription\".", "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "upperNumberOfUsersAPThreshold": { + "description": "Threshold number of users in an access point which if crossed upward shall cause a notification.", + "type": "integer", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "UnsignedInt" }, - "resourceURL": { - "description": "Self referring URL", - "type": "string", + "upperNumberOfUsersZoneThreshold": { + "description": "Threshold number of users in a zone which if crossed upward shall cause a notification.", + "type": "integer", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "UnsignedInt" }, - "trackingAccuracy": { - "description": "Number of meters of acceptable error in tracking distance.", - "format": "float", - "type": "number", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "float" + "websockNotifConfig": { + "$ref": "#/components/schemas/WebsockNotifConfig" + }, + "zoneId": { + "description": "Identifier of zone (e.g. zone001) to monitor.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" } }, - "required": [ - "callbackReference", - "monitoredAddress", - "distance", - "trackingAccuracy", - "criteria", - "checkImmediate", - "frequency" - ], - "type": "object" - }, - "EnteringLeavingCriteria": { - "enum": ["Entering", "Leaving"], - "type": "string" + "required": ["subscriptionType", "zoneId"], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [5], clause 5.2.3.2.", + "x-etsi-ref": "6.3.7" }, - "Link": { - "description": "Link to other resources", + "RelativeLocationInfo": { "properties": { - "href": { - "description": "URI", - "format": "anyURI", - "type": "string" + "X": { + "description": "Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" }, - "rel": { - "description": "Describes the relationship between the URI and the resource.", - "type": "string" + "Y": { + "description": "Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "Z": { + "description": "Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Float" + }, + "mapInfo": { + "$ref": "#/components/schemas/MapInfo" } }, - "required": ["rel", "href"], - "type": "object" + "required": ["mapInfo", "X", "Y"], + "type": "object", + "x-etsi-ref": "6.2.3" }, - "LocationInfo": { + "MapInfo": { "properties": { - "accuracy": { - "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in ETSI TS 123 032 [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 ETSI TS 123 032 [14]. Present only if \"shape\" equals 3 or 4", - "type": "integer", + "ancillaryMapInfo": { + "description": "Ancillary map information may be used to convert coordinates between different coordinate systems.", + "type": "object", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "UnsignedInt" + "x-etsi-mec-origin-type": "Not_specified" }, - "accuracySemiMinor": { - "description": "Horizontal accuracy / (semi-major) uncertainty of location provided in meters, as defined in ETSI TS 123 032 [14]. Present only if \"shape\" equals 4, 5 or 6", - "type": "integer", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "UnsignedInt" + "mapId": { + "description": "Indicates the ID of the map. ", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" }, + "origin": { + "$ref": "#/components/schemas/Origin" + } + }, + "required": ["mapId"], + "type": "object", + "x-etsi-ref": "6.2.4" + }, + "Origin": { + "description": "Indicates the location of the map origin in the local Cartesian coordinate system.", + "properties": { "altitude": { "description": "Location altitude relative to the WGS84 ellipsoid surface.", "format": "float", @@ -3309,853 +2941,1059 @@ "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 ETSI TS 123 032 [14]. Present only if \"shape\" equals 1, 4 or 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°.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" }, - "includedAngle": { - "description": "Present only if \"shape\" equals 6", - "type": "integer", + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": ["latitude", "longitude"], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure(inlined)" + }, + "Subscription": { + "description": "", + "minItems": 0, + "properties": { + "href": { + "description": "The URI referring to the subscription.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" + }, + "subscriptionType": { + "description": "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + } + }, + "required": ["href", "subscriptionType"], + "type": "object", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "LinkType": { + "properties": { + "href": { + "description": "URI referring to a resource.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" + } + }, + "required": ["href"], + "type": "object", + "x-etsi-ref": "6.7.2" + }, + "UserLocationEventSubscription": { + "properties": { + "_links": { + "$ref": "#/components/schemas/_links" + }, + "address": { + "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" + }, + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.", + "format": "uri", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "UnsignedInt" + "x-etsi-mec-origin-type": "Uri" }, - "innerRadius": { - "description": "Present only if \"shape\" equals 6", - "type": "integer", + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "UnsignedInt" + "x-etsi-mec-origin-type": "String" }, - "latitude": { - "description": "Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7.", + "expiryDeadline": { + "$ref": "#/components/schemas/TimeStamp" + }, + "locationEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). ", "items": { - "format": "float", - "type": "number" + "$ref": "#/components/schemas/LocationEventType" }, - "minItems": 1, + "minItems": 0, "type": "array", - "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "Float" + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Array(LocationEventType)" + }, + "requestTestNotification": { + "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "subscriptionType": { + "description": "Shall be set to \"UserLocationEventSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "userEventPara": { + "$ref": "#/components/schemas/UserEventPara" + }, + "websockNotifConfig": { + "$ref": "#/components/schemas/WebsockNotifConfig" + } + }, + "required": ["subscriptionType", "address"], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.", + "x-etsi-ref": "6.3.4" + }, + "UserLocationPeriodicSubscription": { + "properties": { + "_links": { + "$ref": "#/components/schemas/_links" }, - "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" + "address": { + "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor.", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" }, - "offsetAngle": { - "description": "Present only if \"shape\" equals 6", - "type": "integer", + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.", + "format": "uri", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "UnsignedInt" + "x-etsi-mec-origin-type": "Uri" }, - "orientationMajorAxis": { - "description": "Angle of orientation of the major axis, expressed in the range 0° to 180°, as defined in ETSI TS 123 032 [14]. Present only if \"shape\" equals 4 or 6", - "type": "integer", + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "UnsignedInt" - }, - "shape": { - "description": "Shape information, as detailed in ETSI TS 123 032 [14], associated with the reported location coordinate:

1 = ELLIPSOID_ARC

2 = ELLIPSOID_POINT

3 = ELLIPSOID_POINT_ALTITUDE

4 = ELLIPSOID_POINT_ALTITUDE_UNCERT_ELLIPSOID

5 = ELLIPSOID_POINT_UNCERT_CIRCLE

6 = ELLIPSOID_POINT_UNCERT_ELLIPSE

7 = POLYGON", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Enum_inlined" + "x-etsi-mec-origin-type": "String" }, - "timestamp": { + "expiryDeadline": { "$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" + "periodicEventInfo": { + "$ref": "#/components/schemas/PeriodicEventInfo" }, - "velocity": { - "description": "Structure with attributes relating to the target entity’s velocity, as defined in ETSI TS 123 032 [14].", - "properties": { - "bearing": { - "description": "Bearing, expressed in the range 0° to 360°, as defined in ETSI TS 123 032 [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 ETSI TS 123 032 [14].", - "type": "integer", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "UnsignedInt" - }, - "uncertainty": { - "description": "Horizontal uncertainty, as defined in ETSI TS 123 032 [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 ETSI TS 123 032 [14], associated with the reported location coordinate:

1 = HORIZONTAL

2 = HORIZONTAL_VERTICAL

3 = HORIZONTAL_UNCERT

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 ETSI TS 123 032 [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 ETSI TS 123 032 [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", + "requestTestNotification": { + "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.", + "type": "boolean", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "Structure (inlined)" + "x-etsi-mec-origin-type": "Boolean" + }, + "subscriptionType": { + "description": "Shall be set to \"UserLocationPeriodicSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "websockNotifConfig": { + "$ref": "#/components/schemas/WebsockNotifConfig" } }, - "required": ["latitude", "longitude", "shape"], + "required": ["subscriptionType", "address", "periodicEventInfo"], "type": "object", - "x-etsi-ref": "6.5.3" - }, - "NotificationFormat": { - "enum": ["XML", "JSON"], - "type": "string" + "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [17], clause 6.1.6.2.24.", + "x-etsi-ref": "6.3.5" }, - "NotificationSubscriptionList": { + "PeriodicEventInfo": { + "description": "NOTE: reportingAmount x reportingInterval shall not exceed 8639999 (99 days, 23 hours, 59 minutes and 59 seconds) for compatibility with OMA MLP and RLP.", + "type": "object", + "required": ["reportingAmount", "reportingInterval"], "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" + "reportingAmount": { + "description": "Number of event reports", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "ReportingAmount" }, - "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" + "reportingInterval": { + "description": "Interval of event reports", + "type": "number", + "x-etsi-mec-cardinality": 1, + "x-etsi-mec-origin-type": "reportingInterval" + } + } + }, + "ZoneLocationEventSubscription": { + "properties": { + "_links": { + "$ref": "#/components/schemas/_links" }, - "periodicNotificationSubscription": { - "description": "Collection of PeriodicNotificationSubscription elements, see note 2.", + "addressList": { + "description": "List of the users to be monitored. If not present, all the users need to be monitored.", "items": { - "$ref": "#/components/schemas/PeriodicNotificationSubscription" + "type": "string" }, "minItems": 0, "type": "array", - "x-etsi-mec-cardinality": "0.. N", - "x-etsi-mec-origin-type": "PeriodicNotificationSubscription" + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Array(Uri)" }, - "resourceURL": { - "description": "Self-referring URL, see note 1.", + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.", "format": "uri", "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "AnyURI" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uri" }, - "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" + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "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" + "expiryDeadline": { + "$ref": "#/components/schemas/TimeStamp" }, - "zoneStatusSubscription": { - "description": "Collection of ZoneStatusSubscription elements, see note 1.", + "locationEventCriteria": { + "description": "List of user event values to generate notifications for. ", "items": { - "$ref": "#/components/schemas/ZoneStatusSubscription" + "$ref": "#/components/schemas/LocationEventType" }, "minItems": 0, "type": "array", - "x-etsi-mec-cardinality": "0.. N", - "x-etsi-mec-origin-type": "ZoneStatusSubscription" + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Array(LocationEventType)" + }, + "reportingCtrl": { + "$ref": "#/components/schemas/ReportingCtrl" + }, + "requestTestNotification": { + "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "subscriptionType": { + "description": "Shall be set to \"ZoneLocationEventSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "websockNotifConfig": { + "$ref": "#/components/schemas/WebsockNotifConfig" + }, + "zoneId": { + "description": "Identifier of zone (e.g. zone001) to monitor.", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" } }, - "required": ["resourceURL"], + "required": ["subscriptionType", "zoneId"], "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" + "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.", + "x-etsi-ref": "6.3.6" }, - "PeriodicNotificationSubscription": { - "description": "A type containing data for periodic subscription.", + "UserAreaSubscription": { "properties": { - "address": { - "description": "Address of terminals to monitor (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", + "_links": { + "$ref": "#/components/schemas/_links" + }, + "addressList": { + "description": "List of the users to be monitored. ", "items": { "type": "string" }, + "minItems": 1, "type": "array", "x-etsi-mec-cardinality": "1..N", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "Array(Uri)" }, - "callbackReference": { - "$ref": "#/components/schemas/CallbackReference" + "areaDefine": { + "$ref": "#/components/schemas/AreaInfo" }, - "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.", + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.", + "format": "uri", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "Uri" }, - "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", + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "int" + "x-etsi-mec-origin-type": "String" }, - "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" + "expiryDeadline": { + "$ref": "#/components/schemas/TimeStamp" }, - "link": { - "description": "Link to other resources that are in relationship with the resource.", + "locationEventCriteria": { + "description": "List of user event values to generate notifications for (these apply to address specified). ", "items": { - "$ref": "#/components/schemas/Link" + "$ref": "#/components/schemas/LocationEventType" }, + "minItems": 0, "type": "array", "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "Link" + "x-etsi-mec-origin-type": "Array(LocationEventType)" }, - "requestedAccuracy": { - "description": "Accuracy of the provided distance in meters.", - "type": "integer", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "int" + "reportingCtrl": { + "$ref": "#/components/schemas/ReportingCtrl" }, - "requester": { - "description": "Identifies the entity that is requesting the information (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI)", - "type": "string", + "reportingLocationReq": { + "description": "This IE shall be set to true if a location estimate is required for each event report.", + "type": "boolean", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "boolean" }, - "resourceURL": { - "description": "Self referring URL", - "type": "string", + "requestTestNotification": { + "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.", + "type": "boolean", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "Boolean" + }, + "subscriptionType": { + "description": "Shall be set to \"UserAreaSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "websockNotifConfig": { + "$ref": "#/components/schemas/WebsockNotifConfig" } }, "required": [ - "callbackReference", - "address", - "requestedAccuracy", - "frequency" + "subscriptionType", + "areaDefine", + "addressList", + "trackingAccuracy" ], - "type": "object" + "type": "object", + "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.", + "x-etsi-ref": "6.3.8" }, - "ProblemDetails": { + "UserDistanceSubscription": { "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" + "_links": { + "$ref": "#/components/schemas/_links" }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem", + "callbackReference": { + "description": "URI exposed by the client on which to receive notifications via HTTP. See note 1.", "format": "uri", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "URI" + "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" + "checkImmediate": { + "type": "boolean" }, - "title": { - "description": "A short, human-readable summary of the problem type", + "clientCorrelator": { + "description": "A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2.", "type": "string", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "String" }, - "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" + "criteria": { + "$ref": "#/components/schemas/DistanceCriteria" }, - "text": { - "description": "Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1", - "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "string" + "distance": { + "description": "Distance between users that shall be monitored. The unit is meter.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" }, - "variables": { - "description": "Variables to substitute into text string", + "expiryDeadline": { + "$ref": "#/components/schemas/TimeStamp" + }, + "monitoredAddress": { + "description": "Contains addresses of users to monitor (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.\nIf the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored.\nIf the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Array(Uri)" + }, + "referenceAddress": { + "description": "If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation.", "items": { "type": "string" }, + "minItems": 0, "type": "array", "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "Array(Uri)" + }, + "reportingCtrl": { + "$ref": "#/components/schemas/ReportingCtrl" + }, + "requestTestNotification": { + "description": "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "subscriptionType": { + "description": "Shall be set to \"UserDistanceSubscription\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "trackingAccuracy": { + "description": "Number of meters of acceptable error in tracking distance.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + }, + "websockNotifConfig": { + "$ref": "#/components/schemas/WebsockNotifConfig" } }, - "required": ["messageId", "text"], - "type": "object" + "required": [ + "subscriptionType", + "monitoredAddress", + "distance", + "trackingAccuracy", + "criteria", + "checkImmediate" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [6], clause 5.2.3.2.", + "x-etsi-ref": "6.3.9" + }, + "DistanceCriteria": { + "description": "An enumeration, defining the distance criteria between devices.", + "enum": [ + "AllWithinDistance", + "AnyWithinDistance", + "AllBeyondDistance", + "AnyBeyondDistance" + ], + "type": "string" }, - "SubscriptionNotification": { - "description": "A type containing the notification subscription.", + "UserDistanceNotification": { "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" + "_links": { + "$ref": "#/components/schemas/_links" }, - "distanceCriteria": { + "distanceEvent": { "$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" + "monitoredUsers": { + "$ref": "#/components/schemas/UserList" }, - "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" + "notificationType": { + "description": "Shall be set to \"UserDistanceNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" }, - "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" + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" } }, - "required": ["terminalLocation"], - "type": "object" + "required": [ + "notificationType", + "monitoredUsers", + "distanceEvent", + "_links" + ], + "type": "object", + "x-etsi-notes": "NOTE:\tAs specified in [6], clause 5.2.3.2.", + "x-etsi-ref": "6.4.9" }, - "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.", + "UserLocationEventNotification": { "properties": { - "accuracy": { - "description": "Accuracy of the provided distance in meters", - "type": "integer", - "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "integer" + "_links": { + "$ref": "#/components/schemas/_links" }, - "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" + "accessPointId": { + "description": "The identity of the access point.\nFor the events of \"ENTERING_AREA_EVENT\", it indicates the access point that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it indicates the access point that the user used to be within.\nSee note 2.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "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).", + "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).", + "format": "uri", "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uri" }, - "currentLocation": { - "$ref": "#/components/schemas/LocationInfo" + "civicInfo": { + "$ref": "#/components/schemas/CivicAddress" }, - "errorInformation": { - "$ref": "#/components/schemas/ServiceError" + "locationInfo": { + "$ref": "#/components/schemas/LocationInfo" }, - "locationRetrievalStatus": { - "$ref": "#/components/schemas/RetrievalStatus" - } - }, - "required": ["address", "locationRetrievalStatus"], - "type": "object" - }, - "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", + "notificationType": { + "description": "Shall be set to \"UserLocationEventNotification\".", + "type": "string", "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "Uint32" + "x-etsi-mec-origin-type": "String" }, - "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" + "relativeLocationInfo": { + "$ref": "#/components/schemas/RelativeLocationInfo" + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "userLocationEvent": { + "$ref": "#/components/schemas/LocationEventType" + }, + "zoneId": { + "description": "The identity of the zone. \nFor the events of \"ENTERING_AREA_EVENT\", it is the zone that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it is the zone that the user used to be within.\nSee note 2.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" } }, - "required": ["seconds", "nanoSeconds"], + "required": ["notificationType", "userLocationEvent", "_links"], "type": "object", - "x-etsi-ref": "6.5.2" - }, - "UserEventType": { - "enum": ["Entering", "Leaving", "Transferring"], - "type": "string" + "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserLocationEventSubscription.", + "x-etsi-ref": "6.4.4" }, - "UserInfo": { + "UserLocationPeriodicNotification": { "properties": { + "_links": { + "$ref": "#/components/schemas/_links" + }, "accessPointId": { - "description": "The identity of the access point the user is currently on, see note 1.", + "description": "The identity of the access point that the user is currently within. \nSee note 2.", "type": "string", - "x-etsi-mec-cardinality": "1", + "x-etsi-mec-cardinality": "0..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.", + "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).", "format": "uri", "type": "string", - "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "AnyURI" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Uri" }, - "ancillaryInfo": { - "description": "Reserved for future use.", - "type": "string", + "civicInfo": { + "$ref": "#/components/schemas/CivicAddress" + }, + "isFinalNotification": { + "description": "Shall be set to true if it is a final notification.", + "type": "boolean", "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" + }, + "locationInfo": { + "$ref": "#/components/schemas/LocationInfo" + }, + "notificationType": { + "description": "Shall be set to \"UserLocationPeriodicNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "String" }, - "contextLocationInfo": { - "description": "Contextual information of a user location (e.g. aisle, floor, room number, etc.).", + "relativeLocationInfo": { + "$ref": "#/components/schemas/RelativeLocationInfo" + }, + "result": { + "$ref": "#/components/schemas/NotificationResult" + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "zoneId": { + "description": "The identity of the zone that the user is currently within. \nSee note 2.", "type": "string", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "String" + } + }, + "required": ["notificationType", "result", "_links"], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tIf the result is SUCCESS, at least one of locationInfo, civicInfo and relativeLocationInfo shall be present.", + "x-etsi-ref": "6.4.5" + }, + "ZoneLocationEventNotification": { + "properties": { + "_links": { + "$ref": "#/components/schemas/_links" }, - "locationInfo": { - "$ref": "#/components/schemas/LocationInfo" + "address": { + "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).", + "format": "uri", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" }, - "resourceURL": { - "description": "Self-referring URL, see note 1.", + "notificationType": { + "description": "Shall be set to \"ZoneLocationEventNotification\".", "type": "string", "x-etsi-mec-cardinality": "1", - "x-etsi-mec-origin-type": "AnyURI" + "x-etsi-mec-origin-type": "String" }, - "timestamp": { + "timeStamp": { "$ref": "#/components/schemas/TimeStamp" }, + "userLocationEvent": { + "$ref": "#/components/schemas/LocationEventType" + }, "zoneId": { - "description": "The identity of the zone the user is currently within, see note 1.", + "description": "The identity of the zone. ", "type": "string", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "String" } }, "required": [ + "notificationType", "address", - "accessPointId", + "userLocationEvent", "zoneId", - "resourceURL", - "timestamp" + "_links" ], "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" + "x-etsi-ref": "6.4.6" }, - "UserList": { - "description": "A type containing list of users.", + "UserAreaNotification": { "properties": { - "resourceURL": { - "description": "Self referring URL", + "_links": { + "$ref": "#/components/schemas/_links" + }, + "address": { + "description": "Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI).", + "format": "uri", "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Uri" }, - "user": { - "description": "Collection of the zone information list.", + "civicInfo": { + "$ref": "#/components/schemas/CivicAddress" + }, + "locationInfo": { + "$ref": "#/components/schemas/LocationInfo" + }, + "notificationType": { + "description": "Shall be set to \"UserAreaNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" + }, + "relativeLocationInfo": { + "$ref": "#/components/schemas/RelativeLocationInfo" + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "userLocationEvent": { + "$ref": "#/components/schemas/LocationEventType" + } + }, + "required": [ + "notificationType", + "address", + "userLocationEvent", + "_links" + ], + "type": "object", + "x-etsi-notes": "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserAreaSubscription.", + "x-etsi-ref": "6.4.8" + }, + "AreaInfo": { + "properties": { + "points": { + "description": "Shall include one point if the shape is CIRCLE. Shall include 3-15 points if the shape is POLYGON.", "items": { - "$ref": "#/components/schemas/UserInfo" + "$ref": "#/components/schemas/Point" }, + "minItems": 1, "type": "array", - "x-etsi-mec-cardinality": "0..N", - "x-etsi-mec-origin-type": "UserInfo" + "x-etsi-mec-cardinality": "1..N", + "x-etsi-mec-origin-type": "Array(Point)" + }, + "radius": { + "description": "Shall be present if the shape is CIRCLE.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "shape": { + "description": "The shape of the area monitored: 1 = CIRCLE. 2 = POLYGON", + "enum": ["SEE_DESCRIPTION"], + "type": "integer", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Enum(inlined)" } }, - "required": ["resourceURL"], - "type": "object" + "required": ["shape", "points"], + "type": "object", + "x-etsi-ref": "6.5.7" }, - "UserTrackingSubscription": { - "description": "A type containing user tracking subscription.", + "Point": { "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" + "latitude": { + "description": "Location latitude, expressed in the range -90° to +90°.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" }, - "callbackReference": { - "$ref": "#/components/schemas/CallbackReference" + "longitude": { + "description": "Location longitude, expressed in the range -180° to +180°.", + "format": "float", + "type": "number", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "Float" + } + }, + "required": ["latitude", "longitude"], + "type": "object", + "x-etsi-ref": "6.5.8" + }, + "ReportingCtrl": { + "properties": { + "maximumCount": { + "description": "Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" }, - "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.", + "maximumFrequency": { + "description": "Maximum frequency (in seconds) of notifications per subscription.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + }, + "minimumInterval": { + "description": "Minimum interval between reports in case frequently reporting. Unit is second.", + "type": "integer", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "UnsignedInt" + } + }, + "type": "object", + "x-etsi-ref": "6.5.6" + }, + "_links": { + "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests.", + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + } + }, + "required": ["self"], + "type": "object", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Structure (inlined)" + }, + "UserEventPara": { + "properties": { + "accessPointList": { + "description": "One or more access points forming a monitoring area that could be any shape. See note 1.", + "items": { + "type": "string" + }, + "minItems": 0, + "type": "array", + "x-etsi-mec-cardinality": "0..N", + "x-etsi-mec-origin-type": "Array(String)" + }, + "occurrenceInfo": { + "$ref": "#/components/schemas/OccurrenceInfo" + }, + "reportingLocationReq": { + "description": "This IE shall be set to true if a location estimate is required for each event report.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "boolean" + }, + "zoneId": { + "description": "Identifier of zone (e.g. zone001) to monitor. See note 1.", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "String" + } + }, + "type": "object", + "x-etsi-notes": "NOTE 1:\tOnly one of accessPointList and zoneId may be present.\nNOTE 2:\tAs specified in [17], clause 6.1.6.3.16.", + "x-etsi-ref": "6.5.5" + }, + "WebsockNotifConfig": { + "properties": { + "requestWebsocketUri": { + "description": "Set to true by the service consumer to indicate that Websocket delivery is requested.", + "type": "boolean", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "Boolean" }, - "resourceURL": { - "description": "Self referring URL", + "websocketUri": { + "description": "Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications.", + "format": "uri", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "Uri" + } + }, + "type": "object", + "x-etsi-ref": "6.5.4" + }, + "TestNotification": { + "properties": { + "_links": { + "$ref": "#/components/schemas/_links" }, - "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" + "notificationType": { + "description": "Shall be set to \"TestNotification\".", + "type": "string", + "x-etsi-mec-cardinality": "1", + "x-etsi-mec-origin-type": "String" } }, - "required": ["callbackReference", "address"], - "type": "object" + "required": ["notificationType", "_links"], + "type": "object", + "x-etsi-ref": "6.4.3" }, - "ZonalPresenceNotification": { - "description": "A type containing zonal presence notification", + "LocationEventType": { + "description": "This type represents specified event types for UE location report.", + "enum": ["ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT"], + "type": "string" + }, + "NotificationResult": { + "description": "This enumeration represents the result of a localization associated with a notification", + "enum": ["SUCCESS", "ABNORMAL"], + "type": "string" + }, + "OccurrenceInfo": { + "description": "The enumeration OccurrenceInfo indicates whether event reporting is one time.", + "enum": ["ONE_TIME_EVENT", "MULTIPLE_TIME_EVENT"], + "type": "string" + }, + "CivicAddress": { + "description": "Indicates a Civic address", + "type": "object", + "required": ["country"], "properties": { - "address": { - "description": "Address of user (e.g. \"sip\" URI, \"tel\" URI, \"acr\" URI) to monitor", + "country": { + "description": "The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US", "type": "string", "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "String" }, - "callbackData": { - "description": "CallBackData if passed by the application during the associated ZonalTrafficSubscription and UserTrackingSubscription operation. See [REST_NetAPI_Common].", + "A1": { + "description": "National subdivisions (state, canton, region, province, prefecture)", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "String" }, - "currentAccessPointId": { - "description": "Identifier of access point.", + "A2": { + "description": "County, parish, gun (JP), district (IN)", "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "interestRealm": { - "description": "Interest realm of access point (e.g. geographical area, a type of industry etc.).", + "A3": { + "description": "City, township, shi (JP)", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "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" + "A4": { + "description": "City division, borough, city district, ward, chou (JP)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "previousAccessPointId": { - "description": "Identifier of access point.", + "A5": { + "description": "Neighbourhood, block", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "String" }, - "timestamp": { - "$ref": "#/components/schemas/TimeStamp" + "A6": { + "description": "Group of streets below the neighbourhood level", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "userEventType": { - "$ref": "#/components/schemas/UserEventType" + "PRD": { + "description": "Leading street direction", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "zoneId": { - "description": "Identifier of zone", + "POD": { + "description": "Trailing street suffix", "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" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "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.", + "STS": { + "description": "Street suffix or type", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "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", + "HNO": { + "description": "House number", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "unsignedInt" + "x-etsi-mec-origin-type": "String" }, - "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" + "HNS": { + "description": "House number suffix", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "resourceURL": { - "description": "Self referring URL", + "LMK": { + "description": "Landmark or vanity address", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "String" }, - "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" + "LOC": { + "description": "Additional location information", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "zoneId": { - "description": "Identifier of zone", + "NAM": { + "description": "Name (residence and office occupant)", "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" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "numberOfUnserviceableAccessPoints": { - "description": "Number of inoperable access points within the zone.", - "type": "integer", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "unsignedInt" + "PC": { + "description": "Postal/zip code", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "numberOfUsers": { - "description": "The number of users currently on the access point.", - "type": "integer", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "unsignedInt" + "BLD": { + "description": "Building (structure)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "resourceURL": { - "description": "Self referring URL", + "UNIT": { + "description": "Unit (apartment, suite)", "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "zoneId": { - "description": "Identifier of zone", + "FLR": { + "description": "Floor", "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", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" + }, + "ROOM": { + "description": "Room", "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "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.", + "PLC": { + "description": "Place-type", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-origin-type": "String" }, - "callbackData": { - "description": "CallBackData if passed by the application during the associated ZoneStatusSubscription operation. See [REST_NetAPI_Common].", + "PCN": { + "description": "Postal community name", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "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" + "POBOX": { + "description": "Post office box (P.O. box)", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "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", + "ADDCODE": { + "description": "Additional code", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "unsignedInt" + "x-etsi-mec-origin-type": "String" }, - "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", + "SEAT": { + "description": "Seat (desk, cubicle, workstation)", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "unsignedInt" + "x-etsi-mec-origin-type": "String" }, - "operationStatus": { - "$ref": "#/components/schemas/OperationStatus" + "RD": { + "description": "Primary road or street", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "timestamp": { - "$ref": "#/components/schemas/TimeStamp" + "RDSEC": { + "description": "Road clause", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "zoneId": { - "description": "Identifier of zone", + "RDBR": { + "description": "Road branch", "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" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "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.", + "RDSUBBR": { + "description": "Road sub-branch", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "string" + "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", + "PRM": { + "description": "Road pre-modifier", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "unsignedInt" + "x-etsi-mec-origin-type": "String" }, - "numberOfUsersZoneThreshold": { - "description": "Threshold number of users in a zone which if crossed shall cause a notification", - "type": "integer", + "POM": { + "description": "Road post-modifier", + "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "unsignedInt" + "x-etsi-mec-origin-type": "String" }, - "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" + "usageRules": { + "description": "When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding.", + "type": "string", + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" }, - "resourceURL": { - "description": "Self referring URL", + "method": { + "description": "When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document.", "type": "string", "x-etsi-mec-cardinality": "0..1", - "x-etsi-mec-origin-type": "anyURI" + "x-etsi-mec-origin-type": "String" }, - "zoneId": { - "description": "Identifier of zone", + "providedBy": { + "description": "When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding.", "type": "string", - "x-etsi-mec-cardinality": 1, - "x-etsi-mec-origin-type": "string" + "x-etsi-mec-cardinality": "0..1", + "x-etsi-mec-origin-type": "String" } - }, - "required": ["callbackReference", "zoneId"], - "type": "object" + } } } } -} +} \ No newline at end of file -- GitLab From 72d0fcc66cb3d62b76066cfafcb9d647816ac86a Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 15:14:20 +0500 Subject: [PATCH 03/16] Update README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1ca36f1..172f802 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,15 @@ This repository contains OpenAPIs descriptions for the interfaces specified in ETSI GS MEC 013. ## Online resources -* [Specification Document](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.02.01_60/gs_MEC013v020201p.pdf) +* [Specification Document](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/03.01.01_60/gs_mec013v030101p.pdf) ## Navigate with Swagger UI -* [Location API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs013-location-api/raw/v2.2.1/LocationAPI.yaml) +* [Location API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs013-location-api/raw/v3.1.1/LocationAPI.yaml) ## Navigate with Redocly -* [Location API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs013-location-api/raw/v2.2.1/LocationAPI.yaml&nocors) +* [Location API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs013-location-api/raw/v3.1.1/LocationAPI.yaml&nocors) ## License Unless specified otherwise, the content of this repository and the files contained are released under the BSD-3-Clause license. -See the attached LICENSE file or visit https://forge.etsi.org/legal-matters. +See the attached LICENSE file or visit https://forge.etsi.org/legal-matters. \ No newline at end of file -- GitLab From 08db6fd43f3a310f2d8b80728c8f37539aa36e1e Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 18:13:56 +0500 Subject: [PATCH 04/16] add README for proto3 generation and usage --- proto3-gen.md | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 proto3-gen.md diff --git a/proto3-gen.md b/proto3-gen.md new file mode 100644 index 0000000..8d74d7e --- /dev/null +++ b/proto3-gen.md @@ -0,0 +1,131 @@ +# Protobuf Schema Generation + +[OpenAPI Generator](https://openapi-generator.tech) is used to generate protobuf schema (`.proto3`) files from OpenAPI specifications of MEC013 Locatio API. + +>**NOTE:** At the time of writing, the tool does not support OAS 3.1 version and we have to first convert the [Locatio API](./LocationAPI.yaml) to OAS 3.0 for generating protobuf schema. + +1. Convert OAS for [Locatio API](./LocationAPI.yaml) from 3.1 to 3.0​ + + - Change the value of `openapi` field from 3.1.0 to 3.0.0​ + + - Use this [VS code extension](https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi) to see the errors in the downgraded YAML (v3.0)​ + + - Manually fix the errors​ + - mostly related to `examples` <--> `example` interchange​ + - or some 3.1 fields that are not supported in 3.0​ (comment them out) + +2. Generate proto files + - Install the `openapi-generator-cli.jar` using the installation procedure mentioned [here](https://openapi-generator.tech/docs/installation#jar). + - Generate the proto files using the following command + ```sh + $ java -jar openapi-generator-cli.jar generate -i LocationAPI.yaml -g protobuf-schema -o proto3/ --package-name mec013 + ``` + +3. Carefully inspect the generated `.proto` files for any inconsistencies. Some of the things to look out for: + - Proto3 generated files for enumerations, structures containing allOf, oneOf, anyOf etc. may need to be touched manually + - Check that all the nested models are being _imported_ correctly in their parent models + - Remove redundant proto files + + +4. Validate protobuf schema by generating code from proto3 descriptions in different languages. See [this section](#code-generation-from-proto3) for more details. + +# Code Generation from proto3 + +Below are some code generation examples for Python, Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following commands from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs ./proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./proto3/services/location_service.proto + ``` + + The above command will generate two files for the Location service: + - _location_service_pb2.py_: containing the python data models used in the Location service file + - _location_service_pb2_grpc.py_: containing all the classes and functions needed for the supported HTTP methods in the Location API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec013.services.locationservice";` in all .proto files like this: + + ```Go + ... + + syntax = "proto3"; + + package mec013.services.locationservice; + + option go_package = "./mec013.services.locationservice"; + + import public "models/.proto"; + + ... + ``` +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + $ protoc --go_out=./go-stubs ./proto3/models/* -I./proto3 + $ protoc --go_out=./go-stubs ./proto3/services/* --go-grpc_out=go-stubs -I./proto3 + ``` + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + > And the `location_service_grpc.pb.go` will contain the stubs for the methods defined in the `location_service.proto` file. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./proto3 --ruby_out=ruby-stubs ./proto3/models/* + ``` + Run the following command to generate `location_service_pb.rb` and `location_service_services_pb.rb` files, containing stub and service classes for the endpoints and methods defined in MEC013 Location service. + + ```sh + $ grpc_tools_ruby_protoc -I./proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./proto3/services/* + ``` \ No newline at end of file -- GitLab From 1546dea31447f45242aa9b54fe010e5fdd98f97d Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 18:14:42 +0500 Subject: [PATCH 05/16] fix identation in LocationAPI.yaml --- LocationAPI.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LocationAPI.yaml b/LocationAPI.yaml index e2119b4..c779950 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -390,7 +390,7 @@ paths: userAreaNotification: $ref: '#/components/schemas/UserAreaNotification' examples: - - userAreaNotification: + - userAreaNotification: notificationType: 'UserAreaNotification' address: 'acr:10.0.0.1' userLocationEvent: 'ENTERING_AREA_EVENT' @@ -427,7 +427,7 @@ paths: userAreaNotification: $ref: '#/components/schemas/UserAreaNotification' examples: - - userAreaNotification: + - userAreaNotification: notificationType: 'UserAreaNotification' address: 'acr:10.0.0.1' userLocationEvent: 'ENTERING_AREA_EVENT' -- GitLab From 6c1e68f56967482f2863aee580a4bb7a6295f6be Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 18:15:15 +0500 Subject: [PATCH 06/16] add gitignore file --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df4569b --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +protoc/ +go-stubs/ +ruby-stubs/ +.proto-gen/ +python-stubs/ \ No newline at end of file -- GitLab From 3583c4a5eb7d4e60d2f73af1337f451c708859a4 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 18:22:58 +0500 Subject: [PATCH 07/16] add new refs in callbacks keywords --- LocationAPI.json | 6 ++++++ LocationAPI.yaml | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/LocationAPI.json b/LocationAPI.json index faa5d95..6484bc0 100644 --- a/LocationAPI.json +++ b/LocationAPI.json @@ -1320,6 +1320,9 @@ "properties": { "userLocationEventNotification": { "$ref": "#/components/schemas/UserLocationEventNotification" + }, + "userLocationPeriodicNotification": { + "$ref": "#/components/schemas/UserLocationEventNotification" } }, "examples": [ @@ -1710,6 +1713,9 @@ "properties": { "zoneLocationEventNotification": { "$ref": "#/components/schemas/ZoneLocationEventNotification" + }, + "zoneStatusNotification": { + "$ref": "#/components/schemas/ZoneStatusNotification" } }, "examples": [ diff --git a/LocationAPI.yaml b/LocationAPI.yaml index c779950..dcc56a0 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -884,6 +884,8 @@ paths: properties: userLocationEventNotification: $ref: '#/components/schemas/UserLocationEventNotification' + userLocationPeriodicNotification: + $ref: '#/components/schemas/UserLocationEventNotification' examples: - userLocationEventNotification: notificationType: 'UserLocationEventNotification' @@ -1141,6 +1143,8 @@ paths: properties: zoneLocationEventNotification: $ref: '#/components/schemas/ZoneLocationEventNotification' + zoneStatusNotification: + $ref: '#/components/schemas/ZoneStatusNotification' examples: - zoneLocationEventNotification: notificationType: 'ZoneLocationEventNotification' -- GitLab From 79d7fbf2ce1c6f14e96e72990f8253e5edea0fa1 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 18:41:24 +0500 Subject: [PATCH 08/16] add README in proto3 folder --- proto3/README.md | 113 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 proto3/README.md diff --git a/proto3/README.md b/proto3/README.md new file mode 100644 index 0000000..30f232b --- /dev/null +++ b/proto3/README.md @@ -0,0 +1,113 @@ +# gPRC for mec013 + +The ETSI MEC ISG MEC013 Location API described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs013-location-api](https://forge.etsi.org/rep/mec/gs013-location-api) + +## Usage + +Below are some usage examples for Python, Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following commands from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs ./proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./proto3/services/location_service.proto + ``` + + The above command will generate two files for the Location service: + - _location_service_pb2.py_: containing the python data models used in the Location service file + - _location_service_pb2_grpc.py_: containing all the classes and functions needed for the supported HTTP methods in the Location API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec013.services.locationservice";` in all .proto files like this: + + ```Go + ... + + syntax = "proto3"; + + package mec013.services.locationservice; + + option go_package = "./mec013.services.locationservice"; + + import public "models/.proto"; + + ... + ``` +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + $ protoc --go_out=./go-stubs ./proto3/models/* -I./proto3 + $ protoc --go_out=./go-stubs ./proto3/services/* --go-grpc_out=go-stubs -I./proto3 + ``` + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + > And the `location_service_grpc.pb.go` will contain the stubs for the methods defined in the `location_service.proto` file. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./proto3 --ruby_out=ruby-stubs ./proto3/models/* + ``` + Run the following command to generate `location_service_pb.rb` and `location_service_services_pb.rb` files, containing stub and service classes for the endpoints and methods defined in MEC013 Location service. + + ```sh + $ grpc_tools_ruby_protoc -I./proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./proto3/services/* + ``` \ No newline at end of file -- GitLab From 5b2b5bed9f49796f455cc24337c3bc75c717ece8 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 16 Jan 2023 18:42:39 +0500 Subject: [PATCH 09/16] add proto3 descriptors --- proto3/.openapi-generator-ignore | 23 ++ proto3/.openapi-generator/FILES | 75 +++++ proto3/.openapi-generator/VERSION | 1 + .../access_point_get_by_id200_response.proto | 21 ++ proto3/models/access_point_info.proto | 42 +++ proto3/models/access_point_list.proto | 28 ++ .../access_points_get200_response.proto | 21 ++ proto3/models/area_info.proto | 32 +++ .../area_notification_post_request.proto | 21 ++ proto3/models/area_sub_get200_response.proto | 21 ++ .../area_sub_list_get200_response.proto | 21 ++ proto3/models/area_sub_post201_response.proto | 21 ++ proto3/models/area_sub_post_request.proto | 21 ++ proto3/models/area_sub_put_request.proto | 21 ++ proto3/models/civic_address.proto | 120 ++++++++ proto3/models/connection_type.proto | 22 ++ proto3/models/distance_criteria.proto | 21 ++ proto3/models/distance_get200_response.proto | 21 ++ .../distance_get_location_parameter.proto | 24 ++ .../distance_notification_post_request.proto | 21 ++ .../models/distance_sub_get200_response.proto | 21 ++ .../distance_sub_list_get200_response.proto | 21 ++ proto3/models/distance_sub_post_request.proto | 21 ++ proto3/models/link_type.proto | 21 ++ proto3/models/links.proto | 21 ++ proto3/models/location_event_type.proto | 19 ++ proto3/models/location_info.proto | 64 +++++ proto3/models/map_info.proto | 28 ++ proto3/models/notification_result.proto | 19 ++ .../notification_subscription_list.proto | 24 ++ proto3/models/occurrence_info.proto | 19 ++ proto3/models/operation_status.proto | 20 ++ proto3/models/origin.proto | 27 ++ proto3/models/periodic_event_info.proto | 24 ++ proto3/models/point.proto | 24 ++ proto3/models/problem_details.proto | 33 +++ proto3/models/relative_location_info.proto | 30 ++ proto3/models/reporting_ctrl.proto | 27 ++ proto3/models/retrieval_status.proto | 20 ++ proto3/models/service_error.proto | 27 ++ proto3/models/subscription.proto | 24 ++ proto3/models/terminal_distance.proto | 27 ++ proto3/models/terminal_location.proto | 30 ++ proto3/models/test_notification.proto | 24 ++ proto3/models/time_stamp.proto | 24 ++ proto3/models/user_area_notification.proto | 42 +++ proto3/models/user_area_subscription.proto | 58 ++++ .../models/user_distance_notification.proto | 33 +++ .../models/user_distance_subscription.proto | 59 ++++ proto3/models/user_event_para.proto | 30 ++ proto3/models/user_info.proto | 45 +++ proto3/models/user_list.proto | 25 ++ .../user_location_event_notification.proto | 48 ++++ .../user_location_event_subscription.proto | 49 ++++ .../user_location_periodic_notification.proto | 51 ++++ .../user_location_periodic_subscription.proto | 45 +++ .../user_notification_post_request.proto | 23 ++ proto3/models/user_sub_get200_response.proto | 24 ++ .../user_sub_list_get200_response.proto | 21 ++ proto3/models/user_sub_post_request.proto | 24 ++ proto3/models/users_get200_response.proto | 21 ++ proto3/models/velocity.proto | 40 +++ proto3/models/websock_notif_config.proto | 24 ++ .../models/zone_get_by_id200_response.proto | 21 ++ proto3/models/zone_info.proto | 33 +++ proto3/models/zone_list.proto | 25 ++ .../zone_location_event_notification.proto | 36 +++ .../zone_location_event_subscription.proto | 52 ++++ .../zone_notification_post_request.proto | 24 ++ proto3/models/zone_status_notification.proto | 43 +++ proto3/models/zone_status_subscription.proto | 61 ++++ proto3/models/zone_sub_get200_response.proto | 24 ++ .../zone_sub_list_get200_response.proto | 21 ++ proto3/models/zone_sub_post_request.proto | 24 ++ proto3/models/zones_get200_response.proto | 21 ++ proto3/services/location_service.proto | 265 ++++++++++++++++++ 76 files changed, 2549 insertions(+) create mode 100644 proto3/.openapi-generator-ignore create mode 100644 proto3/.openapi-generator/FILES create mode 100644 proto3/.openapi-generator/VERSION create mode 100644 proto3/models/access_point_get_by_id200_response.proto create mode 100644 proto3/models/access_point_info.proto create mode 100644 proto3/models/access_point_list.proto create mode 100644 proto3/models/access_points_get200_response.proto create mode 100644 proto3/models/area_info.proto create mode 100644 proto3/models/area_notification_post_request.proto create mode 100644 proto3/models/area_sub_get200_response.proto create mode 100644 proto3/models/area_sub_list_get200_response.proto create mode 100644 proto3/models/area_sub_post201_response.proto create mode 100644 proto3/models/area_sub_post_request.proto create mode 100644 proto3/models/area_sub_put_request.proto create mode 100644 proto3/models/civic_address.proto create mode 100644 proto3/models/connection_type.proto create mode 100644 proto3/models/distance_criteria.proto create mode 100644 proto3/models/distance_get200_response.proto create mode 100644 proto3/models/distance_get_location_parameter.proto create mode 100644 proto3/models/distance_notification_post_request.proto create mode 100644 proto3/models/distance_sub_get200_response.proto create mode 100644 proto3/models/distance_sub_list_get200_response.proto create mode 100644 proto3/models/distance_sub_post_request.proto create mode 100644 proto3/models/link_type.proto create mode 100644 proto3/models/links.proto create mode 100644 proto3/models/location_event_type.proto create mode 100644 proto3/models/location_info.proto create mode 100644 proto3/models/map_info.proto create mode 100644 proto3/models/notification_result.proto create mode 100644 proto3/models/notification_subscription_list.proto create mode 100644 proto3/models/occurrence_info.proto create mode 100644 proto3/models/operation_status.proto create mode 100644 proto3/models/origin.proto create mode 100644 proto3/models/periodic_event_info.proto create mode 100644 proto3/models/point.proto create mode 100644 proto3/models/problem_details.proto create mode 100644 proto3/models/relative_location_info.proto create mode 100644 proto3/models/reporting_ctrl.proto create mode 100644 proto3/models/retrieval_status.proto create mode 100644 proto3/models/service_error.proto create mode 100644 proto3/models/subscription.proto create mode 100644 proto3/models/terminal_distance.proto create mode 100644 proto3/models/terminal_location.proto create mode 100644 proto3/models/test_notification.proto create mode 100644 proto3/models/time_stamp.proto create mode 100644 proto3/models/user_area_notification.proto create mode 100644 proto3/models/user_area_subscription.proto create mode 100644 proto3/models/user_distance_notification.proto create mode 100644 proto3/models/user_distance_subscription.proto create mode 100644 proto3/models/user_event_para.proto create mode 100644 proto3/models/user_info.proto create mode 100644 proto3/models/user_list.proto create mode 100644 proto3/models/user_location_event_notification.proto create mode 100644 proto3/models/user_location_event_subscription.proto create mode 100644 proto3/models/user_location_periodic_notification.proto create mode 100644 proto3/models/user_location_periodic_subscription.proto create mode 100644 proto3/models/user_notification_post_request.proto create mode 100644 proto3/models/user_sub_get200_response.proto create mode 100644 proto3/models/user_sub_list_get200_response.proto create mode 100644 proto3/models/user_sub_post_request.proto create mode 100644 proto3/models/users_get200_response.proto create mode 100644 proto3/models/velocity.proto create mode 100644 proto3/models/websock_notif_config.proto create mode 100644 proto3/models/zone_get_by_id200_response.proto create mode 100644 proto3/models/zone_info.proto create mode 100644 proto3/models/zone_list.proto create mode 100644 proto3/models/zone_location_event_notification.proto create mode 100644 proto3/models/zone_location_event_subscription.proto create mode 100644 proto3/models/zone_notification_post_request.proto create mode 100644 proto3/models/zone_status_notification.proto create mode 100644 proto3/models/zone_status_subscription.proto create mode 100644 proto3/models/zone_sub_get200_response.proto create mode 100644 proto3/models/zone_sub_list_get200_response.proto create mode 100644 proto3/models/zone_sub_post_request.proto create mode 100644 proto3/models/zones_get200_response.proto create mode 100644 proto3/services/location_service.proto diff --git a/proto3/.openapi-generator-ignore b/proto3/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/proto3/.openapi-generator/FILES b/proto3/.openapi-generator/FILES new file mode 100644 index 0000000..5260f00 --- /dev/null +++ b/proto3/.openapi-generator/FILES @@ -0,0 +1,75 @@ +.openapi-generator-ignore +README.md +models/access_point_get_by_id200_response.proto +models/access_point_info.proto +models/access_point_list.proto +models/access_points_get200_response.proto +models/area_info.proto +models/area_notification_post_request.proto +models/area_sub_get200_response.proto +models/area_sub_list_get200_response.proto +models/area_sub_post201_response.proto +models/area_sub_post_request.proto +models/area_sub_put_request.proto +models/civic_address.proto +models/connection_type.proto +models/distance_criteria.proto +models/distance_get200_response.proto +models/distance_get_location_parameter.proto +models/distance_notification_post_request.proto +models/distance_sub_get200_response.proto +models/distance_sub_list_get200_response.proto +models/distance_sub_post_request.proto +models/link_type.proto +models/links.proto +models/location_event_type.proto +models/location_info.proto +models/map_info.proto +models/notification_result.proto +models/notification_subscription_list.proto +models/occurrence_info.proto +models/operation_status.proto +models/origin.proto +models/periodic_event_info.proto +models/point.proto +models/problem_details.proto +models/relative_location_info.proto +models/reporting_ctrl.proto +models/retrieval_status.proto +models/service_error.proto +models/subscription.proto +models/terminal_distance.proto +models/terminal_location.proto +models/test_notification.proto +models/time_stamp.proto +models/user_area_notification.proto +models/user_area_subscription.proto +models/user_distance_notification.proto +models/user_distance_subscription.proto +models/user_event_para.proto +models/user_info.proto +models/user_list.proto +models/user_location_event_notification.proto +models/user_location_event_subscription.proto +models/user_location_periodic_notification.proto +models/user_location_periodic_subscription.proto +models/user_notification_post_request.proto +models/user_sub_get200_response.proto +models/user_sub_list_get200_response.proto +models/user_sub_post_request.proto +models/users_get200_response.proto +models/velocity.proto +models/websock_notif_config.proto +models/zone_get_by_id200_response.proto +models/zone_info.proto +models/zone_list.proto +models/zone_location_event_notification.proto +models/zone_location_event_subscription.proto +models/zone_notification_post_request.proto +models/zone_status_notification.proto +models/zone_status_subscription.proto +models/zone_sub_get200_response.proto +models/zone_sub_list_get200_response.proto +models/zone_sub_post_request.proto +models/zones_get200_response.proto +services/location_service.proto diff --git a/proto3/.openapi-generator/VERSION b/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000..0df17dd --- /dev/null +++ b/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +6.2.1 \ No newline at end of file diff --git a/proto3/models/access_point_get_by_id200_response.proto b/proto3/models/access_point_get_by_id200_response.proto new file mode 100644 index 0000000..2e76fa5 --- /dev/null +++ b/proto3/models/access_point_get_by_id200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/access_point_info.proto"; + +message AccessPointGetById200Response { + + AccessPointInfo accessPointInfo = 0; + +} diff --git a/proto3/models/access_point_info.proto b/proto3/models/access_point_info.proto new file mode 100644 index 0000000..9e2ba31 --- /dev/null +++ b/proto3/models/access_point_info.proto @@ -0,0 +1,42 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/connection_type.proto"; +import public "models/location_info.proto"; +import public "models/operation_status.proto"; + +message AccessPointInfo { + + // Identifier of access point. + string accessPointId = 0; + + ConnectionType connectionType = 1; + + // Interest realm of access point. + string interestRealm = 2; + + LocationInfo locationInfo = 3; + + // Number of users currently on the access point. + int32 numberOfUsers = 4; + + OperationStatus operationStatus = 5; + + // Self referring URL + string resourceURL = 6; + + // Time zone of access point. + string timezone = 7; + +} diff --git a/proto3/models/access_point_list.proto b/proto3/models/access_point_list.proto new file mode 100644 index 0000000..07cb40c --- /dev/null +++ b/proto3/models/access_point_list.proto @@ -0,0 +1,28 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/access_point_info.proto"; + +message AccessPointList { + + // Collection of the access point information list. + repeated AccessPointInfo accessPoint = 0; + + // Self referring URL + string resourceURL = 1; + + // Identifier of zone + string zoneId = 2; + +} diff --git a/proto3/models/access_points_get200_response.proto b/proto3/models/access_points_get200_response.proto new file mode 100644 index 0000000..40a028e --- /dev/null +++ b/proto3/models/access_points_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/access_point_list.proto"; + +message AccessPointsGET200Response { + + AccessPointList accessPointList = 0; + +} diff --git a/proto3/models/area_info.proto b/proto3/models/area_info.proto new file mode 100644 index 0000000..e011902 --- /dev/null +++ b/proto3/models/area_info.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/point.proto"; + +message AreaInfo { + + // Shall include one point if the shape is CIRCLE. Shall include 3-15 points if the shape is POLYGON. + repeated Point points = 1; + + // Shall be present if the shape is CIRCLE. + int32 radius = 2; + + // The shape of the area monitored: 1 = CIRCLE. 2 = POLYGON + enum ShapeEnum { + ShapeEnum_NULL = 0; + } + + ShapeEnum shape = 3; + +} diff --git a/proto3/models/area_notification_post_request.proto b/proto3/models/area_notification_post_request.proto new file mode 100644 index 0000000..46664f1 --- /dev/null +++ b/proto3/models/area_notification_post_request.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_area_notification.proto"; + +message AreaNotificationPOSTRequest { + + UserAreaNotification userAreaNotification = 0; + +} diff --git a/proto3/models/area_sub_get200_response.proto b/proto3/models/area_sub_get200_response.proto new file mode 100644 index 0000000..6622c7a --- /dev/null +++ b/proto3/models/area_sub_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_area_notification.proto"; + +message AreaSubGET200Response { + + UserAreaNotification userAreaNotification = 0; + +} diff --git a/proto3/models/area_sub_list_get200_response.proto b/proto3/models/area_sub_list_get200_response.proto new file mode 100644 index 0000000..77d8608 --- /dev/null +++ b/proto3/models/area_sub_list_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/notification_subscription_list.proto"; + +message AreaSubListGET200Response { + + NotificationSubscriptionList notificationSubscriptionList = 0; + +} diff --git a/proto3/models/area_sub_post201_response.proto b/proto3/models/area_sub_post201_response.proto new file mode 100644 index 0000000..9d733b1 --- /dev/null +++ b/proto3/models/area_sub_post201_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_area_subscription.proto"; + +message AreaSubPOST201Response { + + UserAreaSubscription userAreaSubscription = 0; + +} diff --git a/proto3/models/area_sub_post_request.proto b/proto3/models/area_sub_post_request.proto new file mode 100644 index 0000000..708c8b1 --- /dev/null +++ b/proto3/models/area_sub_post_request.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_area_subscription.proto"; + +message AreaSubPOSTRequest { + + UserAreaSubscription userAreaSubscription = 0; + +} diff --git a/proto3/models/area_sub_put_request.proto b/proto3/models/area_sub_put_request.proto new file mode 100644 index 0000000..5e9c574 --- /dev/null +++ b/proto3/models/area_sub_put_request.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_area_notification.proto"; + +message AreaSubPUTRequest { + + UserAreaNotification userAreaNotification = 0; + +} diff --git a/proto3/models/civic_address.proto b/proto3/models/civic_address.proto new file mode 100644 index 0000000..d84036e --- /dev/null +++ b/proto3/models/civic_address.proto @@ -0,0 +1,120 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message CivicAddress { + + // The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US + string country = 0; + + // National subdivisions (state, canton, region, province, prefecture) + string A1 = 1; + + // County, parish, gun (JP), district (IN) + string A2 = 2; + + // City, township, shi (JP) + string A3 = 3; + + // City division, borough, city district, ward, chou (JP) + string A4 = 4; + + // Neighbourhood, block + string A5 = 5; + + // Group of streets below the neighbourhood level + string A6 = 6; + + // Leading street direction + string PRD = 7; + + // Trailing street suffix + string POD = 8; + + // Street suffix or type + string STS = 9; + + // House number + string HNO = 10; + + // House number suffix + string HNS = 11; + + // Landmark or vanity address + string LMK = 12; + + // Additional location information + string LOC = 13; + + // Name (residence and office occupant) + string NAM = 14; + + // Postal/zip code + string PC = 15; + + // Building (structure) + string BLD = 16; + + // Unit (apartment, suite) + string UNIT = 17; + + // Floor + string FLR = 18; + + // Room + string ROOM = 19; + + // Place-type + string PLC = 20; + + // Postal community name + string PCN = 21; + + // Post office box (P.O. box) + string POBOX = 22; + + // Additional code + string ADDCODE = 23; + + // Seat (desk, cubicle, workstation) + string SEAT = 24; + + // Primary road or street + string RD = 25; + + // Road clause + string RDSEC = 27; + + // Road branch + string RDBR = 28; + + // Road sub-branch + string RDSUBBR = 29; + + // Road pre-modifier + string PRM = 30; + + // Road post-modifier + string POM = 31; + + // When present, this IE shall carry the value of \"usagerules\" Element of the PIDL-LO XML document, with UTF-8 encoding. + string usageRules = 32; + + // When present, this IE shall contain the method token, carried by the \"method\" Element of the PIDLLO XML document. + string method = 33; + + // When present, this IE shall carry the value of \"provided-by\" Element of the PIDL-LO XML document, with UTF-8 encoding. + string providedBy = 34; + +} diff --git a/proto3/models/connection_type.proto b/proto3/models/connection_type.proto new file mode 100644 index 0000000..8841280 --- /dev/null +++ b/proto3/models/connection_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum ConnectionType { + ConnectionType_LTE = 0; + ConnectionType_WIFI = 1; + ConnectionType_WIMAX = 2; + ConnectionType__5G_NR = 3; + ConnectionType_UNKNOWN = 4; +} diff --git a/proto3/models/distance_criteria.proto b/proto3/models/distance_criteria.proto new file mode 100644 index 0000000..09328fa --- /dev/null +++ b/proto3/models/distance_criteria.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum DistanceCriteria { + DistanceCriteria_ALLWITHINDISTANCE = 0; + DistanceCriteria_ANYWITHINDISTANCE = 1; + DistanceCriteria_ALLBEYONDDISTANCE = 2; + DistanceCriteria_ANYBEYONDDISTANCE = 3; +} diff --git a/proto3/models/distance_get200_response.proto b/proto3/models/distance_get200_response.proto new file mode 100644 index 0000000..0590430 --- /dev/null +++ b/proto3/models/distance_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/terminal_distance.proto"; + +message DistanceGET200Response { + + TerminalDistance terminalDistance = 0; + +} diff --git a/proto3/models/distance_get_location_parameter.proto b/proto3/models/distance_get_location_parameter.proto new file mode 100644 index 0000000..02e73a2 --- /dev/null +++ b/proto3/models/distance_get_location_parameter.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message DistanceGETLocationParameter { + + // Location latitude, expressed in the range -90° to +90°. + float latitude = 0; + + // Location longitude, expressed in the range -180° to +180°. + float longitude = 1; + +} diff --git a/proto3/models/distance_notification_post_request.proto b/proto3/models/distance_notification_post_request.proto new file mode 100644 index 0000000..854331a --- /dev/null +++ b/proto3/models/distance_notification_post_request.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_distance_notification.proto"; + +message DistanceNotificationPOSTRequest { + + UserDistanceNotification userDistanceNotification = 0; + +} diff --git a/proto3/models/distance_sub_get200_response.proto b/proto3/models/distance_sub_get200_response.proto new file mode 100644 index 0000000..c94631e --- /dev/null +++ b/proto3/models/distance_sub_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_distance_subscription.proto"; + +message DistanceSubGET200Response { + + UserDistanceSubscription userDistanceSubscription = 0; + +} diff --git a/proto3/models/distance_sub_list_get200_response.proto b/proto3/models/distance_sub_list_get200_response.proto new file mode 100644 index 0000000..548bbae --- /dev/null +++ b/proto3/models/distance_sub_list_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/notification_subscription_list.proto"; + +message DistanceSubListGET200Response { + + NotificationSubscriptionList notificationSubscriptionList = 0; + +} diff --git a/proto3/models/distance_sub_post_request.proto b/proto3/models/distance_sub_post_request.proto new file mode 100644 index 0000000..aab17a2 --- /dev/null +++ b/proto3/models/distance_sub_post_request.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_distance_subscription.proto"; + +message DistanceSubPOSTRequest { + + UserDistanceSubscription userDistanceSubscription = 0; + +} diff --git a/proto3/models/link_type.proto b/proto3/models/link_type.proto new file mode 100644 index 0000000..04f93a7 --- /dev/null +++ b/proto3/models/link_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message LinkType { + + // URI referring to a resource. + string href = 0; + +} diff --git a/proto3/models/links.proto b/proto3/models/links.proto new file mode 100644 index 0000000..0a43163 --- /dev/null +++ b/proto3/models/links.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/link_type.proto"; + +message Links { + + LinkType self = 0; + +} diff --git a/proto3/models/location_event_type.proto b/proto3/models/location_event_type.proto new file mode 100644 index 0000000..a046bcb --- /dev/null +++ b/proto3/models/location_event_type.proto @@ -0,0 +1,19 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum LocationEventType { + LocationEventType_ENTERING_AREA_EVENT = 0; + LocationEventType_LEAVING_AREA_EVENT = 1; +} diff --git a/proto3/models/location_info.proto b/proto3/models/location_info.proto new file mode 100644 index 0000000..a391cbe --- /dev/null +++ b/proto3/models/location_info.proto @@ -0,0 +1,64 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/velocity.proto"; + +message LocationInfo { + + // Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6. + int32 accuracy = 1; + + // Altitude accuracy/uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 3 or 4. + int32 accuracyAltitude = 2; + + // Horizontal accuracy/(semi-major) uncertainty of location provided in meters, as defined in [14]. Present only if \"shape\" equals 4, 5 or 6. + int32 accuracySemiMinor = 3; + + // Location altitude relative to the WGS84 ellipsoid surface. + float altitude = 4; + + // 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. + int32 confidence = 5; + + // Present only if \"shape\" equals 6. + int32 includedAngle = 6; + + // Present only if \"shape\" equals 6. + int32 innerRadius = 7; + + // Location latitude, expressed in the range -90° to +90°. Cardinality greater than one only if \"shape\" equals 7. + repeated float latitude = 8; + + // Location longitude, expressed in the range -180° to +180°. Cardinality greater than one only if \"shape\" equals 7. + repeated float longitude = 9; + + // Present only if \"shape\" equals 6. + int32 offsetAngle = 10; + + // 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. + int32 orientationMajorAxis = 11; + + // Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon + enum ShapeEnum { + ShapeEnum_NULL = 0; + } + + ShapeEnum shape = 12; + + // Present only if \"shape\" equals 6. + int32 uncertaintyRadius = 13; + + Velocity velocity = 14; + +} diff --git a/proto3/models/map_info.proto b/proto3/models/map_info.proto new file mode 100644 index 0000000..f45578b --- /dev/null +++ b/proto3/models/map_info.proto @@ -0,0 +1,28 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/origin.proto"; +import public "models/todo_object_mapping.proto"; + +message MapInfo { + + // Ancillary map information may be used to convert coordinates between different coordinate systems. + TODO_OBJECT_MAPPING ancillaryMapInfo = 0; + + // Indicates the ID of the map. + string mapId = 1; + + Origin origin = 2; + +} diff --git a/proto3/models/notification_result.proto b/proto3/models/notification_result.proto new file mode 100644 index 0000000..42d6b3b --- /dev/null +++ b/proto3/models/notification_result.proto @@ -0,0 +1,19 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum NotificationResult { + NotificationResult_SUCCESS = 0; + NotificationResult_ABNORMAL = 1; +} diff --git a/proto3/models/notification_subscription_list.proto b/proto3/models/notification_subscription_list.proto new file mode 100644 index 0000000..09a24d9 --- /dev/null +++ b/proto3/models/notification_subscription_list.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/link_type.proto"; +import public "models/subscription.proto"; + +message NotificationSubscriptionList { + + LinkType resourceURL = 0; + + repeated Subscription subscription = 1; + +} diff --git a/proto3/models/occurrence_info.proto b/proto3/models/occurrence_info.proto new file mode 100644 index 0000000..325ee26 --- /dev/null +++ b/proto3/models/occurrence_info.proto @@ -0,0 +1,19 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum OccurrenceInfo { + OccurrenceInfo_ONE_TIME_EVENT = 0; + OccurrenceInfo_MULTIPLE_TIME_EVENT = 1; +} diff --git a/proto3/models/operation_status.proto b/proto3/models/operation_status.proto new file mode 100644 index 0000000..959d5b9 --- /dev/null +++ b/proto3/models/operation_status.proto @@ -0,0 +1,20 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum OperationStatus { + OperationStatus_SERVICEABLE = 0; + OperationStatus_UNSERVICEABLE = 1; + OperationStatus_UNKNOWN = 2; +} diff --git a/proto3/models/origin.proto b/proto3/models/origin.proto new file mode 100644 index 0000000..42aa932 --- /dev/null +++ b/proto3/models/origin.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message Origin { + + // Location altitude relative to the WGS84 ellipsoid surface. + float altitude = 0; + + // Location latitude, expressed in the range -90° to +90°. + float latitude = 1; + + // Location longitude, expressed in the range -180° to +180°. + float longitude = 2; + +} diff --git a/proto3/models/periodic_event_info.proto b/proto3/models/periodic_event_info.proto new file mode 100644 index 0000000..bdd9636 --- /dev/null +++ b/proto3/models/periodic_event_info.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message PeriodicEventInfo { + + // Number of event reports + float reportingAmount = 0; + + // Interval of event reports + float reportingInterval = 1; + +} diff --git a/proto3/models/point.proto b/proto3/models/point.proto new file mode 100644 index 0000000..4c00b23 --- /dev/null +++ b/proto3/models/point.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message Point { + + // Location latitude, expressed in the range -90° to +90°. + float latitude = 0; + + // Location longitude, expressed in the range -180° to +180°. + float longitude = 1; + +} diff --git a/proto3/models/problem_details.proto b/proto3/models/problem_details.proto new file mode 100644 index 0000000..b5039ee --- /dev/null +++ b/proto3/models/problem_details.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 0; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 1; + + // The HTTP status code for this occurrence of the problem + int32 status = 2; + + // A short, human-readable summary of the problem type + string title = 3; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 4; + +} diff --git a/proto3/models/relative_location_info.proto b/proto3/models/relative_location_info.proto new file mode 100644 index 0000000..9a69a75 --- /dev/null +++ b/proto3/models/relative_location_info.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/map_info.proto"; + +message RelativeLocationInfo { + + // Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin. + float X = 0; + + // Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin. + float Y = 1; + + // Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. Positive value represents height above origin. + float Z = 2; + + MapInfo mapInfo = 3; + +} diff --git a/proto3/models/reporting_ctrl.proto b/proto3/models/reporting_ctrl.proto new file mode 100644 index 0000000..bc6ad75 --- /dev/null +++ b/proto3/models/reporting_ctrl.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message ReportingCtrl { + + // Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0. + int32 maximumCount = 0; + + // Maximum frequency (in seconds) of notifications per subscription. + int32 maximumFrequency = 1; + + // Minimum interval between reports in case frequently reporting. Unit is second. + int32 minimumInterval = 2; + +} diff --git a/proto3/models/retrieval_status.proto b/proto3/models/retrieval_status.proto new file mode 100644 index 0000000..8c379d5 --- /dev/null +++ b/proto3/models/retrieval_status.proto @@ -0,0 +1,20 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +enum RetrievalStatus { + RetrievalStatus_RETRIEVED = 0; + RetrievalStatus_NOTRETRIEVED = 1; + RetrievalStatus_ERROR = 2; +} diff --git a/proto3/models/service_error.proto b/proto3/models/service_error.proto new file mode 100644 index 0000000..2df9a80 --- /dev/null +++ b/proto3/models/service_error.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message ServiceError { + + // Message identifier, either with prefix SVC or with prefix POL + string messageId = 0; + + // Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1 + string text = 1; + + // Variables to substitute into text string + repeated string variables = 2; + +} diff --git a/proto3/models/subscription.proto b/proto3/models/subscription.proto new file mode 100644 index 0000000..05285cd --- /dev/null +++ b/proto3/models/subscription.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message Subscription { + + // The URI referring to the subscription. + string href = 0; + + // Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9: \"UserLocationEventSubscription\" \"UserLocationPeriodicSubscription\" \"ZoneLocationEventSubscription\" \"ZoneStatusSubscription\" \"UserAreaSubscription\" \"UserDistanceSubscription\" + string subscriptionType = 1; + +} diff --git a/proto3/models/terminal_distance.proto b/proto3/models/terminal_distance.proto new file mode 100644 index 0000000..516d376 --- /dev/null +++ b/proto3/models/terminal_distance.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/time_stamp.proto"; + +message TerminalDistance { + + // Accuracy of the provided distance in meters + int32 accuracy = 0; + + // Distance from terminal to a location or between two terminals specified in meters + int32 distance = 1; + + TimeStamp timestamp = 2; + +} diff --git a/proto3/models/terminal_location.proto b/proto3/models/terminal_location.proto new file mode 100644 index 0000000..cf998ff --- /dev/null +++ b/proto3/models/terminal_location.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/location_info.proto"; +import public "models/retrieval_status.proto"; +import public "models/service_error.proto"; + +message TerminalLocation { + + // Address of the terminal to which the location information applies (e.g., 'sip' URI, 'tel' URI, 'acr' URI). + string address = 0; + + LocationInfo currentLocation = 1; + + ServiceError errorInformation = 2; + + RetrievalStatus locationRetrievalStatus = 3; + +} diff --git a/proto3/models/test_notification.proto b/proto3/models/test_notification.proto new file mode 100644 index 0000000..2dc610b --- /dev/null +++ b/proto3/models/test_notification.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; + +message TestNotification { + + Links _links = 0; + + // Shall be set to \"TestNotification\". + string notificationType = 1; + +} diff --git a/proto3/models/time_stamp.proto b/proto3/models/time_stamp.proto new file mode 100644 index 0000000..70acfb7 --- /dev/null +++ b/proto3/models/time_stamp.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message TimeStamp { + + // The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 nanoSeconds = 0; + + // The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 seconds = 1; + +} diff --git a/proto3/models/user_area_notification.proto b/proto3/models/user_area_notification.proto new file mode 100644 index 0000000..b15b9be --- /dev/null +++ b/proto3/models/user_area_notification.proto @@ -0,0 +1,42 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/civic_address.proto"; +import public "models/links.proto"; +import public "models/location_event_type.proto"; +import public "models/location_info.proto"; +import public "models/relative_location_info.proto"; +import public "models/time_stamp.proto"; + +message UserAreaNotification { + + Links _links = 0; + + // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). + string address = 1; + + CivicAddress civicInfo = 2; + + LocationInfo locationInfo = 3; + + // Shall be set to \"UserAreaNotification\". + string notificationType = 4; + + RelativeLocationInfo relativeLocationInfo = 5; + + TimeStamp timeStamp = 6; + + LocationEventType userLocationEvent = 7; + +} diff --git a/proto3/models/user_area_subscription.proto b/proto3/models/user_area_subscription.proto new file mode 100644 index 0000000..b274413 --- /dev/null +++ b/proto3/models/user_area_subscription.proto @@ -0,0 +1,58 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/area_info.proto"; +import public "models/links.proto"; +import public "models/location_event_type.proto"; +import public "models/reporting_ctrl.proto"; +import public "models/time_stamp.proto"; +import public "models/websock_notif_config.proto"; + +message UserAreaSubscription { + + Links _links = 0; + + // List of the users to be monitored. + repeated string addressList = 1; + + AreaInfo areaDefine = 2; + + // URI exposed by the client on which to receive notifications via HTTP. See note 1. + string callbackReference = 3; + + // A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + string clientCorrelator = 4; + + TimeStamp expiryDeadline = 5; + + // List of user event values to generate notifications for (these apply to address specified). + repeated LocationEventType locationEventCriteria = 6; + + ReportingCtrl reportingCtrl = 7; + + // This IE shall be set to true if a location estimate is required for each event report. + bool reportingLocationReq = 8; + + // Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + bool requestTestNotification = 9; + + // Shall be set to \"UserAreaSubscription\". + string subscriptionType = 10; + + // Number of meters of acceptable error. + float trackingAccuracy = 11; + + WebsockNotifConfig websockNotifConfig = 12; + +} diff --git a/proto3/models/user_distance_notification.proto b/proto3/models/user_distance_notification.proto new file mode 100644 index 0000000..8abe651 --- /dev/null +++ b/proto3/models/user_distance_notification.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/distance_criteria.proto"; +import public "models/links.proto"; +import public "models/time_stamp.proto"; +import public "models/user_list.proto"; + +message UserDistanceNotification { + + Links _links = 0; + + DistanceCriteria distanceEvent = 1; + + UserList monitoredUsers = 2; + + // Shall be set to \"UserDistanceNotification\". + string notificationType = 3; + + TimeStamp timeStamp = 4; + +} diff --git a/proto3/models/user_distance_subscription.proto b/proto3/models/user_distance_subscription.proto new file mode 100644 index 0000000..a52c455 --- /dev/null +++ b/proto3/models/user_distance_subscription.proto @@ -0,0 +1,59 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/distance_criteria.proto"; +import public "models/links.proto"; +import public "models/reporting_ctrl.proto"; +import public "models/time_stamp.proto"; +import public "models/websock_notif_config.proto"; + +message UserDistanceSubscription { + + Links _links = 0; + + // URI exposed by the client on which to receive notifications via HTTP. See note 1. + string callbackReference = 1; + + bool checkImmediate = 2; + + // A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + string clientCorrelator = 3; + + DistanceCriteria criteria = 4; + + // Distance between users that shall be monitored. The unit is meter. + float distance = 5; + + TimeStamp expiryDeadline = 6; + + // 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. If the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored. If the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here. + repeated string monitoredAddress = 7; + + // If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). Reference to a group could be provided here if supported by implementation. + repeated string referenceAddress = 8; + + ReportingCtrl reportingCtrl = 9; + + // Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + bool requestTestNotification = 10; + + // Shall be set to \"UserDistanceSubscription\". + string subscriptionType = 11; + + // Number of meters of acceptable error in tracking distance. + float trackingAccuracy = 12; + + WebsockNotifConfig websockNotifConfig = 13; + +} diff --git a/proto3/models/user_event_para.proto b/proto3/models/user_event_para.proto new file mode 100644 index 0000000..37fb1c6 --- /dev/null +++ b/proto3/models/user_event_para.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/occurrence_info.proto"; + +message UserEventPara { + + // One or more access points forming a monitoring area that could be any shape. See note 1. + repeated string accessPointList = 0; + + OccurrenceInfo occurrenceInfo = 1; + + // This IE shall be set to true if a location estimate is required for each event report. + bool reportingLocationReq = 2; + + // Identifier of zone (e.g. zone001) to monitor. See note 1. + string zoneId = 3; + +} diff --git a/proto3/models/user_info.proto b/proto3/models/user_info.proto new file mode 100644 index 0000000..7d6b570 --- /dev/null +++ b/proto3/models/user_info.proto @@ -0,0 +1,45 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/civic_address.proto"; +import public "models/location_info.proto"; +import public "models/relative_location_info.proto"; +import public "models/time_stamp.proto"; + +message UserInfo { + + // Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1. + string address = 0; + + // The identity of the access point the user is currently on, see note 1. + string AccessPointId = 1; + + // The identity of the zone the user is currently within, see note 1. + string zoneId = 2; + + // Self-referring URL, see note 1. + string resourceURL = 3; + + TimeStamp timestamp = 4; + + LocationInfo locationInfo = 5; + + CivicAddress civicInfo = 6; + + // Reserved for future use. + string ancillaryInfo = 7; + + RelativeLocationInfo relativeLocationInfo = 8; + +} diff --git a/proto3/models/user_list.proto b/proto3/models/user_list.proto new file mode 100644 index 0000000..df71aef --- /dev/null +++ b/proto3/models/user_list.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_info.proto"; + +message UserList { + + // Self referring URL + string resourceURL = 0; + + // Collection of the zone information list. + repeated UserInfo user = 1; + +} diff --git a/proto3/models/user_location_event_notification.proto b/proto3/models/user_location_event_notification.proto new file mode 100644 index 0000000..f3ac3a2 --- /dev/null +++ b/proto3/models/user_location_event_notification.proto @@ -0,0 +1,48 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/civic_address.proto"; +import public "models/links.proto"; +import public "models/location_event_type.proto"; +import public "models/location_info.proto"; +import public "models/relative_location_info.proto"; +import public "models/time_stamp.proto"; + +message UserLocationEventNotification { + + Links _links = 0; + + // The identity of the access point. For the events of \"ENTERING_AREA_EVENT\", it indicates the access point that the user is currently within. For the event of \"LEAVING_AREA_EVENT\", it indicates the access point that the user used to be within. See note 2. + string accessPointId = 1; + + // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). + string address = 2; + + CivicAddress civicInfo = 3; + + LocationInfo locationInfo = 4; + + // Shall be set to \"UserLocationEventNotification\". + string notificationType = 5; + + RelativeLocationInfo relativeLocationInfo = 6; + + TimeStamp timeStamp = 7; + + LocationEventType userLocationEvent = 8; + + // The identity of the zone. For the events of \"ENTERING_AREA_EVENT\", it is the zone that the user is currently within. For the event of \"LEAVING_AREA_EVENT\", it is the zone that the user used to be within. See note 2. + string zoneId = 9; + +} diff --git a/proto3/models/user_location_event_subscription.proto b/proto3/models/user_location_event_subscription.proto new file mode 100644 index 0000000..2e219ba --- /dev/null +++ b/proto3/models/user_location_event_subscription.proto @@ -0,0 +1,49 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; +import public "models/location_event_type.proto"; +import public "models/time_stamp.proto"; +import public "models/user_event_para.proto"; +import public "models/websock_notif_config.proto"; + +message UserLocationEventSubscription { + + Links _links = 0; + + // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor. + string address = 1; + + // URI exposed by the client on which to receive notifications via HTTP. See note 1. + string callbackReference = 2; + + // A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + string clientCorrelator = 3; + + TimeStamp expiryDeadline = 4; + + // List of user event values to generate notifications for (these apply to address specified). + repeated LocationEventType locationEventCriteria = 5; + + // Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + bool requestTestNotification = 6; + + // Shall be set to \"UserLocationEventSubscription\". + string subscriptionType = 7; + + UserEventPara userEventPara = 8; + + WebsockNotifConfig websockNotifConfig = 9; + +} diff --git a/proto3/models/user_location_periodic_notification.proto b/proto3/models/user_location_periodic_notification.proto new file mode 100644 index 0000000..08d3e79 --- /dev/null +++ b/proto3/models/user_location_periodic_notification.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/civic_address.proto"; +import public "models/links.proto"; +import public "models/location_info.proto"; +import public "models/notification_result.proto"; +import public "models/relative_location_info.proto"; +import public "models/time_stamp.proto"; + +message UserLocationPeriodicNotification { + + Links _links = 0; + + // The identity of the access point that the user is currently within. See note 2. + string accessPointId = 1; + + // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). + string address = 2; + + CivicAddress civicInfo = 3; + + // Shall be set to true if it is a final notification. + bool isFinalNotification = 4; + + LocationInfo locationInfo = 5; + + // Shall be set to \"UserLocationPeriodicNotification\". + string notificationType = 6; + + RelativeLocationInfo relativeLocationInfo = 7; + + NotificationResult result = 8; + + TimeStamp timeStamp = 9; + + // The identity of the zone that the user is currently within. See note 2. + string zoneId = 10; + +} diff --git a/proto3/models/user_location_periodic_subscription.proto b/proto3/models/user_location_periodic_subscription.proto new file mode 100644 index 0000000..4f450f8 --- /dev/null +++ b/proto3/models/user_location_periodic_subscription.proto @@ -0,0 +1,45 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; +import public "models/periodic_event_info.proto"; +import public "models/time_stamp.proto"; +import public "models/websock_notif_config.proto"; + +message UserLocationPeriodicSubscription { + + Links _links = 0; + + // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor. + string address = 1; + + // URI exposed by the client on which to receive notifications via HTTP. See note 1. + string callbackReference = 2; + + // A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + string clientCorrelator = 3; + + TimeStamp expiryDeadline = 4; + + PeriodicEventInfo periodicEventInfo = 5; + + // Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + bool requestTestNotification = 6; + + // Shall be set to \"UserLocationPeriodicSubscription\". + string subscriptionType = 7; + + WebsockNotifConfig websockNotifConfig = 8; + +} diff --git a/proto3/models/user_notification_post_request.proto b/proto3/models/user_notification_post_request.proto new file mode 100644 index 0000000..5d0517d --- /dev/null +++ b/proto3/models/user_notification_post_request.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_location_event_notification.proto"; + +message UserNotificationPOSTRequest { + + UserLocationEventNotification userLocationEventNotification = 0; + + UserLocationEventNotification userLocationPeriodicNotification = 1; + +} diff --git a/proto3/models/user_sub_get200_response.proto b/proto3/models/user_sub_get200_response.proto new file mode 100644 index 0000000..74f8e19 --- /dev/null +++ b/proto3/models/user_sub_get200_response.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_location_event_subscription.proto"; +import public "models/user_location_periodic_subscription.proto"; + +message UserSubGET200Response { + + UserLocationEventSubscription userLocationEventSubscription = 0; + + UserLocationPeriodicSubscription userLocationPeriodicSubscription = 1; + +} diff --git a/proto3/models/user_sub_list_get200_response.proto b/proto3/models/user_sub_list_get200_response.proto new file mode 100644 index 0000000..d63a515 --- /dev/null +++ b/proto3/models/user_sub_list_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/notification_subscription_list.proto"; + +message UserSubListGET200Response { + + NotificationSubscriptionList notificationSubscriptionList = 0; + +} diff --git a/proto3/models/user_sub_post_request.proto b/proto3/models/user_sub_post_request.proto new file mode 100644 index 0000000..ac6a69b --- /dev/null +++ b/proto3/models/user_sub_post_request.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_location_event_subscription.proto"; +import public "models/user_location_periodic_subscription.proto"; + +message UserSubPOSTRequest { + + UserLocationEventSubscription userLocationEventSubscription = 0; + + UserLocationPeriodicSubscription userLocationPeriodicSubscription = 1; + +} diff --git a/proto3/models/users_get200_response.proto b/proto3/models/users_get200_response.proto new file mode 100644 index 0000000..b352ba3 --- /dev/null +++ b/proto3/models/users_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/user_list.proto"; + +message UsersGET200Response { + + UserList userList = 0; + +} diff --git a/proto3/models/velocity.proto b/proto3/models/velocity.proto new file mode 100644 index 0000000..9bf924a --- /dev/null +++ b/proto3/models/velocity.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message Velocity { + + // Bearing, expressed in the range 0° to 360°, as defined in [14]. + int32 bearing = 1; + + // Horizontal speed, expressed in km/h and defined in [14]. + int32 horizontalSpeed = 2; + + // Horizontal uncertainty, as defined in [14]. Present only if \"velocityType\" equals 3 or 4. + int32 uncertainty = 3; + + // Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert + enum VelocityTypeEnum { + VelocityTypeEnum_NULL = 0; + } + + VelocityTypeEnum velocityType = 4; + + // Vertical speed, expressed in km/h and defined in [14]. Present only if \"velocityType\" equals 2 or 4. + int32 verticalSpeed = 5; + + // Vertical uncertainty, as defined in [14]. Present only if \"velocityType\" equals 4. + int32 verticalUncertainty = 6; + +} diff --git a/proto3/models/websock_notif_config.proto b/proto3/models/websock_notif_config.proto new file mode 100644 index 0000000..ddb5e49 --- /dev/null +++ b/proto3/models/websock_notif_config.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message WebsockNotifConfig { + + // Set to true by the service consumer to indicate that Websocket delivery is requested. + bool requestWebsocketUri = 0; + + // Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications. + string websocketUri = 1; + +} diff --git a/proto3/models/zone_get_by_id200_response.proto b/proto3/models/zone_get_by_id200_response.proto new file mode 100644 index 0000000..5e97b11 --- /dev/null +++ b/proto3/models/zone_get_by_id200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/zone_info.proto"; + +message ZoneGetById200Response { + + ZoneInfo zoneInfo = 0; + +} diff --git a/proto3/models/zone_info.proto b/proto3/models/zone_info.proto new file mode 100644 index 0000000..a12e7c5 --- /dev/null +++ b/proto3/models/zone_info.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + + +message ZoneInfo { + + // The number of access points within the zone + int32 numberOfAccessPoints = 0; + + // Number of inoperable access points within the zone. + int32 numberOfUnserviceableAccessPoints = 1; + + // The number of users currently on the access point. + int32 numberOfUsers = 2; + + // Self referring URL + string resourceURL = 3; + + // Identifier of zone + string zoneId = 4; + +} diff --git a/proto3/models/zone_list.proto b/proto3/models/zone_list.proto new file mode 100644 index 0000000..974dca7 --- /dev/null +++ b/proto3/models/zone_list.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/zone_info.proto"; + +message ZoneList { + + // Self referring URL + string resourceURL = 0; + + // Collection of the zone information list. + repeated ZoneInfo zone = 1; + +} diff --git a/proto3/models/zone_location_event_notification.proto b/proto3/models/zone_location_event_notification.proto new file mode 100644 index 0000000..dcd24cd --- /dev/null +++ b/proto3/models/zone_location_event_notification.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; +import public "models/location_event_type.proto"; +import public "models/time_stamp.proto"; + +message ZoneLocationEventNotification { + + Links _links = 0; + + // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). + string address = 1; + + // Shall be set to \"ZoneLocationEventNotification\". + string notificationType = 2; + + TimeStamp timeStamp = 3; + + LocationEventType userLocationEvent = 4; + + // The identity of the zone. + string zoneId = 5; + +} diff --git a/proto3/models/zone_location_event_subscription.proto b/proto3/models/zone_location_event_subscription.proto new file mode 100644 index 0000000..bcf295c --- /dev/null +++ b/proto3/models/zone_location_event_subscription.proto @@ -0,0 +1,52 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; +import public "models/location_event_type.proto"; +import public "models/reporting_ctrl.proto"; +import public "models/time_stamp.proto"; +import public "models/websock_notif_config.proto"; + +message ZoneLocationEventSubscription { + + Links _links = 0; + + // List of the users to be monitored. If not present, all the users need to be monitored. + repeated string addressList = 1; + + // URI exposed by the client on which to receive notifications via HTTP. See note 1. + string callbackReference = 2; + + // A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + string clientCorrelator = 3; + + TimeStamp expiryDeadline = 4; + + // List of user event values to generate notifications for. + repeated LocationEventType locationEventCriteria = 5; + + ReportingCtrl reportingCtrl = 6; + + // Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + bool requestTestNotification = 7; + + // Shall be set to \"ZoneLocationEventSubscription\". + string subscriptionType = 8; + + WebsockNotifConfig websockNotifConfig = 9; + + // Identifier of zone (e.g. zone001) to monitor. + string zoneId = 10; + +} diff --git a/proto3/models/zone_notification_post_request.proto b/proto3/models/zone_notification_post_request.proto new file mode 100644 index 0000000..d4e0615 --- /dev/null +++ b/proto3/models/zone_notification_post_request.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/zone_location_event_notification.proto"; +import public "models/zone_status_notification.proto"; + +message ZoneNotificationPOSTRequest { + + ZoneLocationEventNotification zoneLocationEventNotification = 0; + + ZoneStatusNotification zoneStatusNotification = 1; + +} diff --git a/proto3/models/zone_status_notification.proto b/proto3/models/zone_status_notification.proto new file mode 100644 index 0000000..4c6d611 --- /dev/null +++ b/proto3/models/zone_status_notification.proto @@ -0,0 +1,43 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; +import public "models/operation_status.proto"; +import public "models/time_stamp.proto"; + +message ZoneStatusNotification { + + Links _links = 1; + + // Identifier of an access point (e.g. ap01). Shall be included when userNumEvent related with access point or operationStatus is included. + string accessPointId = 2; + + // Shall be set to \"ZoneStatusNotification\". + string notificationType = 3; + + OperationStatus operationStatus = 4; + + TimeStamp timeStamp = 5; + + // Shall be present when ZoneStatusSubscription includes upperNumberOfUsersZoneThreshold, lowerNumberOfUsersZoneThreshold, upperNumberOfUsersAPThreshold or lowerNumberOfUsersAPThreshold, and the number of users in a zone or an access point crosses the threshold defined in the subscription: 1 = OVER_ZONE_UPPER_THD. 2 = UNDER_ZONE_LOWER_THD. 3 = OVER_AP_UPPER_THD. 4 = UNDER_AP_LOWER_THD. + enum UserNumEventEnum { + UserNumEventEnum_NULL = 0; + } + + UserNumEventEnum userNumEvent = 6; + + // The identity of the zone. + string zoneId = 7; + +} diff --git a/proto3/models/zone_status_subscription.proto b/proto3/models/zone_status_subscription.proto new file mode 100644 index 0000000..e0ea144 --- /dev/null +++ b/proto3/models/zone_status_subscription.proto @@ -0,0 +1,61 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/links.proto"; +import public "models/operation_status.proto"; +import public "models/reporting_ctrl.proto"; +import public "models/time_stamp.proto"; +import public "models/websock_notif_config.proto"; + +message ZoneStatusSubscription { + + Links _links = 0; + + // URI exposed by the client on which to receive notifications via HTTP. See note 1. + string callbackReference = 1; + + // A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + string clientCorrelator = 2; + + TimeStamp expiryDeadline = 3; + + // Threshold number of users in an access point which if crossed downward shall cause a notification + int32 lowerNumberOfUsersAPThreshold = 4; + + // Threshold number of users in a zone which if crossed downward shall cause a notification + int32 lowerNumberOfUsersZoneThreshold = 5; + + // List of operation status values to generate notifications for (these apply to all access points within a zone). See note 3. + repeated OperationStatus operationStatus = 6; + + ReportingCtrl reportingCtrl = 7; + + // Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + bool requestTestNotification = 8; + + // Shall be set to \"ZoneStatusSubscription\". + string subscriptionType = 9; + + // Threshold number of users in an access point which if crossed upward shall cause a notification. + int32 upperNumberOfUsersAPThreshold = 10; + + // Threshold number of users in a zone which if crossed upward shall cause a notification. + int32 upperNumberOfUsersZoneThreshold = 11; + + WebsockNotifConfig websockNotifConfig = 12; + + // Identifier of zone (e.g. zone001) to monitor. + string zoneId = 13; + +} diff --git a/proto3/models/zone_sub_get200_response.proto b/proto3/models/zone_sub_get200_response.proto new file mode 100644 index 0000000..59337ae --- /dev/null +++ b/proto3/models/zone_sub_get200_response.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/zone_location_event_subscription.proto"; +import public "models/zone_status_subscription.proto"; + +message ZoneSubGET200Response { + + ZoneLocationEventSubscription zoneLocationEventSubscription = 0; + + ZoneStatusSubscription zoneStatusSubscription = 1; + +} diff --git a/proto3/models/zone_sub_list_get200_response.proto b/proto3/models/zone_sub_list_get200_response.proto new file mode 100644 index 0000000..820d8e1 --- /dev/null +++ b/proto3/models/zone_sub_list_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/notification_subscription_list.proto"; + +message ZoneSubListGET200Response { + + NotificationSubscriptionList notificationSubscriptionList = 0; + +} diff --git a/proto3/models/zone_sub_post_request.proto b/proto3/models/zone_sub_post_request.proto new file mode 100644 index 0000000..317adc1 --- /dev/null +++ b/proto3/models/zone_sub_post_request.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/zone_location_event_subscription.proto"; +import public "models/zone_status_subscription.proto"; + +message ZoneSubPOSTRequest { + + ZoneLocationEventSubscription zoneLocationEventSubscription = 0; + + ZoneStatusSubscription zoneStatusSubscription = 1; + +} diff --git a/proto3/models/zones_get200_response.proto b/proto3/models/zones_get200_response.proto new file mode 100644 index 0000000..68488f1 --- /dev/null +++ b/proto3/models/zones_get200_response.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013; + +import public "models/zone_list.proto"; + +message ZonesGET200Response { + + ZoneList zoneList = 0; + +} diff --git a/proto3/services/location_service.proto b/proto3/services/location_service.proto new file mode 100644 index 0000000..ef7509e --- /dev/null +++ b/proto3/services/location_service.proto @@ -0,0 +1,265 @@ +/* + ETSI GS MEC 013 - Location API + + The ETSI MEC ISG MEC013 Location API described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec013.services.locationservice; + +import "google/protobuf/empty.proto"; +import public "models/access_point_get_by_id200_response.proto"; +import public "models/access_points_get200_response.proto"; +import public "models/area_sub_get200_response.proto"; +import public "models/area_sub_list_get200_response.proto"; +import public "models/area_sub_post201_response.proto"; +import public "models/area_sub_post_request.proto"; +import public "models/area_sub_put_request.proto"; +import public "models/distance_get200_response.proto"; +import public "models/distance_get_location_parameter.proto"; +import public "models/distance_sub_get200_response.proto"; +import public "models/distance_sub_list_get200_response.proto"; +import public "models/distance_sub_post_request.proto"; +import public "models/problem_details.proto"; +import public "models/user_sub_get200_response.proto"; +import public "models/user_sub_list_get200_response.proto"; +import public "models/user_sub_post_request.proto"; +import public "models/users_get200_response.proto"; +import public "models/zone_get_by_id200_response.proto"; +import public "models/zone_sub_get200_response.proto"; +import public "models/zone_sub_list_get200_response.proto"; +import public "models/zone_sub_post_request.proto"; +import public "models/zones_get200_response.proto"; + +service LocationService { + rpc AccessPointGetById (AccessPointGetByIdRequest) returns (AccessPointGetById200Response); + + rpc AccessPointsGET (AccessPointsGETRequest) returns (AccessPointsGET200Response); + + rpc AreaSubDELETE (AreaSubDELETERequest) returns (google.protobuf.Empty); + + rpc AreaSubGET (AreaSubGETRequest) returns (AreaSubGET200Response); + + rpc AreaSubListGET (AreaSubListGETRequest) returns (AreaSubListGET200Response); + + rpc AreaSubPOST (AreaSubPOSTRequest) returns (AreaSubPOST201Response); + + rpc AreaSubPUT (AreaSubPUTRequest) returns (AreaSubPUTRequest); + + rpc DistanceGET (DistanceGETRequest) returns (DistanceGET200Response); + + rpc DistanceSubDELETE (DistanceSubDELETERequest) returns (google.protobuf.Empty); + + rpc DistanceSubGET (DistanceSubGETRequest) returns (DistanceSubGET200Response); + + rpc DistanceSubListGET (google.protobuf.Empty) returns (DistanceSubListGET200Response); + + rpc DistanceSubPOST (DistanceSubPOSTRequest) returns (DistanceSubPOSTRequest); + + rpc DistanceSubPUT (DistanceSubPUTRequest) returns (DistanceSubPOSTRequest); + + rpc UserSubDELETE (UserSubDELETERequest) returns (google.protobuf.Empty); + + rpc UserSubGET (UserSubGETRequest) returns (UserSubGET200Response); + + rpc UserSubListGET (UserSubListGETRequest) returns (UserSubListGET200Response); + + rpc UserSubPOST (UserSubPOSTRequest) returns (UserSubPOSTRequest); + + rpc UserSubPUT (UserSubPUTRequest) returns (UserSubPOSTRequest); + + rpc UsersGET (UsersGETRequest) returns (UsersGET200Response); + + rpc ZoneGetById (ZoneGetByIdRequest) returns (ZoneGetById200Response); + + rpc ZoneSubDELETE (ZoneSubDELETERequest) returns (google.protobuf.Empty); + + rpc ZoneSubGET (ZoneSubGETRequest) returns (ZoneSubGET200Response); + + rpc ZoneSubListGET (ZoneSubListGETRequest) returns (ZoneSubListGET200Response); + + rpc ZoneSubPOST (ZoneSubPOSTRequest) returns (ZoneSubPOSTRequest); + + rpc ZoneSubPUT (ZoneSubPUTRequest) returns (ZoneSubPOSTRequest); + + rpc ZonesGET (ZonesGETRequest) returns (ZonesGET200Response); + +} + +message AccessPointGetByIdRequest { + // Indentifier of zone + string zoneId = 1; + // Identifier of access Point + string accessPointId = 2; + +} + +message AccessPointsGETRequest { + // Indentifier of zone + string zoneId = 1; + // Identifier of access point + repeated string accessPointId = 2; + +} + +message AreaSubDELETERequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message AreaSubGETRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message AreaSubListGETRequest { + // Query parameter to filter on a specific subscription type. Permitted values: event + string subscriptionType = 1; + +} + +message AreaSubPOSTRequest { + // Subscription to be created + AreaSubPOSTRequest areaSubPOSTRequest = 1; + +} + +message AreaSubPUTRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + // Subscription to be modified + AreaSubPUTRequest areaSubPUTRequest = 2; + +} + +message DistanceGETRequest { + // One or two addresses of user to check. The second \"address\" parameter shall not be included when the distance between a user and a location is requested. The second \"address\" parameter shall be included when a location is not provided. + repeated string address = 1; + // Shall not be included when the distance between two terminals is requested. + DistanceGETLocationParameter location = 2; + +} + +message DistanceSubDELETERequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message DistanceSubGETRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message DistanceSubPOSTRequest { + // The POST method is used to create a new subscription to user distance notifications. + DistanceSubPOSTRequest distanceSubPOSTRequest = 1; + +} + +message DistanceSubPUTRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + // Subscription to be modified + DistanceSubPOSTRequest distanceSubPOSTRequest = 2; + +} + +message UserSubDELETERequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message UserSubGETRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message UserSubListGETRequest { + // Query parameter to filter on a specific subscription type. Permitted values: -event -periodic + string subscriptionType = 1; + // Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI). + string address = 2; + +} + +message UserSubPOSTRequest { + // Subscription to be created + UserSubPOSTRequest userSubPOSTRequest = 1; + +} + +message UserSubPUTRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + // Subscription to be modified + UserSubPOSTRequest userSubPOSTRequest = 2; + +} + +message UsersGETRequest { + // Identifier of zone + repeated string zoneId = 1; + // Identifier of access point + repeated string accessPointId = 2; + // Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI). + repeated string address = 3; + +} + +message ZoneGetByIdRequest { + // Indentifier of zone + string zoneId = 1; + +} + +message ZoneSubDELETERequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message ZoneSubGETRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + +} + +message ZoneSubListGETRequest { + // Query parameter to filter on a specific subscription type. Permitted values: -event -status + string subscriptionType = 1; + // The identity of the zone + string zoneId = 2; + +} + +message ZoneSubPOSTRequest { + // Subscription to be created + ZoneSubPOSTRequest zoneSubPOSTRequest = 1; + +} + +message ZoneSubPUTRequest { + // Subscription Identifier, specifically the \"self\" returned in the subscription request + string subscriptionId = 1; + // Subscription to be modified + ZoneSubPOSTRequest zoneSubPOSTRequest = 2; + +} + +message ZonesGETRequest { + // Identifier of zone + repeated string zoneId = 1; + +} + -- GitLab From ffe8fcdb88687ae9c7dd19bb464e4c5fc1f723e8 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 17 Jan 2023 19:55:31 +0500 Subject: [PATCH 10/16] fix identation in LocationAPI.yaml and json file --- LocationAPI.json | 53 +----------------------------------------------- LocationAPI.yaml | 52 +++++------------------------------------------ 2 files changed, 6 insertions(+), 99 deletions(-) diff --git a/LocationAPI.json b/LocationAPI.json index 6484bc0..902615a 100644 --- a/LocationAPI.json +++ b/LocationAPI.json @@ -1322,7 +1322,7 @@ "$ref": "#/components/schemas/UserLocationEventNotification" }, "userLocationPeriodicNotification": { - "$ref": "#/components/schemas/UserLocationEventNotification" + "$ref": "#/components/schemas/UserLocationPeriodicNotification" } }, "examples": [ @@ -1957,9 +1957,6 @@ }, "components": { "responses": { - "200": { - "description": "OK" - }, "204": { "description": "No Content" }, @@ -2023,16 +2020,6 @@ } } }, - "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": { @@ -2479,44 +2466,6 @@ "type": "object", "x-etsi-ref": "6.3.3" }, - "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" - }, "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": { diff --git a/LocationAPI.yaml b/LocationAPI.yaml index dcc56a0..bd8566e 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -885,7 +885,7 @@ paths: userLocationEventNotification: $ref: '#/components/schemas/UserLocationEventNotification' userLocationPeriodicNotification: - $ref: '#/components/schemas/UserLocationEventNotification' + $ref: '#/components/schemas/UserLocationPeriodicNotification' examples: - userLocationEventNotification: notificationType: 'UserLocationEventNotification' @@ -1298,8 +1298,6 @@ paths: x-swagger-router-controller: 'subscriptions' components: responses: - '200': - description: 'OK' '204': description: 'No Content' '400': @@ -1340,14 +1338,6 @@ components: 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: @@ -1666,7 +1656,7 @@ components: 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon' enum: - - SEE_DESCRIPTION + - SEE_DESCRIPTION type: integer x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Enum_inlined @@ -1709,7 +1699,7 @@ components: 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert' enum: - - SEE_DESCRIPTION + - SEE_DESCRIPTION type: integer x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Enum_inlined @@ -1745,38 +1735,6 @@ components: type: object x-etsi-ref: 6.3.3 - 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 - 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: @@ -2020,7 +1978,7 @@ components: 3 = OVER_AP_UPPER_THD. 4 = UNDER_AP_LOWER_THD.' enum: - - SEE_DESCRIPTION + - SEE_DESCRIPTION type: integer x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Enum(inlined) @@ -2874,7 +2832,7 @@ components: 1 = CIRCLE. 2 = POLYGON' enum: - - SEE_DESCRIPTION + - SEE_DESCRIPTION type: integer x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Enum(inlined) -- GitLab From 7ffa626682e9ebcb928bb060572cef4cb1936a23 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 17 Jan 2023 20:04:13 +0500 Subject: [PATCH 11/16] taste commit to check Pipeline --- LocationAPI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LocationAPI.yaml b/LocationAPI.yaml index bd8566e..e94af7d 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -1967,7 +1967,7 @@ components: # x-etsi-mec-origin-type': OperationStatus $ref: '#/components/schemas/OperationStatus' timeStamp: - # description': Time stamp. + # description': Time stamp # x-etsi-mec-cardinality': 0..1 # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' -- GitLab From a1720858478b50fb3e25d45147017ef42c4d83d9 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 17 Jan 2023 20:10:31 +0500 Subject: [PATCH 12/16] fix identation in LocationAPI.yaml and json files --- LocationAPI.json | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ LocationAPI.yaml | 44 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/LocationAPI.json b/LocationAPI.json index 902615a..d912395 100644 --- a/LocationAPI.json +++ b/LocationAPI.json @@ -1957,6 +1957,9 @@ }, "components": { "responses": { + "200": { + "description": "OK" + }, "204": { "description": "No Content" }, @@ -2020,6 +2023,16 @@ } } }, + "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": { @@ -2466,6 +2479,44 @@ "type": "object", "x-etsi-ref": "6.3.3" }, + "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" + }, "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": { diff --git a/LocationAPI.yaml b/LocationAPI.yaml index e94af7d..71653d4 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -1298,6 +1298,8 @@ paths: x-swagger-router-controller: 'subscriptions' components: responses: + '200': + description: 'OK' '204': description: 'No Content' '400': @@ -1338,6 +1340,14 @@ components: 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: @@ -1735,6 +1745,38 @@ components: type: object x-etsi-ref: 6.3.3 + 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 + 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: @@ -1967,7 +2009,7 @@ components: # x-etsi-mec-origin-type': OperationStatus $ref: '#/components/schemas/OperationStatus' timeStamp: - # description': Time stamp + # description': Time stamp. # x-etsi-mec-cardinality': 0..1 # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' -- GitLab From 2c462b816fee02343692f2b2da6cd365f841f7fd Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Tue, 17 Jan 2023 20:17:52 +0500 Subject: [PATCH 13/16] fix identation in LocationAPI.yaml and json file --- LocationAPI.json | 8 ++++---- LocationAPI.yaml | 21 +++++++++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/LocationAPI.json b/LocationAPI.json index d912395..8adc066 100644 --- a/LocationAPI.json +++ b/LocationAPI.json @@ -2397,7 +2397,7 @@ }, "shape": { "description": "Shape information, as detailed in [14], associated with the reported location coordinate: 1 = Ellipsoid_Arc 2 = ellipsoid_Point 3 = ellipsoid_Point_Altitude 4 = ellipsoid_Point_Altitude_Uncert_Ellipsoid 5 = ellipsoid_Point_Uncert_Circle 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon", - "enum": ["SEE_DESCRIPTION"], + "enum": [1, 2, 3, 4, 5, 6, 7], "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "Enum_inlined" @@ -2439,7 +2439,7 @@ }, "velocityType": { "description": "Velocity information, as detailed in [14], associated with the reported location coordinate: 1 = Horizontal 2 = Horizontal_Vertical 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert", - "enum": ["SEE_DESCRIPTION"], + "enum": [1, 2, 3, 4], "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "Enum_inlined" @@ -2782,7 +2782,7 @@ }, "userNumEvent": { "description": "Shall be present when ZoneStatusSubscription includes upperNumberOfUsersZoneThreshold, lowerNumberOfUsersZoneThreshold, upperNumberOfUsersAPThreshold or lowerNumberOfUsersAPThreshold, and the number of users in a zone or an access point crosses the threshold defined in the subscription: 1 = OVER_ZONE_UPPER_THD. 2 = UNDER_ZONE_LOWER_THD. 3 = OVER_AP_UPPER_THD. 4 = UNDER_AP_LOWER_THD.", - "enum": ["SEE_DESCRIPTION"], + "enum": [1, 2, 3, 4], "type": "integer", "x-etsi-mec-cardinality": "0..1", "x-etsi-mec-origin-type": "Enum(inlined)" @@ -3640,7 +3640,7 @@ }, "shape": { "description": "The shape of the area monitored: 1 = CIRCLE. 2 = POLYGON", - "enum": ["SEE_DESCRIPTION"], + "enum": [1, 2], "type": "integer", "x-etsi-mec-cardinality": "1", "x-etsi-mec-origin-type": "Enum(inlined)" diff --git a/LocationAPI.yaml b/LocationAPI.yaml index 71653d4..e76f86e 100644 --- a/LocationAPI.yaml +++ b/LocationAPI.yaml @@ -1666,7 +1666,13 @@ components: 6 = ellipsoid_Point_Uncert_Ellipse 7 = polygon' enum: - - SEE_DESCRIPTION + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 type: integer x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Enum_inlined @@ -1709,7 +1715,10 @@ components: 3 = Horizontal_Uncert 4 = Horizontal_Vertical_Uncert' enum: - - SEE_DESCRIPTION + - 1 + - 2 + - 3 + - 4 type: integer x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Enum_inlined @@ -2020,7 +2029,10 @@ components: 3 = OVER_AP_UPPER_THD. 4 = UNDER_AP_LOWER_THD.' enum: - - SEE_DESCRIPTION + - 1 + - 2 + - 3 + - 4 type: integer x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Enum(inlined) @@ -2874,7 +2886,8 @@ components: 1 = CIRCLE. 2 = POLYGON' enum: - - SEE_DESCRIPTION + - 1 + - 2 type: integer x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Enum(inlined) -- GitLab From 25cbc156a92c25798ce650c70d8a5b92ce113ee1 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 23 Jan 2023 15:39:49 +0500 Subject: [PATCH 14/16] fix errors in Location API proto3 --- proto3-gen.md | 4 ++-- proto3/README.md | 4 ++-- proto3/models/access_point_get_by_id200_response.proto | 2 +- proto3/models/access_point_info.proto | 2 +- proto3/models/access_point_list.proto | 2 +- proto3/models/access_points_get200_response.proto | 2 +- proto3/models/area_notification_post_request.proto | 2 +- proto3/models/area_sub_get200_response.proto | 2 +- proto3/models/area_sub_list_get200_response.proto | 2 +- proto3/models/area_sub_post201_response.proto | 2 +- proto3/models/area_sub_post_request.proto | 2 +- proto3/models/area_sub_put_request.proto | 2 +- proto3/models/civic_address.proto | 2 +- proto3/models/distance_get200_response.proto | 2 +- proto3/models/distance_get_location_parameter.proto | 2 +- proto3/models/distance_notification_post_request.proto | 2 +- proto3/models/distance_sub_get200_response.proto | 2 +- proto3/models/distance_sub_list_get200_response.proto | 2 +- proto3/models/distance_sub_post_request.proto | 2 +- proto3/models/link_type.proto | 2 +- proto3/models/links.proto | 2 +- proto3/models/map_info.proto | 3 +-- proto3/models/notification_subscription_list.proto | 2 +- proto3/models/origin.proto | 2 +- proto3/models/periodic_event_info.proto | 2 +- proto3/models/point.proto | 2 +- proto3/models/problem_details.proto | 2 +- proto3/models/relative_location_info.proto | 2 +- proto3/models/reporting_ctrl.proto | 2 +- proto3/models/service_error.proto | 2 +- proto3/models/subscription.proto | 2 +- proto3/models/terminal_distance.proto | 2 +- proto3/models/terminal_location.proto | 2 +- proto3/models/test_notification.proto | 2 +- proto3/models/time_stamp.proto | 2 +- proto3/models/user_area_notification.proto | 2 +- proto3/models/user_area_subscription.proto | 2 +- proto3/models/user_distance_notification.proto | 2 +- proto3/models/user_distance_subscription.proto | 2 +- proto3/models/user_event_para.proto | 2 +- proto3/models/user_info.proto | 2 +- proto3/models/user_list.proto | 2 +- proto3/models/user_location_event_notification.proto | 2 +- proto3/models/user_location_event_subscription.proto | 2 +- proto3/models/user_location_periodic_notification.proto | 2 +- proto3/models/user_location_periodic_subscription.proto | 2 +- proto3/models/user_notification_post_request.proto | 2 +- proto3/models/user_sub_get200_response.proto | 2 +- proto3/models/user_sub_list_get200_response.proto | 2 +- proto3/models/user_sub_post_request.proto | 2 +- proto3/models/users_get200_response.proto | 2 +- proto3/models/websock_notif_config.proto | 2 +- proto3/models/zone_get_by_id200_response.proto | 2 +- proto3/models/zone_info.proto | 2 +- proto3/models/zone_list.proto | 2 +- proto3/models/zone_location_event_notification.proto | 2 +- proto3/models/zone_location_event_subscription.proto | 2 +- proto3/models/zone_notification_post_request.proto | 2 +- proto3/models/zone_status_subscription.proto | 2 +- proto3/models/zone_sub_get200_response.proto | 2 +- proto3/models/zone_sub_list_get200_response.proto | 2 +- proto3/models/zone_sub_post_request.proto | 2 +- proto3/models/zones_get200_response.proto | 2 +- 63 files changed, 65 insertions(+), 66 deletions(-) diff --git a/proto3-gen.md b/proto3-gen.md index 8d74d7e..36c1278 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -50,7 +50,7 @@ Below are some code generation examples for Python, Go and Ruby. For other langu - Models: ```sh - $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs ./proto3/models/* + $ python -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs ./proto3/models/* ``` The above command will generate .py files for all the data models in the ./models directory @@ -58,7 +58,7 @@ Below are some code generation examples for Python, Go and Ruby. For other langu - Services: ```sh - $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./proto3/services/location_service.proto + $ python -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./proto3/services/location_service.proto ``` The above command will generate two files for the Location service: diff --git a/proto3/README.md b/proto3/README.md index 30f232b..c07c032 100644 --- a/proto3/README.md +++ b/proto3/README.md @@ -32,7 +32,7 @@ Below are some usage examples for Python, Go and Ruby. For other languages, plea - Models: ```sh - $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs ./proto3/models/* + $ python -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs ./proto3/models/* ``` The above command will generate .py files for all the data models in the ./models directory @@ -40,7 +40,7 @@ Below are some usage examples for Python, Go and Ruby. For other languages, plea - Services: ```sh - $ python3 -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./proto3/services/location_service.proto + $ python -m grpc_tools.protoc -I./proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./proto3/services/location_service.proto ``` The above command will generate two files for the Location service: diff --git a/proto3/models/access_point_get_by_id200_response.proto b/proto3/models/access_point_get_by_id200_response.proto index 2e76fa5..3f79ae3 100644 --- a/proto3/models/access_point_get_by_id200_response.proto +++ b/proto3/models/access_point_get_by_id200_response.proto @@ -16,6 +16,6 @@ import public "models/access_point_info.proto"; message AccessPointGetById200Response { - AccessPointInfo accessPointInfo = 0; + AccessPointInfo accessPointInfo = 1; } diff --git a/proto3/models/access_point_info.proto b/proto3/models/access_point_info.proto index 9e2ba31..a61e721 100644 --- a/proto3/models/access_point_info.proto +++ b/proto3/models/access_point_info.proto @@ -19,7 +19,7 @@ import public "models/operation_status.proto"; message AccessPointInfo { // Identifier of access point. - string accessPointId = 0; + string accessPointId = 8; ConnectionType connectionType = 1; diff --git a/proto3/models/access_point_list.proto b/proto3/models/access_point_list.proto index 07cb40c..16b089e 100644 --- a/proto3/models/access_point_list.proto +++ b/proto3/models/access_point_list.proto @@ -17,7 +17,7 @@ import public "models/access_point_info.proto"; message AccessPointList { // Collection of the access point information list. - repeated AccessPointInfo accessPoint = 0; + repeated AccessPointInfo accessPoint = 3; // Self referring URL string resourceURL = 1; diff --git a/proto3/models/access_points_get200_response.proto b/proto3/models/access_points_get200_response.proto index 40a028e..17c1ac6 100644 --- a/proto3/models/access_points_get200_response.proto +++ b/proto3/models/access_points_get200_response.proto @@ -16,6 +16,6 @@ import public "models/access_point_list.proto"; message AccessPointsGET200Response { - AccessPointList accessPointList = 0; + AccessPointList accessPointList = 1; } diff --git a/proto3/models/area_notification_post_request.proto b/proto3/models/area_notification_post_request.proto index 46664f1..1670c32 100644 --- a/proto3/models/area_notification_post_request.proto +++ b/proto3/models/area_notification_post_request.proto @@ -16,6 +16,6 @@ import public "models/user_area_notification.proto"; message AreaNotificationPOSTRequest { - UserAreaNotification userAreaNotification = 0; + UserAreaNotification userAreaNotification = 1; } diff --git a/proto3/models/area_sub_get200_response.proto b/proto3/models/area_sub_get200_response.proto index 6622c7a..af0acde 100644 --- a/proto3/models/area_sub_get200_response.proto +++ b/proto3/models/area_sub_get200_response.proto @@ -16,6 +16,6 @@ import public "models/user_area_notification.proto"; message AreaSubGET200Response { - UserAreaNotification userAreaNotification = 0; + UserAreaNotification userAreaNotification = 1; } diff --git a/proto3/models/area_sub_list_get200_response.proto b/proto3/models/area_sub_list_get200_response.proto index 77d8608..bc8312f 100644 --- a/proto3/models/area_sub_list_get200_response.proto +++ b/proto3/models/area_sub_list_get200_response.proto @@ -16,6 +16,6 @@ import public "models/notification_subscription_list.proto"; message AreaSubListGET200Response { - NotificationSubscriptionList notificationSubscriptionList = 0; + NotificationSubscriptionList notificationSubscriptionList = 1; } diff --git a/proto3/models/area_sub_post201_response.proto b/proto3/models/area_sub_post201_response.proto index 9d733b1..138ac3f 100644 --- a/proto3/models/area_sub_post201_response.proto +++ b/proto3/models/area_sub_post201_response.proto @@ -16,6 +16,6 @@ import public "models/user_area_subscription.proto"; message AreaSubPOST201Response { - UserAreaSubscription userAreaSubscription = 0; + UserAreaSubscription userAreaSubscription = 1; } diff --git a/proto3/models/area_sub_post_request.proto b/proto3/models/area_sub_post_request.proto index 708c8b1..55cd820 100644 --- a/proto3/models/area_sub_post_request.proto +++ b/proto3/models/area_sub_post_request.proto @@ -16,6 +16,6 @@ import public "models/user_area_subscription.proto"; message AreaSubPOSTRequest { - UserAreaSubscription userAreaSubscription = 0; + UserAreaSubscription userAreaSubscription = 1; } diff --git a/proto3/models/area_sub_put_request.proto b/proto3/models/area_sub_put_request.proto index 5e9c574..c091a14 100644 --- a/proto3/models/area_sub_put_request.proto +++ b/proto3/models/area_sub_put_request.proto @@ -16,6 +16,6 @@ import public "models/user_area_notification.proto"; message AreaSubPUTRequest { - UserAreaNotification userAreaNotification = 0; + UserAreaNotification userAreaNotification = 1; } diff --git a/proto3/models/civic_address.proto b/proto3/models/civic_address.proto index d84036e..971d4ec 100644 --- a/proto3/models/civic_address.proto +++ b/proto3/models/civic_address.proto @@ -16,7 +16,7 @@ package mec013; message CivicAddress { // The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US - string country = 0; + string country = 35; // National subdivisions (state, canton, region, province, prefecture) string A1 = 1; diff --git a/proto3/models/distance_get200_response.proto b/proto3/models/distance_get200_response.proto index 0590430..1eb0ab7 100644 --- a/proto3/models/distance_get200_response.proto +++ b/proto3/models/distance_get200_response.proto @@ -16,6 +16,6 @@ import public "models/terminal_distance.proto"; message DistanceGET200Response { - TerminalDistance terminalDistance = 0; + TerminalDistance terminalDistance = 1; } diff --git a/proto3/models/distance_get_location_parameter.proto b/proto3/models/distance_get_location_parameter.proto index 02e73a2..dcedd9a 100644 --- a/proto3/models/distance_get_location_parameter.proto +++ b/proto3/models/distance_get_location_parameter.proto @@ -16,7 +16,7 @@ package mec013; message DistanceGETLocationParameter { // Location latitude, expressed in the range -90° to +90°. - float latitude = 0; + float latitude = 2; // Location longitude, expressed in the range -180° to +180°. float longitude = 1; diff --git a/proto3/models/distance_notification_post_request.proto b/proto3/models/distance_notification_post_request.proto index 854331a..588f1fb 100644 --- a/proto3/models/distance_notification_post_request.proto +++ b/proto3/models/distance_notification_post_request.proto @@ -16,6 +16,6 @@ import public "models/user_distance_notification.proto"; message DistanceNotificationPOSTRequest { - UserDistanceNotification userDistanceNotification = 0; + UserDistanceNotification userDistanceNotification = 1; } diff --git a/proto3/models/distance_sub_get200_response.proto b/proto3/models/distance_sub_get200_response.proto index c94631e..4a1b96e 100644 --- a/proto3/models/distance_sub_get200_response.proto +++ b/proto3/models/distance_sub_get200_response.proto @@ -16,6 +16,6 @@ import public "models/user_distance_subscription.proto"; message DistanceSubGET200Response { - UserDistanceSubscription userDistanceSubscription = 0; + UserDistanceSubscription userDistanceSubscription = 1; } diff --git a/proto3/models/distance_sub_list_get200_response.proto b/proto3/models/distance_sub_list_get200_response.proto index 548bbae..ee8ce03 100644 --- a/proto3/models/distance_sub_list_get200_response.proto +++ b/proto3/models/distance_sub_list_get200_response.proto @@ -16,6 +16,6 @@ import public "models/notification_subscription_list.proto"; message DistanceSubListGET200Response { - NotificationSubscriptionList notificationSubscriptionList = 0; + NotificationSubscriptionList notificationSubscriptionList = 1; } diff --git a/proto3/models/distance_sub_post_request.proto b/proto3/models/distance_sub_post_request.proto index aab17a2..8657517 100644 --- a/proto3/models/distance_sub_post_request.proto +++ b/proto3/models/distance_sub_post_request.proto @@ -16,6 +16,6 @@ import public "models/user_distance_subscription.proto"; message DistanceSubPOSTRequest { - UserDistanceSubscription userDistanceSubscription = 0; + UserDistanceSubscription userDistanceSubscription = 1; } diff --git a/proto3/models/link_type.proto b/proto3/models/link_type.proto index 04f93a7..de3e4f2 100644 --- a/proto3/models/link_type.proto +++ b/proto3/models/link_type.proto @@ -16,6 +16,6 @@ package mec013; message LinkType { // URI referring to a resource. - string href = 0; + string href = 1; } diff --git a/proto3/models/links.proto b/proto3/models/links.proto index 0a43163..4a28154 100644 --- a/proto3/models/links.proto +++ b/proto3/models/links.proto @@ -16,6 +16,6 @@ import public "models/link_type.proto"; message Links { - LinkType self = 0; + LinkType self = 1; } diff --git a/proto3/models/map_info.proto b/proto3/models/map_info.proto index f45578b..2dddc11 100644 --- a/proto3/models/map_info.proto +++ b/proto3/models/map_info.proto @@ -13,12 +13,11 @@ syntax = "proto3"; package mec013; import public "models/origin.proto"; -import public "models/todo_object_mapping.proto"; message MapInfo { // Ancillary map information may be used to convert coordinates between different coordinate systems. - TODO_OBJECT_MAPPING ancillaryMapInfo = 0; + string ancillaryMapInfo = 3; // Indicates the ID of the map. string mapId = 1; diff --git a/proto3/models/notification_subscription_list.proto b/proto3/models/notification_subscription_list.proto index 09a24d9..57c6035 100644 --- a/proto3/models/notification_subscription_list.proto +++ b/proto3/models/notification_subscription_list.proto @@ -17,7 +17,7 @@ import public "models/subscription.proto"; message NotificationSubscriptionList { - LinkType resourceURL = 0; + LinkType resourceURL = 2; repeated Subscription subscription = 1; diff --git a/proto3/models/origin.proto b/proto3/models/origin.proto index 42aa932..d3a23cf 100644 --- a/proto3/models/origin.proto +++ b/proto3/models/origin.proto @@ -16,7 +16,7 @@ package mec013; message Origin { // Location altitude relative to the WGS84 ellipsoid surface. - float altitude = 0; + float altitude = 3; // Location latitude, expressed in the range -90° to +90°. float latitude = 1; diff --git a/proto3/models/periodic_event_info.proto b/proto3/models/periodic_event_info.proto index bdd9636..7141331 100644 --- a/proto3/models/periodic_event_info.proto +++ b/proto3/models/periodic_event_info.proto @@ -16,7 +16,7 @@ package mec013; message PeriodicEventInfo { // Number of event reports - float reportingAmount = 0; + float reportingAmount = 2; // Interval of event reports float reportingInterval = 1; diff --git a/proto3/models/point.proto b/proto3/models/point.proto index 4c00b23..2181943 100644 --- a/proto3/models/point.proto +++ b/proto3/models/point.proto @@ -16,7 +16,7 @@ package mec013; message Point { // Location latitude, expressed in the range -90° to +90°. - float latitude = 0; + float latitude = 2; // Location longitude, expressed in the range -180° to +180°. float longitude = 1; diff --git a/proto3/models/problem_details.proto b/proto3/models/problem_details.proto index b5039ee..e791771 100644 --- a/proto3/models/problem_details.proto +++ b/proto3/models/problem_details.proto @@ -16,7 +16,7 @@ package mec013; message ProblemDetails { // A human-readable explanation specific to this occurrence of the problem - string detail = 0; + string detail = 5; // A URI reference that identifies the specific occurrence of the problem string instance = 1; diff --git a/proto3/models/relative_location_info.proto b/proto3/models/relative_location_info.proto index 9a69a75..1e9d0fd 100644 --- a/proto3/models/relative_location_info.proto +++ b/proto3/models/relative_location_info.proto @@ -17,7 +17,7 @@ import public "models/map_info.proto"; message RelativeLocationInfo { // Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. Positive value represents easting from origin. - float X = 0; + float X = 4; // Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. Positive value represents northing from origin. float Y = 1; diff --git a/proto3/models/reporting_ctrl.proto b/proto3/models/reporting_ctrl.proto index bc6ad75..25cb632 100644 --- a/proto3/models/reporting_ctrl.proto +++ b/proto3/models/reporting_ctrl.proto @@ -16,7 +16,7 @@ package mec013; message ReportingCtrl { // Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0. - int32 maximumCount = 0; + int32 maximumCount = 3; // Maximum frequency (in seconds) of notifications per subscription. int32 maximumFrequency = 1; diff --git a/proto3/models/service_error.proto b/proto3/models/service_error.proto index 2df9a80..7159f4f 100644 --- a/proto3/models/service_error.proto +++ b/proto3/models/service_error.proto @@ -16,7 +16,7 @@ package mec013; message ServiceError { // Message identifier, either with prefix SVC or with prefix POL - string messageId = 0; + string messageId = 3; // Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1 string text = 1; diff --git a/proto3/models/subscription.proto b/proto3/models/subscription.proto index 05285cd..e522c3c 100644 --- a/proto3/models/subscription.proto +++ b/proto3/models/subscription.proto @@ -16,7 +16,7 @@ package mec013; message Subscription { // The URI referring to the subscription. - string href = 0; + string href = 2; // Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses 6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9: \"UserLocationEventSubscription\" \"UserLocationPeriodicSubscription\" \"ZoneLocationEventSubscription\" \"ZoneStatusSubscription\" \"UserAreaSubscription\" \"UserDistanceSubscription\" string subscriptionType = 1; diff --git a/proto3/models/terminal_distance.proto b/proto3/models/terminal_distance.proto index 516d376..bc7caac 100644 --- a/proto3/models/terminal_distance.proto +++ b/proto3/models/terminal_distance.proto @@ -17,7 +17,7 @@ import public "models/time_stamp.proto"; message TerminalDistance { // Accuracy of the provided distance in meters - int32 accuracy = 0; + int32 accuracy = 3; // Distance from terminal to a location or between two terminals specified in meters int32 distance = 1; diff --git a/proto3/models/terminal_location.proto b/proto3/models/terminal_location.proto index cf998ff..64fd732 100644 --- a/proto3/models/terminal_location.proto +++ b/proto3/models/terminal_location.proto @@ -19,7 +19,7 @@ import public "models/service_error.proto"; message TerminalLocation { // Address of the terminal to which the location information applies (e.g., 'sip' URI, 'tel' URI, 'acr' URI). - string address = 0; + string address = 4; LocationInfo currentLocation = 1; diff --git a/proto3/models/test_notification.proto b/proto3/models/test_notification.proto index 2dc610b..3b2175f 100644 --- a/proto3/models/test_notification.proto +++ b/proto3/models/test_notification.proto @@ -16,7 +16,7 @@ import public "models/links.proto"; message TestNotification { - Links _links = 0; + Links _links = 2; // Shall be set to \"TestNotification\". string notificationType = 1; diff --git a/proto3/models/time_stamp.proto b/proto3/models/time_stamp.proto index 70acfb7..6796e72 100644 --- a/proto3/models/time_stamp.proto +++ b/proto3/models/time_stamp.proto @@ -16,7 +16,7 @@ package mec013; message TimeStamp { // The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - int32 nanoSeconds = 0; + int32 nanoSeconds = 2; // The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. int32 seconds = 1; diff --git a/proto3/models/user_area_notification.proto b/proto3/models/user_area_notification.proto index b15b9be..17c703c 100644 --- a/proto3/models/user_area_notification.proto +++ b/proto3/models/user_area_notification.proto @@ -21,7 +21,7 @@ import public "models/time_stamp.proto"; message UserAreaNotification { - Links _links = 0; + Links _links = 8; // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). string address = 1; diff --git a/proto3/models/user_area_subscription.proto b/proto3/models/user_area_subscription.proto index b274413..267e07c 100644 --- a/proto3/models/user_area_subscription.proto +++ b/proto3/models/user_area_subscription.proto @@ -21,7 +21,7 @@ import public "models/websock_notif_config.proto"; message UserAreaSubscription { - Links _links = 0; + Links _links = 13; // List of the users to be monitored. repeated string addressList = 1; diff --git a/proto3/models/user_distance_notification.proto b/proto3/models/user_distance_notification.proto index 8abe651..b31a1b9 100644 --- a/proto3/models/user_distance_notification.proto +++ b/proto3/models/user_distance_notification.proto @@ -19,7 +19,7 @@ import public "models/user_list.proto"; message UserDistanceNotification { - Links _links = 0; + Links _links = 5; DistanceCriteria distanceEvent = 1; diff --git a/proto3/models/user_distance_subscription.proto b/proto3/models/user_distance_subscription.proto index a52c455..800c221 100644 --- a/proto3/models/user_distance_subscription.proto +++ b/proto3/models/user_distance_subscription.proto @@ -20,7 +20,7 @@ import public "models/websock_notif_config.proto"; message UserDistanceSubscription { - Links _links = 0; + Links _links = 14; // URI exposed by the client on which to receive notifications via HTTP. See note 1. string callbackReference = 1; diff --git a/proto3/models/user_event_para.proto b/proto3/models/user_event_para.proto index 37fb1c6..71e451f 100644 --- a/proto3/models/user_event_para.proto +++ b/proto3/models/user_event_para.proto @@ -17,7 +17,7 @@ import public "models/occurrence_info.proto"; message UserEventPara { // One or more access points forming a monitoring area that could be any shape. See note 1. - repeated string accessPointList = 0; + repeated string accessPointList = 4; OccurrenceInfo occurrenceInfo = 1; diff --git a/proto3/models/user_info.proto b/proto3/models/user_info.proto index 7d6b570..e63ffe6 100644 --- a/proto3/models/user_info.proto +++ b/proto3/models/user_info.proto @@ -20,7 +20,7 @@ import public "models/time_stamp.proto"; message UserInfo { // Address of user (e.g. 'sip' URI, 'tel' URI, 'acr' URI) currently on the access point, see note 1. - string address = 0; + string address = 9; // The identity of the access point the user is currently on, see note 1. string AccessPointId = 1; diff --git a/proto3/models/user_list.proto b/proto3/models/user_list.proto index df71aef..39cec45 100644 --- a/proto3/models/user_list.proto +++ b/proto3/models/user_list.proto @@ -17,7 +17,7 @@ import public "models/user_info.proto"; message UserList { // Self referring URL - string resourceURL = 0; + string resourceURL = 2; // Collection of the zone information list. repeated UserInfo user = 1; diff --git a/proto3/models/user_location_event_notification.proto b/proto3/models/user_location_event_notification.proto index f3ac3a2..de5b3dc 100644 --- a/proto3/models/user_location_event_notification.proto +++ b/proto3/models/user_location_event_notification.proto @@ -21,7 +21,7 @@ import public "models/time_stamp.proto"; message UserLocationEventNotification { - Links _links = 0; + Links _links = 10; // The identity of the access point. For the events of \"ENTERING_AREA_EVENT\", it indicates the access point that the user is currently within. For the event of \"LEAVING_AREA_EVENT\", it indicates the access point that the user used to be within. See note 2. string accessPointId = 1; diff --git a/proto3/models/user_location_event_subscription.proto b/proto3/models/user_location_event_subscription.proto index 2e219ba..a49cf0d 100644 --- a/proto3/models/user_location_event_subscription.proto +++ b/proto3/models/user_location_event_subscription.proto @@ -20,7 +20,7 @@ import public "models/websock_notif_config.proto"; message UserLocationEventSubscription { - Links _links = 0; + Links _links = 10; // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor. string address = 1; diff --git a/proto3/models/user_location_periodic_notification.proto b/proto3/models/user_location_periodic_notification.proto index 08d3e79..e8224b2 100644 --- a/proto3/models/user_location_periodic_notification.proto +++ b/proto3/models/user_location_periodic_notification.proto @@ -21,7 +21,7 @@ import public "models/time_stamp.proto"; message UserLocationPeriodicNotification { - Links _links = 0; + Links _links = 11; // The identity of the access point that the user is currently within. See note 2. string accessPointId = 1; diff --git a/proto3/models/user_location_periodic_subscription.proto b/proto3/models/user_location_periodic_subscription.proto index 4f450f8..4f8f363 100644 --- a/proto3/models/user_location_periodic_subscription.proto +++ b/proto3/models/user_location_periodic_subscription.proto @@ -19,7 +19,7 @@ import public "models/websock_notif_config.proto"; message UserLocationPeriodicSubscription { - Links _links = 0; + Links _links = 9; // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI) to monitor. string address = 1; diff --git a/proto3/models/user_notification_post_request.proto b/proto3/models/user_notification_post_request.proto index 5d0517d..46d7bdf 100644 --- a/proto3/models/user_notification_post_request.proto +++ b/proto3/models/user_notification_post_request.proto @@ -16,7 +16,7 @@ import public "models/user_location_event_notification.proto"; message UserNotificationPOSTRequest { - UserLocationEventNotification userLocationEventNotification = 0; + UserLocationEventNotification userLocationEventNotification = 2; UserLocationEventNotification userLocationPeriodicNotification = 1; diff --git a/proto3/models/user_sub_get200_response.proto b/proto3/models/user_sub_get200_response.proto index 74f8e19..6a96d04 100644 --- a/proto3/models/user_sub_get200_response.proto +++ b/proto3/models/user_sub_get200_response.proto @@ -17,7 +17,7 @@ import public "models/user_location_periodic_subscription.proto"; message UserSubGET200Response { - UserLocationEventSubscription userLocationEventSubscription = 0; + UserLocationEventSubscription userLocationEventSubscription = 2; UserLocationPeriodicSubscription userLocationPeriodicSubscription = 1; diff --git a/proto3/models/user_sub_list_get200_response.proto b/proto3/models/user_sub_list_get200_response.proto index d63a515..5f25e57 100644 --- a/proto3/models/user_sub_list_get200_response.proto +++ b/proto3/models/user_sub_list_get200_response.proto @@ -16,6 +16,6 @@ import public "models/notification_subscription_list.proto"; message UserSubListGET200Response { - NotificationSubscriptionList notificationSubscriptionList = 0; + NotificationSubscriptionList notificationSubscriptionList = 1; } diff --git a/proto3/models/user_sub_post_request.proto b/proto3/models/user_sub_post_request.proto index ac6a69b..6ab7292 100644 --- a/proto3/models/user_sub_post_request.proto +++ b/proto3/models/user_sub_post_request.proto @@ -17,7 +17,7 @@ import public "models/user_location_periodic_subscription.proto"; message UserSubPOSTRequest { - UserLocationEventSubscription userLocationEventSubscription = 0; + UserLocationEventSubscription userLocationEventSubscription = 2; UserLocationPeriodicSubscription userLocationPeriodicSubscription = 1; diff --git a/proto3/models/users_get200_response.proto b/proto3/models/users_get200_response.proto index b352ba3..6d13c34 100644 --- a/proto3/models/users_get200_response.proto +++ b/proto3/models/users_get200_response.proto @@ -16,6 +16,6 @@ import public "models/user_list.proto"; message UsersGET200Response { - UserList userList = 0; + UserList userList = 1; } diff --git a/proto3/models/websock_notif_config.proto b/proto3/models/websock_notif_config.proto index ddb5e49..9a76530 100644 --- a/proto3/models/websock_notif_config.proto +++ b/proto3/models/websock_notif_config.proto @@ -16,7 +16,7 @@ package mec013; message WebsockNotifConfig { // Set to true by the service consumer to indicate that Websocket delivery is requested. - bool requestWebsocketUri = 0; + bool requestWebsocketUri = 2; // Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications. string websocketUri = 1; diff --git a/proto3/models/zone_get_by_id200_response.proto b/proto3/models/zone_get_by_id200_response.proto index 5e97b11..836b50f 100644 --- a/proto3/models/zone_get_by_id200_response.proto +++ b/proto3/models/zone_get_by_id200_response.proto @@ -16,6 +16,6 @@ import public "models/zone_info.proto"; message ZoneGetById200Response { - ZoneInfo zoneInfo = 0; + ZoneInfo zoneInfo = 1; } diff --git a/proto3/models/zone_info.proto b/proto3/models/zone_info.proto index a12e7c5..bbcafa9 100644 --- a/proto3/models/zone_info.proto +++ b/proto3/models/zone_info.proto @@ -16,7 +16,7 @@ package mec013; message ZoneInfo { // The number of access points within the zone - int32 numberOfAccessPoints = 0; + int32 numberOfAccessPoints = 5; // Number of inoperable access points within the zone. int32 numberOfUnserviceableAccessPoints = 1; diff --git a/proto3/models/zone_list.proto b/proto3/models/zone_list.proto index 974dca7..ade7567 100644 --- a/proto3/models/zone_list.proto +++ b/proto3/models/zone_list.proto @@ -17,7 +17,7 @@ import public "models/zone_info.proto"; message ZoneList { // Self referring URL - string resourceURL = 0; + string resourceURL = 2; // Collection of the zone information list. repeated ZoneInfo zone = 1; diff --git a/proto3/models/zone_location_event_notification.proto b/proto3/models/zone_location_event_notification.proto index dcd24cd..9e2d43c 100644 --- a/proto3/models/zone_location_event_notification.proto +++ b/proto3/models/zone_location_event_notification.proto @@ -18,7 +18,7 @@ import public "models/time_stamp.proto"; message ZoneLocationEventNotification { - Links _links = 0; + Links _links = 6; // Address of user (e.g. ‘sip’ URI, ‘tel’ URI, ‘acr’ URI). string address = 1; diff --git a/proto3/models/zone_location_event_subscription.proto b/proto3/models/zone_location_event_subscription.proto index bcf295c..f3d5761 100644 --- a/proto3/models/zone_location_event_subscription.proto +++ b/proto3/models/zone_location_event_subscription.proto @@ -20,7 +20,7 @@ import public "models/websock_notif_config.proto"; message ZoneLocationEventSubscription { - Links _links = 0; + Links _links = 11; // List of the users to be monitored. If not present, all the users need to be monitored. repeated string addressList = 1; diff --git a/proto3/models/zone_notification_post_request.proto b/proto3/models/zone_notification_post_request.proto index d4e0615..57373c6 100644 --- a/proto3/models/zone_notification_post_request.proto +++ b/proto3/models/zone_notification_post_request.proto @@ -17,7 +17,7 @@ import public "models/zone_status_notification.proto"; message ZoneNotificationPOSTRequest { - ZoneLocationEventNotification zoneLocationEventNotification = 0; + ZoneLocationEventNotification zoneLocationEventNotification = 2; ZoneStatusNotification zoneStatusNotification = 1; diff --git a/proto3/models/zone_status_subscription.proto b/proto3/models/zone_status_subscription.proto index e0ea144..8a21a8d 100644 --- a/proto3/models/zone_status_subscription.proto +++ b/proto3/models/zone_status_subscription.proto @@ -20,7 +20,7 @@ import public "models/websock_notif_config.proto"; message ZoneStatusSubscription { - Links _links = 0; + Links _links = 14; // URI exposed by the client on which to receive notifications via HTTP. See note 1. string callbackReference = 1; diff --git a/proto3/models/zone_sub_get200_response.proto b/proto3/models/zone_sub_get200_response.proto index 59337ae..37a4531 100644 --- a/proto3/models/zone_sub_get200_response.proto +++ b/proto3/models/zone_sub_get200_response.proto @@ -17,7 +17,7 @@ import public "models/zone_status_subscription.proto"; message ZoneSubGET200Response { - ZoneLocationEventSubscription zoneLocationEventSubscription = 0; + ZoneLocationEventSubscription zoneLocationEventSubscription = 2; ZoneStatusSubscription zoneStatusSubscription = 1; diff --git a/proto3/models/zone_sub_list_get200_response.proto b/proto3/models/zone_sub_list_get200_response.proto index 820d8e1..43fa142 100644 --- a/proto3/models/zone_sub_list_get200_response.proto +++ b/proto3/models/zone_sub_list_get200_response.proto @@ -16,6 +16,6 @@ import public "models/notification_subscription_list.proto"; message ZoneSubListGET200Response { - NotificationSubscriptionList notificationSubscriptionList = 0; + NotificationSubscriptionList notificationSubscriptionList = 1; } diff --git a/proto3/models/zone_sub_post_request.proto b/proto3/models/zone_sub_post_request.proto index 317adc1..8777dc6 100644 --- a/proto3/models/zone_sub_post_request.proto +++ b/proto3/models/zone_sub_post_request.proto @@ -17,7 +17,7 @@ import public "models/zone_status_subscription.proto"; message ZoneSubPOSTRequest { - ZoneLocationEventSubscription zoneLocationEventSubscription = 0; + ZoneLocationEventSubscription zoneLocationEventSubscription = 2; ZoneStatusSubscription zoneStatusSubscription = 1; diff --git a/proto3/models/zones_get200_response.proto b/proto3/models/zones_get200_response.proto index 68488f1..4a0b624 100644 --- a/proto3/models/zones_get200_response.proto +++ b/proto3/models/zones_get200_response.proto @@ -16,6 +16,6 @@ import public "models/zone_list.proto"; message ZonesGET200Response { - ZoneList zoneList = 0; + ZoneList zoneList = 1; } -- GitLab From 5f007b57cd4ec9bf6f34f06d743644ba6d350892 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Mon, 23 Jan 2023 15:43:22 +0500 Subject: [PATCH 15/16] update .gitignore file --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index df4569b..8b5c618 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ protoc/ go-stubs/ ruby-stubs/ .proto-gen/ -python-stubs/ \ No newline at end of file +python-stubs/ +.vscode/ \ No newline at end of file -- GitLab From 7802c457e279be0945ca979de447095b2673dad2 Mon Sep 17 00:00:00 2001 From: "M. Hamza" Date: Thu, 26 Jan 2023 18:10:58 +0500 Subject: [PATCH 16/16] fix spelling mistake in proto3-gen.md --- proto3-gen.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proto3-gen.md b/proto3-gen.md index 36c1278..418a897 100644 --- a/proto3-gen.md +++ b/proto3-gen.md @@ -1,10 +1,10 @@ # Protobuf Schema Generation -[OpenAPI Generator](https://openapi-generator.tech) is used to generate protobuf schema (`.proto3`) files from OpenAPI specifications of MEC013 Locatio API. +[OpenAPI Generator](https://openapi-generator.tech) is used to generate protobuf schema (`.proto3`) files from OpenAPI specifications of MEC013 Location API. ->**NOTE:** At the time of writing, the tool does not support OAS 3.1 version and we have to first convert the [Locatio API](./LocationAPI.yaml) to OAS 3.0 for generating protobuf schema. +>**NOTE:** At the time of writing, the tool does not support OAS 3.1 version and we have to first convert the [Location API](./LocationAPI.yaml) to OAS 3.0 for generating protobuf schema. -1. Convert OAS for [Locatio API](./LocationAPI.yaml) from 3.1 to 3.0​ +1. Convert OAS for [Location API](./LocationAPI.yaml) from 3.1 to 3.0​ - Change the value of `openapi` field from 3.1.0 to 3.0.0​ -- GitLab