LocationAPI.yaml 128 KB
Newer Older
openapi: 3.1.0
Michel Roy's avatar
Michel Roy committed
info:
Michel Roy's avatar
Michel Roy committed
  contact:
    url: https://forge.etsi.org/rep/mec/gs013-location-api
Michel Roy's avatar
Michel Roy committed
  title: ETSI GS MEC 013 - Location API
Michel Roy's avatar
Michel Roy committed
  description: The ETSI MEC ISG MEC013 Location API described using OpenAPI.
Michel Roy's avatar
Michel Roy committed
  license:
    name: BSD-3-Clause
    url: 'https://forge.etsi.org/legal-matters'
externalDocs:
  description: ETSI MEC013 V3.1.1 Location API
  url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/03.01.01_60/gs_mec013v030101p.pdf'
Michel Roy's avatar
Michel Roy committed
servers:
Michel Roy's avatar
Michel Roy committed
  - url: 'https://localhost/location/v2'
tags:
  - name: 'location'
Michel Roy's avatar
Michel Roy committed
paths:
  /queries/distance:
    get:
      tags:
        - '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.'
Michel Roy's avatar
Michel Roy committed
      operationId: distanceGET
      parameters:
        - $ref: '#/components/parameters/Query.Address'
        - $ref: '#/components/parameters/Query.Location'
Michel Roy's avatar
Michel Roy committed
      responses:
        '200':
          description: 'Upon success, a response body containing the list of distance information is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  terminalDistance:
                    $ref: '#/components/schemas/TerminalDistance'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'queries'
  /queries/users:
    get:
Michel Roy's avatar
Michel Roy committed
      tags:
        - 'location'
      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.'
Michel Roy's avatar
Michel Roy committed
      operationId: usersGET
      parameters:
        - $ref: '#/components/parameters/Query.ZoneId'
        - $ref: '#/components/parameters/Query.AccessPointId'
        - $ref: '#/components/parameters/Query.Address_3'
Michel Roy's avatar
Michel Roy committed
      responses:
        '200':
          description: 'Upon success, a response body containing the list of user location information is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  userList:
                    $ref: '#/components/schemas/UserList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'queries'
Michel Roy's avatar
Michel Roy committed
  /queries/zones:
    get:
      tags:
Michel Roy's avatar
Michel Roy committed
        - 'location'
      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.'
Michel Roy's avatar
Michel Roy committed
      operationId: zonesGET
      parameters:
        - $ref: '#/components/parameters/Query.ZoneId'
Michel Roy's avatar
Michel Roy committed
      responses:
        '200':
          description: 'Upon success, a response body containing the list of zone information is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  zoneList:
                    $ref: '#/components/schemas/ZoneList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'queries'
Michel Roy's avatar
Michel Roy committed
  /queries/zones/{zoneId}:
    get:
      tags:
Michel Roy's avatar
Michel Roy committed
        - 'location'
      summary: 'Query information about a specific zone'
      description: 'The GET method is used to query the information about a specific zone.'
      operationId: zoneGetById
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.ZoneId'
      responses:
        '200':
          description: 'Upon success, a response body containing the zone information is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  zoneInfo:
                    $ref: '#/components/schemas/ZoneInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'queries'
  /queries/zones/{zoneId}/accessPoints:
    get:
      tags:
        - 'location'
      summary: '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
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.ZoneId'
        - $ref: '#/components/parameters/Query.AccessPointId'
Michel Roy's avatar
Michel Roy committed
      responses:
        '200':
          description: 'Upon success, a response body containing the list of access point information is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  accessPointList:
                    $ref: '#/components/schemas/AccessPointList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'queries'
Michel Roy's avatar
Michel Roy committed
  /queries/zones/{zoneId}/accessPoints/{accessPointId}:
    get:
      tags:
        - 'location'
      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
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.ZoneId'
        - $ref: '#/components/parameters/Path.AccessPointId'
      responses:
        '200':
          description: 'Upon success, a response body containing the access point information is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  accessPointInfo:
                    $ref: '#/components/schemas/AccessPointInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'queries'
  /subscriptions/area:
Michel Roy's avatar
Michel Roy committed
    get:
      tags:
        - 'location'
      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' 
Michel Roy's avatar
Michel Roy committed
      responses:
        '200':
          description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned."
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                required:
                  - notificationSubscriptionList
                properties:
                  notificationSubscriptionList:
                    $ref: '#/components/schemas/NotificationSubscriptionList'
                examples:
                  - notificationSubscriptionList:
                      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'
