Nokia Network as Code CAMARA API

Nokia's consolidated CAMARA-conformant network API specification, published as Single-NaC-API-OAS.yaml in the public network-as-code-sdks repository. OpenAPI 3.0.3, 52 paths / 70 operations, declaring x-camara-commonalities 0.4.0 and CAMARA-standard tags for geofencing subscriptions, location retrieval, location verification, device reachability and roaming status (retrieve and subscribe), phone number verify and share, KYC age verification / match / tenure / fill-in, device swap retrieve-date and check, and QoS sessions. Declared security is oAuth2ClientCredentials with an openIdConnect scheme; asynchronous notifications use the CAMARA sink + CloudEvents webhook pattern.

OpenAPI Specification

nokia-network-as-code-camara-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Network as Code
  description: >-
    Nokia's Network as Code API for programmable networks.
  termsOfService: 'https://developer.networkascode.nokia.io/legal/terms-of-service'
  contact:
    email: support.networkascode@nokia.com
  license:
    name: Apache 2.0
    url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
  version: 1.0.0
  x-camara-commonalities: 0.4.0
servers:
  - url: '{apiRoot}/geofencing-subscriptions/v0.3'
    variables:
      apiRoot:
        default: 'http://localhost:9091'
        description: API root
  - url: '{apiRoot}/geofencing-subscriptions/v0.4'
    variables:
      apiRoot:
        default: 'http://localhost:9091'
        description: API root
externalDocs:
  description: Project documentation at Camara
  url: 'https://github.com/camaraproject/DeviceLocation'
security:
  - oAuth2ClientCredentials: []
tags:
  - name: Geofencing subscriptions
    description: >-
      Operations to manage event subscription on geofencing events for leaving and entering an area
  - name: Location retrieval
    description: Retrieve the location of a device
  - name: Location verification
    description: Verification of the location of a device
  - name: Device reachability status
    description: Operations to get the current reachability status of a device
  - name: Roaming status retrieval
    description: >-
      Operation to get device roaming status and country information (if roaming) synchronously
  - name: Device reachability status subscription
    description: >-
      Operation to manage event subscription on device reachability status event.
  - name: Device roaming status subscription
    description: Operation to manage event subscription on device roaming status event.
  - name: Device connectivity status
    description: Operations to get the current connectivity status of a device
  - name: Device roaming status
    description: >-
      Operation to get device roaming status and country information (if roaming) synchronously
  - name: Device status subscription
    description: >-
      Operation to manage event subscription on device status event (roaming, connectivity)
  - name: Phone number verify
    description: >-
      API operation to verify a phone number received as input. It can be received either in plain text or hashed format.
  - name: Phone number share
    description: API operation to return the phone number associated to the access token.
  - name: Age Verification
    description: Operations to verify the age of a user.
  - name: Match
    description: >-
      Operations to match a customer identity against the account data bound to their phone number.
  - name: Check Subscriber Tenure
    description: Check details about the length of tenure of the subscriber
  - name: Fill-in
    description: >-
      Operations to provide information related to a customer identity stored the account data bound to the customer's phone number.
  - name: Retrieve Device Swap Date
    description: Receive the last date in which the device of the end-user was swapped
  - name: Check Device Swap
    description: >-
      Validate if the SIM of the end-user has been installed in a different device during a past period
  - name: QoS Sessions v0
    description: Manage QoS sessions v0
  - name: QoS Sessions
    description: Manage QoS sessions
  - name: Retrieve Status
    description: Create a request to retrieve the validity status of the data processing