Michel Roy's avatar
Michel Roy committed
    post:
      tags:
        - 'location'
      summary: 'Creates subscription to area notifications.'
      description: 'The POST method is used to create a new subscription to area notifications.'
      operationId: areaSubPOST
Michel Roy's avatar
Michel Roy committed
      requestBody:
        description: 'Subscription to be created'
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userAreaSubscription:
                  $ref: '#/components/schemas/UserAreaSubscription'
              examples:
                - userAreaSubscription:
                    subscriptionType: 'userAreaSubscription'
Michel Roy's avatar
Michel Roy committed
                    clientCorrelator: '0123'
                    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: 'Indicates successful resource creation, where the resource URI shall be returned in the HTTP Location header field.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  userAreaSubscription:
                    $ref: '#/components/schemas/UserAreaSubscription'
                examples:
                  - userAreaSubscription:
                      subscriptionType: 'userAreaSubscription'
                      clientCorrelator: '0123'
                      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
Michel Roy's avatar
Michel Roy committed
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '415':
          $ref: '#/components/responses/415'
Michel Roy's avatar
Michel Roy committed
        '429':
          $ref: '#/components/responses/429'
      callbacks:
        notification:
          '{$request.body#/userAreaSubscription.callbackReference}':
Michel Roy's avatar
Michel Roy committed
            post:
Michel Roy's avatar
Michel Roy committed
              summary: 'Callback POST used to send a notification'
              description: 'Notification from Location service, content based on subscription type'
              operationId: areaNotificationPOST
Michel Roy's avatar
Michel Roy committed
              requestBody:
Michel Roy's avatar
Michel Roy committed
                description: 'Subscription notification'
                required: true
                content:
                  application/json:
                    schema:
                      type: object
                      properties:
                        userAreaNotification:
                          $ref: '#/components/schemas/UserAreaNotification'
                      examples:
                        - 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
Michel Roy's avatar
Michel Roy committed
              responses:
                '204':
                  $ref: '#/components/responses/204'
      x-swagger-router-controller: 'subscriptions'
  /subscriptions/area/{subscriptionId}:
Michel Roy's avatar
Michel Roy committed
    get:
      tags:
        - 'location'
Michel Roy's avatar
Michel Roy committed
      summary: 'Retrieve subscription information'
      description: 'The GET method is used to retrieve information about this subscription.'
      operationId: areaSubGET
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '200':
          description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                required:
                  - userAreaSubscription
Michel Roy's avatar
Michel Roy committed
                properties:
                  userAreaNotification:
                    $ref: '#/components/schemas/UserAreaNotification'
                examples:
                  - userAreaNotification:
                      notificationType: 'UserAreaNotification'
                      address: 'acr:10.0.0.1'
                      userLocationEvent: 'ENTERING_AREA_EVENT'
                      _links:
                        subscription:
                          href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123
Michel Roy's avatar
Michel Roy committed
        '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'
Michel Roy's avatar
Michel Roy committed
      summary: 'Updates a subscription information'
      description: 'The PUT method is used to update the existing subscription.'
      operationId: areaSubPUT
Michel Roy's avatar
Michel Roy committed
      requestBody:
        description: 'Subscription to be modified'
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userAreaNotification:
                  $ref: '#/components/schemas/UserAreaNotification'
              examples:
                - userAreaNotification:
                    notificationType: 'UserAreaNotification'
Michel Roy's avatar
Michel Roy committed
                    address: 'acr:10.0.0.1'
                    userLocationEvent: 'ENTERING_AREA_EVENT'
                    _links:
                      subscription:
                        href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '200':
          description: 'Upon success, a response body containing data type describing the updated subscription is returned.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  userAreaNotification:
                    $ref: '#/components/schemas/UserAreaNotification'
                examples:
                  - userAreaNotification:
                      notificationType: 'UserAreaNotification'
                      address: 'acr:10.0.0.1'
                      userLocationEvent: 'ENTERING_AREA_EVENT'
                      _links:
                        subscription:
                          href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123
Michel Roy's avatar
Michel Roy committed
        '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'
Michel Roy's avatar
Michel Roy committed
      summary: 'Cancel a subscription'
      description: 'The DELETE method is used to cancel the existing subscription.'
      operationId: areaSubDELETE
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'subscriptions'
  /subscriptions/distance:
    get:
      tags:
        - 'location'
Michel Roy's avatar
Michel Roy committed
      summary: 'Retrieves all active subscriptions to distance change notifications'
      description: 'This operation is used for retrieving all active subscriptions to a distance change notifications.'
      operationId: distanceSubListGET
      responses:
        '200':
          description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned."
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                required:
                  - notificationSubscriptionList
                properties:
                  notificationSubscriptionList:
                    $ref: '#/components/schemas/NotificationSubscriptionList'
                examples:
                  - notificationSubscriptionList:
                      subscription:
                        - href: 'http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123'
                          subscriptionType: 'UserDistanceSubscription'
                      resourceURL:
                          href: 'http://meAppServer.example.com/location/v2/subscriptions/distance'
Michel Roy's avatar
Michel Roy committed
    post:
      tags:
        - 'location'
Michel Roy's avatar
Michel Roy committed
      summary: 'Creates a subscription for distance change notification'
      description: 'Creates a subscription to the Location Service for a distance change notification.'
      operationId: distanceSubPOST
      requestBody:
        description: 'The POST method is used to create a new subscription to user distance notifications.'
Michel Roy's avatar
Michel Roy committed
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userDistanceSubscription:
                  $ref: '#/components/schemas/UserDistanceSubscription'
              examples:
                - userDistanceSubscription:
                    subscriptionType: 'UserDistanceSubscription'
Michel Roy's avatar
Michel Roy committed
                    clientCorrelator: '0123'
                    callbackReference: 'http://my.callback.com/user-distance/some-id'
                    referenceAddress:
                      - 'acr:10.0.0.3'
Michel Roy's avatar
Michel Roy committed
                    monitoredAddress:
                      - 'acr:10.0.0.1'
                      - 'acr:10.0.0.2'
Michel Roy's avatar
Michel Roy committed
                    distance: 100
                    trackingAccuracy: 10
                    criteria: 'AllWithinDistance'
                    checkImmediate: true
      responses:
        '201':
          description: 'Successful subscription'
          content:
            application/json:
              schema:
                type: object
                properties:
                  userDistanceSubscription:
                    $ref: '#/components/schemas/UserDistanceSubscription'
                examples:
                  - userDistanceSubscription:
                      subscriptionType: 'UserDistanceSubscription'
                      clientCorrelator: '0123'
                      callbackReference: 'http://my.callback.com/user-distance/some-id'
                      referenceAddress:
                        - 'acr:10.0.0.3'
                      monitoredAddress:
                        - 'acr:10.0.0.1'
                        - 'acr:10.0.0.2'
                      distance: 100
                      trackingAccuracy: 10
                      criteria: 'AllWithinDistance'
                      checkImmediate: true
Michel Roy's avatar
Michel Roy committed
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '406':
          $ref: '#/components/responses/406'
        '415':
          $ref: '#/components/responses/415'
        '422':
          $ref: '#/components/responses/422'
Michel Roy's avatar
Michel Roy committed
        '429':
          $ref: '#/components/responses/429'
      callbacks:
        notification:
          '{$request.body#/userDistanceSubscription.callbackReference}':
Michel Roy's avatar
Michel Roy committed
            post:
Michel Roy's avatar
Michel Roy committed
              summary: 'Callback POST used to send a notification'
              description: 'Notification from Location service, content based user distance subscription type'
Michel Roy's avatar
Michel Roy committed
              operationId: distanceNotificationPOST
              requestBody:
                description: 'User Distance Notification'
Michel Roy's avatar
Michel Roy committed
                required: true
                content:
                  application/json:
                    schema:
                      type: object
                      properties:
                        userDistanceNotification:
                          $ref: '#/components/schemas/UserDistanceNotification'
                      examples:
                        - userDistanceNotification:
                            notificationType: 'UserDistanceNotification'
                            timestamp:
                              seconds: 1673507343
                              nanoSeconds": 0
                            monitoredUsers: 
                              - user:
                                  address: 'acr:10.0.0.1'
                                  accessPointId: '001010000000000000000000000000001'
                                  zoneId: 'zone01'
                                  timestamp:
                                    seconds: 1673507343
                                    nanoSeconds": 0
                                resourceURL: 'http://meAppServer.example.com/location/v3/queries/users'
                            distanceEvent: 'AllWithinDistance'
                            _links:
                              subscription:
                                href: 'http://meAppServer.example.com/location/v3/subscriptions/distance/subscription123'
Michel Roy's avatar
Michel Roy committed
              responses:
                '204':
                  $ref: '#/components/responses/204'
      x-swagger-router-controller: 'subscriptions'
Michel Roy's avatar
Michel Roy committed
  /subscriptions/distance/{subscriptionId}:
    get:
      tags:
        - 'location'
      summary: 'Retrieve user distance subscription information'
      description: 'The GET method is used to retrieve information about user distance subscription subscription.'