paths:
  /geofencing-subscriptions/v0.3/subscriptions:
    post:
      tags:
        - Geofencing v0.3.0
        - Geofencing v0.3.0
        - Geofencing subscriptions
      summary: Create a geofencing subscription for a device
      description: >-
        Create a subscription for a device to receive notifications when a device enters or exits a specified area
      operationId: createSubscription
      parameters:
        - $ref: '#/components/parameters/x-correlator-Geo-V0'
      security:
        - openId:
            - >-
              geofencing-subscriptions:org.camaraproject.geofencing-subscriptions.v0.area-entered:create
            - >-
              geofencing-subscriptions:org.camaraproject.geofencing-subscriptions.v0.area-left:create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionRequest-Geo-V0'
            examples:
              CIRCLE_AREA_ENTERED:
                $ref: '#/components/examples/REQUEST_CIRCLE_AREA_ENTERED-Geo-V0'
              CIRCLE_AREA_LEFT:
                $ref: '#/components/examples/REQUEST_CIRCLE_AREA_LEFT-Geo-V0'
        required: true
      callbacks:
        notifications:
          '{$request.body#/sink}':
            post:
              summary: notifications callback
              description: >
                Important: this endpoint is to be implemented by the API consumer.

                The Geofencing server will call this endpoint whenever a Geofencing event occurs.

                `operationId` value will have to be replaced accordingly with WG API specific semantic

              operationId: postNotification
              parameters:
                - $ref: '#/components/parameters/x-correlator-Geo-V0'
              requestBody:
                required: true
                content:
                  application/cloudevents+json:
                    schema:
                      $ref: '#/components/schemas/CloudEvent-Geo-V0'
                    examples:
                      CIRCLE_AREA_ENTERED:
                        $ref: '#/components/examples/CIRCLE_AREA_ENTERED-Geo-V0'
                      CIRCLE_AREA_LEFT:
                        $ref: '#/components/examples/CIRCLE_AREA_LEFT-Geo-V0'
                      SUBSCRIPTION_ENDS:
                        $ref: '#/components/examples/SUBSCRIPTION_ENDS-Geo-V0'
                      SUBSCRIPTION_UNPROCESSABLE:
                        $ref: '#/components/examples/SUBSCRIPTION_UNPROCESSABLE-Geo-V0'
              responses:
                '204':
                  description: Successful notification
                  headers:
                    x-correlator:
                      $ref: '#/components/headers/x-correlator-Geo-V0'
                '400':
                  $ref: '#/components/responses/Generic400-Geo-V0'
                '401':
                  $ref: '#/components/responses/Generic401-Geo-V0'
                '403':
                  $ref: '#/components/responses/Generic403-Geo-V0'
                '500':
                  $ref: '#/components/responses/Generic500-Geo-V0'
                '503':
                  $ref: '#/components/responses/Generic503-Geo-V0'
              security:
                - {}
                - notificationsBearerAuth: []
      responses:
        '201':
          description: Created (Successful creation of subscription)
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-Geo-V0'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription-Geo-V0'
        '202':
          description: >-
            Request accepted to be processed. It applies for async creation process.
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-Geo-V0'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionAsync-Geo-V0'
        '400':
          $ref: '#/components/responses/CreateSubscriptionBadRequest400-Geo-V0'
        '401':
          $ref: '#/components/responses/Generic401-Geo-V0'
        '403':
          $ref: '#/components/responses/Generic403-Geo-V0'
        '422':
          $ref: '#/components/responses/CreateSubscriptionUnprocessableEntity422-Geo-V0'
        '429':
          $ref: '#/components/responses/Generic429-Geo-V0'
        '500':
          $ref: '#/components/responses/Generic500-Geo-V0'
        '503':
          $ref: '#/components/responses/Generic503-Geo-V0'
    get:
      tags:
        - Geofencing v0.3.0
        - Geofencing v0.3.0
        - Geofencing subscriptions
      summary: Retrieve a list of geofencing event subscription
      description: Retrieve a list of geofencing event subscription(s)
      operationId: retrieveGeofencingSubscriptionList
      parameters:
        - $ref: '#/components/parameters/x-correlator-Geo-V0'
      security:
        - openId:
            - 'geofencing-subscriptions:read'
      responses:
        '200':
          description: List of event subscription details
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-Geo-V0'
          content:
            application/json:
              schema:
                type: array
                minItems: 0
                items:
                  $ref: '#/components/schemas/Subscription-Geo-V0'
        '400':
          $ref: '#/components/responses/Generic400-Geo-V0'
        '401':
          $ref: '#/components/responses/Generic401-Geo-V0'
        '403':
          $ref: '#/components/responses/Generic403-Geo-V0'
        '429':
          $ref: '#/components/responses/Generic429-Geo-V0'
        '500':
          $ref: '#/components/responses/Generic500-Geo-V0'
        '503':
          $ref: '#/components/responses/Generic503-Geo-V0'
  '/geofencing-subscriptions/v0.3/subscriptions/{subscriptionId}':
    get:
      tags:
        - Geofencing v0.3.0
        - Geofencing v0.3.0
        - Geofencing subscriptions
      summary: Operation to retrieve a subscription based on the provided ID
      description: >-
        retrieve Geofencing subscription information for a given subscription ID.
      operationId: retrieveGeofencingSubscription
      security:
        - openId:
            - 'geofencing-subscriptions:read'
      parameters:
        - $ref: '#/components/parameters/SubscriptionId-Geo-V0'
        - $ref: '#/components/parameters/x-correlator-Geo-V0'
      responses:
        '200':
          description: OK
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-Geo-V0'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription-Geo-V0'
        '400':
          $ref: '#/components/responses/SubscriptionIdRequired-Geo-V0'
        '401':
          $ref: '#/components/responses/Generic401-Geo-V0'
        '403':
          $ref: '#/components/responses/Generic403-Geo-V0'
        '404':
          $ref: '#/components/responses/Generic404-Geo-V0'
        '429':
          $ref: '#/components/responses/Generic429-Geo-V0'
        '500':
          $ref: '#/components/responses/Generic500-Geo-V0'
        '503':
          $ref: '#/components/responses/Generic503-Geo-V0'
    delete:
      tags:
        - Geofencing v0.3.0
        - Geofencing v0.3.0
        - Geofencing subscriptions
      summary: Delete a Geofencing event subscription
      operationId: deleteGeofencingSubscription
      description: delete a given Geofencing subscription.
      security:
        - openId:
            - 'geofencing-subscriptions:delete'
      parameters:
        - $ref: '#/components/parameters/SubscriptionId-Geo-V0'
        - $ref: '#/components/parameters/x-correlator-Geo-V0'
      responses:
        '202':
          description: >-
            Request accepted to be processed. It applies for async deletion process.
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-Geo-V0'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionAsync-Geo-V0'
        '204':
          description: Geofencing subscription deleted
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-Geo-V0'
        '400':
          $ref: '#/components/responses/SubscriptionIdRequired-Geo-V0'
        '401':
          $ref: '#/components/responses/Generic401-Geo-V0'
        '403':
          $ref: '#/components/responses/Generic403-Geo-V0'
        '404':
          $ref: '#/components/responses/Generic404-Geo-V0'
        '429':
          $ref: '#/components/responses/Generic429-Geo-V0'
        '500':
          $ref: '#/components/responses/Generic500-Geo-V0'
        '503':
          $ref: '#/components/responses/Generic503-Geo-V0'
  /location-retrieval/v0/retrieve:
    post:
      tags:
        - Location Retrieval v0.2.0
        - Location retrieval
      summary: Execute location retrieval for a user equipment
      description: Retrieve the area where a certain user device is localized.
      operationId: retrieveLocation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrievalLocationRequest-LocR-V0'
            examples:
              LOCATION_RETRIEVAL_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991000'
                  maxAge: 60
        required: true
      responses:
        '200':
          description: Location retrieval result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location-LocR-V0'
              examples:
                LOCATION_CIRCLE:
                  $ref: '#/components/examples/RETRIEVAL_CIRCLE-LocR-V0'
                LOCATION_POLYGON:
                  $ref: '#/components/examples/RETRIEVAL_POLYGON-LocR-V0'
        '400':
          $ref: '#/components/responses/RetrieveLocationBadRequest400-LocR-V0'
        '401':
          $ref: '#/components/responses/Generic401-LocR-V0'
        '403':
          $ref: '#/components/responses/Generic403-LocR-V0'
        '404':
          $ref: '#/components/responses/Generic404-LocR-V0'
        '500':
          $ref: '#/components/responses/Generic500-LocR-V0'
        '503':
          $ref: '#/components/responses/Generic503-LocR-V0'
      security:
        - openId:
            - 'location-retrieval:read'
  /location-verification/v1/verify:
    post:
      tags:
        - Location Verification v1.0.0
        - Location verification
      summary: Verify the location of a device
      description: >
        Verify whether the location of a device is within a requested area. The operation returns a verification result and, optionally, a match rate estimation for the location verification in percent.

      operationId: verifyLocation
      parameters:
        - $ref: '#/components/parameters/x-correlator-LocV-V1'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyLocationRequest-LocV-V1'
            examples:
              DEVICE_INSIDE_AREA_FALSE_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991000'
                  area:
                    areaType: CIRCLE
                    center:
                      latitude: 50.735851
                      longitude: 7.10066
                    radius: 50000
              DEVICE_INSIDE_AREA_TRUE_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991001'
                  area:
                    areaType: CIRCLE
                    center:
                      latitude: 50.735851
                      longitude: 7.10066
                    radius: 50000
      responses:
        '200':
          description: Location verification result
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-LocV-V1'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyLocationResponse-LocV-V1'
              examples:
                VERIFICATION_TRUE:
                  summary: Match
                  description: The network locates the device within the requested area
                  value:
                    verificationResult: 'TRUE'
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
                VERIFICATION_FALSE:
                  summary: No match
                  description: >-
                    The requested area does not match the area where the network locates the device
                  value:
                    verificationResult: 'FALSE'
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
                VERIFICATION_UNKNOWN:
                  summary: Unknown
                  description: The network cannot locate the device
                  value:
                    verificationResult: UNKNOWN
                VERIFICATION_PARTIAL:
                  summary: Partial match
                  description: >-
                    The requested area partially matches the area where the network locates the device
                  value:
                    verificationResult: PARTIAL
                    matchRate: 74
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
        '400':
          $ref: '#/components/responses/Generic400-LocV-V1'
        '401':
          $ref: '#/components/responses/Generic401-LocV-V1'
        '403':
          $ref: '#/components/responses/Generic403-LocV-V1'
        '404':
          $ref: '#/components/responses/Generic404-LocV-V1'
        '422':
          $ref: '#/components/responses/VerifyLocationUnprocessableEntity422-LocV-V1'
        '429':
          $ref: '#/components/responses/Generic429-LocV-V1'
        '500':
          $ref: '#/components/responses/Generic500-LocV-V1'
        '503':
          $ref: '#/components/responses/Generic503-LocV-V1'
      security:
        - openId:
            - 'location-verification:verify'
  /location-verification/v0/verify:
    post:
      tags:
        - Location Verification v0.2.0
        - Location verification
      summary: Verify the location of a device
      description: >
        Verify whether the location of a device is within a requested area. The operation returns a verification result and, optionally, a match rate estimation for the location verification in percent.

      operationId: verifyLocation-LocV-V0
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyLocationRequest-LocV-V0'
            examples:
              DEVICE_INSIDE_AREA_FALSE_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991000'
                  area:
                    areaType: CIRCLE
                    center:
                      latitude: 50.735851
                      longitude: 7.10066
                    radius: 50000
              DEVICE_INSIDE_AREA_TRUE_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991001'
                  area:
                    areaType: CIRCLE
                    center:
                      latitude: 50.735851
                      longitude: 7.10066
                    radius: 50000
      responses:
        '200':
          description: Location verification result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyLocationResponse-LocV-V0'
              examples:
                VERIFICATION_TRUE:
                  summary: Match
                  description: The network locates the device within the requested area
                  value:
                    verificationResult: 'TRUE'
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
                VERIFICATION_FALSE:
                  summary: No match
                  description: >-
                    The requested area does not match the area where the network locates the device
                  value:
                    verificationResult: 'FALSE'
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
                VERIFICATION_UNKNOWN_WITH_LAST_LOCATION_TIME:
                  summary: Unknown with last location time
                  description: >-
                    The network cannot locate the device after the requested maxAge
                  value:
                    verificationResult: UNKNOWN
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
                VERIFICATION_UNKNOWN_WITHOUT_LAST_LOCATION_TIME:
                  summary: Unknown without last location time
                  description: >-
                    The network cannot locate the device and there is no history available
                  value:
                    verificationResult: UNKNOWN
                VERIFICATION_PARTIAL:
                  summary: Partial match
                  description: >-
                    The requested area partially matches the area where the network locates the device
                  value:
                    verificationResult: PARTIAL
                    matchRate: 74
                    lastLocationTime: '2023-09-07T10:40:52.000Z'
        '400':
          $ref: '#/components/responses/Generic400-LocV-V0'
        '401':
          $ref: '#/components/responses/Generic401-LocV-V0'
        '403':
          $ref: '#/components/responses/Generic403-LocV-V0'
        '404':
          $ref: '#/components/responses/Generic404-LocV-V0'
        '500':
          $ref: '#/components/responses/Generic500-LocV-V0'
        '503':
          $ref: '#/components/responses/Generic503-LocV-V0'
      security:
        - openId:
            - 'location-verification:verify'
  /device-status/device-reachability-status/v1/retrieve:
    post:
      tags:
        - Device Reachability Status Retrieve v1
        - Device reachability status
      summary: Get the current reachability status information
      description: Get the current reachability status information
      operationId: getReachabilityStatus
      parameters:
        - $ref: '#/components/parameters/x-correlator-DS-RE-V1'
      security:
        - openId:
            - 'device-reachability-status:read'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestReachabilityStatus-DS-RE-V1'
            examples:
              REACHABLE_SMS_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991000'
              REACHABLE_DATA_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991001'
              REACHABLE_DATA_AND_SMS_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991002'
              DISCONNECTED_PHONE_NUMBER:
                value:
                  device:
                    phoneNumber: '+99999991003'
        required: true
      responses:
        '200':
          description: Contains information about current reachability status
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-DS-RE-V1'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReachabilityStatusResponse-DS-RE-V1'
              examples:
                Connected-With-SMS:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    reachable: true
                    connectivity:
                      - SMS
                Connected-With-DATA:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    reachable: true
                    connectivity:
                      - DATA
                Connected-With-DATA-And-SMS:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    reachable: true
                    connectivity:
                      - DATA
                      - SMS
                Not-Reachable:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    reachable: false
        '400':
          $ref: '#/components/responses/Generic400-DS-RE-V1'
        '401':
          $ref: '#/components/responses/Generic401-DS-RE-V1'
        '403':
          $ref: '#/components/responses/Generic403-DS-RE-V1'
        '404':
          $ref: '#/components/responses/Generic404-DS-RE-V1'
        '422':
          $ref: '#/components/responses/Generic422-DS-RE-V1'
        '429':
          $ref: '#/components/responses/Generic429-DS-RE-V1'
        '503':
          $ref: '#/components/responses/Generic503-DS-RE-V1'
  /device-status/device-roaming-status/v1/retrieve:
    post:
      tags:
        - Device Roaming Status Retrieve v1
        - Roaming status retrieval
      summary: Get the current roaming status and the country information
      description: Get the current roaming status and the country information
      operationId: getRoamingStatus
      parameters:
        - $ref: '#/components/parameters/x-correlator-DS-RO-V1'
      security:
        - openId:
            - 'device-roaming-status:read'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoamingStatusRequest-DS-RO-V1'
            examples:
              DEVICE_ROAMING_TRUE:
                value:
                  device:
                    phoneNumber: '+99999991000'
              DEVICE_ROAMING_FALSE:
                value:
                  device:
                    phoneNumber: '+99999991001'
        required: true
      responses:
        '200':
          description: Contains information about current roaming status
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-DS-RO-V1'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoamingStatusResponse-DS-RO-V1'
              examples:
                No-Country-Name:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    roaming: true
                    countryCode: 901
                    countryName: []
                Single-Country-Code:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    roaming: true
                    countryCode: 262
                    countryName:
                      - DE
                Multiple-Country-Codes:
                  value:
                    lastStatusTime: '2024-02-20T10:41:38.657Z'
                    roaming: true
                    countryCode: 340
                    countryName:
                      - BL
                      - GF
                      - GP
                      - MF
                      - MQ
        '400':
          $ref: '#/components/responses/Generic400-DS-RO-V1'
        '401':
          $ref: '#/components/responses/Generic401-DS-RO-V1'
        '403':
          $ref: '#/components/responses/Generic403-DS-RO-V1'
        '404':
          $ref: '#/components/responses/Generic404-DS-RO-V1'
        '422':
          $ref: '#/components/responses/Generic422-DS-RO-V1'
        '429':
          $ref: '#/components/responses/Generic429-DS-RO-V1'
        '503':
          $ref: '#/components/responses/Generic503-DS-RO-V1'
  /device-status/device-reachability-status-subscriptions/v0.7/subscriptions:
    post:
      tags:
        - Device Reachability Status Subscriptions v0.7
        - Device reachability status subscription
      summary: Create a device reachability status event subscription for a device
      description: Create a device reachability status event subscription for a device
      operationId: createDeviceReachabilityStatusSubscription
      parameters:
        - $ref: '#/components/parameters/x-correlator-DS-RES-V0'
      security:
        - openId:
            - >-
              device-reachability-status-subscriptions:org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data:create
            - >-
              device-reachability-status-subscriptions:org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms:create
            - >-
              device-reachability-status-subscriptions:org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected:create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionRequest-DS-RES-V0'
            examples:
              Create Rechability Data Subscription:
                $ref: '#/components/examples/CREATE_DATA_SUBSCRIPTION-DS-RES-V0'
              Create Rechability SMS Subscription:
                $ref: '#/components/examples/CREATE_SMS_SUBSCRIPTION-DS-RES-V0'
              Create Rechability Disconnected Subscription:
                $ref: '#/components/examples/CREATE_DISCONNECTED_SUBSCRIPTION-DS-RES-V0'
      callbacks:
        notifications:
          '{$request.body#/sink}':
            post:
              summary: notifications callback
              description: >
                Important: this endpoint is to be implemented by the API consumer.

                The Device status server will call this endpoint whenever any device reachability status related event occurs.

              operationId: postNotification
              parameters:
                - $ref: '#/components/parameters/x-correlator-DS-RES-V0'
              requestBody:
                required: true
                content:
                  application/cloudevents+json:
                    schema:
                      $ref: '#/components/schemas/CloudEvent-DS-RES-V0'
                    examples:
                      reachability-data:
                        $ref: '#/components/examples/REACHABILITY_DATA-DS-RES-V0'
                      reachability-sms:
                        $ref: '#/components/examples/REACHABILITY_SMS-DS-RES-V0'
                      reachability-disconnected:
                        $ref: '#/components/examples/REACHABILITY_DISCONNECTED-DS-RES-V0'
                      subscription-ends:
                        $ref: '#/components/examples/SUBSCRIPTION_ENDS-DS-RES-V0'
              responses:
                '204':
                  description: Successful notification
                  headers:
                    x-correlator:
                      $ref: '#/components/headers/x-correlator-DS-RES-V0'
                '400':
                  $ref: '#/components/responses/Generic400-DS-RES-V0'
                '401':
                  $ref: '#/components/responses/Generic401-DS-RES-V0'
                '403':
                  $ref: '#/components/responses/Generic403-DS-RES-V0'
                '410':
                  $ref: '#/components/responses/Generic410-DS-RES-V0'
                '429':
                  $ref: '#/components/responses/Generic429-DS-RES-V0'
              security:
                - {}
                - notificationsBearerAuth: []
      responses:
        '201':
          description: Created
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-DS-RES-V0'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription-DS-RES-V0'
              examples:
                subscription-active:
                  $ref: '#/components/examples/SUBSCRIPTION_ACTIVE-DS-RES-V0'
        '202':
          description: >-
            Request accepted to be processed. It applies for async creation process.
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator-DS-RES-V0'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionAsync-DS-RES-V0'
        '400':
          $ref: '#/components/responses/CreateSubscriptionBadRequest400-DS-RES-V0'
        '401':
          $ref: '#/components/responses/Generic401-DS-RES-V0'
        '403':
          $ref: '#/components/responses/SubscriptionPermissionDenied403-DS-RES-V0'
        '409':
          $ref: '#/components/responses/Generic409-DS-RES-V0'
        '422':
          $ref: '#/components/responses/CreateSubscriptionUnprocessableEntity422-DS-RES-V0'
        '429':
          $ref: '#/components/responses/Generic429-DS-RES-V0'
    get:
      tags:
        - Device Reachability Status Subscriptions v0.7
        - Device reachability status subsc

# --- truncated at 32 KB (595 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nokia-network-as-code/refs/heads/main/openapi/nokia-network-as-code-camara-openapi.yml