Michel Roy's avatar
Michel Roy committed
      operationId: distanceSubGET
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '200':
          description: 'Upon success, a response body containing data type describing the specific distance event subscription is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                required:
                  - UserDistanceSubscription
Michel Roy's avatar
Michel Roy committed
                properties:
                  userDistanceSubscription:
                    $ref: '#/components/schemas/UserDistanceSubscription'
                examples:
                  - userDistanceSubscription:
                      subscriptionType: 'UserDistanceSubscription'
                      clientCorrelator: '0123'
                      callbackReference: 'http://my.callback.com/user-distance/some-id'
                      referenceAddress:
                        - 'acr:10.0.0.3'
                      monitoredAddress:
                        - 'acr:10.0.0.1'
                        - 'acr:10.0.0.2'
                      distance: 100
                      trackingAccuracy: 10
                      criteria: 'AllWithinDistance'
                      checkImmediate: true
Michel Roy's avatar
Michel Roy committed
        '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 user distance subscription information'
      description: 'The PUT method is used to update the existing user distance subscription.'
Michel Roy's avatar
Michel Roy committed
      operationId: distanceSubPUT
      requestBody:
        description: 'Subscription to be modified'
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userDistanceSubscription:
                  $ref: '#/components/schemas/UserDistanceSubscription'
              examples:
                - userDistanceSubscription:
                    subscriptionType: 'UserDistanceSubscription'
Michel Roy's avatar
Michel Roy committed
                    clientCorrelator: '0123'
                    callbackReference: 'http://my.callback.com/user-distance/some-id'
                    referenceAddress:
                      - 'acr:10.0.0.3'
Michel Roy's avatar
Michel Roy committed
                    monitoredAddress:
                      - 'acr:10.0.0.1'
                      - 'acr:10.0.0.2'
Michel Roy's avatar
Michel Roy committed
                    distance: 100
                    trackingAccuracy: 10
                    criteria: 'AllWithinDistance'
                    checkImmediate: true
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '200':
          description: 'Upon success, a response body containing data type describing the updated subscription is returned.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  userDistanceSubscription:
                    $ref: '#/components/schemas/UserDistanceSubscription'
                examples:
                  - userDistanceSubscription:
                      subscriptionType: 'UserDistanceSubscription'
                      clientCorrelator: '0123'
                      callbackReference: 'http://my.callback.com/user-distance/some-id'
                      referenceAddress:
                        - 'acr:10.0.0.3'
                      monitoredAddress:
                        - 'acr:10.0.0.1'
                        - 'acr:10.0.0.2'
                      distance: 100
                      trackingAccuracy: 10
                      criteria: 'AllWithinDistance'
                      checkImmediate: true
Michel Roy's avatar
Michel Roy committed
        '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'
Michel Roy's avatar
Michel Roy committed
      summary: 'Cancel a subscription'
      description: 'The DELETE method is used to cancel the existing subscription.'
Michel Roy's avatar
Michel Roy committed
      operationId: distanceSubDELETE
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-swagger-router-controller: 'subscriptions'
  /subscriptions/users:
Michel Roy's avatar
Michel Roy committed
    get:
      tags:
        - 'location'
      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'
Michel Roy's avatar
Michel Roy committed
      responses:
        '200':
          description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned."
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                required:
                  - notificationSubscriptionList
                properties:
                  notificationSubscriptionList:
                    $ref: '#/components/schemas/NotificationSubscriptionList'
                examples:
                  - notificationSubscriptionList:
                      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'
Michel Roy's avatar
Michel Roy committed
        '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: 'Create subscription to UE location notifications.'
      description: 'The POST method is used to create a new subscription to UE location notifications.'
      operationId: userSubPOST
Michel Roy's avatar
Michel Roy committed
      requestBody:
        description: 'Subscription to be created'
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                userLocationEventSubscription:
                  $ref: '#/components/schemas/UserLocationEventSubscription'
                userLocationPeriodicSubscription:
                  $ref: '#/components/schemas/UserLocationPeriodicSubscription'
              examples:
                - userLocationEventSubscription:
                    subscriptionType: 'UserLocationEventSubscription'
                    callbackReference: 'http://my.callback.com/user-location-notification/some-id'
                    address: 'acr:10.0.0.1'
                    locationEventCriteria:
                      - ENTERING_AREA_EVENT
Michel Roy's avatar
Michel Roy committed
      responses:
        '201':
          description: 'Indicates successful subscription creation.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  userLocationEventSubscription:
                    $ref: '#/components/schemas/UserLocationEventSubscription'
                  userLocationPeriodicSubscription:
                    $ref: '#/components/schemas/UserLocationPeriodicSubscription'
                examples:
                  - userLocationEventSubscription:
                      subscriptionType: 'UserLocationEventSubscription'
                      callbackReference: 'http://my.callback.com/user-location-notification/some-id'
                      address: 'acr:10.0.0.1'
                      locationEventCriteria:
                        - ENTERING_AREA_EVENT
Michel Roy's avatar
Michel Roy committed
        '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#/userLocationEventSubscription.callbackReference}':
Michel Roy's avatar
Michel Roy committed
            post:
Michel Roy's avatar
Michel Roy committed
              summary: 'Callback POST used to send a notification'
              description: 'Notification from Location service, content based on subscription type'
              operationId: userNotificationPOST
Michel Roy's avatar
Michel Roy committed
              requestBody:
                description: 'User LocationEvent Notification'
Michel Roy's avatar
Michel Roy committed
                required: true
                content:
                  application/json:
                    schema:
                      type: object
                      properties:
                        userLocationEventNotification:
                          $ref: '#/components/schemas/UserLocationEventNotification'
                        userLocationPeriodicNotification:
                          $ref: '#/components/schemas/UserLocationPeriodicNotification'
                      examples:
                        - userLocationEventNotification:
                            notificationType: 'UserLocationEventNotification'
                            timestamp:
                              seconds: 1673507343
                              nanoseconds: 0
                            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"
Michel Roy's avatar
Michel Roy committed
              responses:
                '204':
                  $ref: '#/components/responses/204'
      x-swagger-router-controller: 'subscriptions'
  /subscriptions/users/{subscriptionId}:
Michel Roy's avatar
Michel Roy committed
    get:
      tags:
        - 'location'
Michel Roy's avatar
Michel Roy committed
      summary: 'Retrieve subscription information'
      description: 'The GET method is used to retrieve information about this subscription. '
      operationId: userSubGET
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '200':
          description: 'Upon success, a response body containing data type describing the specific Location event subscription is returned.'
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                required:
                  - UserLocationEventSubscription
Michel Roy's avatar
Michel Roy committed
                properties:
                  userLocationEventSubscription:
                    $ref: '#/components/schemas/UserLocationEventSubscription'
                  userLocationPeriodicSubscription:
                    $ref: '#/components/schemas/UserLocationPeriodicSubscription'
                examples:
                  - userLocationEventSubscription:
                      subscriptionType: 'UserLocationEventSubscription'
                      callbackReference: 'http://my.callback.com/user-location-notification/some-id'
                      address: 'acr:10.0.0.1'
                      locationEventCriteria:
                        - ENTERING_AREA_EVENT
Michel Roy's avatar
Michel Roy committed
        '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'
Michel Roy's avatar
Michel Roy committed
      summary: 'Updates a subscription information'
      description: 'The PUT method is used to update the existing subscription.'
      operationId: userSubPUT
Michel Roy's avatar
Michel Roy committed
      requestBody:
        description: 'Subscription to be modified'
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                  userLocationEventSubscription:
                    $ref: '#/components/schemas/UserLocationEventSubscription'
                  userLocationPeriodicSubscription:
                    $ref: '#/components/schemas/UserLocationPeriodicSubscription'
              examples:
                - userLocationEventSubscription:
                    subscriptionType: 'UserLocationEventSubscription'
                    callbackReference: 'http://my.callback.com/user-location-notification/some-id'
                    address: 'acr:10.0.0.1'
                    locationEventCriteria:
                      - ENTERING_AREA_EVENT
Michel Roy's avatar
Michel Roy committed
      parameters:
        - $ref: '#/components/parameters/Path.SubscrId'
      responses:
        '200':
          description: 'Upon success, a response body containing data type describing the updated subscription is returned. '
Michel Roy's avatar
Michel Roy committed
          content:
            application/json:
              schema:
                type: object
                properties:
                  userLocationEventSubscription:
                    $ref: '#/components/schemas/UserLocationEventSubscription'
                  userLocationPeriodicSubscription:
                    $ref: '#/components/schemas/UserLocationPeriodicSubscription'
                  - userLocationEventSubscription:
                      subscriptionType: 'UserLocationEventSubscription'
                      callbackReference: 'http://my.callback.com/user-location-notification/some-id'
                      address: 'acr:10.0.0.1'
                      locationEventCriteria:
                        - ENTERING_AREA_EVENT
Michel Roy's avatar
Michel Roy committed
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'