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 subscription summary: Retrieve a list of device reachability status event subscription description: Retrieve a list of device reachability status event subscription(s) operationId: retrieveDeviceReachabilityStatusSubscriptionList parameters: - $ref: '#/components/parameters/x-correlator-DS-RES-V0' security: - openId: - 'device-reachability-status-subscriptions:read' responses: '200': description: List of event subscription details headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: type: array minItems: 0 items: $ref: '#/components/schemas/Subscription-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' '/device-status/device-reachability-status-subscriptions/v0.7/subscriptions/{subscriptionId}': get: tags: - Device Reachability Status Subscriptions v0.7 - Device reachability status subscription summary: Retrieve a device reachability status event subscription for a device operationId: retrieveDeviceReachabilityStatusSubscription description: Retrieve a given subscription by ID security: - openId: - 'device-reachability-status-subscriptions:read' parameters: - $ref: '#/components/parameters/SubscriptionId-DS-RES-V0' - $ref: '#/components/parameters/x-correlator-DS-RES-V0' responses: '200': description: OK 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' subscription-activation-requested: $ref: '#/components/examples/SUBSCRIPTION_ACTIVATION_REQUESTED-DS-RES-V0' subscription-deleted: $ref: '#/components/examples/SUBSCRIPTION_DELETED-DS-RES-V0' '400': $ref: '#/components/responses/SubscriptionIdRequired400-DS-RES-V0' '401': $ref: '#/components/responses/Generic401-DS-RES-V0' '403': $ref: '#/components/responses/Generic403-DS-RES-V0' '404': $ref: '#/components/responses/Generic404-DS-RES-V0' delete: tags: - Device Reachability Status Subscriptions v0.7 - Device reachability status subscription summary: Delete a device reachability status event subscription for a device operationId: deleteDeviceReachabilityStatusSubscription description: Delete a given subscription by ID security: - openId: - 'device-reachability-status-subscriptions:delete' parameters: - $ref: '#/components/parameters/SubscriptionId-DS-RES-V0' - $ref: '#/components/parameters/x-correlator-DS-RES-V0' responses: '202': description: >- Request accepted to be processed. It applies for async deletion process. headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: $ref: '#/components/schemas/SubscriptionAsync-DS-RES-V0' '204': description: event subscription deleted headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' '400': $ref: '#/components/responses/SubscriptionIdRequired400-DS-RES-V0' '401': $ref: '#/components/responses/Generic401-DS-RES-V0' '403': $ref: '#/components/responses/Generic403-DS-RES-V0' '404': $ref: '#/components/responses/Generic404-DS-RES-V0' /device-status/device-roaming-status-subscriptions/v0.7/subscriptions: post: tags: - Device Roaming Status Subscriptions v0.7 - Device roaming status subscription summary: Create a device roaming status event subscription for a device description: Create a device roaming status event subscription for a device operationId: createDeviceRoamingStatusSubscription parameters: - $ref: '#/components/parameters/x-correlator-DS-ROS-V0' security: - openId: - >- device-roaming-status-subscriptions:org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status:create - >- device-roaming-status-subscriptions:org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on:create - >- device-roaming-status-subscriptions:org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off:create - >- device-roaming-status-subscriptions:org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country:create requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SubscriptionRequest-DS-ROS-V0' examples: Create Roaming Status Subscription: $ref: '#/components/examples/CREATE_RS_SUBSCRIPTION-DS-ROS-V0' Create Roaming Change Country Subscription: $ref: '#/components/examples/CREATE_RCC_SUBSCRIPTION-DS-ROS-V0' Create Roaming On Subscription: $ref: '#/components/examples/CREATE_RON_SUBSCRIPTION-DS-ROS-V0' Create Roaming Off Subscription: $ref: '#/components/examples/CREATE_ROFF_SUBSCRIPTION-DS-ROS-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 roaming status related event occurs. operationId: postNotification parameters: - $ref: '#/components/parameters/x-correlator-DS-ROS-V0' requestBody: required: true content: application/cloudevents+json: schema: $ref: '#/components/schemas/CloudEvent-DS-ROS-V0' examples: roaming-status: $ref: '#/components/examples/ROAMING_STATUS-DS-ROS-V0' roaming-change-country: $ref: '#/components/examples/ROAMING_CHANGE_COUNTRY-DS-ROS-V0' roaming-on: $ref: '#/components/examples/ROAMING_ON-DS-ROS-V0' roaming-off: $ref: '#/components/examples/ROAMING_OFF-DS-ROS-V0' subscription-ends: $ref: '#/components/examples/SUBSCRIPTION_ENDS-DS-ROS-V0' responses: '204': description: Successful notification headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' '400': $ref: '#/components/responses/Generic400-DS-ROS-V0' '401': $ref: '#/components/responses/Generic401-DS-ROS-V0' '403': $ref: '#/components/responses/Generic403-DS-ROS-V0' '410': $ref: '#/components/responses/Generic410-DS-ROS-V0' '429': $ref: '#/components/responses/Generic429-DS-ROS-V0' security: - {} - notificationsBearerAuth: [] responses: '201': description: Created headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: $ref: '#/components/schemas/Subscription-DS-ROS-V0' examples: subscription-active: $ref: '#/components/examples/SUBSCRIPTION_ACTIVE-DS-ROS-V0' '202': description: >- Request accepted to be processed. It applies for async creation process. headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: $ref: '#/components/schemas/SubscriptionAsync-DS-ROS-V0' '400': $ref: '#/components/responses/CreateSubscriptionBadRequest400-DS-ROS-V0' '401': $ref: '#/components/responses/Generic401-DS-ROS-V0' '403': $ref: '#/components/responses/SubscriptionPermissionDenied403-DS-ROS-V0' '409': $ref: '#/components/responses/Generic409-DS-ROS-V0' '422': $ref: '#/components/responses/CreateSubscriptionUnprocessableEntity422-DS-ROS-V0' '429': $ref: '#/components/responses/Generic429-DS-ROS-V0' get: tags: - Device Roaming Status Subscriptions v0.7 - Device roaming status subscription summary: Retrieve a list of device roaming status event subscription description: Retrieve a list of device roaming status event subscription(s) operationId: retrieveDeviceRoamingStatusSubscriptionList parameters: - $ref: '#/components/parameters/x-correlator-DS-ROS-V0' security: - openId: - 'device-roaming-status-subscriptions:read' responses: '200': description: List of event subscription details headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: type: array minItems: 0 items: $ref: '#/components/schemas/Subscription-DS-ROS-V0' '400': $ref: '#/components/responses/Generic400-DS-ROS-V0' '401': $ref: '#/components/responses/Generic401-DS-ROS-V0' '403': $ref: '#/components/responses/Generic403-DS-ROS-V0' '/device-status/device-roaming-status-subscriptions/v0.7/subscriptions/{subscriptionId}': get: tags: - Device Roaming Status Subscriptions v0.7 - Device roaming status subscription summary: Retrieve a roaming status event subscription for a device description: >- retrieve device roaming status subscription information for a given subscription. operationId: retrieveDeviceRoamingStatusSubscription security: - openId: - 'device-roaming-status-subscriptions:read' parameters: - $ref: '#/components/parameters/SubscriptionId-DS-ROS-V0' - $ref: '#/components/parameters/x-correlator-DS-ROS-V0' responses: '200': description: OK headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: $ref: '#/components/schemas/Subscription-DS-ROS-V0' examples: subscription-active: $ref: '#/components/examples/SUBSCRIPTION_ACTIVE-DS-ROS-V0' subscription-activation-requested: $ref: '#/components/examples/SUBSCRIPTION_ACTIVATION_REQUESTED-DS-ROS-V0' subscription-deleted: $ref: '#/components/examples/SUBSCRIPTION_DELETED-DS-ROS-V0' '400': $ref: '#/components/responses/SubscriptionIdRequired400-DS-ROS-V0' '401': $ref: '#/components/responses/Generic401-DS-ROS-V0' '403': $ref: '#/components/responses/Generic403-DS-ROS-V0' '404': $ref: '#/components/responses/Generic404-DS-ROS-V0' delete: tags: - Device Roaming Status Subscriptions v0.7 - Device roaming status subscription summary: Delete a device-roaming-status event subscription for a device operationId: deleteDeviceRoamingStatusSubscription description: Delete a given device-roaming-status subscription by ID security: - openId: - 'device-roaming-status-subscriptions:delete' parameters: - $ref: '#/components/parameters/SubscriptionId-DS-ROS-V0' - $ref: '#/components/parameters/x-correlator-DS-ROS-V0' responses: '202': description: >- Request accepted to be processed. It applies for async deletion process. headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: $ref: '#/components/schemas/SubscriptionAsync-DS-ROS-V0' '204': description: device-roaming-status subscription deleted headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' '400': $ref: '#/components/responses/SubscriptionIdRequired400-DS-ROS-V0' '401': $ref: '#/components/responses/Generic401-DS-ROS-V0' '403': $ref: '#/components/responses/Generic403-DS-ROS-V0' '404': $ref: '#/components/responses/Generic404-DS-ROS-V0' /device-status/v0/connectivity: post: tags: - Device Status v0.5.1 - Device status subscription summary: Get the current connectivity status information deprecated: true description: Get the current connectivity status information operationId: getConnectivityStatus security: - openId: - 'device-status:connectivity:read' requestBody: content: application/json: schema: $ref: '#/components/schemas/RequestConnectivityStatus-DS-V0' examples: CONNECTED_SMS_PHONE_NUMBER: value: device: phoneNumber: '+99999991000' CONNECTED_DATA_PHONE_NUMBER: value: device: phoneNumber: '+99999991001' NOT_CONNECTED_PHONE_NUMBER: value: device: phoneNumber: '+99999991002' required: true responses: '200': description: Contains information about current connectivity status content: application/json: schema: $ref: '#/components/schemas/ConnectivityStatusResponse-DS-V0' examples: Connected-With-SMS: value: connectivityStatus: CONNECTED_SMS Connected-With-DATA: value: connectivityStatus: CONNECTED_DATA Not-Connected: value: connectivityStatus: NOT_CONNECTED '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '404': $ref: '#/components/responses/Generic404-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' /device-status/v0/roaming: post: tags: - Device Status v0.5.1 - Device status subscription summary: Get the current roaming status and the country information deprecated: true description: Get the current roaming status and the country information operationId: getRoamingStatus-DS-V0 security: - openId: - 'device-status:roaming:read' requestBody: content: application/json: schema: $ref: '#/components/schemas/RequestRoamingStatus-DS-V0' examples: ROAMING_TRUE_PHONE_NUMBER: value: device: phoneNumber: '+99999991000' ROAMING_FALSE_PHONE_NUMBER: value: device: phoneNumber: '+99999991001' required: true responses: '200': description: Contains information about current roaming status content: application/json: schema: $ref: '#/components/schemas/RoamingStatusResponse-DS-V0' examples: No-Country-Name: value: roaming: true countryCode: 901 countryName: [] Single-Country-Code: value: roaming: true countryCode: 262 countryName: - DE Multiple-Country-Codes: value: roaming: true countryCode: 340 countryName: - BL - GF - GP - MF - MQ '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '404': $ref: '#/components/responses/Generic404-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' /device-status/v0/subscriptions: post: tags: - Device Status v0.5.1 - Device status subscription summary: Create a device status event subscription for a device deprecated: true description: Create a device status event subscription for a device operationId: createDeviceStatusSubscription security: - openId: - 'device-status:subscriptions:create' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSubscription-DS-V0' examples: CREATE_DEVICE_STATUS_SUBSCRIPTION: value: subscriptionDetail: device: phoneNumber: '+36719991000' type: org.camaraproject.device-status.v0.roaming-status subscriptionExpireTime: '2026-01-17T13:18:23.682Z' webhook: notificationUrl: 'https://application-server.com' notificationAuthToken: c8974e592c2fa383d4a3960714 required: true callbacks: notifications: '{$request.body#/webhook/notificationUrl}': post: tags: - Session notifications callback summary: Session notifications callback deprecated: true description: > Important: this endpoint is to be implemented by the API consumer. The Device status server will call this endpoint whenever any device status related event occurs. operationId: postNotification requestBody: required: true content: application/cloudevents+json: schema: $ref: '#/components/schemas/CloudEvent-DS-V0' examples: roaming-status: $ref: '#/components/examples/ROAMING_STATUS-DS-V0' roaming-change-country: $ref: '#/components/examples/ROAMING_CHANGE_COUNTRY-DS-V0' roaming-on: $ref: '#/components/examples/ROAMING_ON-DS-V0' roaming-off: $ref: '#/components/examples/ROAMING_OFF-DS-V0' connectivity-data: $ref: '#/components/examples/CONNECTIVITY_DATA-DS-V0' connectivity-sms: $ref: '#/components/examples/CONNECTIVITY_SMS-DS-V0' connectivity-disconnected: $ref: '#/components/examples/CONNECTIVITY_DISCONNECTED-DS-V0' subscription-ends: $ref: '#/components/examples/SUBSCRIPTION_ENDS-DS-V0' responses: '204': description: Successful notification '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' security: - {} - notificationsBearerAuth: [] responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SubscriptionInfo-DS-V0' '202': description: >- Request accepted to be processed. It applies for async creation process. content: application/json: schema: $ref: '#/components/schemas/SubscriptionAsync-DS-V0' '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '409': $ref: '#/components/responses/Generic409-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' get: tags: - Device Status v0.5.1 - Device status subscription summary: Retrieve a list of device status event subscription deprecated: true description: Retrieve a list of device status event subscription(s) operationId: retrieveSubscriptionList security: - openId: - 'device-status:subscriptions:read' responses: '200': description: List of event subscription details content: application/json: schema: type: array items: $ref: '#/components/schemas/SubscriptionInfo-DS-V0' '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' '/device-status/v0/subscriptions/{subscriptionId}': get: tags: - Device Status v0.5.1 - Device status subscription summary: Retrieve a device status event subscription for a device deprecated: true operationId: retrieveSubscription description: retrieve event subscription information for a given subscription. security: - openId: - 'device-status:subscriptions:read' parameters: - name: subscriptionId in: path description: >- Subscription identifier that was obtained from the create subscription operation required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SubscriptionInfo-DS-V0' '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '404': $ref: '#/components/responses/Generic404-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' delete: tags: - Device Status v0.5.1 - Device status subscription summary: Delete a device status event subscription for a device deprecated: true operationId: deleteSubscription description: delete a given event subscription. security: - openId: - 'device-status:subscriptions:delete' parameters: - name: subscriptionId in: path description: >- Subscription identifier that was obtained from the create event subscription operation required: true schema: type: string responses: '202': description: >- Request accepted to be processed. It applies for async deletion process. content: application/json: schema: $ref: '#/components/schemas/SubscriptionAsync-DS-V0' '204': description: event subscription deleted '400': $ref: '#/components/responses/Generic400-DS-V0' '401': $ref: '#/components/responses/Generic401-DS-V0' '403': $ref: '#/components/responses/Generic403-DS-V0' '404': $ref: '#/components/responses/Generic404-DS-V0' '500': $ref: '#/components/responses/Generic500-DS-V0' '503': $ref: '#/components/responses/Generic503-DS-V0' /passthrough/camara/v1/number-verification/number-verification/v0/verify: post: tags: - Number Verification v1.0.0 - Phone number share summary: >- Verifies if the received hashed/plain text phone number matches the phone number associated with the access token description: > Verifies if the specified phone number (either in plain text or hashed format) matches the one that the user is currently using. Only one of the plain or hashed formats must be provided. - The number verification will be done for the user that has authenticated via mobile network - It returns true/false depending on if the hashed phone number received as input matches the authenticated user's `device phone number` associated to the access token operationId: phoneNumberVerify parameters: - in: header name: x-correlator required: false description: Correlation id for the different services schema: type: string - in: header name: authorization required: false description: authorization header for token schema: type: string - in: query name: code required: false description: Authorization code received from the CSP schema: type: string - in: query name: state required: false description: Application state schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/NumberVerificationRequestBody-NV-V1' examples: NUMBER_VERIFY_TRUE_PHONE_NUMBER: value: phoneNumber: '+99999991000' NUMBER_VERIFY_FALSE_PHONE_NUMBER: value: phoneNumber: '+99999991001' required: true responses: '200': description: OK headers: x-correlator: description: Correlation id for the different services schema: type: string content: application/json: schema: $ref: '#/components/schemas/NumberVerificationMatchResponse-NV-V1' '400': $ref: '#/components/responses/Generic400-NV-V1' '401': $ref: '#/components/responses/Generic401-NV-V1' '403': $ref: '#/components/responses/PhoneNumberVerificationPermissionDenied403-NV-V1' '500': $ref: '#/components/responses/Generic500-NV-V1' '503': $ref: '#/components/responses/Generic503-NV-V1' '504': $ref: '#/components/responses/Generic504-NV-V1' security: - openId: - 'number-verification:verify' /passthrough/camara/v1/number-verification/number-verification/v0/device-phone-number: get: tags: - Number Verification v1.0.0 - Phone number share summary: Returns the phone number associated with the access token description: > Returns the phone number so the API clients can verify the number themselves: - It will be done for the user that has authenticated via mobile network - It returns the authenticated user's `device phone number` associated to the access token operationId: phoneNumberShare parameters: - in: header name: x-correlator required: false description: Correlation id for the different services schema: type: string - in: header name: authorization required: false description: authorization header for token schema: type: string - in: query name: code required: false description: Authorization code received from the CSP schema: type: string - in: query name: state required: false description: Application state schema: type: string responses: '200': description: OK headers: x-correlator: description: Correlation id for the different services schema: type: string content: application/json: schema: $ref: '#/components/schemas/NumberVerificationShareResponse-NV-V1' '400': $ref: '#/components/responses/Generic400-NV-V1' '401': $ref: '#/components/responses/Generic401-NV-V1' '403': $ref: '#/components/responses/PhoneNumberVerificationPermissionDenied403-NV-V1' '500': $ref: '#/components/responses/Generic500-NV-V1' '503': $ref: '#/components/responses/Generic503-NV-V1' '504': $ref: '#/components/responses/Generic504-NV-V1' security: - openId: - 'number-verification:device-phone-number:read' /passthrough/camara/v1/kyc-age-verification/kyc-age-verification/v0.1/verify: post: tags: - KYC Age Verification v0.1 - Age Verification summary: Verify Age Threshold description: > Verify that the age of the subscriber associated with a phone number is equal to or greater than the specified age threshold value. As it is possible that the person holding the contract and the end-user of the subscription may not be the same, the endpoint also admits a list of optional properties to be included in the request to improve the identification. The response may optionally include the `identityMatchScore` property with a value that indicates how certain it is that the information returned relates to the person that the API Client is requesting. To increase the reliability of the information returned, the API Provider may include in the response the `verifiedStatus` property, indicating whether the identity information in its possession has been verified against an identification document legally accepted as an age verification document. If the API Client indicates request properties `includeContentLock` or `includeParentalControl` with value `true` and the API Provider implements this functionality, then the response will also include `contentLock` and `parentalControl` properties to indicate if the subscription has any kind of content filtering enabled. On the other hand, if the request properties are not included or the API Client specifies value `false`, then the response properties will not be returned. If the API Provider doesn't implement this functionality, request properties will be ignored and response properties won't be returned in any case. operationId: verifyAge security: - openId: - 'kyc-age-verification:verify' parameters: - $ref: '#/components/parameters/x-correlator-KYC-AV-V0' - in: header name: authorization required: false description: authorization header for token schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerifyRequestBody-KYC-AV-V0' examples: KYC_AGE_VERIFICATION: value: ageThreshold: 18 phoneNumber: '+99999991000' idDocument: 66666666q name: Federica Sanchez Arjona givenName: Federica familyName: Sanchez Arjona middleNames: Sanchez familyNameAtBirth: YYYY birthdate: '1978-08-22' email: federicaSanchez.Arjona@example.com includeContentLock: true includeParentalControl: true KYC_AGE_VERIFICATION_3_LEGGED_FLOW: value: ageThreshold: 18 idDocument: 66666666q name: Federica Sanchez Arjona givenName: Federica familyName: Sanchez Arjona middleNames: Sanchez familyNameAtBirth: YYYY birthdate: '1978-08-22' email: federicaSanchez.Arjona@gmail.com includeContentLock: true includeParentalControl: true responses: '200': description: OK headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-AV-V0' content: application/json: schema: $ref: '#/components/schemas/VerifyResponseBody-KYC-AV-V0' examples: KYC_200Example: value: ageCheck: 'true' verifiedStatus: true identityMatchScore: 90 contentLock: 'false' parentalControl: 'true' '400': $ref: '#/components/responses/Generic400-KYC-AV-V0' '401': $ref: '#/components/responses/Generic401-KYC-AV-V0' '403': $ref: '#/components/responses/Generic403-KYC-AV-V0' '404': $ref: '#/components/responses/Generic404-KYC-AV-V0' '422': $ref: '#/components/responses/Generic422-KYC-AV-V0' /passthrough/camara/v1/kyc-match/kyc-match/v0.3/match: post: tags: - KYC Match v0.3 - Match summary: >- Matching a customer identity by checking a set of attributes related against the account data bound to their phone number. description: >- Verify matching of a number of attributes related to a customer identity against the verified data bound to their phone number in the Operator systems. Regardless of whether the `phoneNumber` is explicitly stated in the request body, at least one of the other fields must be provided, otherwise a `HTTP 400 - KNOW_YOUR_CUSTOMER.INVALID_PARAM_COMBINATION` error will be returned. In order to proceed with the match check, some Operators may have the requirement to perform an additional level of validation based on the `idDocument` property. This means that, in those cases, the `idDocument` is required and the provided value needs to match the one stored in the Operator system associated with the indicated `phoneNumber`. This validation will be done before proceeding with the match check of the rest of the properties. The following two rules apply only in the cases where the Operator have the requirement to validate the `idDocument`: - If no `idDocument` is provided, then a `HTTP 403 - KNOW_YOUR_CUSTOMER.ID_DOCUMENT_REQUIRED` error will be returned. - If the provided `idDocument` does not match the one stored in the Operator systems, then a `HTTP 403 - KNOW_YOUR_CUSTOMER.ID_DOCUMENT_MISMATCH` error will be returned. The API will return the result of the matching process for each requested attribute. This means that the response will **only** contain the attributes for which validation has been requested. Possible values are: - **true**: the attribute provided matches with the one in the Operator systems. - **false**: the attribute provided does not match with the one in the Operator systems. - **not_available**: the attribute is not available to validate. operationId: verifyKYCMatch security: - openId: - 'kyc-match:match' parameters: - $ref: '#/components/parameters/x-correlator-KYC-M-V0' - in: header name: authorization required: false description: authorization header for token schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/KYC_MatchRequestBody-KYC-M-V0' examples: KYC_MATCH: value: phoneNumber: '+99999991000' idDocument: 66666666q name: Federica Sanchez Arjona givenName: Federica familyName: Sanchez Arjona nameKanaHankaku: federica nameKanaZenkaku: Federica middleNames: Sanchez familyNameAtBirth: YYYY address: Tokyo-to Chiyoda-ku Iidabashi 3-10-10 streetName: Nicolas Salmeron streetNumber: '4' postalCode: '1028460' region: Tokyo locality: ZZZZ country: JP houseNumberExtension: VVVV birthdate: '1978-08-22' email: abc@example.com gender: OTHER KYC_MATCH_3_LEGGED_FLOW: value: idDocument: 66666666q name: Federica Sanchez Arjona givenName: Federica familyName: Sanchez Arjona nameKanaHankaku: federica nameKanaZenkaku: Federica middleNames: Sanchez familyNameAtBirth: YYYY address: Tokyo-to Chiyoda-ku Iidabashi 3-10-10 streetName: Nicolas Salmeron streetNumber: '4' postalCode: '1028460' region: Tokyo locality: ZZZZ country: JP houseNumberExtension: VVVV birthdate: '1978-08-22' email: abc@example.com gender: OTHER responses: '200': description: OK headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-M-V0' content: application/json: schema: $ref: '#/components/schemas/KYC_MatchResponse-KYC-M-V0' examples: KYC_Match200Example: value: idDocumentMatch: 'true' nameMatch: 'true' givenNameMatch: not_available familyNameMatch: not_available nameKanaHankakuMatch: 'true' nameKanaZenkakuMatch: 'false' middleNamesMatch: 'true' familyNameAtBirthMatch: 'false' familyNameAtBirthMatchScore: 90 addressMatch: 'true' streetNameMatch: 'true' streetNumberMatch: 'true' postalCodeMatch: 'true' regionMatch: 'true' localityMatch: not_available countryMatch: 'true' houseNumberExtensionMatch: not_available birthdateMatch: 'false' emailMatch: 'false' emailMatchScore: 87 genderMatch: 'false' '400': $ref: '#/components/responses/Generic400-KYC-M-V0' '401': $ref: '#/components/responses/Generic401-KYC-M-V0' '403': $ref: '#/components/responses/Generic403-KYC-M-V0' '404': $ref: '#/components/responses/Generic404-KYC-M-V0' '422': $ref: '#/components/responses/Generic422-KYC-M-V0' /passthrough/camara/v1/kyc-tenure/kyc-tenure/v0.1/check-tenure: post: tags: - KYC Tenure v0.1 - KYC Tenure v0.1 - Check Subscriber Tenure summary: The KYC Tenure service API description: > Verifies a specified length of tenure, based on a provided date, for a network subscriber to establish a level of trust for the network subscription identifier. security: - openId: - 'kyc-tenure:check-tenure' operationId: checkTenure parameters: - in: header name: x-correlator description: Correlation id for the different services required: false schema: type: string pattern: '^[a-zA-Z0-9-]{1,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 - in: header name: authorization required: false description: authorization header for token schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Tenure-KYC-T-V0' examples: CHECK_TENURE_REQUEST: summary: >- Example request to check tenure from 2023-07-03 for phone number +99999991000 value: phoneNumber: '+99999991000' tenureDate: '2023-07-03' CHECK_TENURE_REQUEST_3_LEGGED: summary: >- Example request to check tenure from 2023-07-03 when phone number is identified from access token value: tenureDate: '2023-07-03' responses: '200': description: Respond with tenure information headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-T-V0' content: application/json: schema: $ref: '#/components/schemas/TenureInfo-KYC-T-V0' '400': $ref: '#/components/responses/Generic400-KYC-T-V0' '401': $ref: '#/components/responses/Generic401-KYC-T-V0' '403': $ref: '#/components/responses/Generic403-KYC-T-V0' '404': $ref: '#/components/responses/Generic404-KYC-T-V0' '422': $ref: '#/components/responses/Generic422-KYC-T-V0' /passthrough/camara/v1/kyc-fill-in/kyc-fill-in/v0.4/fill-in: post: tags: - KYC FIll In v0.4 - KYC FIll In v0.4 - Fill-in summary: >- Providing information related to a customer identity stored the account data bound to the customer's phone number. operationId: kycFillIn security: - openId: - 'kyc-fill-in:set-all' - openId: - 'kyc-fill-in:phoneNumber' - openId: - 'kyc-fill-in:idDocument' - openId: - 'kyc-fill-in:idDocumentType' - openId: - 'kyc-fill-in:idDocumentExpiryDate' - openId: - 'kyc-fill-in:name' - openId: - 'kyc-fill-in:givenName' - openId: - 'kyc-fill-in:familyName' - openId: - 'kyc-fill-in:nameKanaHankaku' - openId: - 'kyc-fill-in:nameKanaZenkaku' - openId: - 'kyc-fill-in:middleNames' - openId: - 'kyc-fill-in:familyNameAtBirth' - openId: - 'kyc-fill-in:address' - openId: - 'kyc-fill-in:streetName' - openId: - 'kyc-fill-in:streetNumber' - openId: - 'kyc-fill-in:postalCode' - openId: - 'kyc-fill-in:region' - openId: - 'kyc-fill-in:locality' - openId: - 'kyc-fill-in:country' - openId: - 'kyc-fill-in:houseNumberExtension' - openId: - 'kyc-fill-in:birthdate' - openId: - 'kyc-fill-in:email' - openId: - 'kyc-fill-in:gender' - openId: - 'kyc-fill-in:cityOfBirth' - openId: - 'kyc-fill-in:countryOfBirth' - openId: - 'kyc-fill-in:nationality' parameters: - $ref: '#/components/parameters/x-correlator-KYC-FIN-V0' - in: header name: authorization required: false description: authorization header for token schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/KYC_FillinRequest-KYC-FIN-V0' examples: KYC_Fill_In: value: phoneNumber: '+99999991000' KYC_Fill_In_3_Legged: summary: >- Example request without phone number when using three-legged access token value: {} responses: '200': description: OK headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-FIN-V0' content: application/json: schema: $ref: '#/components/schemas/KYC_FillinResponse-KYC-FIN-V0' examples: KYC_Fillin200Example: value: phoneNumber: '+99999991000' idDocument: 66666666q idDocumentType: passport idDocumentExpiryDate: '2027-07-12' name: Federica Sanchez Arjona givenName: Federica familyName: Sanchez Arjona nameKanaHankaku: federica nameKanaZenkaku: Federica middleNames: Sanchez familyNameAtBirth: YYYY address: Tokyo-to Chiyoda-ku Iidabashi 3-10-10 streetName: Nicolas Salmeron streetNumber: '4' postalCode: '1028460' region: Tokyo locality: ZZZZ country: JP houseNumberExtension: '36' birthdate: '1978-08-22' email: abc@example.com gender: MALE cityOfBirth: Madrid countryOfBirth: ES nationality: ES '400': $ref: '#/components/responses/Generic400-KYC-FIN-V0' '401': $ref: '#/components/responses/Generic401-KYC-FIN-V0' '403': $ref: '#/components/responses/Generic403-KYC-FIN-V0' '404': $ref: '#/components/responses/Generic404-KYC-FIN-V0' '422': $ref: '#/components/responses/Generic422-KYC-FIN-V0' /passthrough/camara/v1/number-recycling/number-recycling/v0.2/check: post: security: - openId: - 'number-recycling:check' tags: - Number Recycling v0.2 - Number Recycling v0.2 - Number Recycling v0.2 - Number Recycling v0.2 - Check Number Recycling summary: Check whether the subscriber of the phone number has changed. description: Check whether the subscriber of the phone number has changed. operationId: checkNumberRecycling parameters: - $ref: '#/components/parameters/x-correlator-NUMR-RECYCL-V0' - in: header name: authorization required: false description: authorization header for token schema: type: string requestBody: description: Check whether the subscriber of the phone number has changed. required: true content: application/json: schema: $ref: '#/components/schemas/CreateCheckNumRecycling-NUMR-RECYCL-V0' examples: CHECK_NUMBER_RECYCLING: value: phoneNumber: '+99999991000' specifiedDate: '2024-10-31' CHECK_NUMBER_RECYCLING_REQUEST_3_LEGGED: summary: >- Example request without phone number when using three-legged access token value: specifiedDate: '2024-10-31' responses: '200': $ref: '#/components/responses/Generic200-NUMR-RECYCL-V0' '400': $ref: '#/components/responses/Generic400-NUMR-RECYCL-V0' '401': $ref: '#/components/responses/Generic401-NUMR-RECYCL-V0' '403': $ref: '#/components/responses/Generic403-NUMR-RECYCL-V0' '404': $ref: '#/components/responses/Generic404-NUMR-RECYCL-V0' '422': $ref: '#/components/responses/Generic422-NUMR-RECYCL-V0' /passthrough/camara/v1/sim-swap/sim-swap/v0/retrieve-date: post: security: - openId: - 'sim-swap:retrieve-date' - openId: - sim-swap tags: - SIM Swap v1.0.0 - Check SIM swap description: >- Get timestamp of last SIM swap event for a mobile user account provided with phone number. operationId: retrieveSimSwapDate parameters: - $ref: '#/components/parameters/x-correlator-SIM-V1' requestBody: description: | Create a SIM swap date request for a phone number. content: application/json: schema: $ref: '#/components/schemas/CreateSimSwapDate-SIM-V1' examples: SIM_SWAP_RETRIEVE_PHONE_NUMBER: value: phoneNumber: '+99999991000' required: true responses: '200': description: Contains information about SIM swap change headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/SimSwapInfo-SIM-V1' '400': $ref: '#/components/responses/Generic400-SIM-V1' '401': $ref: '#/components/responses/Generic401-SIM-V1' '403': $ref: '#/components/responses/Generic403-SIM-V1' '404': $ref: '#/components/responses/Generic404-SIM-V1' '422': $ref: '#/components/responses/Generic422-SIM-V1' '500': $ref: '#/components/responses/Generic500-SIM-V1' '503': $ref: '#/components/responses/Generic503-SIM-V1' '504': $ref: '#/components/responses/Generic504-SIM-V1' /passthrough/camara/v1/sim-swap/sim-swap/v0/check: post: security: - openId: - 'sim-swap:check' - openId: - sim-swap tags: - SIM Swap v1.0.0 - Check SIM swap description: Check if SIM swap has been performed during a past period operationId: checkSimSwap parameters: - $ref: '#/components/parameters/x-correlator-SIM-V1' requestBody: description: | Create a check SIM swap request for a phone number. content: application/json: schema: $ref: '#/components/schemas/CreateCheckSimSwap-SIM-V1' examples: SIM_SWAP_CHECK_TRUE_PHONE_NUMBER: value: phoneNumber: '+99999991000' maxAge: 240 SIM_SWAP_CHECK_FALSE_PHONE_NUMBER: value: phoneNumber: '+99999991001' maxAge: 240 required: true responses: '200': description: Returns whether a SIM swap has been performed during a past period headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/CheckSimSwapInfo-SIM-V1' '400': $ref: '#/components/responses/Generic400-SIM-V1' '401': $ref: '#/components/responses/Generic401-SIM-V1' '403': $ref: '#/components/responses/Generic403-SIM-V1' '404': $ref: '#/components/responses/Generic404-SIM-V1' '422': $ref: '#/components/responses/Generic422-SIM-V1' '500': $ref: '#/components/responses/Generic500-SIM-V1' '503': $ref: '#/components/responses/Generic503-SIM-V1' '504': $ref: '#/components/responses/Generic504-SIM-V1' /passthrough/camara/v1/device-swap/device-swap/v1/retrieve-date: post: tags: - Device Swap v1.0.0 - Check Device Swap summary: Get last device swap date description: >- Get timestamp of last device swap for a mobile user account provided with phone number. operationId: retrieveDeviceSwapDate security: - openId: - device-swap - openId: - 'device-swap:retrieve-date' parameters: - $ref: '#/components/parameters/x-correlator-DSWAP-V1' requestBody: description: | Create a device swap date request for a phone number. content: application/json: schema: $ref: '#/components/schemas/CreateDeviceSwapDate-DSWAP-V1' examples: RETRIEVE: summary: Retrieve request without 3-legged access tokens value: phoneNumber: '+99999991001' responses: '200': description: Contains information about Device swap change headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: $ref: '#/components/schemas/DeviceSwapInfo-DSWAP-V1' examples: RETRIEVE_DATE: $ref: '#/components/examples/RETRIEVE_DATE-DSWAP-V1' RETRIEVE_MONITORED_PERIOD: $ref: '#/components/examples/RETRIEVE_MONITORED_PERIOD-DSWAP-V1' RETRIEVE_MONITORED_NULL: $ref: '#/components/examples/RETRIEVE_MONITORED_NULL-DSWAP-V1' '400': $ref: '#/components/responses/Generic400-DSWAP-V1' '401': $ref: '#/components/responses/Generic401-DSWAP-V1' '403': $ref: '#/components/responses/Generic403-DSWAP-V1' '404': $ref: '#/components/responses/Generic404-DSWAP-V1' '422': $ref: '#/components/responses/Generic422-DSWAP-V1' /passthrough/camara/v1/device-swap/device-swap/v1/check: post: tags: - Device Swap v1.0.0 - Check Device Swap summary: Check last device swap date description: Check if device swap has been performed during a past period operationId: checkDeviceSwap security: - openId: - device-swap - openId: - 'device-swap:check' parameters: - $ref: '#/components/parameters/x-correlator-DSWAP-V1' requestBody: required: true description: Create a check device swap request for a phone number. content: application/json: schema: $ref: '#/components/schemas/CreateCheckDeviceSwap-DSWAP-V1' examples: DEVICE_SWAP_CHECK_TRUE_PHONE_NUMBER: summary: >- Example request where device swap is simulated as True (phoneNumber ending in 1000) value: phoneNumber: '+99999991000' maxAge: 120 DEVICE_SWAP_CHECK_FALSE_PHONE_NUMBER: summary: >- Example request where device swap is simulated as False (phoneNumber ending in 1001) value: phoneNumber: '+99999991001' maxAge: 120 responses: '200': description: >- Returns whether a device swap has been performed during a past period headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: $ref: '#/components/schemas/CheckDeviceSwapInfo-DSWAP-V1' '400': $ref: '#/components/responses/Generic400Check-DSWAP-V1' '401': $ref: '#/components/responses/Generic401-DSWAP-V1' '403': $ref: '#/components/responses/Generic403-DSWAP-V1' '404': $ref: '#/components/responses/Generic404-DSWAP-V1' '422': $ref: '#/components/responses/Generic422-DSWAP-V1' /qod/v0/sessions: get: tags: - Quality-of-Service on Demand v0.10.1 - QoS Sessions v0 summary: Return QoD settings for your devices. deprecated: true description: Return device communication Quality-on-Demand settings for your devices. operationId: getAllSessions responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/SessionInfo-QoD-V0' type: array title: Response Getallsessions post: tags: - Quality-of-Service on Demand v0.10.1 - QoS Sessions v0 summary: Creates a new session deprecated: true description: > Create QoS Session to manage latency/throughput priorities If the qosStatus in the API response is "AVAILABLE" and a notification callback is provided the client will receive in addition to the response a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE`. If the `qosStatus` in the API response is `REQUESTED`, the client will receive either - a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE` after the network notifies that it has created the requested session, or - a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `UNAVAILABLE` and `statusInfo` as `NETWORK_TERMINATED` after the network notifies that it has failed to provide the requested session. A `QOS_STATUS_CHANGED` event notification with `qosStatus` as `UNAVAILABLE` will also be send if the network terminates the session before the requested duration expired NOTE: in case of a `QOS_STATUS_CHANGED` event with `qosStatus` as `UNAVAILABLE` and `statusInfo` as `NETWORK_TERMINATED` the resources of the QoS session are not directly released, but will get deleted automatically at earliest 360 seconds after the event. This behavior allows clients which are not receiving notification events but are polling to get the session information with the `qosStatus` `UNAVAILABLE` (the `statusInfo` parameter is not included in the current version but will be adding to `SessionInfo` in an upcoming release). Before a client can attempt to create a new QoD session for the same device and flow period they must release the session resources with an explicit `delete` operation if not yet automatically deleted. operationId: createSession requestBody: description: Parameters to create a new session content: application/json: schema: $ref: '#/components/schemas/CreateSession-QoD-V0' examples: QOS_STATUS_AVAILABLE_NO_INFO_PHONE_NUMBER: value: device: phoneNumber: '+99999991001' ipv4Address: publicAddress: 233.252.0.2 privateAddress: 192.0.2.25 publicPort: 80 applicationServer: ipv4Address: 8.8.8.8 qosProfile: DOWNLINK_M_UPLINK_L duration: 60 required: true callbacks: notifications: '{$request.body#/webhook/notificationUrl}': post: tags: - Session notifications callback summary: Session notifications callback deprecated: true description: > Important: this endpoint is to be implemented by the API consumer. The QoD server will call this endpoint whenever any QoS session change (e.g. network termination) related event occurs. Currently only QOS_STATUS_CHANGED event is defined. operationId: postNotification requestBody: required: true content: application/cloudevents+json: schema: $ref: '#/components/schemas/CloudEvent-QoD-V0' examples: QOS_STATUS_CHANGED_EXAMPLE: $ref: '#/components/examples/QOS_STATUS_CHANGED_EXAMPLE-QoD-V0' responses: '204': description: Successful notification '400': $ref: '#/components/responses/Generic400-QoD-V0' '401': $ref: '#/components/responses/Generic401-QoD-V0' '403': $ref: '#/components/responses/Generic403-QoD-V0' '500': $ref: '#/components/responses/Generic500-QoD-V0' '503': $ref: '#/components/responses/Generic503-QoD-V0' security: - {} - notificationsBearerAuth: [] responses: '201': description: Session created content: application/json: schema: $ref: '#/components/schemas/SessionInfo-QoD-V0' '400': description: Invalid input for createSession operation content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' examples: Generic400: summary: >- Some parameter combinations or parameter values provided are not schema compliant value: status: 400 code: INVALID_ARGUMENT message: Schema validation failed at ... DeviceMissing: summary: Device must be specified value: status: 400 code: INVALID_ARGUMENT message: 'Expected property is missing: device' InsufficientDeviceProperties: summary: Device must be identified by at least one parameter value: status: 400 code: INVALID_ARGUMENT message: 'Insufficient properties specified: device' InconsistentDeviceProperties: summary: Device parameters provided identify different devices value: status: 400 code: INVALID_ARGUMENT message: 'Multiple inconsistent parameters specified: device' CannotIdentifyDevice: summary: No device can be identified from provided parameters value: status: 400 code: INVALID_ARGUMENT message: >- Unable to identify device from specified parameters: device InvalidDevicePublicPortValue: summary: Invalid port specified for device public port value: status: 400 code: OUT_OF_RANGE message: >- Invalid port value specified: device.ipv4Address.publicPort ApplicationServerMissing: summary: Application server must be specified value: status: 400 code: INVALID_ARGUMENT message: 'Expected property is missing: applicationServer' QoSProfileMissing: summary: Required QoS profile must be specified value: status: 400 code: INVALID_ARGUMENT message: 'Expected property is missing: qosProfile' InvalidDevicePortsRanges: summary: Invalid port ranges specified for devicePorts value: status: 400 code: OUT_OF_RANGE message: 'Invalid port ranges specified: devicePorts' DurationOutOfRangeForQoSProfile: summary: >- The requested duration is out of the allowed range for the specific QoS profile value: status: 400 code: OUT_OF_RANGE message: >- The requested duration is out of the allowed range for the specific QoS profile '401': $ref: '#/components/responses/Generic401-QoD-V0' '403': $ref: '#/components/responses/Generic403-QoD-V0' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 409 code: CONFLICT message: Another session is created for the same device '500': $ref: '#/components/responses/Generic500-QoD-V0' '501': $ref: '#/components/responses/Generic501-QoD-V0' '503': $ref: '#/components/responses/Generic503-QoD-V0' '/qod/v0/sessions/{sessionId}': get: tags: - Quality-of-Service on Demand v0.10.1 - QoS Sessions v0 summary: Get QoS session information deprecated: true description: Querying for QoS session resource information details operationId: getSession parameters: - name: sessionId in: path description: Session ID that was obtained from the createSession operation required: true schema: $ref: '#/components/schemas/SessionId-QoD-V0' responses: '200': description: Contains information about active session content: application/json: schema: $ref: '#/components/schemas/SessionInfo-QoD-V0' '400': $ref: '#/components/responses/Generic400-QoD-V0' '401': $ref: '#/components/responses/Generic401-QoD-V0' '403': $ref: '#/components/responses/Generic403-QoD-V0' '404': $ref: '#/components/responses/SessionNotFound404-QoD-V0' '500': $ref: '#/components/responses/Generic500-QoD-V0' '503': $ref: '#/components/responses/Generic503-QoD-V0' delete: tags: - Quality-of-Service on Demand v0.10.1 - QoS Sessions v0 summary: Delete a QoS session deprecated: true description: > Release resources related to QoS session If the notification callback is provided and the `qosStatus` of the session was `AVAILABLE` the client will receive in addition to the response a `QOS_STATUS_CHANGED` event with - `qosStatus` as `UNAVAILABLE` and - `statusInfo` as `DELETE_REQUESTED` There will be no notification event if the `qosStatus` was already `UNAVAILABLE`. operationId: deleteSession parameters: - name: sessionId in: path description: Session ID that was obtained from the createSession operation required: true schema: $ref: '#/components/schemas/SessionId-QoD-V0' responses: '204': description: Session deleted '400': $ref: '#/components/responses/Generic400-QoD-V0' '401': $ref: '#/components/responses/Generic401-QoD-V0' '403': $ref: '#/components/responses/Generic403-QoD-V0' '404': $ref: '#/components/responses/SessionNotFound404-QoD-V0' '500': $ref: '#/components/responses/Generic500-QoD-V0' '503': $ref: '#/components/responses/Generic503-QoD-V0' '/qod/v0/sessions/{sessionId}/extend': post: tags: - Quality-of-Service on Demand v0.10.1 - QoS Sessions v0 summary: Extend the duration of an active session deprecated: true description: > Extend the overall duration of an active QoS session. If this operation is executed successfully, the new duration of the target session will be the original duration plus the additionally requested duration. The new remaining duration of the QoS session shall not exceed the maximum remaining duration limit (currently fixed at 86,400 seconds) where the remaining duration is calculated as the difference between the `expiresAt` and current time when the request to extend the session duration is received. If this maximum limit would be exceeded, the overall duration shall be set such that the remaining duration is equal to this limit. An example: A QoD session was originally created with duration 80,000 seconds. 10,000 seconds later, the developer requested to extend the session by 20,000 seconds. - Original duration: 80,000 seconds - Elapsed time: 10,000 seconds - Remaining duration: 70,000 seconds - New remaining duration: 86,400 seconds (the maximum allowed) - New overall session duration: 96,400 seconds operationId: extendQosSessionDuration parameters: - name: sessionId in: path description: Session ID that was obtained from the createSession operation required: true schema: $ref: '#/components/schemas/SessionId-QoD-V0' requestBody: description: Parameters to extend the duration of an active session content: application/json: schema: $ref: '#/components/schemas/ExtendSessionDuration-QoD-V0' required: true responses: '200': description: Contains information about active session content: application/json: schema: $ref: '#/components/schemas/SessionInfo-QoD-V0' '400': description: Invalid input for extendQosSessionDuration operation content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' examples: Generic400: summary: >- Some parameter combinations or parameter values provided are not schema compliant value: status: 400 code: INVALID_ARGUMENT message: Schema validation failed at ... InactiveSession: summary: The target session is inactive value: status: 400 code: INVALID_ARGUMENT message: The target session is inactive '401': $ref: '#/components/responses/Generic401-QoD-V0' '403': $ref: '#/components/responses/Generic403-QoD-V0' '404': $ref: '#/components/responses/SessionNotFound404-QoD-V0' '500': $ref: '#/components/responses/Generic500-QoD-V0' '503': $ref: '#/components/responses/Generic503-QoD-V0' /qod/v0/retrieve-sessions: post: summary: Retrieve sessions for a specific device deprecated: true description: Return all QoD sessions related to the specified device. operationId: retrieveSessions requestBody: content: application/json: schema: $ref: '#/components/schemas/RetrieveSessionInput-QoD-V0' examples: QOS_RETRIEVE_SESSION_PHONE_NUMBER: value: device: phoneNumber: '+99999991001' required: true responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/SessionInfo-QoD-V0' type: array title: Response Retrievesessions '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-QoD-V0' tags: - Quality-of-Service on Demand v0.10.1 - QoS Sessions v0 /quality-on-demand/v1/sessions: get: tags: - Quality-of-Service on Demand v1.0.0 - QoS Sessions summary: Return QoD settings for your devices. description: Return device communication Quality-on-Demand settings for your devices. operationId: getAllSessions-QoD-V1 responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/SessionInfo-QoD-V1' type: array title: Response Getallsessions post: tags: - Quality-of-Service on Demand v1.0.0 - QoS Sessions summary: Creates a new session description: > Create QoS Session to manage latency/throughput priorities If the qosStatus in the API response is "AVAILABLE" and a notification callback is provided the API consumer will receive in addition to the response a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE`. If the `qosStatus` in the API response is `REQUESTED`, the client will receive either - a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `AVAILABLE` after the network notifies that it has created the requested session, or - a `QOS_STATUS_CHANGED` event notification with `qosStatus` as `UNAVAILABLE` and `statusInfo` as `NETWORK_TERMINATED` after the network notifies that it has failed to provide the requested session. A `QOS_STATUS_CHANGED` event notification with `qosStatus` as `UNAVAILABLE` will also be send if the network terminates the session before the requested duration expired NOTE: in case of a `QOS_STATUS_CHANGED` event with `qosStatus` as `UNAVAILABLE` and `statusInfo` as `NETWORK_TERMINATED` the resources of the QoS session are not directly released, but will get deleted automatically at earliest 360 seconds after the event. This behavior allows clients which are not receiving notification events but are polling to get the session information with the `qosStatus` `UNAVAILABLE` (the `statusInfo` parameter is not included in the current version but will be adding to `SessionInfo` in an upcoming release). Before a client can attempt to create a new QoD session for the same device and flow period they must release the session resources with an explicit `delete` operation if not yet automatically deleted. operationId: createSession-QoD-V1 requestBody: description: Parameters to create a new session content: application/json: schema: $ref: '#/components/schemas/CreateSession-QoD-V1' examples: QOS_STATUS_AVAILABLE_NO_INFO_PHONE_NUMBER: value: device: phoneNumber: '+99999991001' ipv4Address: publicAddress: 233.252.0.2 privateAddress: 192.0.2.25 publicPort: 80 applicationServer: ipv4Address: 8.8.8.8 qosProfile: DOWNLINK_M_UPLINK_L duration: 60 required: true callbacks: notifications: '{$request.body#/sink}': post: tags: - Session notifications callback summary: Session notifications callback description: > Important: this endpoint is to be implemented by the API consumer. The API provider will call this endpoint whenever any QoS session change (e.g. network termination) related event occurs. Currently only QOS_STATUS_CHANGED event is defined. operationId: postNotification requestBody: required: true content: application/cloudevents+json: schema: $ref: '#/components/schemas/CloudEvent-QoD-V1' examples: QOS_STATUS_CHANGED_EXAMPLE: $ref: '#/components/examples/QOS_STATUS_CHANGED_EXAMPLE-QoD-V1' responses: '204': description: Successful notification '400': $ref: '#/components/responses/Generic400-QoD-V1' '401': $ref: '#/components/responses/Generic401-QoD-V1' '403': $ref: '#/components/responses/Generic403-QoD-V1' '500': $ref: '#/components/responses/Generic500-QoD-V1' '503': $ref: '#/components/responses/Generic503-QoD-V1' security: - {} - notificationsBearerAuth: [] responses: '201': description: Session created content: application/json: schema: $ref: '#/components/schemas/SessionInfo-QoD-V1' '400': description: Invalid input for createSession operation content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-QoD-V1' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE - QUALITY_ON_DEMAND.DURATION_OUT_OF_RANGE - INVALID_CREDENTIAL - INVALID_TOKEN examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. DurationOutOfRangeForQoSProfile: description: >- The requested duration is out of the allowed range for the specific QoS profile value: status: 400 code: QUALITY_ON_DEMAND.DURATION_OUT_OF_RANGE message: >- The requested duration is out of the allowed range for the specific QoS profile GENERIC_400_INVALID_CREDENTIAL: value: status: 400 code: INVALID_CREDENTIAL message: Only Access token is supported GENERIC_400_INVALID_TOKEN: value: status: 400 code: INVALID_TOKEN message: Only bearer token is supported '401': $ref: '#/components/responses/Generic401-QoD-V1' '403': $ref: '#/components/responses/Generic403-QoD-V1' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 409 code: CONFLICT message: Another session is created for the same device '500': $ref: '#/components/responses/Generic500-QoD-V1' '501': $ref: '#/components/responses/Generic501-QoD-V1' '503': $ref: '#/components/responses/Generic503-QoD-V1' '/quality-on-demand/v1/sessions/{sessionId}': get: tags: - Quality-of-Service on Demand v1.0.0 - QoS Sessions summary: Get QoS session information description: Querying for QoS session resource information details operationId: getSession-QoD-V1 parameters: - name: sessionId in: path description: Session ID that was obtained from the createSession operation required: true schema: $ref: '#/components/schemas/SessionId-QoD-V1' responses: '200': description: Contains information about active session content: application/json: schema: $ref: '#/components/schemas/SessionInfo-QoD-V1' '400': $ref: '#/components/responses/Generic400-QoD-V1' '401': $ref: '#/components/responses/Generic401-QoD-V1' '403': $ref: '#/components/responses/Generic403-QoD-V1' '404': $ref: '#/components/responses/SessionNotFound404-QoD-V1' '500': $ref: '#/components/responses/Generic500-QoD-V1' '503': $ref: '#/components/responses/Generic503-QoD-V1' delete: tags: - Quality-of-Service on Demand v1.0.0 - QoS Sessions summary: Delete a QoS session description: > Release resources related to QoS session If the notification callback is provided and the `qosStatus` of the session was `AVAILABLE` the client will receive in addition to the response a `QOS_STATUS_CHANGED` event with - `qosStatus` as `UNAVAILABLE` and - `statusInfo` as `DELETE_REQUESTED` There will be no notification event if the `qosStatus` was already `UNAVAILABLE`. operationId: deleteSession-QoD-V1 parameters: - name: sessionId in: path description: Session ID that was obtained from the createSession operation required: true schema: $ref: '#/components/schemas/SessionId-QoD-V1' responses: '204': description: Session deleted '400': $ref: '#/components/responses/Generic400-QoD-V1' '401': $ref: '#/components/responses/Generic401-QoD-V1' '403': $ref: '#/components/responses/Generic403-QoD-V1' '404': $ref: '#/components/responses/SessionNotFound404-QoD-V1' '500': $ref: '#/components/responses/Generic500-QoD-V1' '503': $ref: '#/components/responses/Generic503-QoD-V1' '/quality-on-demand/v1/sessions/{sessionId}/extend': post: tags: - Quality-of-Service on Demand v1.0.0 - QoS Sessions summary: Extend the duration of an active session description: > Extend the overall duration of an active QoS session. If this operation is executed successfully, the new duration of the target session will be the original duration plus the additionally requested duration. The new remaining duration of the QoS session shall not exceed the maximum remaining duration limit (currently fixed at 86,400 seconds) where the remaining duration is calculated as the difference between the `expiresAt` and current time when the request to extend the session duration is received. If this maximum limit would be exceeded, the overall duration shall be set such that the remaining duration is equal to this limit. An example: A QoD session was originally created with duration 80,000 seconds. 10,000 seconds later, the developer requested to extend the session by 20,000 seconds. - Original duration: 80,000 seconds - Elapsed time: 10,000 seconds - Remaining duration: 70,000 seconds - New remaining duration: 86,400 seconds (the maximum allowed) - New overall session duration: 96,400 seconds operationId: extendQosSessionDuration-QoD-V1 parameters: - name: sessionId in: path description: Session ID that was obtained from the createSession operation required: true schema: $ref: '#/components/schemas/SessionId-QoD-V1' requestBody: description: Parameters to extend the duration of an active session content: application/json: schema: $ref: '#/components/schemas/ExtendSessionDuration-QoD-V1' required: true responses: '200': description: Contains information about active session content: application/json: schema: $ref: '#/components/schemas/SessionInfo-QoD-V1' '400': description: Invalid input for extendQosSessionDuration operation content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' examples: Generic400: summary: >- Some parameter combinations or parameter values provided are not schema compliant value: status: 400 code: INVALID_ARGUMENT message: Schema validation failed at ... InactiveSession: summary: The target session is inactive value: status: 400 code: INVALID_ARGUMENT message: The target session is inactive '401': $ref: '#/components/responses/Generic401-QoD-V1' '403': $ref: '#/components/responses/Generic403-QoD-V1' '404': $ref: '#/components/responses/SessionNotFound404-QoD-V1' '500': $ref: '#/components/responses/Generic500-QoD-V1' '503': $ref: '#/components/responses/Generic503-QoD-V1' /quality-on-demand/v1/retrieve-sessions: post: tags: - Quality-of-Service on Demand v1.0.0 - QoS Sessions summary: Retrieve sessions for a specific device description: Return all QoD sessions related to the specified device. operationId: retrieveSessions-QoD-V1 requestBody: content: application/json: schema: $ref: '#/components/schemas/RetrieveSessionInput-QoD-V1' examples: QOS_RETRIEVE_SESSION_PHONE_NUMBER: value: device: phoneNumber: '+99999991001' required: true responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/SessionInfo-QoD-V1' type: array title: Response Retrievesessions '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-QoD-V1' /passthrough/camara/v1/call-forwarding-signal/call-forwarding-signal/v0.3/unconditional-call-forwardings: post: security: - openId: - 'call-forwarding-signal:unconditional-call-forwardings:read' summary: >- Retrieve the information about the status of the unconditional call forwarding service on a phone number (PhoneNumber) description: >- This endpoint provides information about the status of the unconditional call forwarding, beeing active or not. operationId: retrieveUnconditionalCallForwarding parameters: - $ref: '#/components/parameters/x-correlator-Cfs-V0' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCallForwardingSignal-Cfs-V0' examples: UNCONDITIONAL_SETTING_ACTIVE: summary: Phone number - active description: >- Verify if a subscription identified by a phone number has the unconditional call forwarding setting enabled value: phoneNumber: '+99999991000' UNCONDITIONAL_SETTING_INACTIVE: summary: Phone number - inactive description: >- Verify if a subscription identified by a phone number has not got the unconditional call forwarding setting enabled value: phoneNumber: '+99999991001' required: true responses: '200': description: OK. headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: $ref: '#/components/schemas/UnconditionalCallForwardingSignal-Cfs-V0' '400': $ref: '#/components/responses/Generic400-Cfs-V0' '401': $ref: '#/components/responses/Generic401-Cfs-V0' '403': $ref: '#/components/responses/Generic403-Cfs-V0' '404': $ref: '#/components/responses/Generic404-Cfs-V0' '422': $ref: '#/components/responses/Generic422-Cfs-V0' '429': $ref: '#/components/responses/Generic429-Cfs-V0' tags: - Call Forwarding Signal v0.3.0 /passthrough/camara/v1/call-forwarding-signal/call-forwarding-signal/v0.3/call-forwardings: post: security: - openId: - 'call-forwarding-signal:call-forwardings:read' summary: >- Retrieve the information about the type of call forwarding service active on a phone number (PhoneNumber) description: >- This endpoint provides information about wich type of call forwarding service is active. More than one service can be active, e.g. conditional and unconditional. This endpoit exceeds the main scope of the CFS API, for this reason an error code 501 can be returned. operationId: retrieveCallForwarding parameters: - $ref: '#/components/parameters/x-correlator-Cfs-V0' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCallForwardingSignal-Cfs-V0' examples: CALLFORWARDING_SETTINGs_ACTIVE: summary: Phone number - forwarding enabled description: >- Verify if a subscription identified by a phone number has call forwardings settings enabled value: phoneNumber: '+99999991111' CALLFORWARDING_SETTINGs_INACTIVE: summary: Phone number - forwarding disabled description: >- Verify if a subscription identified by a phone number has call forwarding settings disenabled value: phoneNumber: '+99999991001' required: true responses: '200': description: OK. headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: $ref: '#/components/schemas/CallForwardingSignal-Cfs-V0' '400': $ref: '#/components/responses/Generic400-Cfs-V0' '401': $ref: '#/components/responses/Generic401-Cfs-V0' '403': $ref: '#/components/responses/Generic403-Cfs-V0' '404': $ref: '#/components/responses/Generic404-Cfs-V0' '422': $ref: '#/components/responses/Generic422-Cfs-V0' '429': $ref: '#/components/responses/Generic429-Cfs-V0' '501': $ref: '#/components/responses/Generic501-Cfs-V0' tags: - Call Forwarding Signal v0.3.0 /passthrough/camara/v1/consent-info/consent-info/v0.1/retrieve: post: summary: Create a request to retrieve the validity status of the data processing description: > Create a request to retrieve the validity status of the API Consumer data processing for a given User, scope(s) and Purpose. operationId: retrieveStatus security: - openId: - 'consent-info:retrieve' tags: - Consent Info v0.1.0 - Consent Info v0.1.0 - Retrieve Status parameters: - $ref: '#/components/parameters/x-correlator-ConsentInfo-V0' requestBody: required: true description: Retrieve status request content: application/json: schema: $ref: '#/components/schemas/RetrieveStatusRequestBody-ConsentInfo-V0' examples: SCOPE_VALID_FOR_PROCESSING: value: phoneNumber: '+99999991000' scopes: - 'location-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' requestCaptureUrl: false SCOPE_NOT_VALID_STATUS_PENDING: value: phoneNumber: '+99999991001' scopes: - 'quality-on-demand:sessions:create' purpose: 'dpv:RequestedServiceProvision' requestCaptureUrl: false SCOPE_NOT_VALID_STATUS_REQUESTED: value: phoneNumber: '+99999991002' scopes: - 'device-roaming-status:read' purpose: 'dpv:FraudPreventionAndDetection' requestCaptureUrl: false SCOPE_NOT_VALID_STATUS_REVOKED: value: phoneNumber: '+99999991003' scopes: - 'sim-swap:check' purpose: 'dpv:FraudPreventionAndDetection' requestCaptureUrl: false SCOPE_NOT_VALID_STATUS_EXPIRED: value: phoneNumber: '+99999991004' scopes: - 'number-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' requestCaptureUrl: false SCOPE_NOT_VALID_STATUS_OBJECTED: value: phoneNumber: '+99999991005' scopes: - 'location-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' requestCaptureUrl: false responses: '200': description: OK headers: x-correlator: $ref: '#/components/headers/x-correlator-ConsentInfo-V0' content: application/json: schema: $ref: '#/components/schemas/RetrieveStatusResponseBody-ConsentInfo-V0' examples: READY_FOR_PROCESSING: summary: Ready for processing description: > Data processing is allowed for the requested scope(s) and Purpose. value: statusInfo: - scopes: - 'number-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: true CONSENT_REQUIRED: summary: Consent is required description: | Consent is required for the requested scope(s) and Purpose value: statusInfo: - scopes: - 'location-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: REQUESTED CONSENT_REQUIRED_CAPTURE_URL: summary: Consent is required and capture URL is provided description: > Consent is required for the requested scope(s) and Purpose but it is expired. The API Provider provides a Consent capture URL. value: statusInfo: - scopes: - 'location-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: EXPIRED expirationDate: '2023-07-03T14:27:08.312+02:00' captureUrl: 'https://example.org/consent-capture-url' CONSENT_REVOKED: summary: Consent is revoked description: | Consent is revoked for the requested scope(s) and Purpose. value: statusInfo: - scopes: - 'location-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: REVOKED DATA_PROCESSING_OPT_OUT: summary: Data processing opt-out description: > The User has opted out of the data processing for the requested scope(s) and Purpose. value: statusInfo: - scopes: - 'number-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: OBJECTED MULTIPLE_SCOPES_ONE_API: summary: Multiple scopes for one API description: | Request with multiple scopes corresponding to one API. value: statusInfo: - scopes: - 'quality-on-demand:sessions:create' - 'quality-on-demand:sessions:read' - 'quality-on-demand:sessions:update' - 'quality-on-demand:sessions:delete' - 'quality-on-demand:sessions:retrieve-by-device' purpose: 'dpv:RequestedServiceProvision' statusValidForProcessing: true MULTIPLE_SCOPES_MULTIPLE_APIS: summary: Multiple scopes for multiple APIs description: | Request with multiple scopes corresponding to multiple APIs. value: statusInfo: - scopes: - 'location-verification:verify' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: PENDING - scopes: - 'device-roaming-status:read' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: PENDING captureUrl: 'https://example.org/consent-capture-url' MULTIPLES_SCOPES_ONE_API_DIFFERENT_STATUS: summary: Multiple scopes for one API with different status description: > Request with multiple scopes corresponding to one API. Different status for each scope. value: statusInfo: - scopes: - 'sim-swap:check' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: true - scopes: - 'sim-swap:retrieve-date' purpose: 'dpv:FraudPreventionAndDetection' statusValidForProcessing: false statusReason: OBJECTED '400': $ref: '#/components/responses/Generic400-ConsentInfo-V0' '401': $ref: '#/components/responses/Generic401-ConsentInfo-V0' '403': $ref: '#/components/responses/retrieveStatus403-ConsentInfo-V0' '404': $ref: '#/components/responses/Generic404-ConsentInfo-V0' '422': $ref: '#/components/responses/Generic422-ConsentInfo-V0' /slice/v1/slices: get: summary: Returns All Slices description: Returns All created Network Slices operationId: getAllSlices responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/SliceData-Slice-V1' type: array title: Response Getallslices tags: - Network Slicing v1.0.0 - slice post: tags: - Network Slicing v1.0.0 - slice summary: Create a network slice. description: Create a network slice. operationId: create_slice requestBody: content: application/json: schema: $ref: '#/components/schemas/Slice-Input-Slice-V1' examples: NETWORK_SLICE_CREATION: value: notificationUrl: 'https://example.com/notify' notificationAuthToken: >- 6207f4c159esfnjsf6280c0e8417090d91710b8c9369f21d9b616ebe809d28c5dc4b1428447fa5d83988b516595253bae24e2a9eb22f43523f2ab1997dd7 networkIdentifier: mcc: '236' mnc: '30' sliceInfo: serviceType: 1 differentiator: "0003E8" maxDataConnections: 42312 maxDevices: 33 sliceUplinkThroughput: guaranteed: 15 maximum: 999999 deviceUplinkThroughput: guaranteed: 10 maximum: 20 required: true responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SliceData-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' callbacks: notification: '{$request.body#/notificationUrl}': post: summary: Notification operationId: notification__request_body__notificationUrl__post requestBody: content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' required: true responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' '/slice/v1/slices/{id}': get: tags: - Network Slicing v1.0.0 - slice summary: Get network slice data. description: Get network slice data. operationId: get_slice parameters: - name: id in: path required: true schema: type: string minLength: 5 maxLength: 64 pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{3,63}[a-zA-Z0-9]$' title: Slice name or ID example: Concert-2029-Big-Arena responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SliceData-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' delete: tags: - Network Slicing v1.0.0 - slice summary: Delete network slice. description: >- Delete network slice. The slice state must not be active to perform this operation. operationId: delete_slice parameters: - name: id in: path required: true schema: type: string minLength: 5 maxLength: 64 pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{3,63}[a-zA-Z0-9]$' title: Slice name or ID example: Concert-2029-Big-Arena callbacks: notification: '{$request.body#/notificationUrl}': post: summary: Notification operationId: notification__request_body__notificationUrl__post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Accepted-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' '/slice/v1/slices/{id}/activate': post: tags: - Network Slicing v1.0.0 - slice summary: Activate a network slice. description: Activate a network slice. operationId: activate_slice parameters: - name: id in: path required: true schema: type: string maxLength: 36 title: Id callbacks: notification: '{$request.body#/notificationUrl}': post: summary: Notification operationId: notification__request_body__notificationUrl__post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Accepted-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' '/slice/v1/slices/{id}/deactivate': post: tags: - Network Slicing v1.0.0 - slice summary: Deactivate a network slice. description: >- Deactivate a network slice. The slice state must be active to be able to perform this operation. operationId: deactivate_slice parameters: - name: id in: path required: true schema: type: string maxLength: 36 title: Id callbacks: notification: '{$request.body#/notificationUrl}': post: summary: Notification operationId: notification__request_body__notificationUrl__post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ServiceOrderClientNotif-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Accepted-Slice-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Slice-V1' /device-attach/v0/attachments: get: summary: Retrieve the given device attach resources associated with the owner. description: Retrieve the given device attach resources associated with the owner. operationId: getAllAttachmentsStatus responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/AttachInfo-Output-SliceAttach-V1' type: array title: Response Getallattachmentsstatus tags: - Slice Device Attach v1.0.0 post: summary: Attach device to an existing or preconfigured slice. description: Attach device to a specific network slice. operationId: attachDevice requestBody: content: application/json: schema: $ref: '#/components/schemas/AttachResource-Input-SliceAttach-V1' examples: DEVICE_ATTACH_PHONE_NUMBER: value: device: phoneNumber: '+99999991000' imsi: 99999991000 customer: name: DefaultAttachOperationCustomer description: I Am Default Who Order The Device Attach Operation address: Dummy Customer Address contact: My Contact Should Be Here sliceId: slice-773 mobile_services: - Voice - Voicemail - 5G-Data traffic_categories: apps: os: 09078034-07db-4b13-a970-ab80235f7369 apps: - Daedalus webhook: notificationUrl: 'https://application-server.com' notificationAuthToken: c8974e592c2fa383d4a396071 required: true responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AttachInfo-Output-SliceAttach-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' callbacks: notification: '{$request.body#/webhook/notificationUrl}': post: summary: Notification operationId: notification__request_body__webhook_notificationUrl__post requestBody: content: application/json: schema: $ref: '#/components/schemas/AttachInfo-Input-SliceAttach-V1' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' tags: - Slice Device Attach v1.0.0 '/device-attach/v0/attachments/{resource_id}': delete: summary: Detach device from given slice. description: Detach device from a specific slice. operationId: detachDevice parameters: - name: resource_id in: path required: true schema: type: string maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ title: Resource ID. example: de87e438-58b4-42c3-9d49-0fbfbd878305 callbacks: notification: '{$request.body#/webhook/notificationUrl}': post: summary: Notification operationId: notification__request_body__webhook_notificationUrl__post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AttachInfo-Input-SliceAttach-V1' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' responses: '202': description: Successful Response content: application/json: schema: allOf: - $ref: '#/components/schemas/AttachInfo-Output-SliceAttach-V1' nullable: true title: Response Detachdevice '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' tags: - Slice Device Attach v1.0.0 get: summary: Retrieve the given device attach resource. description: Retrieve the given device attach resource. operationId: getAttachmentStatus parameters: - name: resource_id in: path required: true schema: type: string maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ title: Resource ID. example: de87e438-58b4-42c3-9d49-0fbfbd878305 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AttachInfo-Output-SliceAttach-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' tags: - Slice Device Attach v1.0.0 '/device-attach/v0/attachments/subscribers/{operation}': post: summary: Create subscriber in a given slice. description: Create subscriber in a given slice. operationId: manageSubscriber parameters: - name: operation in: path required: true schema: enum: - create - remove type: string title: Operation requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AttachResource-Input-SliceAttach-V1' examples: CREATE_SUBSCRIBER_IN_A_GIVEN_SLICE: value: device: phoneNumber: '+99999991000' imsi: 99999991000 customer: name: DefaultAttachOperationCustomer description: I Am Default Who Order The Device Attach Operation address: Dummy Customer Address contact: My Contact Should Be Here sliceId: slice-773 mobile_services: - Voice - Voicemail - 5G-Data traffic_categories: apps: os: 09078034-07db-4b13-a970-ab80235f7369 apps: - Daedalus webhook: notificationUrl: 'https://application-server.com' notificationAuthToken: c8974e592c2fa383d4a396071 callbacks: notification: '{$request.body#/webhook/notificationUrl}': post: summary: Notification operationId: notification__request_body__webhook_notificationUrl__post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AttachInfo-Input-SliceAttach-V1' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' responses: '202': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AttachInfo-Output-SliceAttach-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-SliceAttach-V1' tags: - Slice Device Attach v1.0.0 /congestion-insights/v0/subscriptions: get: summary: Get congestion subscriptions description: Get congestion subscriptions. operationId: getSubscriptions responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/SubscriptionInfo-ConI-V1' type: array title: Response Getsubscriptions tags: - Congestion Insights v1.0.0 post: summary: Create device congestion subscription description: >- Create device congestion subscription. Notifies if congestion is high, medium, low or none. operationId: createSubscription-ConI-V1 requestBody: content: application/json: schema: $ref: '#/components/schemas/SubscribeCongestionCreate-ConI-V1' examples: CREATE_DEVICE_CONGESTION_SUBSCRIPTION: value: device: phoneNumber: '+36719991000' webhook: notificationUrl: 'http://example.com/notify' notificationAuthToken: c8974e592f9fh683d4a3960714 subscriptionExpireTime: '2045-04-12T14:09:33+05:00' required: true responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SubscriptionInfo-ConI-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-ConI-V1' callbacks: notification: '{$request.body#/webhook/notificationUrl}': post: summary: Notification operationId: notification__request_body__webhook_notificationUrl__post requestBody: content: application/json: schema: $ref: '#/components/schemas/AnalyticsEventNotification-ConI-V1' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-ConI-V1' tags: - Congestion Insights v1.0.0 '/congestion-insights/v0/subscriptions/{resource_id}': get: summary: Get congestion subscription description: Get congestion subscription data of the given device. operationId: getSubscription parameters: - name: resource_id in: path required: true schema: type: string maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ title: Resource ID. example: de87e438-58b4-42c3-9d49-0fbfbd878305 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SubscriptionInfo-ConI-V1' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-ConI-V1' tags: - Congestion Insights v1.0.0 delete: summary: Unsubscribe from congestion event description: Unsubscribe from congestion event of the given device. operationId: deleteSubscription-ConI-V1 parameters: - name: resource_id in: path required: true schema: type: string maxLength: 36 pattern: >- ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ title: Resource ID. example: de87e438-58b4-42c3-9d49-0fbfbd878305 responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-ConI-V1' tags: - Congestion Insights v1.0.0 /congestion-insights/v0/query: post: summary: Fetch congestion level for a device. description: >- Fetch historical or predicted congestion level of a device for a given period. operationId: fetch requestBody: content: application/json: schema: $ref: '#/components/schemas/FetchCongestion-ConI-V1' examples: FETCH_CONGESTION_LEVEL: value: device: phoneNumber: '+99999991000' webhook: notificationUrl: 'http://example.com/notify' notificationAuthToken: c8974e592f9fh683d4a3960714 subscriptionExpireTime: '2045-04-12T14:09:33+05:00' required: true responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/CongestionData-ConI-V1' type: array title: Response Fetch '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-ConI-V1' tags: - Congestion Insights v1.0.0 /oauth2/v1/auth/clientcredentials: get: summary: Endpoint for getting client credentials to user description: >- Getting client credentials for user. If it exists that is returned, otherwise new created. operationId: get_client_credentials responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ClientCredential-Auth-V1' tags: - NaC Authorization Server - JWT Keys '/oauth2/v1/apps/{nac_app_ref}/.well-known/jwks.json': get: tags: - NaC Authorization Server - JWT Keys summary: Get JWKS for an app. operationId: get_jwks_apps__nac_app_ref___well_known_jwks_json_get parameters: - name: nac_app_ref in: path required: true schema: type: string title: Nac App Ref responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError-Auth-V1' /.well-known/openid-configuration: get: tags: - Well Known Metadata - well-known summary: Get Well Known Oidc operationId: get_well_known_oidc_openid_configuration_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Metadata-WellKnown-V0' /.well-known/oauth-authorization-server: get: tags: - Well Known Metadata - well-known summary: Get Well Known Oauth operationId: get_well_known_oauth_oauth_authorization_server_get responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/Metadata-WellKnown-V0' /.well-known/security.txt: get: tags: - Well Known Metadata - well-known summary: Get Security Txt operationId: get_security_txt_security_txt_get responses: '200': description: Successful Response content: text/plain: schema: type: string components: schemas: ErrorInfo-Geo-V0: description: The error info object for possible error cases type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description SubscriptionRequest-Geo-V0: description: The request for creating a event-type event subscription type: object required: - sink - protocol - config - types properties: protocol: $ref: '#/components/schemas/Protocol-Geo-V0' sink: type: string format: url description: >- The address to which events shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' sinkCredential: allOf: - description: >- A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. - $ref: '#/components/schemas/SinkCredential-Geo-V0' types: description: | Camara Event types eligible to be delivered by this subscription. Note: As of now we enforce to have only event type per subscription. type: array minItems: 1 maxItems: 1 items: $ref: '#/components/schemas/SubscriptionEventType-Geo-V0' config: $ref: '#/components/schemas/Config-Geo-V0' discriminator: propertyName: protocol mapping: HTTP: '#/components/schemas/HTTPSubscriptionRequest' MQTT3: '#/components/schemas/MQTTSubscriptionRequest' MQTT5: '#/components/schemas/MQTTSubscriptionRequest' AMQP: '#/components/schemas/AMQPSubscriptionRequest' NATS: '#/components/schemas/NATSSubscriptionRequest' KAFKA: '#/components/schemas/ApacheKafkaSubscriptionRequest' Protocol-Geo-V0: type: string enum: - HTTP - MQTT3 - MQTT5 - AMQP - NATS - KAFKA description: Identifier of a delivery protocol. Only HTTP is allowed for now example: HTTP Config-Geo-V0: description: > Implementation-specific configuration parameters needed by the subscription manager for acquiring events. In CAMARA we have predefined attributes like `subscriptionExpireTime`, `subscriptionMaxEvents`, `initialEvent` Specific event type attributes must be defined in `subscriptionDetail` Note: if a request is performed for several event type, all subscribed event will use same `config` parameters. type: object required: - subscriptionDetail properties: subscriptionDetail: $ref: '#/components/schemas/SubscriptionDetail-Geo-V0' subscriptionExpireTime: type: string format: date-time example: '2023-01-17T13:18:23.682Z' description: >- The subscription expiration time (in date-time format) requested by the API consumer. subscriptionMaxEvents: type: integer description: >- Identifies the maximum number of event reports to be generated (>=1) requested by the API consumer - Once this number is reached, the subscription ends. minimum: 1 example: 5 initialEvent: type: boolean description: > Set to `true` by API consumer if consumer wants to get an event as soon as the subscription is created and current situation reflects event request. Example: Consumer request area entered event. If consumer sets initialEvent to true and device is already in the geofence, an event is triggered SinkCredential-Geo-V0: type: object properties: credentialType: type: string enum: - PLAIN - ACCESSTOKEN - REFRESHTOKEN description: The type of the credential. discriminator: propertyName: credentialType mapping: PLAIN: '#/components/schemas/PlainCredential' ACCESSTOKEN: '#/components/schemas/AccessTokenCredential' REFRESHTOKEN: '#/components/schemas/RefreshTokenCredential' required: - credentialType PlainCredential-Geo-V0: type: object description: A plain credential as a combination of an identifier and a secret. allOf: - $ref: '#/components/schemas/SinkCredential-Geo-V0' - type: object required: - identifier - secret properties: identifier: description: The identifier might be an account or username. type: string secret: description: The secret might be a password or passphrase. type: string AccessTokenCredential-Geo-V0: type: object description: An access token credential. allOf: - $ref: '#/components/schemas/SinkCredential-Geo-V0' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: >- REQUIRED. An absolute UTC instant at which the token shall be considered expired. accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). type: string enum: - bearer required: - accessToken - accessTokenExpiresUtc - accessTokenType RefreshTokenCredential-Geo-V0: type: object description: An access token credential with a refresh token. allOf: - $ref: '#/components/schemas/SinkCredential-Geo-V0' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: >- REQUIRED. An absolute UTC instant at which the token shall be considered expired. accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). type: string enum: - bearer refreshToken: description: >- REQUIRED. An refresh token credential used to acquire access tokens. type: string refreshTokenEndpoint: type: string format: uri description: >- REQUIRED. A URL at which the refresh token can be traded for an access token. required: - accessToken - accessTokenExpiresUtc - accessTokenType - refreshToken - refreshTokenEndpoint SubscriptionDetail-Geo-V0: description: The detail of the requested event subscription type: object properties: device: $ref: '#/components/schemas/Device-Geo-V0' area: $ref: '#/components/schemas/Area-Geo-V0' required: - device - area SubscriptionEventType-Geo-V0: type: string description: | area-entered - Event triggered when the device enters the given area area-left - Event triggered when the device leaves the given area enum: - org.camaraproject.geofencing-subscriptions.v0.area-entered - org.camaraproject.geofencing-subscriptions.v0.area-left NotificationEventType-Geo-V0: type: string description: | area-entered - Event triggered when the device enters the given area area-left - Event triggered when the device leaves the given area subscription-ends - Event triggered when the subscription ends enum: - org.camaraproject.geofencing-subscriptions.v0.area-entered - org.camaraproject.geofencing-subscriptions.v0.area-left - org.camaraproject.geofencing-subscriptions.v0.subscription-ends Subscription-Geo-V0: description: Represents a event-type subscription. type: object required: - sink - protocol - config - types - id - startsAt properties: protocol: $ref: '#/components/schemas/Protocol-Geo-V0' sink: type: string format: url description: >- The address to which events shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' sinkCredential: $ref: '#/components/schemas/SinkCredential-Geo-V0' types: description: | Camara Event types eligible to be delivered by this subscription. type: array items: type: string config: $ref: '#/components/schemas/Config-Geo-V0' id: type: string description: >- The unique identifier of the subscription in the scope of the subscription manager. When this information is contained within an event notification, this concept SHALL be referred as `subscriptionId` as per [Commonalities Event Notification Model](https://github.com/camaraproject/Commonalities/blob/main/documentation/API-design-guidelines.md#122-event-notification). example: '1119920371' startsAt: type: string format: date-time description: Date when the event subscription will begin/began expiresAt: type: string format: date-time description: >- Date when the event subscription will expire. Only provided when `subscriptionExpireTime` is indicated by API client or Telco Operator has specific policy about that. status: type: string description: >- Current status of the subscription - Management of Subscription State engine is not mandatory for now. Note not all statuses may be considered to be implemented. Details: - `ACTIVATION_REQUESTED`: Subscription creation (POST) is triggered but subscription creation process is not finished yet. - `ACTIVE`: Subscription creation process is completed. Subscription is fully operative. - `INACTIVE`: Subscription is temporarily inactive, but its workflow logic is not deleted. - `EXPIRED`: Subscription is ended (no longer active). This status applies when subscription is ended due to `SUBSCRIPTION_EXPIRED` or `ACCESS_TOKEN_EXPIRED` event. - `DELETED`: Subscription is ended as deleted (no longer active). This status applies when subscription information is kept (i.e. subscription workflow is no longer active but its meta-information is kept). enum: - ACTIVATION_REQUESTED - ACTIVE - EXPIRED - INACTIVE - DELETED discriminator: propertyName: protocol mapping: HTTP: '#/components/schemas/HTTPSubscriptionResponse' MQTT3: '#/components/schemas/MQTTSubscriptionResponse' MQTT5: '#/components/schemas/MQTTSubscriptionResponse' AMQP: '#/components/schemas/AMQPSubscriptionResponse' NATS: '#/components/schemas/NATSSubscriptionResponse' KAFKA: '#/components/schemas/ApacheKafkaSubscriptionResponse' SubscriptionAsync-Geo-V0: description: >- Response for a event-type subscription request managed asynchronously (Creation or Deletion) type: object properties: id: $ref: '#/components/schemas/SubscriptionId-Geo-V0' SubscriptionId-Geo-V0: type: string description: >- The unique identifier of the subscription in the scope of the subscription manager. When this information is contained within an event notification, this concept SHALL be referred as `subscriptionId` as per [Commonalities Event Notification Model](https://github.com/camaraproject/Commonalities/blob/main/documentation/API-design-guidelines.md#122-event-notification). example: qs15-h556-rt89-1298 Device-Geo-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE1: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. When returned as part of a response, the device object must include the same identifier values that were provided originally. Please note that IP addresses of devices can change and get reused, so the original values may no longer identify the same device. They identified the device at the time of the subscription request. NOTE2: for the Commonalities release v0.4, we are enforcing that the networkAccessIdentifier is only part of the schema for future-proofing, and CAMARA does not currently allow its use. After the CAMARA meta-release work is concluded and the relevant issues are resolved, its use will need to be explicitly documented in the guidelines. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-Geo-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-Geo-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-Geo-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-Geo-V0' minProperties: 1 PhoneNumber-Geo-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' NetworkAccessIdentifier-Geo-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-Geo-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-Geo-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-Geo-V0' publicPort: $ref: '#/components/schemas/Port-Geo-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-Geo-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-Geo-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-Geo-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' Area-Geo-V0: type: object properties: areaType: $ref: '#/components/schemas/AreaType-Geo-V0' required: - areaType discriminator: propertyName: areaType mapping: CIRCLE: '#/components/schemas/Circle' POI: '#/components/schemas/Poi' AreaType-Geo-V0: type: string description: | Type of this area. CIRCLE - The area is defined as a circle. POI - The area is defined by a named point of interest. enum: - CIRCLE - POI Circle-Geo-V0: description: Circular area allOf: - $ref: '#/components/schemas/Area-Geo-V0' - type: object properties: center: $ref: '#/components/schemas/Point-Geo-V0' radius: type: integer description: >- Expected accuracy for the subscription event of device location in m, from location (radius) minimum: 2000 maximum: 200000 required: - center - radius example: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 50000 Poi-Geo-V0: description: Point of interest area allOf: - $ref: '#/components/schemas/Area-Geo-V0' - type: object properties: poiName: type: string description: >- Name of the Point of Interest for geofencing and location verification. required: - poiName example: areaType: POI poiName: StatueOfLiberty Point-Geo-V0: type: object description: 'Coordinates (latitude, longitude) defining a location in a map' required: - latitude - longitude properties: latitude: $ref: '#/components/schemas/Latitude-Geo-V0' longitude: $ref: '#/components/schemas/Longitude-Geo-V0' example: latitude: 50.735851 longitude: 7.10066 Latitude-Geo-V0: description: Latitude component of a location type: number format: double minimum: -90 maximum: 90 example: 50.735851 Longitude-Geo-V0: description: Longitude component of location type: number format: double minimum: -180 maximum: 180 example: 7.10066 CloudEvent-Geo-V0: description: The notification callback required: - id - source - specversion - type - time - data properties: id: type: string description: 'identifier of this event, that must be unique in the source context.' source: $ref: '#/components/schemas/Source-Geo-V0' type: $ref: '#/components/schemas/NotificationEventType-Geo-V0' specversion: type: string description: >- Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version) enum: - '1.0' datacontenttype: type: string description: >- media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs enum: - application/json data: type: object description: >- Event details payload described in each CAMARA API and referenced by its type time: $ref: '#/components/schemas/DateTime-Geo-V0' discriminator: propertyName: type mapping: org.camaraproject.geofencing-subscriptions.v0.area-left: '#/components/schemas/EventAreaLeft' org.camaraproject.geofencing-subscriptions.v0.area-entered: '#/components/schemas/EventAreaEntered' org.camaraproject.geofencing-subscriptions.v0.subscription-ends: '#/components/schemas/EventSubscriptionEnds' Source-Geo-V0: type: string format: uri-reference minLength: 1 description: > Identifies the context in which an event happened - be a non-empty `URI-reference` like: - URI with a DNS authority: * https://github.com/cloudevents * mailto:cncf-wg-serverless@lists.cncf.io - Universally-unique URN with a UUID: * urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 - Application-specific identifier: * /cloudevents/spec/pull/123 * 1-555-123-4567 example: 'https://notificationSendServer12.supertelco.com' DateTime-Geo-V0: type: string format: date-time description: Timestamp of when the occurrence happened. Must adhere to RFC 3339. example: '2018-04-05T17:31:00Z' EventAreaLeft-Geo-V0: description: event structure for event when the device leaves the area allOf: - $ref: '#/components/schemas/CloudEvent-Geo-V0' - type: object properties: data: $ref: '#/components/schemas/AreaLeft-Geo-V0' EventAreaEntered-Geo-V0: description: event structure for event when the device enters the area allOf: - $ref: '#/components/schemas/CloudEvent-Geo-V0' - type: object properties: data: $ref: '#/components/schemas/AreaEntered-Geo-V0' EventSubscriptionEnds-Geo-V0: description: event structure for event subscription ends allOf: - $ref: '#/components/schemas/CloudEvent-Geo-V0' - type: object properties: data: $ref: '#/components/schemas/SubscriptionEnds-Geo-V0' AreaLeft-Geo-V0: description: Event detail structure for area-left event type: object required: - device - area - subscriptionId properties: device: $ref: '#/components/schemas/Device-Geo-V0' area: $ref: '#/components/schemas/Area-Geo-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-Geo-V0' AreaEntered-Geo-V0: description: Event detail structure for area-entered event type: object required: - device - area - subscriptionId properties: device: $ref: '#/components/schemas/Device-Geo-V0' area: $ref: '#/components/schemas/Area-Geo-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-Geo-V0' SubscriptionEnds-Geo-V0: description: Event detail structure for SUBSCRIPTION_ENDS event type: object required: - device - area - terminationReason - subscriptionId properties: device: $ref: '#/components/schemas/Device-Geo-V0' area: $ref: '#/components/schemas/Area-Geo-V0' terminationReason: $ref: '#/components/schemas/TerminationReason-Geo-V0' terminationDescription: description: Explanation why a subscription ended or had to end. type: string subscriptionId: $ref: '#/components/schemas/SubscriptionId-Geo-V0' TerminationReason-Geo-V0: type: string description: > - NETWORK_TERMINATED - API server stopped sending notification - SUBSCRIPTION_UNPROCESSABLE - Subscription cannot be processed due to some reason, e.g. because the specified area cannot be managed. Useful for asynchronous subscription creation. - SUBSCRIPTION_EXPIRED - Subscription expire time (optionally set by the requester) has been reached - SUBSCRIPTION_DELETED - Subscription was deleted by the requester - MAX_EVENTS_REACHED - Maximum number of events (optionally set by the requester) has been reached - ACCESS_TOKEN_EXPIRED - Access Token sinkCredential (optionally set by the requester) expiration time has been reached enum: - MAX_EVENTS_REACHED - NETWORK_TERMINATED - SUBSCRIPTION_UNPROCESSABLE - SUBSCRIPTION_EXPIRED - SUBSCRIPTION_DELETED - ACCESS_TOKEN_EXPIRED HTTPSubscriptionRequest-Geo-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/HTTPSettings-Geo-V0' HTTPSubscriptionResponse-Geo-V0: allOf: - $ref: '#/components/schemas/Subscription-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/HTTPSettings-Geo-V0' HTTPSettings-Geo-V0: type: object properties: headers: type: object description: >- A set of key/value pairs that is copied into the HTTP request as custom headers. NOTE: Use/Applicability of this concept has not been discussed in Commonalities under the scope of Meta Release v0.4. When required by an API project as an option to meet a UC/Requirement, please generate an issue for Commonalities discussion about it. additionalProperties: type: string method: type: string description: The HTTP method to use for sending the message. enum: - POST MQTTSubscriptionRequest-Geo-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/MQTTSettings-Geo-V0' MQTTSubscriptionResponse-Geo-V0: allOf: - $ref: '#/components/schemas/Subscription-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/MQTTSettings-Geo-V0' MQTTSettings-Geo-V0: type: object properties: topicName: type: string qos: type: integer format: int32 retain: type: boolean expiry: type: integer format: int32 userProperties: type: object required: - topicName AMQPSubscriptionRequest-Geo-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/AMQPSettings-Geo-V0' AMQPSubscriptionResponse-Geo-V0: allOf: - $ref: '#/components/schemas/Subscription-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/AMQPSettings-Geo-V0' AMQPSettings-Geo-V0: type: object properties: address: type: string linkName: type: string senderSettlementMode: type: string enum: - settled - unsettled linkProperties: type: object additionalProperties: type: string ApacheKafkaSubscriptionRequest-Geo-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/ApacheKafkaSettings-Geo-V0' ApacheKafkaSubscriptionResponse-Geo-V0: allOf: - $ref: '#/components/schemas/Subscription-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/ApacheKafkaSettings-Geo-V0' ApacheKafkaSettings-Geo-V0: type: object properties: topicName: type: string partitionKeyExtractor: type: string clientId: type: string ackMode: type: integer required: - topicName NATSSubscriptionRequest-Geo-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/NATSSettings-Geo-V0' NATSSubscriptionResponse-Geo-V0: allOf: - $ref: '#/components/schemas/Subscription-Geo-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/NATSSettings-Geo-V0' NATSSettings-Geo-V0: type: object properties: subject: type: string required: - subject RetrievalLocationRequest-LocR-V0: type: object properties: device: $ref: '#/components/schemas/Device-LocR-V0' maxAge: type: integer description: >- Maximum age of the location information which is accepted for the location retrieval (in seconds) minimum: 60 required: - device Device-LocR-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-LocR-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-LocR-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-LocR-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-LocR-V0' minProperties: 1 PhoneNumber-LocR-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, optionally prefixed with '+'. type: string pattern: '^\+?[0-9]{5,15}$' example: '123456789' NetworkAccessIdentifier-LocR-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-LocR-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-LocR-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-LocR-V0' publicPort: $ref: '#/components/schemas/Port-LocR-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-LocR-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-LocR-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-LocR-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' Location-LocR-V0: type: object description: Device location required: - lastLocationTime - area properties: lastLocationTime: description: >- Last date and time when the device was localized. It must follow RFC 3339 and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) type: string format: date-time area: $ref: '#/components/schemas/Area-LocR-V0' Area-LocR-V0: type: object properties: areaType: $ref: '#/components/schemas/AreaType-LocR-V0' required: - areaType discriminator: propertyName: areaType mapping: CIRCLE: '#/components/schemas/Circle' POLYGON: '#/components/schemas/Polygon' AreaType-LocR-V0: type: string description: | Type of this area. CIRCLE - The area is defined as a circle. POLYGON - The area is defined as a polygon. enum: - CIRCLE - POLYGON Circle-LocR-V0: description: Circular area allOf: - $ref: '#/components/schemas/Area-LocR-V0' - type: object required: - center - radius properties: center: $ref: '#/components/schemas/Point-LocR-V0' radius: type: number description: Distance from the center in meters minimum: 1 Polygon-LocR-V0: allOf: - $ref: '#/components/schemas/Area-LocR-V0' - type: object required: - boundary properties: boundary: $ref: '#/components/schemas/PointList-LocR-V0' PointList-LocR-V0: type: array items: $ref: '#/components/schemas/Point-LocR-V0' minItems: 3 maxItems: 15 Point-LocR-V0: type: object description: 'Coordinates (latitude, longitude) defining a location in a map' required: - latitude - longitude properties: latitude: $ref: '#/components/schemas/Latitude-LocR-V0' longitude: $ref: '#/components/schemas/Longitude-LocR-V0' example: latitude: 50.735851 longitude: 7.10066 Latitude-LocR-V0: description: Latitude component of a location type: number format: double minimum: -90 maximum: 90 Longitude-LocR-V0: description: Longitude component of location type: number format: double minimum: -180 maximum: 180 ErrorInfo-LocR-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP status code returned along with this error response code: type: string description: Code given to this error message: type: string description: Detailed error description Area-LocV-V1: description: Base schema for all areas type: object properties: areaType: $ref: '#/components/schemas/AreaType-LocV-V1' required: - areaType discriminator: propertyName: areaType mapping: CIRCLE: '#/components/schemas/Circle' AreaType-LocV-V1: type: string description: | Type of this area. CIRCLE - The area is defined as a circle. enum: - CIRCLE Circle-LocV-V1: description: Circular area allOf: - $ref: '#/components/schemas/Area-LocV-V1' - type: object properties: center: $ref: '#/components/schemas/Point-LocV-V1' radius: type: integer description: 'Expected accuracy for the verification in meters, from center' minimum: 2000 maximum: 200000 required: - center - radius example: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 50000 Point-LocV-V1: type: object description: 'Coordinates (latitude, longitude) defining a location in a map' required: - latitude - longitude properties: latitude: $ref: '#/components/schemas/Latitude-LocV-V1' longitude: $ref: '#/components/schemas/Longitude-LocV-V1' example: latitude: 50.735851 longitude: 7.10066 Latitude-LocV-V1: description: Latitude component of a location type: number format: double minimum: -90 maximum: 90 example: 50.735851 Longitude-LocV-V1: description: Longitude component of location type: number format: double minimum: -180 maximum: 180 example: 7.10066 VerifyLocationRequest-LocV-V1: description: >- Request to verify the location of a device. Device is not required when using a 3-legged access token, following the rules in the description. type: object properties: device: $ref: '#/components/schemas/Device-LocV-V1' area: $ref: '#/components/schemas/Area-LocV-V1' maxAge: $ref: '#/components/schemas/MaxAge-LocV-V1' required: - area VerifyLocationResponse-LocV-V1: description: Response to a location verification request type: object required: - verificationResult properties: lastLocationTime: $ref: '#/components/schemas/LastLocationTime-LocV-V1' verificationResult: $ref: '#/components/schemas/VerificationResult-LocV-V1' matchRate: $ref: '#/components/schemas/MatchRate-LocV-V1' Device-LocV-V1: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE1: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device NOTE2: for the Commonalities release v0.4, we are enforcing that the networkAccessIdentifier is only part of the schema for future-proofing, and CAMARA does not currently allow its use. After the CAMARA meta-release work is concluded and the relevant issues are resolved, its use will need to be explicitly documented in the guidelines. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-LocV-V1' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-LocV-V1' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-LocV-V1' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-LocV-V1' minProperties: 1 PhoneNumber-LocV-V1: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' NetworkAccessIdentifier-LocV-V1: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-LocV-V1: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-LocV-V1' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-LocV-V1' publicPort: $ref: '#/components/schemas/Port-LocV-V1' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-LocV-V1: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-LocV-V1: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-LocV-V1: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' MaxAge-LocV-V1: description: >- The maximum age (in seconds) for the location known by the implementation, which is accepted for the verification. Absence of maxAge means "any age" and maxAge=0 means a fresh calculation. type: integer example: 120 VerificationResult-LocV-V1: description: | Result of a verification request: - `TRUE`: when the network locates the device within the requested area, - `FALSE`: when the requested area does not match the area where the network locates the device, - `UNKNOWN`: when the network cannot locate the device, - `PARTIAL`: when the requested area partially match the area where the network locates the device. A `match_rate` is included in the response. type: string enum: - 'TRUE' - 'FALSE' - UNKNOWN - PARTIAL MatchRate-LocV-V1: description: >- Estimation of the match rate between the area in the request (R), and area where the network locates the device (N), calculated as the percent value of the intersection of both areas divided by the network area, that is (R ∩ N) / N * 100. Included only if VerificationResult is PARTIAL. type: integer minimum: 1 maximum: 99 LastLocationTime-LocV-V1: description: >- Timestamp of the last location information. It must follow RFC 3339 and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-09-07T10:40:52Z' format: date-time type: string ErrorInfo-LocV-V1: description: Common schema for errors type: object required: - status - code - message properties: status: type: integer description: HTTP status code returned along with this error response code: type: string description: Code given to this error message: type: string description: Detailed error description Area-LocV-V0: type: object properties: areaType: $ref: '#/components/schemas/AreaType-LocV-V0' required: - areaType discriminator: propertyName: areaType mapping: CIRCLE: '#/components/schemas/Circle' AreaType-LocV-V0: type: string description: | Type of this area. CIRCLE - The area is defined as a circle. enum: - CIRCLE Circle-LocV-V0: description: Circular area allOf: - $ref: '#/components/schemas/Area-LocV-V0' - type: object properties: center: $ref: '#/components/schemas/Point-LocV-V0' radius: type: integer description: >- Expected accuracy for the verification in meters, from location (radius) minimum: 2000 maximum: 200000 required: - center - radius example: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 50000 Point-LocV-V0: type: object description: 'Coordinates (latitude, longitude) defining a location in a map' required: - latitude - longitude properties: latitude: $ref: '#/components/schemas/Latitude-LocV-V0' longitude: $ref: '#/components/schemas/Longitude-LocV-V0' example: latitude: 50.735851 longitude: 7.10066 Latitude-LocV-V0: description: Latitude component of a location type: number format: double minimum: -90 maximum: 90 example: 50.735851 Longitude-LocV-V0: description: Longitude component of location type: number format: double minimum: -180 maximum: 180 example: 7.10066 VerifyLocationRequest-LocV-V0: type: object properties: device: $ref: '#/components/schemas/Device-LocV-V0' area: $ref: '#/components/schemas/Area-LocV-V0' maxAge: $ref: '#/components/schemas/MaxAge-LocV-V0' required: - device - area VerifyLocationResponse-LocV-V0: type: object required: - verificationResult properties: lastLocationTime: $ref: '#/components/schemas/LastLocationTime-LocV-V0' verificationResult: $ref: '#/components/schemas/VerificationResult-LocV-V0' matchRate: $ref: '#/components/schemas/MatchRate-LocV-V0' Device-LocV-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-LocV-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-LocV-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-LocV-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-LocV-V0' minProperties: 1 PhoneNumber-LocV-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, optionally prefixed with '+'. type: string pattern: '^\+?[0-9]{5,15}$' example: '123456789' NetworkAccessIdentifier-LocV-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-LocV-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-LocV-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-LocV-V0' publicPort: $ref: '#/components/schemas/Port-LocV-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-LocV-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-LocV-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-LocV-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' MaxAge-LocV-V0: description: >- The maximum age (in seconds) of the available location, which is accepted for the verification. type: integer minimum: 60 example: 120 VerificationResult-LocV-V0: description: "Result of a verification request:\n - `TRUE`: when the network locates the device within the requested area, \n - `FALSE`: when the requested area does not match the area where the network locates the device,\n - `UNKNOWN`: when the network cannot locate the device,\n - `PARTIAL`: when the requested area partially match the area where the network locates the device. A `match_rate` could be included in the response.\n" type: string enum: - 'TRUE' - 'FALSE' - UNKNOWN - PARTIAL MatchRate-LocV-V0: description: >- Estimation of the match rate between the area in the request (R), and area where the network locates the device (N), calculated as the percent value of the intersection of both areas divided by the network area, that is (R ∩ N) / N * 100. Included only if VerificationResult is PARTIAL. type: integer minimum: 1 maximum: 99 LastLocationTime-LocV-V0: description: >- Timestamp of the last location information. It must follow RFC 3339 and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-09-07T10:40:52Z' format: date-time type: string ErrorInfo-LocV-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP status code returned along with this error response code: type: string description: Code given to this error message: type: string description: Detailed error description LastStatusTime-DS-RE-V1: description: Last time that the associated device reachability status was updated type: string format: date-time example: '2024-02-20T10:41:38.657Z' ReachabilityStatusResponse-DS-RE-V1: type: object required: - reachable properties: lastStatusTime: $ref: '#/components/schemas/LastStatusTime-DS-RE-V1' reachable: description: Indicates overall device reachability type: boolean connectivity: type: array items: $ref: '#/components/schemas/ConnectivityType-DS-RE-V1' ConnectivityType-DS-RE-V1: description: > DATA: The device is connected to the network for Data usage (regardless of the SMS reachability) SMS: The device is connected to the network only for SMS usage type: string enum: - DATA - SMS Device-DS-RE-V1: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DS-RE-V1' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-DS-RE-V1' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-DS-RE-V1' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-DS-RE-V1' minProperties: 1 PhoneNumber-DS-RE-V1: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' NetworkAccessIdentifier-DS-RE-V1: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-DS-RE-V1: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-RE-V1' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-RE-V1' publicPort: $ref: '#/components/schemas/Port-DS-RE-V1' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-DS-RE-V1: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-DS-RE-V1: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-DS-RE-V1: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' RequestReachabilityStatus-DS-RE-V1: description: >- The request to retrieve the current roaming-status for the requested device. type: object properties: device: $ref: '#/components/schemas/Device-DS-RE-V1' ErrorInfo-DS-RE-V1: description: The error object used for error-cases. type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description RoamingStatusResponse-DS-RO-V1: type: object required: - roaming properties: lastStatusTime: $ref: '#/components/schemas/LastStatusTime-DS-RO-V1' roaming: $ref: '#/components/schemas/ActiveRoaming-DS-RO-V1' countryCode: $ref: '#/components/schemas/CountryCode-DS-RO-V1' countryName: $ref: '#/components/schemas/CountryName-DS-RO-V1' LastStatusTime-DS-RO-V1: description: Last time that the associated device roaming status was updated type: string format: date-time example: '2024-02-20T10:41:38.657Z' ActiveRoaming-DS-RO-V1: description: 'Roaming status. True, if it is roaming' type: boolean Device-DS-RO-V1: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DS-RO-V1' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-DS-RO-V1' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-DS-RO-V1' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-DS-RO-V1' minProperties: 1 PhoneNumber-DS-RO-V1: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' NetworkAccessIdentifier-DS-RO-V1: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-DS-RO-V1: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-RO-V1' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-RO-V1' publicPort: $ref: '#/components/schemas/Port-DS-RO-V1' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-DS-RO-V1: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-DS-RO-V1: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-DS-RO-V1: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' CountryCode-DS-RO-V1: description: >- The Mobile country code (MCC) as an geographic region identifier for the country and the dependent areas. type: integer CountryName-DS-RO-V1: description: >- The ISO 3166 ALPHA-2 country-codes of mapped to mobile country code(MCC). If there is mapping of one MCC to multiple countries, then we have list of countries. If there is no mapping of MCC to any country, then an empty array [] shall be returned.. type: array items: type: string RoamingStatusRequest-DS-RO-V1: description: >- The request for retrieving the current roaming status for the requested device. type: object properties: device: $ref: '#/components/schemas/Device-DS-RO-V1' ErrorInfo-DS-RO-V1: description: The error object used for error-cases. type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description ErrorInfo-DS-RES-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description SubscriptionRequest-DS-RES-V0: description: The request for creating a event-type event subscription type: object required: - sink - protocol - config - types properties: protocol: $ref: '#/components/schemas/Protocol-DS-RES-V0' sink: type: string format: uri description: >- The address to which events shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' sinkCredential: $ref: '#/components/schemas/SinkCredential-DS-RES-V0' types: description: > Camara Event types eligible to be delivered by this subscription. Note: For the current Commonalities API design guidelines, only one event type per subscription is allowed, yet in the following releases use of array of event types SHALL be specified without changing this definition. type: array minItems: 1 maxItems: 1 items: $ref: '#/components/schemas/SubscriptionEventType-DS-RES-V0' config: $ref: '#/components/schemas/Config-DS-RES-V0' discriminator: propertyName: protocol mapping: HTTP: '#/components/schemas/HTTPSubscriptionRequest' MQTT3: '#/components/schemas/MQTTSubscriptionRequest' MQTT5: '#/components/schemas/MQTTSubscriptionRequest' AMQP: '#/components/schemas/AMQPSubscriptionRequest' NATS: '#/components/schemas/NATSSubscriptionRequest' KAFKA: '#/components/schemas/ApacheKafkaSubscriptionRequest' Protocol-DS-RES-V0: type: string enum: - HTTP - MQTT3 - MQTT5 - AMQP - NATS - KAFKA description: Identifier of a delivery protocol. Only HTTP is allowed for now example: HTTP Config-DS-RES-V0: description: > Implementation-specific configuration parameters needed by the subscription manager for acquiring events. In CAMARA we have predefined attributes like `subscriptionExpireTime`, `subscriptionMaxEvents`, `initialEvent` Specific event type attributes must be defined in `subscriptionDetail` Note: if a request is performed for several event type, all subscribed event will use same `config` parameters. type: object required: - subscriptionDetail properties: subscriptionDetail: $ref: '#/components/schemas/CreateSubscriptionDetail-DS-RES-V0' subscriptionExpireTime: type: string format: date-time example: '2023-01-17T13:18:23.682Z' description: >- The subscription expiration time (in date-time format) requested by the API consumer. Up to API project decision to keep it. subscriptionMaxEvents: type: integer description: >- Identifies the maximum number of event reports to be generated (>=1) requested by the API consumer - Once this number is reached, the subscription ends. Up to API project decision to keep it. minimum: 1 example: 5 initialEvent: type: boolean description: > Set to `true` by API consumer if consumer wants to get an event as soon as the subscription is created and current situation reflects event request.Up to API project decision to keep it. Example: Consumer subscribes to reachability SMS. If consumer sets initialEvent to true and device is already reachable by SMS, an event is triggered. SinkCredential-DS-RES-V0: description: >- A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. type: object properties: credentialType: type: string enum: - PLAIN - ACCESSTOKEN - REFRESHTOKEN description: | The type of the credential. Note: Type of the credential - MUST be set to ACCESSTOKEN for now discriminator: propertyName: credentialType mapping: PLAIN: '#/components/schemas/PlainCredential' ACCESSTOKEN: '#/components/schemas/AccessTokenCredential' REFRESHTOKEN: '#/components/schemas/RefreshTokenCredential' required: - credentialType PlainCredential-DS-RES-V0: type: object description: A plain credential as a combination of an identifier and a secret. allOf: - $ref: '#/components/schemas/SinkCredential-DS-RES-V0' - type: object required: - identifier - secret properties: identifier: description: The identifier might be an account or username. type: string secret: description: The secret might be a password or passphrase. type: string AccessTokenCredential-DS-RES-V0: type: object description: An access token credential. allOf: - $ref: '#/components/schemas/SinkCredential-DS-RES-V0' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: > REQUIRED. An absolute (UTC) timestamp at which the token shall be considered expired. In the case of an ACCESS_TOKEN_EXPIRED termination reason, implementation should notify the client before the expiration date. If the access token is a JWT and registered "exp" (Expiration Time) claim is present, the two expiry times should match. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). type: string enum: - bearer required: - accessToken - accessTokenExpiresUtc - accessTokenType RefreshTokenCredential-DS-RES-V0: type: object description: An access token credential with a refresh token. allOf: - $ref: '#/components/schemas/SinkCredential-DS-RES-V0' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: > REQUIRED. An absolute (UTC) timestamp at which the token shall be considered expired. In the case of an ACCESS_TOKEN_EXPIRED termination reason, implementation should notify the client before the expiration date. If the access token is a JWT and registered "exp" (Expiration Time) claim is present, the two expiry times should match. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). type: string enum: - bearer refreshToken: description: >- REQUIRED. An refresh token credential used to acquire access tokens. type: string refreshTokenEndpoint: type: string format: uri description: >- REQUIRED. A URL at which the refresh token can be traded for an access token. required: - accessToken - accessTokenExpiresUtc - accessTokenType - refreshToken - refreshTokenEndpoint CreateSubscriptionDetail-DS-RES-V0: description: The detail of the requested event subscription. type: object properties: device: $ref: '#/components/schemas/Device-DS-RES-V0' EventTypeNotification-DS-RES-V0: type: string description: > reachability-data - Event triggered when the device is connected to the network for Data usage (regardless of the SMS reachability). reachability-sms - Event triggered when the device is connected to the network only for SMS usage reachability-disconnected - Event triggered when the device is not connected. subscription-ends - Event triggered when the subscription is terminated enum: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected - >- org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends SubscriptionEventType-DS-RES-V0: type: string description: > reachability-data - Event triggered when the device is connected to the network for Data usage (regardless of the SMS reachability). reachability-sms - Event triggered when the device is connected to the network only for SMS usage reachability-disconnected - Event triggered when the device is not connected. enum: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected Subscription-DS-RES-V0: description: Represents a event-type subscription. type: object required: - sink - protocol - config - types - id properties: protocol: $ref: '#/components/schemas/Protocol-DS-RES-V0' sink: type: string format: url description: >- The address to which events shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' types: description: > Camara Event types eligible to be delivered by this subscription. Note: For the current Commonalities API design guidelines, only one event type per subscription is allowed type: array minItems: 1 maxItems: 1 items: $ref: '#/components/schemas/SubscriptionEventType-DS-RES-V0' config: $ref: '#/components/schemas/Config-DS-RES-V0' id: $ref: '#/components/schemas/SubscriptionId-DS-RES-V0' startsAt: type: string format: date-time description: > Date when the event subscription will begin/began It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' expiresAt: type: string format: date-time description: > Date when the event subscription will expire. Only provided when `subscriptionExpireTime` is indicated by API client or Telco Operator has specific policy about that. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' status: type: string description: >- Current status of the subscription - Management of Subscription State engine is not mandatory for now. Note not all statuses may be considered to be implemented. Details: - `ACTIVATION_REQUESTED`: Subscription creation (POST) is triggered but subscription creation process is not finished yet. - `ACTIVE`: Subscription creation process is completed. Subscription is fully operative. - `INACTIVE`: Subscription is temporarily inactive, but its workflow logic is not deleted. - `EXPIRED`: Subscription is ended (no longer active). This status applies when subscription is ended due to `SUBSCRIPTION_EXPIRED` or `ACCESS_TOKEN_EXPIRED` event. - `DELETED`: Subscription is ended as deleted (no longer active). This status applies when subscription information is kept (i.e. subscription workflow is no longer active but its meta-information is kept). enum: - ACTIVATION_REQUESTED - ACTIVE - EXPIRED - INACTIVE - DELETED discriminator: propertyName: protocol mapping: HTTP: '#/components/schemas/HTTPSubscriptionResponse' MQTT3: '#/components/schemas/MQTTSubscriptionResponse' MQTT5: '#/components/schemas/MQTTSubscriptionResponse' AMQP: '#/components/schemas/AMQPSubscriptionResponse' NATS: '#/components/schemas/NATSSubscriptionResponse' KAFKA: '#/components/schemas/ApacheKafkaSubscriptionResponse' example: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: ACTIVE Device-DS-RES-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DS-RES-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-DS-RES-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-DS-RES-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-DS-RES-V0' minProperties: 1 PhoneNumber-DS-RES-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' NetworkAccessIdentifier-DS-RES-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-DS-RES-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-RES-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-RES-V0' publicPort: $ref: '#/components/schemas/Port-DS-RES-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-DS-RES-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-DS-RES-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-DS-RES-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' SubscriptionAsync-DS-RES-V0: description: >- Response for a device reachability status operation managed asynchronously (Creation or Deletion) type: object properties: id: $ref: '#/components/schemas/SubscriptionId-DS-RES-V0' SubscriptionId-DS-RES-V0: type: string description: >- The unique identifier of the subscription in the scope of the subscription manager. When this information is contained within an event notification, this concept SHALL be referred as `subscriptionId` as per [Commonalities Event Notification Model](https://github.com/camaraproject/Commonalities/blob/r2.3/documentation/API-design-guidelines.md#122-event-notification). example: qs15-h556-rt89-1298 CloudEvent-DS-RES-V0: description: The notification callback required: - id - source - specversion - type - time properties: id: type: string description: 'identifier of this event, that must be unique in the source context.' source: $ref: '#/components/schemas/Source-DS-RES-V0' type: $ref: '#/components/schemas/EventTypeNotification-DS-RES-V0' specversion: type: string description: >- Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version) enum: - '1.0' datacontenttype: type: string description: >- media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs enum: - application/json data: type: object description: >- Event details payload described in each CAMARA API and referenced by its type time: $ref: '#/components/schemas/DateTime-DS-RES-V0' discriminator: propertyName: type mapping: org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data: '#/components/schemas/EventReachabilityData' org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms: '#/components/schemas/EventReachabilitySms' org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected: '#/components/schemas/EventReachabilityDisconnected' org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends: '#/components/schemas/EventSubscriptionEnds' Source-DS-RES-V0: type: string format: uri-reference minLength: 1 description: > Identifies the context in which an event happened - be a non-empty `URI-reference` like: - URI with a DNS authority: * https://github.com/cloudevents * mailto:cncf-wg-serverless@lists.cncf.io - Universally-unique URN with a UUID: * urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 - Application-specific identifier: * /cloudevents/spec/pull/123 * 1-555-123-4567 example: 'https://notificationSendServer12.supertelco.com' DateTime-DS-RES-V0: type: string format: date-time description: > Timestamp of when the occurrence happened. If the time of the occurrence cannot be determined then this attribute MAY be set to some other time (such as the current time) by the CloudEvents producer, however all producers for the same source MUST be consistent in this respect. In other words, either they all use the actual time of the occurrence or they all use the same algorithm to determine the value used. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2018-04-05T17:31:00Z' EventReachabilityData-DS-RES-V0: description: event structure for reachability data usage allOf: - $ref: '#/components/schemas/CloudEvent-DS-RES-V0' - type: object properties: data: $ref: '#/components/schemas/ReachabilityDataSmsDisconnected-DS-RES-V0' EventReachabilitySms-DS-RES-V0: description: event structure for reachability SMS usage allOf: - $ref: '#/components/schemas/CloudEvent-DS-RES-V0' - type: object properties: data: $ref: '#/components/schemas/ReachabilityDataSmsDisconnected-DS-RES-V0' EventReachabilityDisconnected-DS-RES-V0: description: event structure for disconnection allOf: - $ref: '#/components/schemas/CloudEvent-DS-RES-V0' - type: object properties: data: $ref: '#/components/schemas/ReachabilityDataSmsDisconnected-DS-RES-V0' ReachabilityDataSmsDisconnected-DS-RES-V0: required: - subscriptionId properties: device: $ref: '#/components/schemas/Device-DS-RES-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-RES-V0' EventSubscriptionEnds-DS-RES-V0: description: event structure for event subscription ends allOf: - $ref: '#/components/schemas/CloudEvent-DS-RES-V0' - type: object properties: data: $ref: '#/components/schemas/SubscriptionEnds-DS-RES-V0' SubscriptionEnds-DS-RES-V0: description: >- Event detail structure for org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends event type: object required: - terminationReason - subscriptionId properties: device: $ref: '#/components/schemas/Device-DS-RES-V0' terminationReason: $ref: '#/components/schemas/TerminationReason-DS-RES-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-RES-V0' terminationDescription: type: string TerminationReason-DS-RES-V0: type: string description: > - NETWORK_TERMINATED - API server stopped sending notification - SUBSCRIPTION_EXPIRED - Subscription expire time (optionally set by the requester) has been reached - MAX_EVENTS_REACHED - Maximum number of events (optionally set by the requester) has been reached - ACCESS_TOKEN_EXPIRED - Access Token sinkCredential (optionally set by the requester) expiration time has been reached - SUBSCRIPTION_DELETED - Subscription was deleted by the requester enum: - MAX_EVENTS_REACHED - NETWORK_TERMINATED - SUBSCRIPTION_EXPIRED - ACCESS_TOKEN_EXPIRED - SUBSCRIPTION_DELETED HTTPSubscriptionRequest-DS-RES-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/HTTPSettings-DS-RES-V0' HTTPSubscriptionResponse-DS-RES-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/HTTPSettings-DS-RES-V0' HTTPSettings-DS-RES-V0: type: object properties: headers: type: object description: >- A set of key/value pairs that is copied into the HTTP request as custom headers. NOTE: Use/Applicability of this concept has not been discussed in Commonalities under the scope of Meta Release v0.4. When required by an API project as an option to meet a UC/Requirement, please generate an issue for Commonalities discussion about it. additionalProperties: type: string method: type: string description: The HTTP method to use for sending the message. enum: - POST MQTTSubscriptionRequest-DS-RES-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/MQTTSettings-DS-RES-V0' MQTTSubscriptionResponse-DS-RES-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/MQTTSettings-DS-RES-V0' MQTTSettings-DS-RES-V0: type: object properties: topicName: type: string qos: type: integer format: int32 retain: type: boolean expiry: type: integer format: int32 userProperties: type: object required: - topicName AMQPSubscriptionRequest-DS-RES-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/AMQPSettings-DS-RES-V0' AMQPSubscriptionResponse-DS-RES-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/AMQPSettings-DS-RES-V0' AMQPSettings-DS-RES-V0: type: object properties: address: type: string linkName: type: string senderSettlementMode: type: string enum: - settled - unsettled linkProperties: type: object additionalProperties: type: string ApacheKafkaSubscriptionRequest-DS-RES-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/ApacheKafkaSettings-DS-RES-V0' ApacheKafkaSubscriptionResponse-DS-RES-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/ApacheKafkaSettings-DS-RES-V0' ApacheKafkaSettings-DS-RES-V0: type: object properties: topicName: type: string partitionKeyExtractor: type: string clientId: type: string ackMode: type: integer required: - topicName NATSSubscriptionRequest-DS-RES-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/NATSSettings-DS-RES-V0' NATSSubscriptionResponse-DS-RES-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-RES-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/NATSSettings-DS-RES-V0' NATSSettings-DS-RES-V0: type: object properties: subject: type: string required: - subject ErrorInfo-DS-ROS-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description SubscriptionRequest-DS-ROS-V0: description: The request for creating a event-type event subscription type: object required: - sink - protocol - config - types properties: protocol: $ref: '#/components/schemas/Protocol-DS-ROS-V0' sink: type: string format: uri description: >- The address to which events shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' sinkCredential: $ref: '#/components/schemas/SinkCredential-DS-ROS-V0' types: description: > Camara Event types eligible to be delivered by this subscription. Note: for the current Commonalities version (v0.5) only one event type per subscription is allowed, yet in the following releases use of array of event types SHALL be specified without changing this definition. type: array minItems: 1 maxItems: 1 items: $ref: '#/components/schemas/SubscriptionEventType-DS-ROS-V0' config: $ref: '#/components/schemas/Config-DS-ROS-V0' discriminator: propertyName: protocol mapping: HTTP: '#/components/schemas/HTTPSubscriptionRequest' MQTT3: '#/components/schemas/MQTTSubscriptionRequest' MQTT5: '#/components/schemas/MQTTSubscriptionRequest' AMQP: '#/components/schemas/AMQPSubscriptionRequest' NATS: '#/components/schemas/NATSSubscriptionRequest' KAFKA: '#/components/schemas/ApacheKafkaSubscriptionRequest' Protocol-DS-ROS-V0: type: string enum: - HTTP - MQTT3 - MQTT5 - AMQP - NATS - KAFKA description: Identifier of a delivery protocol. Only HTTP is allowed for now example: HTTP Config-DS-ROS-V0: description: > Implementation-specific configuration parameters needed by the subscription manager for acquiring events. In CAMARA we have predefined attributes like `subscriptionExpireTime`, `subscriptionMaxEvents`, `initialEvent` Specific event type attributes must be defined in `subscriptionDetail` Note: if a request is performed for several event type, all subscribed event will use same `config` parameters. type: object required: - subscriptionDetail properties: subscriptionDetail: $ref: '#/components/schemas/CreateSubscriptionDetail-DS-ROS-V0' subscriptionExpireTime: type: string format: date-time example: '2023-01-17T13:18:23.682Z' description: >- The subscription expiration time (in date-time format) requested by the API consumer. Up to API project decision to keep it. subscriptionMaxEvents: type: integer description: >- Identifies the maximum number of event reports to be generated (>=1) requested by the API consumer - Once this number is reached, the subscription ends. Up to API project decision to keep it. minimum: 1 example: 5 initialEvent: type: boolean description: > Set to `true` by API consumer if consumer wants to get an event as soon as the subscription is created and current situation reflects event request.Up to API project decision to keep it. Example: Consumer request Roaming event. If consumer sets initialEvent to true and device is in roaming situation, an event is triggered Up to API project decision to keep it. SinkCredential-DS-ROS-V0: description: >- A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. type: object properties: credentialType: type: string enum: - PLAIN - ACCESSTOKEN - REFRESHTOKEN description: | The type of the credential. Note: Type of the credential - MUST be set to ACCESSTOKEN for now discriminator: propertyName: credentialType mapping: PLAIN: '#/components/schemas/PlainCredential' ACCESSTOKEN: '#/components/schemas/AccessTokenCredential' REFRESHTOKEN: '#/components/schemas/RefreshTokenCredential' required: - credentialType PlainCredential-DS-ROS-V0: type: object description: A plain credential as a combination of an identifier and a secret. allOf: - $ref: '#/components/schemas/SinkCredential-DS-ROS-V0' - type: object required: - identifier - secret properties: identifier: description: The identifier might be an account or username. type: string secret: description: The secret might be a password or passphrase. type: string AccessTokenCredential-DS-ROS-V0: type: object description: An access token credential. allOf: - $ref: '#/components/schemas/SinkCredential-DS-ROS-V0' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: > REQUIRED. An absolute (UTC) timestamp at which the token shall be considered expired. In the case of an ACCESS_TOKEN_EXPIRED termination reason, implementation should notify the client before the expiration date. If the access token is a JWT and registered "exp" (Expiration Time) claim is present, the two expiry times should match. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). type: string enum: - bearer required: - accessToken - accessTokenExpiresUtc - accessTokenType RefreshTokenCredential-DS-ROS-V0: type: object description: An access token credential with a refresh token. allOf: - $ref: '#/components/schemas/SinkCredential-DS-ROS-V0' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: > REQUIRED. An absolute (UTC) timestamp at which the token shall be considered expired. In the case of an ACCESS_TOKEN_EXPIRED termination reason, implementation should notify the client before the expiration date. If the access token is a JWT and registered "exp" (Expiration Time) claim is present, the two expiry times should match. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). type: string enum: - bearer refreshToken: description: >- REQUIRED. An refresh token credential used to acquire access tokens. type: string refreshTokenEndpoint: type: string format: uri description: >- REQUIRED. A URL at which the refresh token can be traded for an access token. required: - accessToken - accessTokenExpiresUtc - accessTokenType - refreshToken - refreshTokenEndpoint CreateSubscriptionDetail-DS-ROS-V0: description: The detail of the requested event subscription. type: object properties: device: $ref: '#/components/schemas/Device-DS-ROS-V0' EventTypeNotification-DS-ROS-V0: type: string description: > roaming-status - Event triggered when the device switch from roaming ON to roaming OFF and conversely roaming-on - Event triggered when the device switch from roaming OFF to roaming ON roaming-off - Event triggered when the device switch from roaming ON to roaming OFF roaming-change-country - Event triggered when the device in roaming change country code subscription-ends - Event triggered when the subscription is terminated enum: - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country - >- org.camaraproject.device-roaming-status-subscriptions.v0.subscription-ends SubscriptionEventType-DS-ROS-V0: type: string description: > roaming-status - Event triggered when the device switch from roaming ON to roaming OFF and conversely roaming-on - Event triggered when the device switch from roaming OFF to roaming ON roaming-off - Event triggered when the device switch from roaming ON to roaming OFF roaming-change-country - Event triggered when the device in roaming change country code enum: - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country Subscription-DS-ROS-V0: description: Represents a event-type subscription. type: object required: - sink - protocol - config - types - id properties: protocol: $ref: '#/components/schemas/Protocol-DS-ROS-V0' sink: type: string format: url description: >- The address to which events shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' types: description: > Camara Event types eligible to be delivered by this subscription. Note: for the Commonalities meta-release v0.4 we enforce to have only event type per subscription then for following meta-release use of array MUST be decided at API project level. type: array minItems: 1 maxItems: 1 items: $ref: '#/components/schemas/SubscriptionEventType-DS-ROS-V0' config: $ref: '#/components/schemas/Config-DS-ROS-V0' id: $ref: '#/components/schemas/SubscriptionId-DS-ROS-V0' startsAt: type: string format: date-time description: > Date when the event subscription will begin/began It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' expiresAt: type: string format: date-time description: > Date when the event subscription will expire. Only provided when `subscriptionExpireTime` is indicated by API client or Telco Operator has specific policy about that. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' status: type: string description: >- Current status of the subscription - Management of Subscription State engine is not mandatory for now. Note not all statuses may be considered to be implemented. Details: - `ACTIVATION_REQUESTED`: Subscription creation (POST) is triggered but subscription creation process is not finished yet. - `ACTIVE`: Subscription creation process is completed. Subscription is fully operative. - `INACTIVE`: Subscription is temporarily inactive, but its workflow logic is not deleted. - `EXPIRED`: Subscription is ended (no longer active). This status applies when subscription is ended due to `SUBSCRIPTION_EXPIRED` or `ACCESS_TOKEN_EXPIRED` event. - `DELETED`: Subscription is ended as deleted (no longer active). This status applies when subscription information is kept (i.e. subscription workflow is no longer active but its meta-information is kept). enum: - ACTIVATION_REQUESTED - ACTIVE - EXPIRED - INACTIVE - DELETED discriminator: propertyName: protocol mapping: HTTP: '#/components/schemas/HTTPSubscriptionResponse' MQTT3: '#/components/schemas/MQTTSubscriptionResponse' MQTT5: '#/components/schemas/MQTTSubscriptionResponse' AMQP: '#/components/schemas/AMQPSubscriptionResponse' NATS: '#/components/schemas/NATSSubscriptionResponse' KAFKA: '#/components/schemas/ApacheKafkaSubscriptionResponse' example: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: ACTIVE Device-DS-ROS-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DS-ROS-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-DS-ROS-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-DS-ROS-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-DS-ROS-V0' minProperties: 1 PhoneNumber-DS-ROS-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' NetworkAccessIdentifier-DS-ROS-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-DS-ROS-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-ROS-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-ROS-V0' publicPort: $ref: '#/components/schemas/Port-DS-ROS-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-DS-ROS-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-DS-ROS-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-DS-ROS-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' CountryCode-DS-ROS-V0: description: >- The Mobile country code (MCC) as an geographic region identifier for the country and the dependent areas. type: integer CountryName-DS-ROS-V0: description: >- The ISO 3166 ALPHA-2 country-codes of mapped to mobile country code(MCC). If there is mapping of one MCC to multiple countries, then we have list of countries. If there is no mapping of MCC to any country, then an empty array [] shall be returned.. type: array items: type: string NotificationEventType-DS-ROS-V0: type: string description: > roaming-status - Event triggered when the device switch from roaming ON to roaming OFF and conversely roaming-on - Event triggered when the device switch from roaming OFF to roaming ON roaming-off - Event triggered when the device switch from roaming ON to roaming OFF roaming-change-country - Event triggered when the device in roaming change country code subscription-ends - Event triggered when the subscription is terminated enum: - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country - >- org.camaraproject.device-roaming-status-subscriptions.v0.subscription-ends SubscriptionAsync-DS-ROS-V0: description: >- Response for a device reachability status operation managed asynchronously (Creation or Deletion) type: object properties: id: $ref: '#/components/schemas/SubscriptionId-DS-ROS-V0' SubscriptionId-DS-ROS-V0: type: string description: >- The unique identifier of the subscription in the scope of the subscription manager. When this information is contained within an event notification, this concept SHALL be referred as `subscriptionId` as per [Commonalities Event Notification Model](https://github.com/camaraproject/Commonalities/blob/r2.3/documentation/API-design-guidelines.md#122-event-notification). example: qs15-h556-rt89-1298 CloudEvent-DS-ROS-V0: description: The notification callback required: - id - source - specversion - type - time properties: id: type: string description: 'identifier of this event, that must be unique in the source context.' source: $ref: '#/components/schemas/Source-DS-ROS-V0' type: $ref: '#/components/schemas/EventTypeNotification-DS-ROS-V0' specversion: type: string description: >- Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version) enum: - '1.0' datacontenttype: type: string description: >- media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs enum: - application/json data: type: object description: >- Event details payload described in each CAMARA API and referenced by its type time: $ref: '#/components/schemas/DateTime-DS-ROS-V0' discriminator: propertyName: type mapping: org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status: '#/components/schemas/EventRoamingStatus' org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country: '#/components/schemas/EventRoamingChangeCountry' org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off: '#/components/schemas/EventRoamingOff' org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on: '#/components/schemas/EventRoamingOn' org.camaraproject.device-roaming-status-subscriptions.v0.subscription-ends: '#/components/schemas/EventSubscriptionEnds' Source-DS-ROS-V0: type: string format: uri-reference minLength: 1 description: > Identifies the context in which an event happened - be a non-empty `URI-reference` like: - URI with a DNS authority: * https://github.com/cloudevents * mailto:cncf-wg-serverless@lists.cncf.io - Universally-unique URN with a UUID: * urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 - Application-specific identifier: * /cloudevents/spec/pull/123 * 1-555-123-4567 example: 'https://notificationSendServer12.supertelco.com' DateTime-DS-ROS-V0: type: string format: date-time description: Timestamp of when the occurrence happened. Must adhere to RFC 3339. example: '2018-04-05T17:31:00Z' EventRoamingStatus-DS-ROS-V0: description: event structure for roaming status change allOf: - $ref: '#/components/schemas/CloudEvent-DS-ROS-V0' - type: object properties: data: $ref: '#/components/schemas/RoamingStatus-DS-ROS-V0' EventRoamingOn-DS-ROS-V0: description: event structure for roaming on change allOf: - $ref: '#/components/schemas/CloudEvent-DS-ROS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-ROS-V0' EventRoamingOff-DS-ROS-V0: description: event structure for roaming off change allOf: - $ref: '#/components/schemas/CloudEvent-DS-ROS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-ROS-V0' EventRoamingChangeCountry-DS-ROS-V0: description: event structure for roaming change country allOf: - $ref: '#/components/schemas/CloudEvent-DS-ROS-V0' - type: object properties: data: $ref: '#/components/schemas/RoamingChangeCountry-DS-ROS-V0' EventSubscriptionEnds-DS-ROS-V0: description: event structure for event subscription ends allOf: - $ref: '#/components/schemas/CloudEvent-DS-ROS-V0' - type: object properties: data: $ref: '#/components/schemas/SubscriptionEnds-DS-ROS-V0' BasicDeviceEventData-DS-ROS-V0: description: Event detail structure for basic device events type: object required: - subscriptionId properties: device: $ref: '#/components/schemas/Device-DS-ROS-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-ROS-V0' RoamingStatus-DS-ROS-V0: description: >- Event detail structure for org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status event allOf: - $ref: '#/components/schemas/BasicDeviceEventData-DS-ROS-V0' - type: object required: - roaming properties: roaming: type: boolean description: 'Roaming status. True, if it is roaming.' countryCode: $ref: '#/components/schemas/CountryCode-DS-ROS-V0' countryName: $ref: '#/components/schemas/CountryName-DS-ROS-V0' RoamingChangeCountry-DS-ROS-V0: description: >- Event detail structure for org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on event allOf: - $ref: '#/components/schemas/BasicDeviceEventData-DS-ROS-V0' - type: object required: - countryCode - countryName properties: countryCode: $ref: '#/components/schemas/CountryCode-DS-ROS-V0' countryName: $ref: '#/components/schemas/CountryName-DS-ROS-V0' SubscriptionEnds-DS-ROS-V0: description: >- Event detail structure for org.camaraproject.device-roaming-status-subscriptions.v0.subscription-ends event allOf: - $ref: '#/components/schemas/BasicDeviceEventData-DS-ROS-V0' - type: object required: - countryCode required: - terminationReason properties: terminationReason: $ref: '#/components/schemas/TerminationReason-DS-ROS-V0' terminationDescription: type: string TerminationReason-DS-ROS-V0: type: string description: > - NETWORK_TERMINATED - API server stopped sending notification - SUBSCRIPTION_EXPIRED - Subscription expire time (optionally set by the requester) has been reached - MAX_EVENTS_REACHED - Maximum number of events (optionally set by the requester) has been reached - ACCESS_TOKEN_EXPIRED - Access Token sinkCredential (optionally set by the requester) expiration time has been reached - SUBSCRIPTION_DELETED - Subscription was deleted by the requester enum: - MAX_EVENTS_REACHED - NETWORK_TERMINATED - SUBSCRIPTION_EXPIRED - ACCESS_TOKEN_EXPIRED - SUBSCRIPTION_DELETED HTTPSubscriptionRequest-DS-ROS-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/HTTPSettings-DS-ROS-V0' HTTPSubscriptionResponse-DS-ROS-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/HTTPSettings-DS-ROS-V0' HTTPSettings-DS-ROS-V0: type: object properties: headers: type: object description: >- A set of key/value pairs that is copied into the HTTP request as custom headers. NOTE: Use/Applicability of this concept has not been discussed in Commonalities under the scope of Meta Release v0.4. When required by an API project as an option to meet a UC/Requirement, please generate an issue for Commonalities discussion about it. additionalProperties: type: string method: type: string description: The HTTP method to use for sending the message. enum: - POST MQTTSubscriptionRequest-DS-ROS-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/MQTTSettings-DS-ROS-V0' MQTTSubscriptionResponse-DS-ROS-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/MQTTSettings-DS-ROS-V0' MQTTSettings-DS-ROS-V0: type: object properties: topicName: type: string qos: type: integer format: int32 retain: type: boolean expiry: type: integer format: int32 userProperties: type: object required: - topicName AMQPSubscriptionRequest-DS-ROS-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/AMQPSettings-DS-ROS-V0' AMQPSubscriptionResponse-DS-ROS-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/AMQPSettings-DS-ROS-V0' AMQPSettings-DS-ROS-V0: type: object properties: address: type: string linkName: type: string senderSettlementMode: type: string enum: - settled - unsettled linkProperties: type: object additionalProperties: type: string ApacheKafkaSubscriptionRequest-DS-ROS-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/ApacheKafkaSettings-DS-ROS-V0' ApacheKafkaSubscriptionResponse-DS-ROS-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/ApacheKafkaSettings-DS-ROS-V0' ApacheKafkaSettings-DS-ROS-V0: type: object properties: topicName: type: string partitionKeyExtractor: type: string clientId: type: string ackMode: type: integer required: - topicName NATSSubscriptionRequest-DS-ROS-V0: allOf: - $ref: '#/components/schemas/SubscriptionRequest-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/NATSSettings-DS-ROS-V0' NATSSubscriptionResponse-DS-ROS-V0: allOf: - $ref: '#/components/schemas/Subscription-DS-ROS-V0' - type: object properties: protocolSettings: $ref: '#/components/schemas/NATSSettings-DS-ROS-V0' NATSSettings-DS-ROS-V0: type: object properties: subject: type: string required: - subject RoamingStatusResponse-DS-V0: type: object required: - roaming properties: roaming: $ref: '#/components/schemas/ActiveRoaming-DS-V0' countryCode: $ref: '#/components/schemas/CountryCode-DS-V0' countryName: $ref: '#/components/schemas/CountryName-DS-V0' ActiveRoaming-DS-V0: description: 'Roaming status. True, if it is roaming' type: boolean ConnectivityStatusResponse-DS-V0: type: object required: - connectivityStatus properties: connectivityStatus: $ref: '#/components/schemas/ConnectivityStatus-DS-V0' ConnectivityStatus-DS-V0: description: | CONNECTED_DATA: The device is connected to the network for Data usage CONNECTED_SMS: The device is connected to the network for SMS usage NOT_CONNECTED: The device is not connected type: string enum: - CONNECTED_DATA - CONNECTED_SMS - NOT_CONNECTED Device-DS-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DS-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-DS-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-DS-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-DS-V0' minProperties: 1 PhoneNumber-DS-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, optionally prefixed with '+'. type: string pattern: '^\+?[0-9]{5,15}$' example: '123456789' NetworkAccessIdentifier-DS-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com DeviceIpv4Addr-DS-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-DS-V0' publicPort: $ref: '#/components/schemas/Port-DS-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-DS-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 Port-DS-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 DeviceIpv6Address-DS-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' CountryCode-DS-V0: description: >- The Mobile country code (MCC) as an geographic region identifier for the country and the dependent areas. type: integer CountryName-DS-V0: description: >- The ISO 3166 ALPHA-2 country-codes of mapped to mobile country code(MCC). If there is mapping of one MCC to multiple countries, then we have list of countries. If there is no mapping of MCC to any country, then an empty array [] shall be returned.. type: array items: type: string RequestRoamingStatus-DS-V0: type: object properties: device: $ref: '#/components/schemas/Device-DS-V0' required: - device RequestConnectivityStatus-DS-V0: type: object properties: device: $ref: '#/components/schemas/Device-DS-V0' required: - device ErrorInfo-DS-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description CreateSubscription-DS-V0: description: The request for creating a Device Status event subscription type: object required: - webhook - subscriptionDetail properties: subscriptionDetail: $ref: '#/components/schemas/SubscriptionDetail-DS-V0' subscriptionExpireTime: type: string format: date-time example: '2023-01-17T13:18:23.682Z' description: The subscription expiration time in date-time format. webhook: $ref: '#/components/schemas/Webhook-DS-V0' Webhook-DS-V0: description: Webhook information for event channel type: object required: - notificationUrl properties: notificationUrl: type: string example: 'https://application-server.com' description: https callback address where the event notification must be POST-ed notificationAuthToken: type: string example: c8974e592c2fa383d4a3960714 description: > OAuth2 token to be used by the callback API endpoint. It MUST be indicated within HTTP Authorization header e.g. Authorization: Bearer $notificationAuthToken SubscriptionDetail-DS-V0: description: The detail of the requested event subscription type: object required: - type - device properties: device: $ref: '#/components/schemas/Device-DS-V0' type: $ref: '#/components/schemas/SubscriptionCreationEventType-DS-V0' SubscriptionEventType-DS-V0: type: string description: > roaming-status - Event triggered when the device switch from roaming ON to roaming OFF and conversely roaming-on - Event triggered when the device switch from roaming OFF to roaming ON roaming-off - Event triggered when the device switch from roaming ON to roaming OFF roaming-change-country - Event triggered when the device in roaming change country code connectivity-data - Event triggered when the device is connected to the network for Data usage. connectivity-sms - Event triggered when the device is connected to the network for SMS usage connectivity-disconnected - Event triggered when the device is not connected. subscription-ends - Event triggered when the subscription is terminated enum: - org.camaraproject.device-status.v0.roaming-status - org.camaraproject.device-status.v0.roaming-on - org.camaraproject.device-status.v0.roaming-off - org.camaraproject.device-status.v0.roaming-change-country - org.camaraproject.device-status.v0.connectivity-data - org.camaraproject.device-status.v0.connectivity-sms - org.camaraproject.device-status.v0.connectivity-disconnected - org.camaraproject.device-status.v0.subscription-ends SubscriptionCreationEventType-DS-V0: type: string description: > roaming-status - Event triggered when the device switch from roaming ON to roaming OFF and conversely roaming-on - Event triggered when the device switch from roaming OFF to roaming ON roaming-off - Event triggered when the device switch from roaming ON to roaming OFF roaming-change-country - Event triggered when the device in roaming change country code connectivity-data - Event triggered when the device is connected to the network for Data usage. connectivity-sms - Event triggered when the device is connected to the network for SMS usage connectivity-disconnected - Event triggered when the device is not connected. enum: - org.camaraproject.device-status.v0.roaming-status - org.camaraproject.device-status.v0.roaming-on - org.camaraproject.device-status.v0.roaming-off - org.camaraproject.device-status.v0.roaming-change-country - org.camaraproject.device-status.v0.connectivity-data - org.camaraproject.device-status.v0.connectivity-sms - org.camaraproject.device-status.v0.connectivity-disconnected SubscriptionInfo-DS-V0: description: Represents a device status subscription. allOf: - $ref: '#/components/schemas/CreateSubscription-DS-V0' - type: object properties: subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-V0' startsAt: type: string format: date-time description: date time when subscription started expiresAt: type: string format: date-time description: date time when subscription will expire or expired required: - subscriptionId - type SubscriptionAsync-DS-V0: description: >- Response for a device status operation managed asynchronously (Creation or Deletion) type: object properties: subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-V0' SubscriptionId-DS-V0: type: string description: The event subscription identifier. example: qs15-h556-rt89-1298 CloudEvent-DS-V0: description: The notification callback required: - id - source - specversion - type - time - data properties: id: type: string description: 'identifier of this event, that must be unique in the source context.' example: sd5e-uy52-88t4-za66 source: $ref: '#/components/schemas/Source-DS-V0' type: $ref: '#/components/schemas/SubscriptionEventType-DS-V0' specversion: type: string description: >- Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version) example: '1.0' datacontenttype: type: string description: >- media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs example: application/json data: type: object description: >- Event details payload described in each CAMARA API and referenced by its type time: $ref: '#/components/schemas/DateTime-DS-V0' discriminator: propertyName: type mapping: org.camaraproject.device-status.v0.roaming-status: '#/components/schemas/EventRoamingStatus' org.camaraproject.device-status.v0.roaming-change-country: '#/components/schemas/EventRoamingChangeCountry' org.camaraproject.device-status.v0.roaming-off: '#/components/schemas/EventRoamingOff' org.camaraproject.device-status.v0.roaming-on: '#/components/schemas/EventRoamingOn' org.camaraproject.device-status.v0.connectivity-data: '#/components/schemas/EventConnectivityData' org.camaraproject.device-status.v0.connectivity-sms: '#/components/schemas/EventConnectivitySms' org.camaraproject.device-status.v0.connectivity-disconnected: '#/components/schemas/EventConnectivityDisconnected' org.camaraproject.device-status.v0.subscription-ends: '#/components/schemas/EventSubscriptionEnds' Source-DS-V0: type: string format: uri-reference minLength: 1 description: >- Identifies the context in which an event happened in the specific Provider Implementation. example: 'https://notificationSendServer12.supertelco.com' DateTime-DS-V0: type: string format: date-time description: Timestamp of when the occurrence happened. Must adhere to RFC 3339. example: '2018-04-05T17:31:00Z' EventRoamingStatus-DS-V0: description: event structure for roaming status change allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/RoamingStatus-DS-V0' EventRoamingOn-DS-V0: description: event structure for roaming on change allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-V0' EventRoamingOff-DS-V0: description: event structure for roaming off change allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-V0' EventRoamingChangeCountry-DS-V0: description: event structure for roaming change country allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/RoamingChangeCountry-DS-V0' EventConnectivityData-DS-V0: description: event structure for connectivity data usage allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-V0' EventConnectivitySms-DS-V0: description: event structure for connectivity SMS usage allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-V0' EventConnectivityDisconnected-DS-V0: description: event structure for disconnection allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/BasicDeviceEventData-DS-V0' EventSubscriptionEnds-DS-V0: description: event structure for event subscription ends allOf: - $ref: '#/components/schemas/CloudEvent-DS-V0' - type: object properties: data: $ref: '#/components/schemas/SubscriptionEnds-DS-V0' BasicDeviceEventData-DS-V0: description: Event detail structure for basic device events type: object required: - device properties: device: $ref: '#/components/schemas/Device-DS-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-V0' RoamingStatus-DS-V0: description: >- Event detail structure for org.camaraproject.device-status.v0.roaming-status event type: object required: - device - roaming properties: device: $ref: '#/components/schemas/Device-DS-V0' roaming: type: boolean description: 'Roaming status. True, if it is roaming.' countryCode: $ref: '#/components/schemas/CountryCode-DS-V0' countryName: $ref: '#/components/schemas/CountryName-DS-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-V0' RoamingChangeCountry-DS-V0: description: >- Event detail structure for org.camaraproject.device-status.v0.roaming-on event type: object required: - device properties: device: $ref: '#/components/schemas/Device-DS-V0' countryCode: $ref: '#/components/schemas/CountryCode-DS-V0' countryName: $ref: '#/components/schemas/CountryName-DS-V0' subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-V0' SubscriptionEnds-DS-V0: description: >- Event detail structure for org.camaraproject.device-status.v0.subscription-ends event type: object required: - device - terminationReason properties: device: $ref: '#/components/schemas/Device-DS-V0' terminationReason: type: string enum: - SUBSCRIPTION_EXPIRED - NETWORK_TERMINATED subscriptionId: $ref: '#/components/schemas/SubscriptionId-DS-V0' NumberVerificationRequestBody-NV-V1: type: object description: Payload to verify the phone number. minProperties: 1 maxProperties: 1 properties: phoneNumber: type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. hashedPhoneNumber: description: >- Hashed phone number. SHA-256 (in hexadecimal representation) of the mobile phone number in **E.164 format (starting with country code)**. Prefixed with '+'. type: string example: 32f67ab4e4312618b09cd23ed8ce41b13e095fe52b73b2e8da8ef49830e50dba NumberVerificationMatchResponse-NV-V1: type: object description: Number verification result required: - devicePhoneNumberVerified properties: devicePhoneNumberVerified: $ref: '#/components/schemas/DevicePhoneNumberVerified-NV-V1' NumberVerificationShareResponse-NV-V1: type: object description: Number verification share result required: - devicePhoneNumber properties: devicePhoneNumber: $ref: '#/components/schemas/DevicePhoneNumber-NV-V1' DevicePhoneNumber-NV-V1: type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. DevicePhoneNumberVerified-NV-V1: description: 'Number verification. True, if it matches' type: boolean ErrorInfo-NV-V1: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description VerifyRequestBody-KYC-AV-V0: type: object description: Request to verify the age threshold provided. required: - ageThreshold properties: ageThreshold: $ref: '#/components/schemas/AgeThreshold-KYC-AV-V0' phoneNumber: $ref: '#/components/schemas/PhoneNumber-KYC-AV-V0' idDocument: $ref: '#/components/schemas/IdDocument-KYC-AV-V0' name: $ref: '#/components/schemas/Name-KYC-AV-V0' givenName: $ref: '#/components/schemas/GivenName-KYC-AV-V0' familyName: $ref: '#/components/schemas/FamilyName-KYC-AV-V0' middleNames: $ref: '#/components/schemas/MiddleNames-KYC-AV-V0' familyNameAtBirth: $ref: '#/components/schemas/FamilyNameAtBirth-KYC-AV-V0' birthdate: $ref: '#/components/schemas/Birthdate-KYC-AV-V0' email: $ref: '#/components/schemas/Email-KYC-AV-V0' includeContentLock: $ref: '#/components/schemas/IncludeContentLock-KYC-AV-V0' includeParentalControl: $ref: '#/components/schemas/IncludeParentalControl-KYC-AV-V0' AgeThreshold-KYC-AV-V0: type: integer minimum: 0 maximum: 120 description: >- The age to be verified. The indicated range is a global definition of maximum and minimum values allowed to be requested. It is important to note that this range might be more restrictive in some implementations due to local regulations of a country i.e. A country does not allow to request for an age under 18. This limitation must be informed during the onboarding process. PhoneNumber-KYC-AV-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' IdDocument-KYC-AV-V0: type: string description: >- Id number associated to the official identity document in the country. It may contain alphanumeric characters. Name-KYC-AV-V0: type: string description: >- Complete name of the customer, usually composed of first/given name and last/family/sur- name in a country. Depending on the country, the order of first/give name and last/family/sur- name varies, and middle name could be included. It can use givenName, middleNames, familyName and/or familyNameAtBirth. For example, in ESP, name+familyName; in NLD, it can be name+middleNames+familyName or name+middleNames+familyNameAtBirth, etc. GivenName-KYC-AV-V0: type: string description: First/given name or compound first/given name of the customer. FamilyName-KYC-AV-V0: type: string description: 'Last name, family name, or surname of the customer.' MiddleNames-KYC-AV-V0: type: string description: Middle name/s of the customer. FamilyNameAtBirth-KYC-AV-V0: type: string description: Last/family/sur- name at birth of the customer. Birthdate-KYC-AV-V0: type: string format: date description: >- The birthdate of the customer, in RFC 3339 / ISO 8601 calendar date format (YYYY-MM-DD). Email-KYC-AV-V0: type: string format: email description: >- Email address of the customer in the RFC specified format (local-part@domain). IncludeContentLock-KYC-AV-V0: type: boolean default: false description: >- If this parameter is included in the request with value `true`, the response property `contentLock` will be returned. If it is not included or its value is `false`, the response property will not be returned. IncludeParentalControl-KYC-AV-V0: type: boolean default: false description: >- If this parameter is included in the request with value `true`, the response property `parentalControl` will be returned. If it is not included or its value is `false`, the response property will not be returned. VerifyResponseBody-KYC-AV-V0: type: object description: Response to an age verification request required: - ageCheck properties: ageCheck: $ref: '#/components/schemas/AgeCheck-KYC-AV-V0' verifiedStatus: $ref: '#/components/schemas/VerifiedStatus-KYC-AV-V0' identityMatchScore: $ref: '#/components/schemas/IdentityMatchScore-KYC-AV-V0' contentLock: $ref: '#/components/schemas/ContentLock-KYC-AV-V0' parentalControl: $ref: '#/components/schemas/ParentalControl-KYC-AV-V0' AgeCheck-KYC-AV-V0: type: string description: >- Indicate `"true"` when the age of the user is the same age or older than the age threshold (age >= age threshold), and `"false"` if not (age < age threshold). If the API Provider doesn't have enough information to perform the validation, a `not_available` can be returned. enum: - 'true' - 'false' - not_available VerifiedStatus-KYC-AV-V0: type: boolean description: >- Indicate `true` if the information provided has been compared against information based on an identification document legally accepted as an age verification document, otherwise indicate `false`. IdentityMatchScore-KYC-AV-V0: type: integer minimum: 0 maximum: 100 description: >- The overall score of identity information available in the API Provider, information either provided in the request body comparing it to the one that the API Provider holds or directly using internal API Provider's information. It is optional for the API Provider to return the Identity match score. ContentLock-KYC-AV-V0: type: string description: >- Indicate `"true"` if the subscription associated with the phone number has any kind of content lock (i.e certain web content blocked) and `"false"` if not. If the information is not available the value `not_available` can be returned. enum: - 'true' - 'false' - not_available ParentalControl-KYC-AV-V0: type: string description: >- Indicate `"true"` if the subscription associated with the phone number has any kind of parental control activated and `"false"` if not. If the information is not available the value `not_available` can be returned. enum: - 'true' - 'false' - not_available ErrorInfo-KYC-AV-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description KYC_MatchRequestBody-KYC-M-V0: type: object description: Payload to validate the customer data. properties: phoneNumber: type: string description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' idDocument: type: string description: >- Id number associated to the official identity document in the country. It may contain alphanumeric characters. name: type: string description: >- Complete name of the customer, usually composed of first/given name and last/family/sur- name in a country. Depending on the country, the order of first/give name and last/family/sur- name varies, and middle name could be included. It can use givenName, middleNames, familyName and/or familyNameAtBirth. For example, in ESP, name+familyName; in NLD, it can be name+middleNames+familyName or name+middleNames+familyNameAtBirth, etc. givenName: type: string description: First/given name or compound first/given name of the customer. familyName: type: string description: 'Last name, family name, or surname of the customer.' nameKanaHankaku: type: string description: >- Complete name of the customer in Hankaku-Kana format (reading of name) for Japan. nameKanaZenkaku: type: string description: >- Complete name of the customer in Zenkaku-Kana format (reading of name) for Japan. middleNames: type: string description: Middle name/s of the customer. familyNameAtBirth: type: string description: Last/family/sur- name at birth of the customer. address: type: string description: >- Complete address of the customer. For some countries, it is built following the usual concatenation of parameters in a country, but for other countries, this is not the case. For some countries, it can use streetName, streetNumber and/or houseNumberExtension. For example, in ESP, streetName+streetNumber; in NLD, it can be streetName+streetNumber or streetName+streetNumber+houseNumberExtension. streetName: type: string description: >- Name of the street of the customer's address. It should not include the type of the street. streetNumber: type: string description: >- The street number of the customer's address. Number identifying a specific property on the 'streetName'. postalCode: type: string description: Zip code or postal code region: type: string description: Region/prefecture of the customer's address locality: type: string description: Locality of the customer's address country: type: string description: Country of the customer's address. Format ISO 3166-1 alpha-2 houseNumberExtension: type: string description: >- Specific identifier of the house needed depending on the property type. For example, number of apartment in an apartment building. birthdate: type: string format: date description: >- The birthdate of the customer, in RFC 3339 / ISO 8601 calendar date format (YYYY-MM-DD). email: type: string format: email description: >- Email address of the customer in the RFC specified format (local-part@domain). gender: type: string description: Gender of the customer (Male/Female/Other). enum: - MALE - FEMALE - OTHER MatchResult-KYC-M-V0: type: string enum: - 'true' - 'false' - not_available MatchScoreResult-KYC-M-V0: type: integer description: >- Indicates the similarity score assigned to the input value when it does not exactly match the value stored in the operator's system. This property shall only be returned when the value of the corresponding match field is `false`. minimum: 0 maximum: 100 KYC_MatchResponse-KYC-M-V0: type: object properties: idDocumentMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether Id number associated to the ID document of the customer matches with the one on the Operator's system. nameMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the complete name of the customer matches with the one on the Operator's system. nameMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' givenNameMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether First name/given name of the customer matches with the one on the Operator's system. givenNameMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' familyNameMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether last name/ family name/ surname of the customer matches with the one on the Operator's system. familyNameMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' nameKanaHankakuMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether complete name of the customer in Hankaku-Kana format (reading of name) for Japan matches with the one on the Operator's system. nameKanaHankakuMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' nameKanaZenkakuMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether complete name of the customer in Zenkaku-Kana format (reading of name) for Japan matches with the one on the Operator's system. nameKanaZenkakuMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' middleNamesMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the middle names of the customer matches with the one on the Operator's system. middleNamesMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' familyNameAtBirthMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the Family Name At Birth of the customer matches with the one on the Operator's system. familyNameAtBirthMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' addressMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether complete address of the customer matches with the one on the Operator's system. addressMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' streetNameMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the street name of the customer matches with the one on the Operator's system. streetNameMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' streetNumberMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the street number of the customer matches with the one on the Operator's system. streetNumberMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' postalCodeMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the postal code / zip code of the customer matches with the one on the Operator's system. regionMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the region of the customer's address matches with the one on the Operator's system. regionMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' localityMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the locality of the customer's address matches with the one on the Operator's system. localityMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' countryMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the country of the customer's address matches with the one on the Operator's system. houseNumberExtensionMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the house number extension of the customer's address with the one on the Operator's system. birthdateMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the birthdate of the customer matches with the one on the Operator's system. emailMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the email address of the customer matches with the one on the Operator's system. emailMatchScore: $ref: '#/components/schemas/MatchScoreResult-KYC-M-V0' genderMatch: allOf: - $ref: '#/components/schemas/MatchResult-KYC-M-V0' - description: >- Indicates whether the gender of the customer matches with the one on the Operator's system. ErrorInfo-KYC-M-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description Tenure-KYC-T-V0: description: >- Specifies date from which continuous tenure of the identified mobile subscriber is required to be confirmed type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-KYC-T-V0' tenureDate: type: string description: >- The date, in RFC 3339 / ISO 8601 compliant format "YYYY-MM-DD", from which continuous tenure of the identified network subscriber is required to be confirmed format: date example: '2023-07-03' required: - tenureDate PhoneNumber-KYC-T-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' TenureInfo-KYC-T-V0: properties: tenureDateCheck: description: > `true` when the identified mobile subscription has had valid tenure since `tenureDate`, otherwise `false` example: true type: boolean contractType: description: > If exists, populated with: - `PAYG` - prepaid (pay-as-you-go) account - `PAYM` - contract account - `Business` - Business (enterprise) account This attribute may be omitted from the response set if the information is not available example: PAYM type: string enum: - PAYG - PAYM - Business required: - tenureDateCheck ErrorInfo-KYC-T-V0: type: object required: - message - status - code properties: message: type: string description: A human readable description of what the event represent status: type: integer description: HTTP response status code code: type: string description: Friendly Code to describe the error KYC_FillinRequest-KYC-FIN-V0: type: object properties: phoneNumber: type: string description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' KYC_FillinResponse-KYC-FIN-V0: type: object properties: phoneNumber: type: string description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' idDocument: type: string description: >- Id number associated to the id_document of the customer stored on the Operator's system. idDocumentType: type: string enum: - passport - national_id_card - residence_permit - diplomatic_id - driver_licence - social_security_id - other description: Type of the official identity document provided. idDocumentExpiryDate: type: string format: date description: Expiration date of the identity document (ISO 8601). name: type: string description: >- Complete name of the customer stored on the Operator's system. It is usually composed of first/given name and last/family/sur- name in a country. Depending on the country, the order of first/give name and last/family/sur- name varies, and middle name could be included. It can use givenName, middleNames, familyName and/or familyNameAtBirth. For example, in ESP, name+familyName; in NLD, it can be name+middleNames+familyName or name+middleNames+familyNameAtBirth, etc. givenName: type: string description: >- First/given name or compound first/given name of the customer on the Operator's system. familyName: type: string description: >- Last name, family name, or surname of the customer stored on the Operator's system. nameKanaHankaku: type: string description: >- Complete name of the customer in Hankaku-Kana format (reading of name) for Japan, stored on the Operator's system. nameKanaZenkaku: type: string description: >- Complete name of the customer in Zenkaku-Kana format (reading of name) for Japan, stored on the Operator's system. middleNames: type: string description: Middle name/s of the customer stored on the Operator's system. familyNameAtBirth: type: string description: >- Last/family/sur- name at birth of the customer stored on the Operator's system. address: type: string description: >- Complete address of the customer stored on the Operator's system. For some countries, it is built following the usual concatenation of parameters in a country, but for other countries, this is not the case. For some countries, it can use streetName, streetNumber and/or houseNumberExtension. For example, in ESP, streetName+streetNumber; in NLD, it can be streetName+streetNumber or streetName+streetNumber+houseNumberExtension. streetName: type: string description: >- Name of the street of the customer's address on the Operator's system. It should not include the type of the street. streetNumber: type: string description: >- The street number of the customer's address on the Operator's system. Number identifying a specific property on the 'streetName'. postalCode: type: string description: >- The postal code or Zip code of the customer's address, stored on the Operator's system. region: type: string description: >- Region/prefecture of the customer's address, stored on the Operator's system. locality: type: string description: 'Locality of the customer''s address, stored on the Operator''s system.' country: type: string description: >- Country of the customer's address stored on the Operator's system. Format ISO 3166-1 alpha-2. houseNumberExtension: type: string description: >- House number extension of the customer stored on the Operator's system. Specific identifier of the house needed depending on the property type. For example, number of apartment in an apartment building. birthdate: type: string format: date description: >- Birthdate of the customer, in ISO 8601 calendar date format (YYYY-MM-DD), stored on the Operator's system. email: type: string format: email description: >- Email address of the customer in the RFC specified format (local-part@domain), stored on the Operator's system. gender: type: string description: >- Gender of the customer stored on the Operator's system (Male/Female/Other). enum: - MALE - FEMALE - OTHER cityOfBirth: type: string description: City where the customer was born. countryOfBirth: type: string description: Country where the customer was born. Format ISO 3166-1 alpha-2. nationality: type: string description: >- ISO 3166-1 alpha-2 code of the customer’s nationality. In the case a customer has more than one nationality, it is supposed to be the nationality related to the ID document provided in the match request. ErrorInfo-KYC-FIN-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: A human-readable code to describe the error message: type: string description: A human-readable description of what the event represents XCorrelator-KYC-FIN-V0: type: string pattern: '^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 CreateCheckNumRecycling-NUMR-RECYCL-V0: type: object required: - specifiedDate properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-NUMR-RECYCL-V0' specifiedDate: type: string format: date description: >- Specified date to check whether there has been a change in the subscriber associated with the specific phone number, in RFC 3339 calendar date format (YYYY-MM-DD). example: '2024-10-31' PhoneNumber-NUMR-RECYCL-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' CheckNumRecyclingInfo-NUMR-RECYCL-V0: type: object required: - phoneNumberRecycled properties: phoneNumberRecycled: type: boolean description: > Set to true (Boolean, not string) when there has been a change in the subscriber associated with the specific phone number after “specifiedDate”. ErrorInfo-NUMR-RECYCL-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: A human-readable code to describe the error message: type: string description: A human-readable description of what the event represents XCorrelator-NUMR-RECYCL-V0: type: string pattern: '^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 SimSwapInfo-SIM-V1: type: object required: - latestSimChange properties: latestSimChange: type: string format: date-time description: >- Timestamp of latest SIM swap performed. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) nullable: true example: '2023-07-03T14:27:08.312+02:00' CheckSimSwapInfo-SIM-V1: type: object required: - swapped properties: swapped: type: boolean description: >- Indicates whether the SIM card has been swapped during the period within the provided age. PhoneNumber-SIM-V1: type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+346661113334' description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. ErrorInfo-SIM-V1: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description CreateCheckSimSwap-SIM-V1: type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-SIM-V1' maxAge: type: integer example: 240 description: | Period in hours to be checked for SIM swap. format: int32 minimum: 1 maximum: 2400 default: 240 CreateSimSwapDate-SIM-V1: type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-SIM-V1' XCorrelator-DSWAP-V1: type: string pattern: '^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 DeviceSwapInfo-DSWAP-V1: type: object required: - latestDeviceChange properties: latestDeviceChange: type: string format: date-time description: >- Timestamp of latest device swap performed. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) nullable: true example: '2023-07-03T14:27:08.312+02:00' monitoredPeriod: type: integer description: >- Timeframe in days for device change supervision for the phone number. It could be valued in the response if the latest Device swap occurred before this monitored period. example: 120 CreateDeviceSwapDate-DSWAP-V1: type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DSWAP-V1' CreateCheckDeviceSwap-DSWAP-V1: type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-DSWAP-V1' maxAge: type: integer example: 240 description: | Period in hours to be checked for device swap. format: int32 minimum: 1 maximum: 2400 default: 240 PhoneNumber-DSWAP-V1: type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+34666111333' description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. CheckDeviceSwapInfo-DSWAP-V1: type: object required: - swapped properties: swapped: type: boolean description: >- Indicates whether the device has been swapped during the period within the provided age. ErrorInfo-DSWAP-V1: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: Code given to this error message: type: string description: Detailed error description SessionId-QoD-V0: description: Session ID in UUID format type: string format: uuid BaseSessionInfo-QoD-V0: description: Common attributes of a QoD session type: object properties: device: $ref: '#/components/schemas/Device-QoD-V0' applicationServer: $ref: '#/components/schemas/ApplicationServer-QoD-V0' devicePorts: description: >- The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports allOf: - $ref: '#/components/schemas/PortsSpec-QoD-V0' applicationServerPorts: description: A list of single ports or port ranges on the application server allOf: - $ref: '#/components/schemas/PortsSpec-QoD-V0' qosProfile: $ref: '#/components/schemas/QosProfileName-QoD-V0' webhook: type: object required: - notificationUrl properties: notificationUrl: type: string format: uri example: 'https://application-server.com' description: Allows asynchronous delivery of session related events notificationAuthToken: type: string minLength: 20 maxLength: 256 example: c8974e592c2fa383d4a3960714 description: Authentication token for callback API required: - device - applicationServer - qosProfile SessionInfo-QoD-V0: description: Session related information. allOf: - $ref: '#/components/schemas/BaseSessionInfo-QoD-V0' - type: object properties: sessionId: $ref: '#/components/schemas/SessionId-QoD-V0' duration: type: integer format: int32 minimum: 1 example: 86400 startedAt: type: integer example: 1639479600 description: Timestamp of session start in seconds since Unix epoch format: int64 expiresAt: type: integer example: 1639566000 description: >- Timestamp of session expiration if the session was not deleted, in seconds since Unix epoch format: int64 qosStatus: $ref: '#/components/schemas/QosStatus-QoD-V0' messages: type: array items: $ref: '#/components/schemas/Message-QoD-V0' required: - sessionId - duration - startedAt - expiresAt - qosStatus CreateSession-QoD-V0: description: Attributes required to create a session allOf: - $ref: '#/components/schemas/BaseSessionInfo-QoD-V0' - type: object properties: duration: description: > Session duration in seconds. Maximal value of 24 hours is used if not set. After session is expired the, client will receive a `QOS_STATUS_CHANGED` event with - `qosStatus` as `UNAVAILABLE`, and, - `statusInfo` as `DURATION_EXPIRED`. See notification callback. type: integer format: int32 minimum: 1 maximum: 86400 default: 86400 example: 86400 Port-QoD-V0: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 ValidationError-QoD-V0: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HTTPValidationError-QoD-V0: properties: detail: items: $ref: '#/components/schemas/ValidationError-QoD-V0' type: array title: Detail type: object title: HTTPValidationError PortsSpec-QoD-V0: type: object minProperties: 1 properties: ranges: type: array minItems: 1 items: type: object required: - from - to properties: from: $ref: '#/components/schemas/Port-QoD-V0' to: $ref: '#/components/schemas/Port-QoD-V0' ports: type: array minItems: 1 items: $ref: '#/components/schemas/Port-QoD-V0' example: ranges: - from: 5010 to: 5020 ports: - 5060 - 5070 ExtendSessionDuration-QoD-V0: description: Attributes required to extend the duration of an active session type: object properties: requestedAdditionalDuration: description: | Additional duration in seconds to be extended. type: integer format: int32 minimum: 1 maximum: 86399 example: 60 required: - requestedAdditionalDuration QosProfile-QoD-V0: description: | Data type with attributes of a QosProfile type: object properties: name: $ref: '#/components/schemas/QosProfileName-QoD-V0' description: description: | A description of the QoS profile. type: string example: QoS profile for video streaming status: $ref: '#/components/schemas/QosProfileStatusEnum-QoD-V0' targetMinUpstreamRate: description: > This is the target minimum upstream rate for the QoS profile. For 5G networks 3GPP Guaranteed Bit Rate (GBR) refers to a dedicated, fixed data rate assigned to specific services, ensuring a minimum performance level. As per 3GPP TS 23.203, GBR is a QoS parameter used to manage traffic classes in mobile networks. It provides a stable data rate for latency-sensitive applications, such as voice calls or video streaming, helping maintain a consistent user experience. When this attribute is set this could imply that a GBR QCI is used, though mechanisms on the network can be used to ensure a minimum performance level without using a GBR QCI. The committed data rate allocated to specific services, ensuring a consistent level of performance. For DOCSIS networks, the "Minimum Reserved Traffic Rate" is defined in the DOCSIS 3.1 - MAC and Upper Layer Protocols Interface Specification" and it ensures a consistent level of performance for specific services within the network. allOf: - $ref: '#/components/schemas/Rate-QoD-V0' maxUpstreamRate: description: | The maximum best effort data allOf: - $ref: '#/components/schemas/Rate-QoD-V0' maxUpstreamBurstRate: description: > When defined, this is the maximum upstream burst rate for the QoS profile, that will enable the network to burst data at a higher rate than the maxUpstreamRate for a period of time. allOf: - $ref: '#/components/schemas/Rate-QoD-V0' targetMinDownstreamRate: description: > This is the target minimum downstream rate for the QoS profile. For 5G networks 3GPP Guaranteed Bit Rate (GBR) refers to a dedicated, fixed data rate assigned to specific services, ensuring a minimum performance level. As per 3GPP TS 23.203, GBR is a QoS parameter used to manage traffic classes in mobile networks. It provides a stable data rate for latency-sensitive applications, such as voice calls or video streaming, helping maintain a consistent user experience. When this attribute is set this could imply that a GBR QCI is used, though mechanisms on the network can be used to ensure a minimum performance level without using a GBR QCI. The committed data rate allocated to specific services, ensuring a consistent level of performance. DOCSIS networks, the "Minimum Reserved Traffic Rate" is defined in the DOCSIS 3.1 - MAC and Upper Layer Protocols Interface Specification" and it ensures a consistent level of performance for specific services within the network. allOf: - $ref: '#/components/schemas/Rate-QoD-V0' maxDownstreamRate: description: | The maximum best effort rate allOf: - $ref: '#/components/schemas/Rate-QoD-V0' maxDownstreamBurstRate: description: > When defined, this is the maximum downstream burst rate for the QoS profile, that will enable the network to burst data at a higher rate than the maxDownstreamRate for a period of time. This can result in improved user experience when there is additional network capacity. For instance, when a user is streaming a video, the network can burst data at a higher rate to fill the buffer, and then return to the maxUpstreamRate once the buffer is full. allOf: - $ref: '#/components/schemas/Rate-QoD-V0' minDuration: description: | The shortest time period that this profile can be deployed. allOf: - $ref: '#/components/schemas/Duration-QoD-V0' maxDuration: description: > The maximum time period that this profile can be deployed. NOTE: currently the duration within `sessionInfo` is limited to 86400 seconds (1 day). The value of `maxDuration` shouldn't therefore exceed this time period. The limitation might be removed in later versions. allOf: - $ref: '#/components/schemas/Duration-QoD-V0' priority: type: integer example: 20 description: > Priority levels allow efficient resource allocation and ensure optimal performance for various services in each technology, with the highest priority traffic receiving preferential treatment. The lower value the higher priority. Not all access networks use the same priority range, so this priority will be scaled to the access network's priority range. format: int32 minimum: 1 maximum: 100 packetDelayBudget: description: > The packet delay budget is the maximum allowable one-way latency between the customer's device and the gateway from the operator's network to other networks. By limiting the delay, the network can provide an acceptable level of performance for various services, such as voice calls, video streaming, and data. The end-to-end or round trip latency will be about two times this value plus the latency not controlled by the operator allOf: - $ref: '#/components/schemas/Duration-QoD-V0' jitter: description: > The jitter requirement aims to limit the maximum variation in round-trip packet delay for the 99th percentile of traffic, following ITU Y.1540 standards. It considers only acknowledged packets in a session, which are packets that receive a confirmation of receipt from the recipient (e.g., using TCP). This requirement helps maintain consistent latency, essential for real-time applications such as VoIP, video calls, and gaming. allOf: - $ref: '#/components/schemas/Duration-QoD-V0' packetErrorLossRate: type: integer description: > The exponential power of the allowable error loss rate 10^(-N). For instance 3 would be an error loss rate of 10 to the power of -3 (0.001) For 5G network the 3GPP specification TS 23.203 defines the packet error loss rate QCI attribute. It describes the Quality of Service (QoS) Class Identifier (QCI) parameters used to differentiate traffic classes in mobile networks, ensuring appropriate resource allocation and performance for various services. The packet error loss rate is one of the QCI attributes, providing information on the acceptable packet loss rate for a specific traffic class. This attribute helps maintain the desired performance level for services like voice calls, video streaming, or data transfers within the 3GPP mobile network. format: int32 minimum: 1 maximum: 10 example: 3 required: - name - status QosProfileName-QoD-V0: description: > A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profiles QOS_S, QOS_M, QOS_L, and QOS_E - A searchable descriptive name type: string example: QCI_1_voice minLength: 3 maxLength: 256 format: string pattern: '^[a-zA-Z0-9_.-]+$' Rate-QoD-V0: type: object properties: value: type: integer example: 10 format: int32 minimum: 0 maximum: 1024 unit: $ref: '#/components/schemas/RateUnitEnum-QoD-V0' Duration-QoD-V0: type: object properties: value: type: integer example: 12 format: int32 minimum: 1 unit: allOf: - $ref: '#/components/schemas/TimeUnitEnum-QoD-V0' - example: Minutes TimeUnitEnum-QoD-V0: type: string enum: - Days - Hours - Minutes - Seconds - Milliseconds - Microseconds - Nanoseconds QosProfileStatusEnum-QoD-V0: description: > The current status of the QoS Profile - `ACTIVE`- QoS Profile is available to be used - `INACTIVE`- QoS Profile is not currently available to be deployed - `DEPRECATED`- QoS profile is actively being used in a QoD session, but can not be deployed in new QoD sessions type: string enum: - ACTIVE - INACTIVE - DEPRECATED RateUnitEnum-QoD-V0: type: string enum: - bps - kbps - Mbps - Gbps - Tbps CloudEvent-QoD-V0: description: Event compliant with the CloudEvents specification required: - id - source - specversion - type - time properties: id: description: 'Identifier of this event, that must be unique in the source context.' type: string source: description: >- Identifies the context in which an event happened in the specific Provider Implementation. type: string format: uri-reference type: description: The type of the event. type: string enum: - org.camaraproject.qod.v0.qos-status-changed specversion: description: >- Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version) type: string enum: - '1.0' datacontenttype: description: >- media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs type: string enum: - application/json data: description: 'Event notification details payload, which depends on the event type' type: object time: description: | Timestamp of when the occurrence happened. It must follow RFC 3339 type: string format: date-time discriminator: propertyName: type mapping: org.camaraproject.qod.v0.qos-status-changed: '#/components/schemas/EventQosStatusChanged' EventQosStatusChanged-QoD-V0: allOf: - $ref: '#/components/schemas/CloudEvent-QoD-V0' - type: object properties: data: type: object description: Event details depending on the event type required: - sessionId - qosStatus properties: sessionId: $ref: '#/components/schemas/SessionId-QoD-V0' qosStatus: $ref: '#/components/schemas/EventQosStatus-QoD-V0' statusInfo: $ref: '#/components/schemas/StatusInfo-QoD-V0' required: - data StatusInfo-QoD-V0: description: > Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is 'UNAVAILABLE'. * `DURATION_EXPIRED` - Session terminated due to requested duration expired * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired type: string enum: - DURATION_EXPIRED - NETWORK_TERMINATED - DELETE_REQUESTED Device-QoD-V0: description: > End-user equipment able to connect to a mobile network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-QoD-V0' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-QoD-V0' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-QoD-V0' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-QoD-V0' minProperties: 1 ApplicationServer-QoD-V0: description: > A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` type: object properties: ipv4Address: $ref: '#/components/schemas/ApplicationServerIpv4Address-QoD-V0' ipv6Address: $ref: '#/components/schemas/ApplicationServerIpv6Address-QoD-V0' minProperties: 1 NetworkAccessIdentifier-QoD-V0: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com PhoneNumber-QoD-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, optionally prefixed with '+'. type: string pattern: '^\+?[0-9]{5,15}$' example: '123456789' DeviceIpv4Addr-QoD-V0: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-QoD-V0' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-QoD-V0' publicPort: $ref: '#/components/schemas/Port-QoD-V0' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-QoD-V0: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 DeviceIpv6Address-QoD-V0: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). The session shall apply to all IP flows between the device subnet and the specified application server, unless further restricted by the optional parameters devicePorts or applicationServerPorts. type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' ApplicationServerIpv4Address-QoD-V0: type: string example: 192.168.0.1/24 description: | IPv4 address may be specified in form
as: - address - an IPv4 number in dotted-quad form 1.2.3.4. Only this exact IP number will match the flow control rule. - address/mask - an IP number as above with a mask width of the form 1.2.3.4/24. In this case, all IP numbers from 1.2.3.0 to 1.2.3.255 will match. The bit width MUST be valid for the IP version. ApplicationServerIpv6Address-QoD-V0: type: string example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' description: | IPv6 address may be specified in form
as: - address - The /128 subnet is optional for single addresses: - 2001:db8:85a3:8d3:1319:8a2e:370:7344 - 2001:db8:85a3:8d3:1319:8a2e:370:7344/128 - address/mask - an IP v6 number with a mask: - 2001:db8:85a3:8d3::0/64 - 2001:db8:85a3:8d3::/64 Message-QoD-V0: type: object properties: severity: description: Message severity type: string enum: - INFO - WARNING description: description: Detailed message text type: string required: - severity - description QosStatus-QoD-V0: description: > The current status of the requested QoS session. The status can be one of the following: * `REQUESTED` - QoS has been requested by creating a session * `AVAILABLE` - The requested QoS has been provided by the network * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason type: string enum: - REQUESTED - AVAILABLE - UNAVAILABLE RetrieveSessionInput-QoD-V0: properties: device: $ref: '#/components/schemas/Device-QoD-V0' type: object required: - device title: RetrieveSessionInput EventQosStatus-QoD-V0: description: > The current status of a requested or previously available session. Applicable values in the event are: * `AVAILABLE` - The requested QoS has been provided by the network. * `UNAVAILABLE` - A requested or previously available QoS session is now unavailable. `statusInfo` may provide additional information about the reason for the unavailability. type: string enum: - AVAILABLE - UNAVAILABLE ErrorInfo-QoD-V0: type: object properties: status: type: integer description: HTTP status code returned along with this error response code: type: string description: Code given to this error message: type: string description: Detailed error description required: - status - code - message SessionId-QoD-V1: description: Session ID in UUID format type: string format: uuid BaseSessionInfo-QoD-V1: description: Common attributes of a QoD session type: object properties: device: $ref: '#/components/schemas/Device-QoD-V1' applicationServer: $ref: '#/components/schemas/ApplicationServer-QoD-V1' devicePorts: description: >- The ports used locally by the device for flows to which the requested QoS profile should apply. If omitted, then the qosProfile will apply to all flows between the device and the specified application server address and ports allOf: - $ref: '#/components/schemas/PortsSpec-QoD-V1' applicationServerPorts: description: A list of single ports or port ranges on the application server allOf: - $ref: '#/components/schemas/PortsSpec-QoD-V1' qosProfile: $ref: '#/components/schemas/QosProfileName-QoD-V1' sink: type: string format: uri description: >- The address to which events about all status changes of the session (e.g. session termination) shall be delivered using the selected protocol. example: 'https://endpoint.example.com/sink' sinkCredential: description: >- A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. allOf: - $ref: '#/components/schemas/SinkCredential-QoD-V1' required: - applicationServer - qosProfile SessionInfo-QoD-V1: description: Session related information. allOf: - $ref: '#/components/schemas/BaseSessionInfo-QoD-V1' - type: object properties: sessionId: $ref: '#/components/schemas/SessionId-QoD-V1' duration: type: integer format: int32 minimum: 1 example: 86400 startedAt: type: integer example: 1639479600 description: Timestamp of session start in seconds since Unix epoch format: int64 expiresAt: type: integer example: 1639566000 description: >- Timestamp of session expiration if the session was not deleted, in seconds since Unix epoch format: int64 qosStatus: $ref: '#/components/schemas/QosStatus-QoD-V1' statusInfo: $ref: '#/components/schemas/StatusInfo-QoD-V1' messages: type: array items: $ref: '#/components/schemas/Message-QoD-V1' required: - sessionId - duration - startedAt - expiresAt - qosStatus CreateSession-QoD-V1: description: Attributes required to create a session allOf: - $ref: '#/components/schemas/BaseSessionInfo-QoD-V1' - type: object properties: duration: description: > Session duration in seconds. Maximal value of 24 hours is used if not set. After session is expired the, client will receive a `QOS_STATUS_CHANGED` event with - `qosStatus` as `UNAVAILABLE`, and, - `statusInfo` as `DURATION_EXPIRED`. See notification callback. type: integer format: int32 minimum: 1 maximum: 86400 default: 86400 example: 86400 Port-QoD-V1: description: TCP or UDP port number type: integer minimum: 0 maximum: 65535 ValidationError-QoD-V1: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HTTPValidationError-QoD-V1: properties: detail: items: $ref: '#/components/schemas/ValidationError-QoD-V1' type: array title: Detail type: object title: HTTPValidationError PortsSpec-QoD-V1: type: object minProperties: 1 properties: ranges: type: array minItems: 1 items: type: object required: - from - to properties: from: $ref: '#/components/schemas/Port-QoD-V1' to: $ref: '#/components/schemas/Port-QoD-V1' ports: type: array minItems: 1 items: $ref: '#/components/schemas/Port-QoD-V1' example: ranges: - from: 5010 to: 5020 ports: - 5060 - 5070 SinkCredential-QoD-V1: type: object properties: credentialType: type: string enum: - ACCESSTOKEN description: | The type of the credential. Note: Type of the credential - MUST be set to ACCESSTOKEN for now discriminator: propertyName: credentialType mapping: ACCESSTOKEN: '#/components/schemas/AccessTokenCredential' required: - credentialType AccessTokenCredential-QoD-V1: type: object description: An access token credential. allOf: - $ref: '#/components/schemas/SinkCredential-QoD-V1' - type: object properties: accessToken: description: >- REQUIRED. An access token is a previously acquired token granting access to the target resource. type: string accessTokenExpiresUtc: type: string format: date-time description: > REQUIRED. An absolute (UTC) timestamp at which the token shall be considered expired. Token expiration should occur after the termination of the requested session, allowing the client to be notified of any changes during the sessions's existence. If the token expires while the session is still active, the client will stop receiving notifications. If the access token is a JWT and registered "exp" (Expiration Time) claim is present, the two expiry times should match. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) example: '2023-07-03T12:27:08.312Z' accessTokenType: description: >- REQUIRED. Type of the access token (See [OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-7.1)). For the current version of the API the type MUST be set to `Bearer`. type: string enum: - bearer required: - accessToken - accessTokenExpiresUtc - accessTokenType ExtendSessionDuration-QoD-V1: description: Attributes required to extend the duration of an active session type: object properties: requestedAdditionalDuration: description: | Additional duration in seconds to be extended. type: integer format: int32 minimum: 1 maximum: 86399 example: 60 required: - requestedAdditionalDuration QosProfileName-QoD-V1: description: > A unique name for identifying a specific QoS profile. This may follow different formats depending on the service providers implementation. Some options addresses: - A UUID style string - Support for predefined profiles QOS_S, QOS_M, QOS_L, and QOS_E - A searchable descriptive name type: string example: QCI_1_voice minLength: 3 maxLength: 256 format: string pattern: '^[a-zA-Z0-9_.-]+$' CloudEvent-QoD-V1: description: Event compliant with the CloudEvents specification required: - id - source - specversion - type - time properties: id: description: 'Identifier of this event, that must be unique in the source context.' type: string source: description: >- Identifies the context in which an event happened in the specific Provider Implementation. type: string format: uri-reference type: description: The type of the event. type: string enum: - org.camaraproject.quality-on-demand.v1.qos-status-changed specversion: description: >- Version of the specification to which this event conforms (must be 1.0 if it conforms to cloudevents 1.0.2 version) type: string enum: - '1.0' datacontenttype: description: >- media-type that describes the event payload encoding, must be "application/json" for CAMARA APIs type: string enum: - application/json data: description: 'Event notification details payload, which depends on the event type' type: object time: description: | Timestamp of when the occurrence happened. It must follow RFC 3339 type: string format: date-time discriminator: propertyName: type mapping: org.camaraproject.quality-on-demand.v1.qos-status-changed: '#/components/schemas/EventQosStatusChanged' EventQosStatusChanged-QoD-V1: allOf: - $ref: '#/components/schemas/CloudEvent-QoD-V1' - type: object properties: data: type: object description: Event details depending on the event type required: - sessionId - qosStatus properties: sessionId: $ref: '#/components/schemas/SessionId-QoD-V1' qosStatus: $ref: '#/components/schemas/EventQosStatus-QoD-V1' statusInfo: $ref: '#/components/schemas/StatusInfo-QoD-V1' required: - data StatusInfo-QoD-V1: description: > Reason for the new `qosStatus`. Currently `statusInfo` is only applicable when `qosStatus` is 'UNAVAILABLE'. * `DURATION_EXPIRED` - Session terminated due to requested duration expired * `NETWORK_TERMINATED` - Network terminated the session before the requested duration expired * `DELETE_REQUESTED`- User requested the deletion of the session before the requested duration expired type: string enum: - DURATION_EXPIRED - NETWORK_TERMINATED - DELETE_REQUESTED Device-QoD-V1: description: > End-user equipment able to connect to a network. Examples of devices include smartphones or IoT sensors/actuators. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` * `phoneNumber` * `networkAccessIdentifier` NOTE: the MNO might support only a subset of these options. The API invoker can provide multiple identifiers to be compatible across different MNOs. In this case the identifiers MUST belong to the same device type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-QoD-V1' networkAccessIdentifier: $ref: '#/components/schemas/NetworkAccessIdentifier-QoD-V1' ipv4Address: $ref: '#/components/schemas/DeviceIpv4Addr-QoD-V1' ipv6Address: $ref: '#/components/schemas/DeviceIpv6Address-QoD-V1' minProperties: 1 ApplicationServer-QoD-V1: description: > A server hosting backend applications to deliver some business logic to clients. The developer can choose to provide the below specified device identifiers: * `ipv4Address` * `ipv6Address` type: object properties: ipv4Address: $ref: '#/components/schemas/ApplicationServerIpv4Address-QoD-V1' ipv6Address: $ref: '#/components/schemas/ApplicationServerIpv6Address-QoD-V1' minProperties: 1 NetworkAccessIdentifier-QoD-V1: description: >- A public identifier addressing a subscription in a mobile network. In 3GPP terminology, it corresponds to the GPSI formatted with the External Identifier ({Local Identifier}@{Domain Identifier}). Unlike the telephone number, the network access identifier is not subjected to portability ruling in force, and is individually managed by each operator. type: string example: 123456789@domain.com PhoneNumber-QoD-V1: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+?[0-9]{5,15}$' example: '+123456789' DeviceIpv4Addr-QoD-V1: type: object description: > The device should be identified by either the public (observed) IP address and port as seen by the application server, or the private (local) and any public (observed) IP addresses in use by the device (this information can be obtained by various means, for example from some DNS servers). If the allocated and observed IP addresses are the same (i.e. NAT is not in use) then the same address should be specified for both publicAddress and privateAddress. If NAT64 is in use, the device should be identified by its publicAddress and publicPort, or separately by its allocated IPv6 address (field ipv6Address of the Device object) In all cases, publicAddress must be specified, along with at least one of either privateAddress or publicPort, dependent upon which is known. In general, mobile devices cannot be identified by their public IPv4 address alone. properties: publicAddress: $ref: '#/components/schemas/SingleIpv4Addr-QoD-V1' privateAddress: $ref: '#/components/schemas/SingleIpv4Addr-QoD-V1' publicPort: $ref: '#/components/schemas/Port-QoD-V1' anyOf: - required: - publicAddress - privateAddress - required: - publicAddress - publicPort example: publicAddress: 84.125.93.10 publicPort: 59765 SingleIpv4Addr-QoD-V1: description: A single IPv4 address with no subnet mask type: string format: ipv4 example: 84.125.93.10 DeviceIpv6Address-QoD-V1: description: > The device should be identified by the observed IPv6 address, or by any single IPv6 address from within the subnet allocated to the device (e.g. adding ::0 to the /64 prefix). The session shall apply to all IP flows between the device subnet and the specified application server, unless further restricted by the optional parameters devicePorts or applicationServerPorts. type: string format: ipv6 example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' ApplicationServerIpv4Address-QoD-V1: type: string example: 192.168.0.1/24 description: | IPv4 address may be specified in form
as: - address - an IPv4 number in dotted-quad form 1.2.3.4. Only this exact IP number will match the flow control rule. - address/mask - an IP number as above with a mask width of the form 1.2.3.4/24. In this case, all IP numbers from 1.2.3.0 to 1.2.3.255 will match. The bit width MUST be valid for the IP version. ApplicationServerIpv6Address-QoD-V1: type: string example: '2001:db8:85a3:8d3:1319:8a2e:370:7344' description: | IPv6 address may be specified in form
as: - address - The /128 subnet is optional for single addresses: - 2001:db8:85a3:8d3:1319:8a2e:370:7344 - 2001:db8:85a3:8d3:1319:8a2e:370:7344/128 - address/mask - an IP v6 number with a mask: - 2001:db8:85a3:8d3::0/64 - 2001:db8:85a3:8d3::/64 Message-QoD-V1: type: object properties: severity: description: Message severity type: string enum: - INFO - WARNING description: description: Detailed message text type: string required: - severity - description QosStatus-QoD-V1: description: > The current status of the requested QoS session. The status can be one of the following: * `REQUESTED` - QoS has been requested by creating a session * `AVAILABLE` - The requested QoS has been provided by the network * `UNAVAILABLE` - The requested QoS cannot be provided by the network due to some reason type: string enum: - REQUESTED - AVAILABLE - UNAVAILABLE RetrieveSessionInput-QoD-V1: properties: device: $ref: '#/components/schemas/Device-QoD-V1' type: object required: - device title: RetrieveSessionInput RetrieveSessionsOutput-QoD-V1: description: QoS session information for a given device type: array items: $ref: '#/components/schemas/SessionInfo-QoD-V1' minItems: 0 EventQosStatus-QoD-V1: description: > The current status of a requested or previously available session. Applicable values in the event are: * `AVAILABLE` - The requested QoS has been provided by the network. * `UNAVAILABLE` - A requested or previously available QoS session is now unavailable. `statusInfo` may provide additional information about the reason for the unavailability. type: string enum: - AVAILABLE - UNAVAILABLE ErrorInfo-QoD-V1: type: object properties: status: type: integer description: HTTP status code returned along with this error response code: type: string description: Code given to this error message: type: string description: Detailed error description required: - status - code - message UnconditionalCallForwardingSignal-Cfs-V0: description: >- resource containing the information about the Unconditional Call Forwarding Service for the given phone number (PhoneNumber) type: object properties: active: type: boolean description: Indicates if the unconditional call forwarding service is active. CallForwardingSignal-Cfs-V0: description: >- resource containing the list of the Call Forwarding Services active for the given phone number (PhoneNumber). The possible states are, 'inactive' (no call forwarding service activated), 'unconditional' (call forwarded independently from the device status), 'conditional_busy' (call forwarded if the device is on an active call), 'conditional_not_reachable' (call forwarded if the device is not reachable), 'conditional_no_answer' (call forwarded if the device doesn't answer the incoming call). type: array items: type: string enum: - inactive - unconditional - conditional_busy - conditional_not_reachable - conditional_no_answer example: - unconditional - conditional_busy - conditional_no_answer minItems: 1 CreateCallForwardingSignal-Cfs-V0: description: >- resource containing the phone number (PhoneNumber) regarding which the Call Forwarding Service must be checked. To be valorised only in case of two-legged authentication. If valorised with three-legged authentication a 422-UNNECESSARY_IDENTIFIER error code is returned. type: object properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-Cfs-V0' PhoneNumber-Cfs-V0: description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. type: string pattern: '^\+[1-9][0-9]{4,14}$' example: '+99999991000' ErrorInfo-Cfs-V0: description: error info template type: object required: - message - status - code properties: message: type: string description: A human readable description of what the event represent status: type: integer description: HTTP response status code code: type: string description: Friendly Code to describe the error XCorrelator-ConsentInfo-V0: description: Value for the x-correlator type: string pattern: '^[a-zA-Z0-9-_:;.\/<>{}]{0,256}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 PhoneNumber-ConsentInfo-V0: type: string description: >- A public identifier addressing a telephone subscription. In mobile networks it corresponds to the MSISDN (Mobile Station International Subscriber Directory Number). In order to be globally unique it has to be formatted in international format, according to E.164 standard, prefixed with '+'. pattern: '^\+[1-9][0-9]{4,14}$' example: '+123456789' RetrieveStatusRequestBody-ConsentInfo-V0: type: object description: > The request body for the retrieve status request. It contains the requested scope(s), the Purpose for which the API Consumer intends to process the User's personal data, a flag indicating whether the API Consumer requests a Consent capture URL and optionally the phone number of the User. The phone number is required when the API is invoked using a two-legged access token, but MUST NOT be provided when a three-legged access token is used, as the subject will be uniquely identified from the access token. required: - scopes - purpose - requestCaptureUrl properties: phoneNumber: $ref: '#/components/schemas/PhoneNumber-ConsentInfo-V0' scopes: $ref: '#/components/schemas/Scopes-ConsentInfo-V0' purpose: $ref: '#/components/schemas/Purpose-ConsentInfo-V0' requestCaptureUrl: type: boolean description: > A boolean flag indicating whether the API Consumer requests API Provider to return a Consent capture URL. * `true` - If set to `true` the API will include a `captureUrl` in the response body if applicable. * `false` - The API will omit the Consent capture URL from the response. example: true Scopes-ConsentInfo-V0: type: array minItems: 1 items: type: string description: > List of requested scopes. The scope is a string that represents the access rights that the API Consumer is requesting from the User. example: - 'location-verification:verify' Purpose-ConsentInfo-V0: type: string pattern: '^dpv:[a-zA-Z0-9]+$' description: > The reason for which personal data will be processed by the API Consumer. CAMARA defines a standard set of Purposes which can be used by API Consumers to specify the reason for their intended personal data processing. CAMARA uses the [W3C Data Privacy Vocabulary](https://w3c.github.io/dpv/2.0/dpv/) (DPV) to represent these purposes e.g. `dpv:FraudPreventionAndDetection` or `dpv:RequestedServiceProvision`. example: 'dpv:FraudPreventionAndDetection' RetrieveStatusResponseBody-ConsentInfo-V0: type: object required: - statusInfo properties: statusInfo: $ref: '#/components/schemas/statusInfo-ConsentInfo-V0' captureUrl: type: string format: url description: > URL where the User can provide the necessary Consent. This field is only present in the API response if the API Consumer requests it and if the following conditions are met: - `statusInfo[*].statusValidForProcessing` is `false`, and - `statusInfo[*].statusReason` is `PENDING`, `REQUESTED` or `EXPIRED`. Please note that this field is only applicable when the User Consent is required to enable valid data processing. A unique URL is provided to authorise all items in the statusInfo list that require user action. example: 'https://example.org/consent-capture-url' statusInfo-ConsentInfo-V0: type: array description: > Provides information about the validity status of the requested data processing for the specified scope(s) and Purpose. It contains details of whether the processing of the data is currently valid and, if not, the reason why. The expiration date of the validity may be also provided if applicable. More than one array item may be required for the requested scope(s) and Purpose, e.g. when the requested scopes relate to multiple APIs. items: $ref: '#/components/schemas/statusInfoObject-ConsentInfo-V0' minItems: 1 statusInfoObject-ConsentInfo-V0: type: object required: - scopes - purpose - statusValidForProcessing properties: scopes: $ref: '#/components/schemas/Scopes-ConsentInfo-V0' purpose: $ref: '#/components/schemas/Purpose-ConsentInfo-V0' statusValidForProcessing: type: boolean description: > Boolean flag that shows the validity status of the requested data processing for the specified scope(s) and Purpose. * `true` - indicates that the current status is valid and permits the requested data processing. * `false` - indicates that the requested data processing is not permitted. The reason for this is provided in the `statusReason` field. statusReason: type: string enum: - PENDING - REQUESTED - REVOKED - EXPIRED - OBJECTED description: > This field must be present if `statusValidForProcessing` is `false`. It indicates the reason why the requested data processing is not permitted for the specified scope(s) and Purpose. It provides API Consumers with additional context on the current validity status, helping them to understand its applicability and the next steps they may need to take. It is particularly useful for determining whether the API Consumer should prompt the User to take action, such as providing Consent or renewing an existing Consent. Possible values are: - `PENDING`: The requested data processing has not yet been established or fully validated under the applicable privacy regulations. For example, the User has not yet provided Consent when it is required. - `REQUESTED`: The permission for the requested data processing has been submitted but has not yet been granted or confirmed. This is common when the API Consumer has initiated a request for Consent capture, but the User has not yet completed the process. For example, this occurs when a notice prompting the User to provide Consent has been displayed, but they have not yet made a decision. - `REVOKED`: The User has actively withdrawn their permission for the requested data processing after previously opting in. For example, the User revokes their Consent for the data processing. - `OBJECTED`: The user has opted out of the requested data processing, despite a previous explicit opt-in not being required. This is common when the User has exercised their right to object to data processing under the applicable privacy regulations. - `EXPIRED`: When applicable, the validity of the data processing has ceased due to the passage of time or a pre-defined condition. This is common for time-limited Consents. expirationDate: type: string format: date-time description: > The date and time at which the validity of the data processing is set to expire or has expired. It applies mainly to time-limited Consents, or other cases where a specific duration of validity is defined for the data processing. This field is only applicable: - if `statusValidForProcessing` is `true` (indicating a future expiration), or - if `statusValidForProcessing` is `false` and `statusReason` is `EXPIRED` (indicating the past expiration date). It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z). example: '2023-07-03T14:27:08.312+02:00' ErrorInfo-ConsentInfo-V0: type: object required: - status - code - message properties: status: type: integer description: HTTP response status code code: type: string description: A human-readable code to describe the error message: type: string description: A human-readable description of what the event represents Accepted-Slice-V1: properties: status: type: string maxLength: 20 title: Status default: Accepted type: object title: Accepted AreaOfService-Slice-V1: properties: polygon: items: $ref: '#/components/schemas/Point-Slice-V1' type: array minItems: 4 title: Polygon description: >- Corners of the polygon defining the area that must be covered. The actual area may be larger, depending on cell areas. type: object required: - polygon title: AreaOfService CSMF_action-Slice-V1: type: string enum: - add - modify - delete - noChange title: CSMF_action Customer-Slice-V1: properties: name: type: string maxLength: 250 title: Name description: type: string maxLength: 100 nullable: true title: Description description: 'Description of the slice, e.g. "B2B_5G_eMBB_Slice"' address: type: string maxLength: 250 nullable: true title: Address description: Address of the customer ordering slice creation. contact: type: string maxLength: 250 nullable: true title: Contact description: Contact of the customer ordering slice creation. type: object required: - name title: Customer HTTPValidationError-Slice-V1: properties: detail: items: $ref: '#/components/schemas/ValidationError-Slice-V1' type: array title: Detail type: object title: HTTPValidationError IsolationLevel-Slice-V1: type: string enum: - NO-ISOLATION - PHYSICAL-ISOLATION - LOGICAL-ISOLATION title: IsolationLevel NetworkIdentifier-Slice-V1: properties: mcc: type: string maxLength: 64 minLength: 2 pattern: '[0-9]{3}|[a-zA-Z]{2}|[A-Za-z]{3,64}' title: Mcc description: >- Country name, short name, or MCC code. One cannot use country names if a country has several MCC codes, such as the US. mnc: type: string maxLength: 3 minLength: 2 pattern: '^[0-9]{2,3}$' title: Mnc type: object required: - mcc - mnc title: NetworkIdentifier Point-Slice-V1: properties: lat: type: number maximum: 90 minimum: -90 title: Latitude default: 0 lon: type: number maximum: 180 minimum: -180 title: Longitude default: 0 type: object title: Point ServiceOrderClientNotif-Slice-V1: properties: resource: type: string maxLength: 100 title: Resource description: Resource ID/Slice name. action: $ref: '#/components/schemas/CSMF_action-Slice-V1' description: 'CSMF operation, e.g. add/modify/delete.' outcome: $ref: '#/components/schemas/ServiceOrderStateType-Slice-V1' description: 'Outcome of the given operation, e.g completed,inprogress,failed.' current_slice_state: $ref: '#/components/schemas/SliceState-Slice-V1' description: 'Current slice state e.g. PENDING/OPERATING/AVAILABLE/DELETED. ' type: object required: - resource - action - outcome - current_slice_state title: ServiceOrderClientNotif ServiceOrderStateType-Slice-V1: type: string enum: - acknowledged - rejected - pending - held - inProgress - cancelled - completed - failed - partial - assessingCancellation - pendingCancellation title: ServiceOrderStateType Slice-Input-Slice-V1: properties: name: type: string maxLength: 64 minLength: 5 pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{3,63}[a-zA-Z0-9]$' nullable: true title: Name description: >- Optional short name for the slice. Must be ASCII characters, digits and dash. Like name of an event. example: Concert-2029-Big-Arena notificationUrl: type: string maxLength: 255 title: Notificationurl description: >- Contact attached to the order to send back information regarding this order. notificationAuthToken: type: string maxLength: 4096 nullable: true title: Notificationauthtoken description: Authorization token for notification sending. networkIdentifier: $ref: '#/components/schemas/NetworkIdentifier-Slice-V1' description: PLMN ID with MCC and MNC codes. sliceInfo: $ref: '#/components/schemas/SliceInfo-Slice-V1' description: Slice Service type(SST) and slice differentiator(SD). areaOfService: allOf: - $ref: '#/components/schemas/AreaOfService-Slice-V1' nullable: true description: Specifies the area where the slice can be used maxDataConnections: type: integer maximum: 1000000 minimum: 0 format: int32 nullable: true title: Maxdataconnections description: Maximum number of data connection sessions in the slice. maxDevices: type: integer maximum: 1000 minimum: 0 format: int32 nullable: true title: Maxdevices description: Maximum number of devices using the slice. delayTolerance: type: string maxLength: 20 nullable: true title: Delaytolerance description: 'Delaytolerance attribute, True/False or SUPPORTED/NOT SUPPORTED' servicePriority: type: integer maximum: 100 minimum: 0 format: int32 nullable: true title: Servicepriority description: ServicePriority attribute sliceDownlinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice for all devices together in downlink sliceUplinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice for all devices together in uplink deviceDownlinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice per device in downlink deviceUplinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice per device in uplink isolationLevel: allOf: - $ref: '#/components/schemas/IsolationLevel-Slice-V1' nullable: true description: Parameter describing the isolation type qos: type: string maxLength: 20 nullable: true title: Qos description: QoS Identifier udm5Qi: type: string maxLength: 20 nullable: true title: Udm5Qi description: 5G QoS Identifier customer: allOf: - $ref: '#/components/schemas/Customer-Slice-V1' nullable: true description: Customer created the slice type: object required: - notificationUrl - networkIdentifier - sliceInfo title: Slice Slice-Output-Slice-V1: properties: name: type: string maxLength: 64 minLength: 5 pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{3,63}[a-zA-Z0-9]$' nullable: true title: Name description: >- Optional short name for the slice. Must be ASCII characters, digits and dash. Like name of an event. example: Concert-2029-Big-Arena notificationUrl: type: string maxLength: 255 title: Notificationurl description: >- Contact attached to the order to send back information regarding this order. notificationAuthToken: type: string maxLength: 4096 nullable: true title: Notificationauthtoken description: Authorization token for notification sending. networkIdentifier: $ref: '#/components/schemas/NetworkIdentifier-Slice-V1' description: PLMN ID with MCC and MNC codes. sliceInfo: $ref: '#/components/schemas/SliceInfo-Slice-V1' description: Slice Service type(SST) and slice differentiator(SD). areaOfService: allOf: - $ref: '#/components/schemas/AreaOfService-Slice-V1' nullable: true description: Specifies the area where the slice can be used maxDataConnections: type: integer maximum: 1000000 minimum: 0 format: int32 nullable: true title: Maxdataconnections description: Maximum number of data connection sessions in the slice. maxDevices: type: integer maximum: 1000 minimum: 0 format: int32 nullable: true title: Maxdevices description: Maximum number of devices using the slice. delayTolerance: type: string maxLength: 20 nullable: true title: Delaytolerance description: 'Delaytolerance attribute, True/False or SUPPORTED/NOT SUPPORTED' servicePriority: type: integer maximum: 100 minimum: 0 format: int32 nullable: true title: Servicepriority description: ServicePriority attribute sliceDownlinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice for all devices together in downlink sliceUplinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice for all devices together in uplink deviceDownlinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice per device in downlink deviceUplinkThroughput: allOf: - $ref: '#/components/schemas/Throughput-Slice-V1' nullable: true description: >- Data rate parameters (max/guaranteed) supported by the network slice per device in uplink isolationLevel: allOf: - $ref: '#/components/schemas/IsolationLevel-Slice-V1' nullable: true description: Parameter describing the isolation type qos: type: string maxLength: 20 nullable: true title: Qos description: QoS Identifier udm5Qi: type: string maxLength: 20 nullable: true title: Udm5Qi description: 5G QoS Identifier customer: allOf: - $ref: '#/components/schemas/Customer-Slice-V1' nullable: true description: Customer created the slice type: object required: - notificationUrl - networkIdentifier - sliceInfo title: Slice SliceData-Slice-V1: properties: slice: $ref: '#/components/schemas/Slice-Output-Slice-V1' description: Contains the network slice's details. csi_id: type: string nullable: true title: Csi Id description: Communications Service Instance identifier. name: type: string title: Name description: Name/resource identifier of the network slice. state: $ref: '#/components/schemas/SliceState-Slice-V1' description: Network slice's current state. provisioner: type: string maxLength: 50 title: Provisioner description: The organization provisioning the slice type: object required: - slice - name - state - provisioner title: SliceData SliceInfo-Slice-V1: properties: serviceType: type: integer format: int32 title: Servicetype description: 'Name or ID of slice type (e.g. eMBB, URLLC, MIoT or numeric SST).' differentiator: type: string maxLength: 25 pattern: '^[A-Fa-f0-9]{1,6}$' nullable: true title: Differentiator description: Differentiator identifies the slice within the type. type: object required: - serviceType title: SliceInfo SliceState-Slice-V1: type: string enum: - PENDING - AVAILABLE - OPERATING - DELETED - FAILED title: SliceState SliceTypeName-Slice-V1: type: string enum: - eMBB - URLLC - MIoT title: SliceTypeName Throughput-Slice-V1: properties: guaranteed: type: number nullable: true title: Guaranteed description: Guaranteed throughput in kbps. maximum: type: number nullable: true title: Maximum description: Maximum throughput in kbps. type: object title: Throughput ValidationError-Slice-V1: properties: loc: type: array items: type: string title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError Apps-SliceAttach-V1: properties: os: type: string maxLength: 100 title: Os description: 'Operating system identifier, UUID' example: 09078034-07db-4b13-a970-ab80235f7369 apps: items: type: string maxLength: 50 type: array title: Apps description: List of application identifiers type: object required: - os - apps title: Apps AttachInfo-Input-SliceAttach-V1: properties: nac_resource_id: type: string maxLength: 100 title: Nac Resource Id description: Resource identifier of the attachment data. resource: $ref: '#/components/schemas/AttachResource-Input-SliceAttach-V1' description: Original device attach request resources. deviceStatus: allOf: - $ref: '#/components/schemas/AttachStatus-SliceAttach-V1' nullable: true description: >- Status of the device in relation to the given slice e.g. ATTACHED or DETACHED. deviceAttachState: allOf: - $ref: '#/components/schemas/OrderState-SliceAttach-V1' nullable: true description: >- Progress/state of the device attach order, e.g. Completed, Accepted, Rejected. applicationAttachSuccessful: type: boolean nullable: true title: Applicationattachsuccessful description: >- Denotes whether successful application attach subscription was subsequently sent. type: object required: - nac_resource_id - resource title: AttachInfo AttachInfo-Output-SliceAttach-V1: properties: nac_resource_id: type: string maxLength: 100 title: Nac Resource Id description: Resource identifier of the attachment data. resource: $ref: '#/components/schemas/AttachResource-Output-SliceAttach-V1' description: Original device attach request resources. deviceStatus: allOf: - $ref: '#/components/schemas/AttachStatus-SliceAttach-V1' nullable: true description: >- Status of the device in relation to the given slice e.g. ATTACHED or DETACHED. deviceAttachState: allOf: - $ref: '#/components/schemas/OrderState-SliceAttach-V1' nullable: true description: >- Progress/state of the device attach order, e.g. Completed, Accepted, Rejected. applicationAttachSuccessful: type: boolean nullable: true title: Applicationattachsuccessful description: >- Denotes whether successful application attach subscription was subsequently sent. type: object required: - nac_resource_id - resource title: AttachInfo AttachResource-Input-SliceAttach-V1: properties: device: $ref: '#/components/schemas/MobileSubscribersDevice-SliceAttach-V1' description: >- Identifiers of the device. Phone number and imsi are mandatory for device attach operations. customer: allOf: - $ref: '#/components/schemas/Customer-SliceAttach-V1' nullable: true description: Customer who orders the device attach operations. sliceId: type: string maxLength: 64 minLength: 5 pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{3,63}[a-zA-Z0-9]$' title: Sliceid description: 'Slice resource identifier, simple name or UUID.' mobile_services: items: type: string type: array maxItems: 10 title: Mobile Services description: List of services allowed for the device. default: - Voice - Voicemail - 5G-Data traffic_categories: allOf: - $ref: '#/components/schemas/TrafficCategories-SliceAttach-V1' nullable: true description: Denotes the operating system id and the applications' identifiers webhook: allOf: - $ref: '#/components/schemas/Webhook-SliceAttach-V1' nullable: true description: Callback settings for the requester application. type: object required: - device - sliceId title: AttachResource AttachResource-Output-SliceAttach-V1: properties: device: $ref: '#/components/schemas/MobileSubscribersDevice-SliceAttach-V1' description: >- Identifiers of the device. Phone number and imsi are mandatory for device attach operations. customer: allOf: - $ref: '#/components/schemas/Customer-SliceAttach-V1' nullable: true description: Customer who orders the device attach operations. sliceId: type: string maxLength: 64 minLength: 5 pattern: '^[a-zA-Z0-9][a-zA-Z0-9-]{3,63}[a-zA-Z0-9]$' title: Sliceid description: 'Slice resource identifier, simple name or UUID.' mobile_services: items: type: string type: array maxItems: 10 title: Mobile Services description: List of services allowed for the device. default: - Voice - Voicemail - 5G-Data traffic_categories: allOf: - $ref: '#/components/schemas/TrafficCategories-SliceAttach-V1' nullable: true description: Denotes the operating system id and the applications' identifiers webhook: allOf: - $ref: '#/components/schemas/Webhook-SliceAttach-V1' nullable: true description: Callback settings for the requester application. type: object required: - device - sliceId title: AttachResource AttachStatus-SliceAttach-V1: type: string enum: - ATTACHED - DETACHED title: AttachStatus Customer-SliceAttach-V1: properties: name: type: string maxLength: 250 title: Name description: type: string maxLength: 100 nullable: true title: Description description: 'Description of the slice, e.g. "B2B_5G_eMBB_Slice"' address: type: string maxLength: 250 nullable: true title: Address description: Address of the customer ordering slice creation. contact: type: string maxLength: 250 nullable: true title: Contact description: Contact of the customer ordering slice creation. type: object required: - name title: Customer DeviceIpv4Addr-SliceAttach-V1: properties: publicAddress: type: string maxLength: 15 nullable: true title: Publicaddress description: >- Public IPv4 address of the device. Either of the device or the NAT the device is behind. privateAddress: type: string maxLength: 15 nullable: true title: Privateaddress description: 'Private IPv4 address of the device, if it is behind a NAT.' publicPort: type: integer maximum: 65535 minimum: 0 format: int32 nullable: true title: Publicport description: >- Public port used by the device. Port is necessary, as private address ranges overlap, and public port is used to extend the range for CGNAT. type: object title: DeviceIpv4Addr HTTPValidationError-SliceAttach-V1: properties: detail: items: $ref: '#/components/schemas/ValidationError-SliceAttach-V1' type: array title: Detail type: object title: HTTPValidationError MobileSubscribersDevice-SliceAttach-V1: properties: phoneNumber: type: string maxLength: 16 pattern: '^\+[1-9][0-9]{4,14}$' nullable: true title: Phonenumber description: 'Phone number of the subscription, if any. Optional.' networkAccessIdentifier: type: string maxLength: 256 pattern: ^\S+@\S+\.\S+$ nullable: true title: Networkaccessidentifier description: >- Email address-like external identifier of the subscription registered at the operator. If both networkAccessIdentifier and phoneNumber are included, phoneNumber may be dropped and networkAccessIdentifier may be retained. ipv4Address: allOf: - $ref: '#/components/schemas/DeviceIpv4Addr-SliceAttach-V1' nullable: true description: >- IPv4 address of the device. IP address is needed for some flow-oriented services, such as QoD. ipv6Address: type: string maxLength: 45 nullable: true title: Ipv6Address description: >- IPv6 address of the device. IP address is needed for some flow-oriented services, such as QoD. imsi: type: integer nullable: true title: Imsi description: International mobile subscriber identity type: object title: MobileSubscribersDevice OrderState-SliceAttach-V1: type: string enum: - Completed - Accepted - Rejected - Acknowledged title: OrderState TrafficCategories-SliceAttach-V1: properties: apps: $ref: '#/components/schemas/Apps-SliceAttach-V1' description: Contains the operating system ID and the applications identifiers. type: object required: - apps title: TrafficCategories ValidationError-SliceAttach-V1: properties: loc: type: array items: type: string title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError Webhook-SliceAttach-V1: properties: notificationUrl: type: string maxLength: 256 title: Notificationurl description: Notification URL for session-related events. example: 'https://application-server.com' notificationAuthToken: type: string maxLength: 4096 nullable: true title: Notificationauthtoken description: Authorization token for notification sending. example: c8974e592c2fa383d4a3960714 type: object required: - notificationUrl title: Webhook AnalyticsEvent-ConI-V1: type: string enum: - CONGESTION title: AnalyticsEvent AnalyticsEventNotif-ConI-V1: properties: analyEvent: $ref: '#/components/schemas/AnalyticsEvent-ConI-V1' timeStamp: type: string format: date-time title: Timestamp congestInfos: type: array items: $ref: '#/components/schemas/CongestInfo-ConI-V1' nullable: true title: Congestinfos type: object required: - analyEvent - timeStamp title: AnalyticsEventNotif AnalyticsEventNotification-ConI-V1: properties: notifId: type: string maxLength: 100 title: Notifid analyEventNotifs: items: $ref: '#/components/schemas/AnalyticsEventNotif-ConI-V1' type: array title: Analyeventnotifs type: object required: - notifId - analyEventNotifs title: AnalyticsEventNotification CongestInfo-ConI-V1: properties: cngAnas: items: $ref: '#/components/schemas/CongestionAnalytics-ConI-V1' type: array title: Cnganas type: object required: - cngAnas title: CongestInfo CongestionAnalytics-ConI-V1: properties: cngType: type: string maxLength: 50 title: Cngtype tmWdw: $ref: '#/components/schemas/TimeAndDate-ConI-V1' nsi: $ref: '#/components/schemas/ThresholdLevel-ConI-V1' confidence: type: integer maximum: 100 minimum: 0 format: int32 nullable: true title: Confidence type: object required: - cngType - tmWdw - nsi title: CongestionAnalytics CongestionData-ConI-V1: properties: timeIntervalStart: type: string format: date-time title: Timeintervalstart timeIntervalStop: type: string format: date-time title: Timeintervalstop congestionLevel: $ref: '#/components/schemas/CongestionLevel-ConI-V1' confidenceLevel: type: integer maximum: 100 minimum: 0 format: int32 nullable: true title: Confidencelevel type: object required: - timeIntervalStart - timeIntervalStop - congestionLevel title: CongestionData CongestionLevel-ConI-V1: type: string enum: - Low - Medium - High title: CongestionLevel CongestionLevelDeprecated-ConI-V1: type: string enum: - none - low - medium - high title: CongestionLevelDeprecated CongestionStatusDeprecated-ConI-V1: properties: level: $ref: '#/components/schemas/CongestionLevelDeprecated-ConI-V1' type: object required: - level title: CongestionStatusDeprecated Device-ConI-V1: properties: phoneNumber: type: string maxLength: 16 pattern: '^\+[1-9][0-9]{4,14}$' nullable: true title: Phonenumber description: 'Phone number of the subscription, if any. Optional.' networkAccessIdentifier: type: string maxLength: 256 pattern: ^\S+@\S+\.\S+$ nullable: true title: Networkaccessidentifier description: >- Email address-like external identifier of the subscription registered at the operator. If both networkAccessIdentifier and phoneNumber are included, phoneNumber may be dropped and networkAccessIdentifier may be retained. ipv4Address: allOf: - $ref: '#/components/schemas/DeviceIpv4Addr-ConI-V1' nullable: true description: >- IPv4 address of the device. IP address is needed for some flow-oriented services, such as QoD. ipv6Address: type: string maxLength: 45 nullable: true title: Ipv6Address description: >- IPv6 address of the device. IP address is needed for some flow-oriented services, such as QoD. type: object title: Device DeviceIpv4Addr-ConI-V1: properties: publicAddress: type: string maxLength: 15 nullable: true title: Publicaddress description: >- Public IPv4 address of the device. Either of the device or the NAT the device is behind. privateAddress: type: string maxLength: 15 nullable: true title: Privateaddress description: 'Private IPv4 address of the device, if it is behind a NAT.' publicPort: type: integer maximum: 65535 minimum: 0 format: int32 nullable: true title: Publicport description: >- Public port used by the device. Port is necessary, as private address ranges overlap, and public port is used to extend the range for CGNAT. type: object title: DeviceIpv4Addr FetchCongestion-ConI-V1: properties: device: $ref: '#/components/schemas/Device-ConI-V1' start: type: string format: date-time nullable: true title: Start description: >- Start of the period queried. If not set, 15 minutes before end. If neither start or end is set, then the upcoming 15 minutes are predicted. end: type: string format: date-time nullable: true title: End description: 'End of the period queried. If not set, 15 minutes after start.' type: object required: - device title: FetchCongestion HTTPValidationError-ConI-V1: properties: detail: items: $ref: '#/components/schemas/ValidationError-ConI-V1' type: array title: Detail type: object title: HTTPValidationError SubscribeCongestionCreate-ConI-V1: properties: device: $ref: '#/components/schemas/Device-ConI-V1' description: Identifiers of the device webhook: $ref: '#/components/schemas/Webhook-ConI-V1' subscriptionExpireTime: type: string format: date-time title: Subscriptionexpiretime description: Time when the subscription expires. type: object required: - device - webhook - subscriptionExpireTime title: SubscribeCongestionCreate SubscriptionInfo-ConI-V1: properties: device: $ref: '#/components/schemas/Device-ConI-V1' description: Identifiers of the device webhook: $ref: '#/components/schemas/Webhook-ConI-V1' subscriptionExpireTime: type: string format: date-time title: Subscriptionexpiretime description: Time when the subscription expires. subscriptionId: type: string title: Subscriptionid startedAt: type: string format: date-time nullable: true title: Startedat description: Time when subscription started expiresAt: type: string format: date-time nullable: true title: Expiresat description: Time when subscription will expire or expired type: object required: - device - webhook - subscriptionExpireTime - subscriptionId title: SubscriptionInfo ThresholdLevel-ConI-V1: properties: congLevel: type: integer maximum: 100 minimum: 0 format: int32 title: Conglevel type: object required: - congLevel title: ThresholdLevel TimeAndDate-ConI-V1: properties: startTime: type: string format: date-time title: Starttime stopTime: type: string format: date-time title: Stoptime type: object required: - startTime - stopTime title: TimeAndDate ValidationError-ConI-V1: properties: loc: type: array items: type: string title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError Webhook-ConI-V1: properties: notificationUrl: type: string maxLength: 256 title: Notificationurl description: Notification URL for session-related events. example: 'https://application-server.com' notificationAuthToken: type: string maxLength: 4096 nullable: true title: Notificationauthtoken description: Authorization token for notification sending. example: c8974e592c2fa383d4a3960714 type: object required: - notificationUrl title: Webhook ClientCredential-Auth-V1: properties: client_id: type: string maxLength: 50 title: Client Id description: The unique client_id string as issued by the authorization server. client_secret: type: string maxLength: 50 title: Client Secret description: The client_secret corresponding to the client_id. type: object required: - client_id - client_secret title: ClientCredential HTTPValidationError-Auth-V1: properties: detail: items: $ref: '#/components/schemas/ValidationError-Auth-V1' type: array title: Detail type: object title: HTTPValidationError ValidationError-Auth-V1: properties: loc: type: array items: type: string title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError Metadata-WellKnown-V0: properties: authorization_endpoint: type: string maxLength: 255 title: Authorization Endpoint token_endpoint: type: string maxLength: 255 title: Token Endpoint fast_flow_csp_auth_endpoint: type: string maxLength: 255 title: Fast Flow Csp Auth Endpoint type: object required: - authorization_endpoint - token_endpoint - fast_flow_csp_auth_endpoint title: Metadata responses: CreateSubscriptionBadRequest400-Geo-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: InvalidArgument: value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param InvalidProtocol: value: status: 400 code: INVALID_PROTOCOL message: Only HTTP is supported InvalidCredential: value: status: 400 code: INVALID_CREDENTIAL message: Only Access token is supported InvalidToken: value: status: 400 code: INVALID_TOKEN message: Only bearer token is supported Generic400-Geo-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' example: status: 400 code: INVALID_ARGUMENT message: 'Client specified an invalid argument, request body or query param' Generic401-Geo-V0: description: Authentication problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' example: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. CreateSubscription403-Geo-V0: description: Client does not have sufficient permission headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: PermissionDenied: value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action TokenMismatch: value: status: 403 code: SUBSCRIPTION_MISMATCH message: Inconsistent access token for requested events subscription Generic403-Geo-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' example: status: 403 code: PERMISSION_DENIED message: Client does not have sufficient permissions to perform this action Generic404-Geo-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. CreateSubscriptionUnprocessableEntity422-Geo-V0: description: Unprocessable Entity headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: PermissionDenied: value: status: 422 code: MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED message: Multi event types subscription not managed DeviceIdentifierMismatch: description: >- Inconsistency between device identifiers not pointing to the same device value: status: 422 code: DEVICE_IDENTIFIERS_MISMATCH message: Provided device identifiers are not consistent. DeviceNotApplicable: description: Service is not available for the provided device value: status: 422 code: DEVICE_NOT_APPLICABLE message: The service is not available for the provided device. AreaNotCovered: value: status: 422 code: AREA_NOT_COVERED message: >- The specified area cannot be covered or is too small to be valid POINotSupported: value: status: 422 code: POI_NOT_SUPPORTED message: POI areaType only supported on CAMARA CSP Generic429-Geo-V0: description: Too Many Requests headers: X-Correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Either out of resource quota or reaching rate limiting. GENERIC_429_TOO_MANY_REQUESTS: description: API Server request limit is overpassed value: status: 429 code: TOO_MANY_REQUESTS message: Either out of resource quota or reaching rate limiting. Generic500-Geo-V0: description: Server error headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' example: status: 500 code: INTERNAL message: Server error Generic503-Geo-V0: description: Service unavailable. Typically the server is down. headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: GENERIC_503_UNAVAILABLE: description: >- Service is not available. Temporary situation usually related to maintenance process in the server side value: status: 503 code: UNAVAILABLE message: Service Unavailable. SubscriptionIdRequired-Geo-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-Geo-V0' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-Geo-V0' examples: Generic400: summary: Schema validation failed value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param subscriptionIdRequired: summary: subscription id is required value: status: 400 code: INVALID_ARGUMENT message: 'Expected property is missing: subscriptionId' RetrieveLocationBadRequest400-LocR-V0: description: >- Problem with the client request. In addition to regular scenario of `INVALID_ARGUMENT`, another scenarios may exist: - maxAge threshold cannot be satisfied content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocR-V0' examples: InvalidArgument: value: status: 400 code: INVALID_ARGUMENT message: Invalid argument MaxAgeIssue: value: status: 400 code: LOCATION_RETRIEVAL.MAXAGE_INVALID_ARGUMENT message: maxAge threshold cannot be satisfied Generic401-LocR-V0: description: Unauthenticated content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocR-V0' example: status: 401 code: UNAUTHENTICATED message: 'Authorization failed: ...' Generic403-LocR-V0: description: Permission denied content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocR-V0' example: status: 403 code: PERMISSION_DENIED message: 'Operation not allowed: ...' Generic404-LocR-V0: description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocR-V0' example: status: 404 code: NOT_FOUND message: The specified resource is not found Generic500-LocR-V0: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocR-V0' example: status: 500 code: INTERNAL message: Internal server error Generic503-LocR-V0: description: Service unavailable content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocR-V0' example: status: 503 code: UNAVAILABLE message: Service unavailable Generic400-LocV-V1: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_400_INVALID_ARGUMENT: summary: Generic Invalid Argument description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: summary: Generic Out of Range description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. Generic401-LocV-V1: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_401_UNAUTHENTICATED: summary: Generic Unauthenticated description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: summary: Generic Authentication Required description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-LocV-V1: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_403_PERMISSION_DENIED: summary: Generic Permission Denied description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. GENERIC_403_INVALID_TOKEN_CONTEXT: summary: Invalid access token context description: >- Reflects some inconsistency between information in some field of the API and the related OAuth2 Token value: status: 403 code: INVALID_TOKEN_CONTEXT message: '{{field}} is not consistent with access token.' Generic404-LocV-V1: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_404_NOT_FOUND: summary: Generic Not Found description: Resource is not found value: status: 404 code: NOT_FOUND message: '{{resource}} is not found' GENERIC_404_DEVICE_NOT_FOUND: summary: Some identifier cannot be matched to a device description: >- One or more of the provided device identifiers do not match any device value: status: 404 code: DEVICE_NOT_FOUND message: No device found for a provided identifier VerifyLocationUnprocessableEntity422-LocV-V1: description: Unprocessable Entity headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: LOCATION_VERIFICATION_422_UNABLE_TO_FULFILL_MAX_AGE: summary: Unable to fulfill maxAge description: >- The system is not able to provide the fresh location required by the client value: status: 422 code: LOCATION_VERIFICATION.UNABLE_TO_FULFILL_MAX_AGE message: Unable to provide expected freshness for location GENERIC_422_UNPROCESSABLE_ENTITY: summary: Unprocessable entity description: >- The request was well-formed but was unable to be processed due to semantic errors or not applicable values. This is the generic error code for 422 responses. value: status: 422 code: UNPROCESSABLE_ENTITY message: 'Value not acceptable: ...' GENERIC_422_DEVICE_NOT_APPLICABLE: summary: Service not applicable to the device description: >- The provided device is not compatible with the requested operation, according to the service provider rules. value: status: 422 code: DEVICE_NOT_APPLICABLE message: The device is not applicable for the requested operation GENERIC_422_DEVICE_IDENTIFIERS_MISMATCH: summary: Device identifiers mismatch description: >- Several device identifiers are provided but do not match the same device value: status: 422 code: DEVICE_IDENTIFIERS_MISMATCH message: The provided device identifiers do not match the same device GENERIC_422_UNSUPPORTED_DEVICE_IDENTIFIERS: summary: >- None of the provided device identifiers is supported by the implementation description: Message may list the supported device identifiers value: status: 422 code: UNSUPPORTED_DEVICE_IDENTIFIERS message: 'Supported device supported are: ...' GENERIC_422_UNIDENTIFIABLE_DEVICE: summary: No identifier provided description: No device identifier provided for the device to be located value: status: 422 code: UNIDENTIFIABLE_DEVICE message: A device must be provided Generic429-LocV-V1: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Either out of resource quota or reaching rate limiting. GENERIC_429_TOO_MANY_REQUESTS: description: API Server request limit is overpassed value: status: 429 code: TOO_MANY_REQUESTS message: Either out of resource quota or reaching rate limiting. Generic500-LocV-V1: description: Internal server error headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_500_INTERNAL: summary: Generic Internal description: Problem in Server side. Regular Server Exception value: status: 500 code: INTERNAL message: Internal server error Generic503-LocV-V1: description: Service unavailable headers: x-correlator: $ref: '#/components/headers/x-correlator-LocV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V1' examples: GENERIC_503_UNAVAILABLE: summary: Generic Unavailable description: >- Service is not available. Temporary situation usually related to maintenance process in the server side value: status: 503 code: UNAVAILABLE message: Service unavailable Generic400-LocV-V0: description: Invalid argument content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V0' example: status: 400 code: INVALID_ARGUMENT message: Invalid argument Generic401-LocV-V0: description: Unauthenticated content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V0' example: status: 401 code: UNAUTHENTICATED message: 'Authorization failed: ...' Generic403-LocV-V0: description: Permission denied content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V0' example: status: 403 code: PERMISSION_DENIED message: 'Operation not allowed: ...' Generic404-LocV-V0: description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V0' example: status: 404 code: NOT_FOUND message: The specified resource is not found Generic500-LocV-V0: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V0' example: status: 500 code: INTERNAL message: Internal server error Generic503-LocV-V0: description: Service unavailable content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-LocV-V0' example: status: 503 code: UNAVAILABLE message: Service unavailable Generic400-DS-RE-V1: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic401-DS-RE-V1: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-DS-RE-V1: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-DS-RE-V1: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND - IDENTIFIER_NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. GENERIC_404_IDENTIFIER_NOT_FOUND: description: The phone number is not associated with a CSP customer account value: status: 404 code: IDENTIFIER_NOT_FOUND message: >- The phone number provided is not associated with a customer account Generic422-DS-RE-V1: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 422 code: enum: - IDENTIFIER_MISMATCH - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNSUPPORTED_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_IDENTIFIER_MISMATCH: description: >- Inconsistency between identifiers not pointing to the same device value: status: 422 code: IDENTIFIER_MISMATCH message: Provided identifiers are not consistent. GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided identifier. GENERIC_422_MISSING_IDENTIFIER: description: >- An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The device cannot be identified. GENERIC_422_UNSUPPORTED_IDENTIFIER: description: >- None of the provided identifiers is supported by the implementation value: status: 422 code: UNSUPPORTED_IDENTIFIER message: The identifier provided is not supported. GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit identifier is provided when a device or phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The device is already identified by the access token. Generic429-DS-RE-V1: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 429 code: enum: - QUOTA_EXCEEDED - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Out of resource quota. GENERIC_429_TOO_MANY_REQUESTS: description: >- Access to the API has been temporarily blocked due to rate or spike arrest limits being reached value: status: 429 code: TOO_MANY_REQUESTS message: Rate limit reached. Generic503-DS-RE-V1: description: Service Unavailable headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RE-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RE-V1' - type: object properties: status: enum: - 503 code: enum: - UNAVAILABLE examples: GENERIC_503_UNAVAILABLE: description: >- Service is not available. Temporary situation usually related to maintenance process in the server side value: status: 503 code: UNAVAILABLE message: Network issue Generic400-DS-RO-V1: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic401-DS-RO-V1: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-DS-RO-V1: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-DS-RO-V1: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND - IDENTIFIER_NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. GENERIC_404_IDENTIFIER_NOT_FOUND: description: The phone number is not associated with a CSP customer account value: status: 404 code: IDENTIFIER_NOT_FOUND message: >- The phone number provided is not associated with a customer account Generic422-DS-RO-V1: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 422 code: enum: - IDENTIFIER_MISMATCH - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNSUPPORTED_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_IDENTIFIER_MISMATCH: description: >- Inconsistency between identifiers not pointing to the same device value: status: 422 code: IDENTIFIER_MISMATCH message: Provided identifiers are not consistent. GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided identifier. GENERIC_422_MISSING_IDENTIFIER: description: >- An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The device cannot be identified. GENERIC_422_UNSUPPORTED_IDENTIFIER: description: >- None of the provided identifiers is supported by the implementation value: status: 422 code: UNSUPPORTED_IDENTIFIER message: The identifier provided is not supported. GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit identifier is provided when a device or phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The device is already identified by the access token. Generic429-DS-RO-V1: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 429 code: enum: - QUOTA_EXCEEDED - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Out of resource quota. GENERIC_429_TOO_MANY_REQUESTS: description: >- Access to the API has been temporarily blocked due to rate or spike arrest limits being reached value: status: 429 code: TOO_MANY_REQUESTS message: Rate limit reached. Generic503-DS-RO-V1: description: Service Unavailable headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RO-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RO-V1' - type: object properties: status: enum: - 503 code: enum: - UNAVAILABLE examples: GENERIC_503_UNAVAILABLE: description: >- Service is not available. Temporary situation usually related to maintenance process in the server side value: status: 503 code: UNAVAILABLE message: Network issue CreateSubscriptionBadRequest400-DS-RES-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE - INVALID_PROTOCOL - INVALID_CREDENTIAL - INVALID_TOKEN examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. GENERIC_400_INVALID_PROTOCOL: description: Invalid protocol for events subscription management value: status: 400 code: INVALID_PROTOCOL message: Only HTTP is supported GENERIC_400_INVALID_CREDENTIAL: description: Invalid sink credential type value: status: 400 code: INVALID_CREDENTIAL message: Only Access token is supported GENERIC_400_INVALID_TOKEN: description: Invalid token type for sink credential of type ACCESSTOKEN value: status: 400 code: INVALID_TOKEN message: Only bearer token is supported Generic400-DS-RES-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. SubscriptionIdRequired400-DS-RES-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_SUBSCRIPTION_ID_REQUIRED: description: subscription id is required value: status: 400 code: INVALID_ARGUMENT message: 'Expected property is missing: subscriptionId' Generic401-DS-RES-V0: description: Authentication problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-DS-RES-V0: description: Client does not have sufficient permission headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. SubscriptionPermissionDenied403-DS-RES-V0: description: Client does not have sufficient permission headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED - SUBSCRIPTION_MISMATCH examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. GENERIC_403_SUBSCRIPTION_MISMATCH: description: Inconsistent access token for requested subscription value: status: 403 code: SUBSCRIPTION_MISMATCH message: Inconsistent access token for requested events subscription Generic404-DS-RES-V0: description: Resource Not Found headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. Generic409-DS-RES-V0: description: Conflict headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 409 code: enum: - ABORTED - ALREADY_EXISTS examples: GENERIC_409_ABORTED: description: Concurreny of processes of the same nature/scope value: status: 409 code: ABORTED message: Concurrency conflict. GENERIC_409_ALREADY_EXISTS: description: Trying to create an existing resource value: status: 409 code: ALREADY_EXISTS message: The resource that a client tried to create already exists. Generic410-DS-RES-V0: description: Gone headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 410 code: enum: - GONE examples: GENERIC_410_GONE: description: >- Use in notifications flow to allow API Consumer to indicate that its callback is no longer available value: status: 410 code: GONE message: Access to the target resource is no longer available. CreateSubscriptionUnprocessableEntity422-DS-RES-V0: description: Unprocessable Entity headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 422 code: enum: - IDENTIFIER_MISMATCH - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNSUPPORTED_IDENTIFIER - UNNECESSARY_IDENTIFIER - MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED examples: GENERIC_422_IDENTIFIER_MISMATCH: description: >- Inconsistency between identifiers not pointing to the same device value: status: 422 code: IDENTIFIER_MISMATCH message: Provided identifiers are not consistent. GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided identifier. GENERIC_422_MISSING_IDENTIFIER: description: >- An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The device cannot be identified. GENERIC_422_UNSUPPORTED_IDENTIFIER: description: >- None of the provided identifiers is supported by the implementation value: status: 422 code: UNSUPPORTED_IDENTIFIER message: The identifier provided is not supported. GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit identifier is provided when a device or phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The device is already identified by the access token. GENERIC_422_MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED: description: Multi event types subscription is not supported value: status: 422 code: MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED message: Multi event types subscription not managed Generic429-DS-RES-V0: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-RES-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-RES-V0' - type: object properties: status: enum: - 429 code: enum: - QUOTA_EXCEEDED - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Out of resource quota. GENERIC_429_TOO_MANY_REQUESTS: description: >- Access to the API has been temporarily blocked due to rate or spike arrest limits being reached value: status: 429 code: TOO_MANY_REQUESTS message: Rate limit reached. CreateSubscriptionBadRequest400-DS-ROS-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE - INVALID_PROTOCOL - INVALID_CREDENTIAL - INVALID_TOKEN examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. GENERIC_400_INVALID_PROTOCOL: description: Invalid protocol for events subscription management value: status: 400 code: INVALID_PROTOCOL message: Only HTTP is supported GENERIC_400_INVALID_CREDENTIAL: description: Invalid sink credential type value: status: 400 code: INVALID_CREDENTIAL message: Only Access token is supported GENERIC_400_INVALID_TOKEN: description: Invalid token type for sink credential of type ACCESSTOKEN value: status: 400 code: INVALID_TOKEN message: Only bearer token is supported Generic400-DS-ROS-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. SubscriptionIdRequired400-DS-ROS-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_SUBSCRIPTION_ID_REQUIRED: description: subscription id is required value: status: 400 code: INVALID_ARGUMENT message: 'Expected property is missing: subscriptionId' Generic401-DS-ROS-V0: description: Authentication problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-DS-ROS-V0: description: Client does not have sufficient permission headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. SubscriptionPermissionDenied403-DS-ROS-V0: description: Client does not have sufficient permission headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED - SUBSCRIPTION_MISMATCH examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. GENERIC_403_SUBSCRIPTION_MISMATCH: description: Inconsistent access token for requested subscription value: status: 403 code: SUBSCRIPTION_MISMATCH message: Inconsistent access token for requested events subscription Generic404-DS-ROS-V0: description: Resource Not Found headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. Generic409-DS-ROS-V0: description: Conflict headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 409 code: enum: - ABORTED - ALREADY_EXISTS examples: GENERIC_409_ABORTED: description: Concurreny of processes of the same nature/scope value: status: 409 code: ABORTED message: Concurrency conflict. GENERIC_409_ALREADY_EXISTS: description: Trying to create an existing resource value: status: 409 code: ALREADY_EXISTS message: The resource that a client tried to create already exists. Generic410-DS-ROS-V0: description: Gone headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 410 code: enum: - GONE examples: GENERIC_410_GONE: description: >- Use in notifications flow to allow API Consumer to indicate that its callback is no longer available value: status: 410 code: GONE message: Access to the target resource is no longer available. CreateSubscriptionUnprocessableEntity422-DS-ROS-V0: description: Unprocessable Entity headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 422 code: enum: - IDENTIFIER_MISMATCH - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNSUPPORTED_IDENTIFIER - UNNECESSARY_IDENTIFIER - MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED examples: GENERIC_422_IDENTIFIER_MISMATCH: description: >- Inconsistency between identifiers not pointing to the same device value: status: 422 code: IDENTIFIER_MISMATCH message: Provided identifiers are not consistent. GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided identifier. GENERIC_422_MISSING_IDENTIFIER: description: >- An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The device cannot be identified. GENERIC_422_UNSUPPORTED_IDENTIFIER: description: >- None of the provided identifiers is supported by the implementation value: status: 422 code: UNSUPPORTED_IDENTIFIER message: The identifier provided is not supported. GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit identifier is provided when a device or phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The device is already identified by the access token. GENERIC_422_MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED: description: Multi event types subscription is not supported value: status: 422 code: MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED message: Multi event types subscription not managed Generic429-DS-ROS-V0: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-DS-ROS-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DS-ROS-V0' - type: object properties: status: enum: - 429 code: enum: - QUOTA_EXCEEDED - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Out of resource quota. GENERIC_429_TOO_MANY_REQUESTS: description: >- Access to the API has been temporarily blocked due to rate or spike arrest limits being reached value: status: 429 code: TOO_MANY_REQUESTS message: Rate limit reached. Generic400-DS-V0: description: Problem with the client request content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 400 code: INVALID_ARGUMENT message: 'Client specified an invalid argument, request body or query param' Generic401-DS-V0: description: Authentication problem with the client request content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials Generic403-DS-V0: description: Client does not have sufficient permission content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 403 code: PERMISSION_DENIED message: Client does not have sufficient permissions to perform this action Generic404-DS-V0: description: Resource Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 404 code: NOT_FOUND message: The specified resource is not found Generic409-DS-V0: description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 409 code: CONFLICT message: The specified resource is in a conflict Generic500-DS-V0: description: Server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 500 code: INTERNAL message: Server error Generic503-DS-V0: description: Service unavailable. Typically the server is down. content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DS-V0' example: status: 503 code: UNAVAILABLE message: Service unavailable Generic400-NV-V1: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-NV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-NV-V1' example: status: 400 code: INVALID_ARGUMENT message: 'Client specified an invalid argument, request body or query param' Generic401-NV-V1: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-NV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-NV-V1' examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. PhoneNumberVerificationPermissionDenied403-NV-V1: description: > Client does not have sufficient permission. In addition to regular scenario of `PERMISSION_DENIED`, other scenarios may exist: - Client authentication was not via mobile network. In order to check the authentication method, AMR parameter value in the 3-legged user's access token can be used and make sure that the authentication was not either by SMS+OTP nor username/password (`{"code": "NUMBER_VERIFICATION.USER_NOT_AUTHENTICATED_BY_MOBILE_NETWORK","message": "Client must authenticate via the mobile network to use this service"}`) - Phone number cannot be deducted from access token context.(`{"code": "INVALID_TOKEN_CONTEXT","message": "Phone number cannot be deducted from access token context"}`) headers: x-correlator: $ref: '#/components/headers/x-correlator-NV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-NV-V1' examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. GENERIC_403_USER_NOT_AUTHENTICATED_BY_MOBILE_NETWORK: value: status: 403 code: NUMBER_VERIFICATION.USER_NOT_AUTHENTICATED_BY_MOBILE_NETWORK message: >- Client must authenticate via the mobile network to use this service GENERIC_403_INVALID_TOKEN_CONTEXT: value: status: 403 code: INVALID_TOKEN_CONTEXT message: Phone number cannot be deducted from access token context Generic500-NV-V1: description: Server error headers: x-correlator: $ref: '#/components/headers/x-correlator-NV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-NV-V1' example: status: 500 code: INTERNAL message: Server error Generic503-NV-V1: description: Service unavailable. Typically the server is down. headers: x-correlator: $ref: '#/components/headers/x-correlator-NV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-NV-V1' example: status: 503 code: UNAVAILABLE message: Service unavailable Generic504-NV-V1: description: >- Request time exceeded. If it happens repeatedly, consider reducing the request complexity headers: x-correlator: $ref: '#/components/headers/x-correlator-NV-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-NV-V1' example: status: 504 code: TIMEOUT message: Request timeout exceeded. Try later. Generic400-KYC-AV-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-AV-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-AV-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. Generic401-KYC-AV-V0: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-AV-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-AV-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-KYC-AV-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-AV-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-AV-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-KYC-AV-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-AV-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-AV-V0' - type: object properties: status: enum: - 404 code: enum: - IDENTIFIER_NOT_FOUND examples: GENERIC_404_IDENTIFIER_NOT_FOUND: description: The phone number is not associated with a CSP customer account value: status: 404 code: IDENTIFIER_NOT_FOUND message: >- The phone number provided is not associated with a customer account Generic422-KYC-AV-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-AV-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-AV-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service is not applicable for the provided phone number value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not applicable for the provided phone number GENERIC_422_MISSING_IDENTIFIER: description: >- No phone number has been provided either explicitly or associated with the access token value: status: 422 code: MISSING_IDENTIFIER message: No phone number has been provided GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit phone number has been provided when one is already associated with the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: >- An explicit phone number has been provided when one is already associated with the access token Generic400-KYC-M-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-M-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-M-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - KNOW_YOUR_CUSTOMER.INVALID_PARAM_COMBINATION examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. KNOW_YOUR_CUSTOMER.INVALID_PARAM_COMBINATION: description: Indicated param combination is invalid value: status: 400 code: KNOW_YOUR_CUSTOMER.INVALID_PARAM_COMBINATION message: Indicated parameter combination is invalid Generic401-KYC-M-V0: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-M-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-M-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-KYC-M-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-M-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-M-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED - INVALID_TOKEN_CONTEXT - KNOW_YOUR_CUSTOMER.ID_DOCUMENT_REQUIRED - KNOW_YOUR_CUSTOMER.ID_DOCUMENT_MISMATCH examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. GENERIC_403_INVALID_TOKEN_CONTEXT: description: >- Reflect some inconsistency between information in some field of the API and the related OAuth2 Token value: status: 403 code: INVALID_TOKEN_CONTEXT message: phoneNumber is not consistent with access token. KNOW_YOUR_CUSTOMER.ID_DOCUMENT_REQUIRED: description: The idDocument is required by the implementation value: status: 403 code: KNOW_YOUR_CUSTOMER.ID_DOCUMENT_REQUIRED message: >- The idDocument is required to perform the properties validation KNOW_YOUR_CUSTOMER.ID_DOCUMENT_MISMATCH: description: idDocument mismatch value: status: 403 code: KNOW_YOUR_CUSTOMER.ID_DOCUMENT_MISMATCH message: >- The idDocument needs to match the one associated with the provided phoneNumber Generic404-KYC-M-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-M-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-M-V0' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND - IDENTIFIER_NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND GENERIC_404_IDENTIFIER_NOT_FOUND: description: The phone number is not associated with a CSP customer account value: status: 404 code: IDENTIFIER_NOT_FOUND message: >- The phone number provided is not associated with a customer account Generic422-KYC-M-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-KYC-M-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-M-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service is not applicable for the provided phone number value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not applicable for the provided phone number GENERIC_422_MISSING_IDENTIFIER: description: >- No phone number has been provided either explicitly or associated with the access token value: status: 422 code: MISSING_IDENTIFIER message: No phone number has been provided Generic400-KYC-T-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-T-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-T-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. Generic401-KYC-T-V0: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-T-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-T-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-KYC-T-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-T-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-T-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-KYC-T-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-T-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-T-V0' - type: object properties: status: enum: - 404 code: enum: - IDENTIFIER_NOT_FOUND examples: GENERIC_404_IDENTIFIER_NOT_FOUND: description: The phone number is not associated with a CSP customer account value: status: 404 code: IDENTIFIER_NOT_FOUND message: >- The phone number provided is not associated with a customer account Generic422-KYC-T-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-T-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-T-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service is not applicable for the provided phone number value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not applicable for the provided phone number GENERIC_422_MISSING_IDENTIFIER: description: >- No phone number has been provided either explicitly or associated with the access token value: status: 422 code: MISSING_IDENTIFIER message: No phone number has been provided GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit phone number has been provided when one is already associated with the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: >- An explicit phone number has been provided when one is already associated with the access token Generic400-KYC-FIN-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-FIN-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-FIN-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic401-KYC-FIN-V0: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-FIN-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-FIN-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED examples: GENERIC_401_UNAUTHENTICATED: description: >- Request cannot be authenticated and a new authentication is required value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. A new authentication is required. Generic403-KYC-FIN-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-FIN-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-FIN-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-KYC-FIN-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-FIN-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-FIN-V0' - type: object properties: status: enum: - 404 code: enum: - IDENTIFIER_NOT_FOUND examples: GENERIC_404_IDENTIFIER_NOT_FOUND: description: The phone number is not associated with a CSP customer account value: status: 404 code: IDENTIFIER_NOT_FOUND message: >- The phone number provided is not associated with a customer account Generic422-KYC-FIN-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/X-Correlator-KYC-FIN-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-KYC-FIN-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service is not applicable for the provided phone number value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not applicable for the provided phone number GENERIC_422_MISSING_IDENTIFIER: description: >- No phone number has been provided either explicitly or associated with the access token value: status: 422 code: MISSING_IDENTIFIER message: No phone number has been provided GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit phone number has been provided when one is already associated with the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: >- An explicit phone number has been provided when one is already associated with the access token Generic200-NUMR-RECYCL-V0: description: OK headers: x-correlator: $ref: '#/components/headers/x-correlator-NUMR-RECYCL-V0' content: application/json: schema: $ref: '#/components/schemas/CheckNumRecyclingInfo-NUMR-RECYCL-V0' Generic400-NUMR-RECYCL-V0: description: Problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-NUMR-RECYCL-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-NUMR-RECYCL-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE examples: InvalidArgument: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. OutOfRange: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. Generic401-NUMR-RECYCL-V0: description: Authentication problem with the client request headers: x-correlator: $ref: '#/components/headers/x-correlator-NUMR-RECYCL-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-NUMR-RECYCL-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED examples: Unauthenticated: description: >- Request cannot be authenticated and a new authentication is required value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. A new authentication is required. Generic403-NUMR-RECYCL-V0: description: Client does not have sufficient permission headers: x-correlator: $ref: '#/components/headers/x-correlator-NUMR-RECYCL-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-NUMR-RECYCL-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: Permission Denied: description: >- Permission denied. OAuth2 token access not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action Generic404-NUMR-RECYCL-V0: description: Resource Not Found headers: x-correlator: $ref: '#/components/headers/x-correlator-NUMR-RECYCL-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-NUMR-RECYCL-V0' - type: object properties: status: enum: - 404 code: enum: - IDENTIFIER_NOT_FOUND examples: Phone Number Used By Different Network Operator: description: Provided phone number is used by a different network operator value: status: 404 code: IDENTIFIER_NOT_FOUND message: Phone number not found. Generic422-NUMR-RECYCL-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-NUMR-RECYCL-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-NUMR-RECYCL-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: Device Not Applicable: description: Service not applicable for the provided phone number value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided phone number Unnecessary Identifier: description: >- An explicit identifier is provided when a phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The phone number is already identified by the access token Missing Identifier: description: >- An identifier is not included in the request and the phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The phone number cannot be identified Generic400-SIM-V1: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic401-SIM-V1: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. Generic403-SIM-V1: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. GENERIC_403_INVALID_TOKEN_CONTEXT: description: >- Reflect some inconsistency between information in some field of the API and the related OAuth2 Token value: status: 403 code: INVALID_TOKEN_CONTEXT message: phoneNumber is not consistent with access token Generic404-SIM-V1: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. Generic422-SIM-V1: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_422_NOT_SUPPORTED: description: Not Supported value: status: 422 code: NOT_SUPPORTED message: Service not supported for this phoneNumber UNIDENTIFIABLE_PHONE_NUMBER: description: >- The phone number is not included in the request and the phone number information cannot be derived from the 3-legged access token value: status: 422 code: UNIDENTIFIABLE_PHONE_NUMBER message: The phone number cannot be identified Generic500-SIM-V1: description: Internal Server Error headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_500_INTERNAL: description: Problem in Server side. Regular Server Exception value: status: 500 code: INTERNAL message: Unknown server error. Typically a server bug. Generic503-SIM-V1: description: Service Unavailable headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_503_UNAVAILABLE: description: >- Service is not available. Temporary situation usually related to maintenance process in the server side value: status: 503 code: UNAVAILABLE message: Service Unavailable. Generic504-SIM-V1: description: Gateway Timeout headers: x-correlator: $ref: '#/components/headers/x-correlator-SIM-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-SIM-V1' examples: GENERIC_504_TIMEOUT: description: API Server Timeout value: status: 504 code: TIMEOUT message: Request timeout exceeded. Generic400-DSWAP-V1: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic400Check-DSWAP-V1: description: "Bad Request \n\nIn addition to regular scenario of INVALID_ARGUMENT, other scenarios may exist:\n- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested (\"code\": \"OUT_OF_RANGE\",\"message\": \"Client specified an invalid range.\")" headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT - OUT_OF_RANGE examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. GENERIC_400_OUT_OF_RANGE: description: >- Out of Range. Specific Syntax Exception used when a given field has a pre-defined range or a invalid filter criteria combination is requested value: status: 400 code: OUT_OF_RANGE message: Client specified an invalid range. Generic401-DSWAP-V1: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. Generic403-DSWAP-V1: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-DSWAP-V1: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND - IDENTIFIER_NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. GENERIC_404_IDENTIFIER_NOT_FOUND: description: Some identifier cannot be matched to a device value: status: 404 code: IDENTIFIER_NOT_FOUND message: Device identifier not found. Generic422-DSWAP-V1: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided identifier. Generic429-DSWAP-V1: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-DSWAP-V1' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-DSWAP-V1' - type: object properties: status: enum: - 429 code: enum: - QUOTA_EXCEEDED - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Rejected due to exceeding a business quota limit. GENERIC_429_TOO_MANY_REQUESTS: description: API Server request limit is overpassed value: status: 429 code: TOO_MANY_REQUESTS message: Rejected due to request rate limit overpassed. Generic400-QoD-V0: description: Invalid input content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 400 code: INVALID_ARGUMENT message: Schema validation failed at ... Generic401-QoD-V0: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 401 code: UNAUTHENTICATED message: 'Authorization failed: ...' Generic403-QoD-V0: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 403 code: PERMISSION_DENIED message: 'Operation not allowed: ...' SessionNotFound404-QoD-V0: description: Session not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 404 code: NOT_FOUND message: Session Id does not exist QosProfilesNotFound404-QoD-V0: description: Qos Profiles not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 404 code: NOT_FOUND message: No QoS Profiles found QosProfileNotFound404-QoD-V0: description: Qos Profile not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 404 code: NOT_FOUND message: QosProfile Id does not exist Generic500-QoD-V0: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 500 code: INTERNAL message: 'Internal server error: ...' QoSProfile500-QoD-V0: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 500 code: INTERNAL message: 'Internal server error: Could not get QoS Profile' Generic501-QoD-V0: description: Not Implemented content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 501 code: NOT_IMPLEMENTED message: Service not implemented for the specified user device Generic503-QoD-V0: description: Service unavailable content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V0' example: status: 503 code: UNAVAILABLE message: Service unavailable Generic400-QoD-V1: description: Invalid input content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 400 code: INVALID_ARGUMENT message: Schema validation failed at ... Generic401-QoD-V1: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 401 code: UNAUTHENTICATED message: 'Authorization failed: ...' Generic403-QoD-V1: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 403 code: PERMISSION_DENIED message: 'Operation not allowed: ...' SessionNotFound404-QoD-V1: description: Session not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 404 code: NOT_FOUND message: Session Id does not exist QosProfilesNotFound404-QoD-V1: description: Qos Profiles not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 404 code: NOT_FOUND message: No QoS Profiles found QosProfileNotFound404-QoD-V1: description: Qos Profile not found content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 404 code: NOT_FOUND message: QosProfile Id does not exist Generic500-QoD-V1: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 500 code: INTERNAL message: 'Internal server error: ...' QoSProfile500-QoD-V1: description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 500 code: INTERNAL message: 'Internal server error: Could not get QoS Profile' Generic501-QoD-V1: description: Not Implemented content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 501 code: NOT_IMPLEMENTED message: Service not implemented for the specified user device Generic503-QoD-V1: description: Service unavailable content: application/json: schema: $ref: '#/components/schemas/ErrorInfo-QoD-V1' example: status: 503 code: UNAVAILABLE message: Service unavailable Generic400-Cfs-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic401-Cfs-V0: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED - AUTHENTICATION_REQUIRED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. GENERIC_401_AUTHENTICATION_REQUIRED: description: 'New authentication is needed, authentication is no longer valid' value: status: 401 code: AUTHENTICATION_REQUIRED message: New authentication is required. Generic403-Cfs-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. Generic404-Cfs-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND - IDENTIFIER_NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. GENERIC_404_IDENTIFIER_NOT_FOUND: description: >- Call forwarding check can't be done because the phone number is unknown. value: status: 404 code: IDENTIFIER_NOT_FOUND message: Device identifier not found. Generic422-Cfs-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided identifier. GENERIC_422_MISSING_IDENTIFIER: description: >- An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The phone number cannot be identified. GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit identifier is provided when a device or phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The phone number is already identified by the access token. Generic429-Cfs-V0: description: Too Many Requests headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 429 code: enum: - QUOTA_EXCEEDED - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: description: Request is rejected due to exceeding a business quota limit value: status: 429 code: QUOTA_EXCEEDED message: Out of resource quota. GENERIC_429_TOO_MANY_REQUESTS: description: >- Access to the API has been temporarily blocked due to rate or spike arrest limits being reached value: status: 429 code: TOO_MANY_REQUESTS message: Rate limit reached. Generic501-Cfs-V0: description: Not Implemented headers: x-correlator: $ref: '#/components/headers/x-correlator-Cfs-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-Cfs-V0' - type: object properties: status: enum: - 501 code: enum: - NOT_IMPLEMENTED examples: GENERIC_501_NOT_IMPLEMENTED: description: >- Service not implemented. The use of this code should be avoided as far as possible to get the objective to reach aligned implementations value: status: 501 code: NOT_IMPLEMENTED message: This functionality is not implemented yet. Generic400-ConsentInfo-V0: description: Bad Request headers: x-correlator: $ref: '#/components/headers/x-correlator-ConsentInfo-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-ConsentInfo-V0' - type: object properties: status: enum: - 400 code: enum: - INVALID_ARGUMENT examples: GENERIC_400_INVALID_ARGUMENT: description: Invalid Argument. Generic Syntax Exception value: status: 400 code: INVALID_ARGUMENT message: >- Client specified an invalid argument, request body or query param. Generic401-ConsentInfo-V0: description: Unauthorized headers: x-correlator: $ref: '#/components/headers/x-correlator-ConsentInfo-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-ConsentInfo-V0' - type: object properties: status: enum: - 401 code: enum: - UNAUTHENTICATED examples: GENERIC_401_UNAUTHENTICATED: description: Request cannot be authenticated value: status: 401 code: UNAUTHENTICATED message: >- Request not authenticated due to missing, invalid, or expired credentials. A new authentication is required. retrieveStatus403-ConsentInfo-V0: description: Forbidden headers: x-correlator: $ref: '#/components/headers/x-correlator-ConsentInfo-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-ConsentInfo-V0' - type: object properties: status: enum: - 403 code: enum: - PERMISSION_DENIED - CONSENT_INFO.NOT_ALLOWED_SCOPES_PURPOSE - CONSENT_INFO.CAPTURE_FREQUENCY_EXCEEDED examples: GENERIC_403_PERMISSION_DENIED: description: >- Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security value: status: 403 code: PERMISSION_DENIED message: >- Client does not have sufficient permissions to perform this action. NOT_ALLOWED_SCOPES_PURPOSE: description: >- The requested scope(s) and Purpose combination is not allowed for the API Consumer, e.g. the API Consumer has not onboarded the appropriate API(s) with the API Provider for the declared Purpose. value: status: 403 code: CONSENT_INFO.NOT_ALLOWED_SCOPES_PURPOSE message: >- The requested scope(s) and Purpose combination is not allowed for this API Consumer. CAPTURE_FREQUENCY_EXCEEDED: description: The frequency of consent capture requests has been exceeded. value: status: 403 code: CONSENT_INFO.CAPTURE_FREQUENCY_EXCEEDED message: >- The frequency of consent capture requests has been exceeded. Please try again later. Generic404-ConsentInfo-V0: description: Not found headers: x-correlator: $ref: '#/components/headers/x-correlator-ConsentInfo-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-ConsentInfo-V0' - type: object properties: status: enum: - 404 code: enum: - NOT_FOUND - IDENTIFIER_NOT_FOUND examples: GENERIC_404_NOT_FOUND: description: Resource is not found value: status: 404 code: NOT_FOUND message: The specified resource is not found. GENERIC_404_IDENTIFIER_NOT_FOUND: description: Some identifier cannot be matched to a device value: status: 404 code: IDENTIFIER_NOT_FOUND message: Phone number not found. Generic422-ConsentInfo-V0: description: Unprocessable Content headers: x-correlator: $ref: '#/components/headers/x-correlator-ConsentInfo-V0' content: application/json: schema: allOf: - $ref: '#/components/schemas/ErrorInfo-ConsentInfo-V0' - type: object properties: status: enum: - 422 code: enum: - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER - UNNECESSARY_IDENTIFIER examples: GENERIC_422_SERVICE_NOT_APPLICABLE: description: Service not applicable for the provided identifier value: status: 422 code: SERVICE_NOT_APPLICABLE message: The service is not available for the provided phone number. GENERIC_422_MISSING_IDENTIFIER: description: >- An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token value: status: 422 code: MISSING_IDENTIFIER message: The phone number cannot be identified. GENERIC_422_UNNECESSARY_IDENTIFIER: description: >- An explicit identifier is provided when a device or phone number has already been identified from the access token value: status: 422 code: UNNECESSARY_IDENTIFIER message: The phone number is already identified by the access token. parameters: SubscriptionId-Geo-V0: name: subscriptionId in: path description: >- Subscription identifier that was obtained from the create event subscription operation required: true schema: $ref: '#/components/schemas/SubscriptionId-Geo-V0' x-correlator-Geo-V0: name: x-correlator in: header description: Correlation id for the different services schema: type: string x-correlator-LocV-V1: name: x-correlator in: header description: Correlation id for the different services schema: type: string x-correlator-DS-RE-V1: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-DS-RO-V1: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 SubscriptionId-DS-RES-V0: name: subscriptionId in: path description: >- Subscription identifier that was obtained from the create event subscription operation required: true schema: $ref: '#/components/schemas/SubscriptionId-DS-RES-V0' x-correlator-DS-RES-V0: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 SubscriptionId-DS-ROS-V0: name: subscriptionId in: path description: >- Subscription identifier that was obtained from the create event subscription operation required: true schema: $ref: '#/components/schemas/SubscriptionId-DS-ROS-V0' x-correlator-DS-ROS-V0: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-KYC-AV-V0: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-KYC-M-V0: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-KYC-FIN-V0: name: x-correlator in: header description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-KYC-FIN-V0' x-correlator-NUMR-RECYCL-V0: name: x-correlator in: header description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-NUMR-RECYCL-V0' x-correlator-SIM-V1: name: x-correlator in: header description: Correlation id for the different services schema: type: string x-correlator-DSWAP-V1: name: x-correlator in: header description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-DSWAP-V1' x-correlator-Cfs-V0: name: x-correlator in: header description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-ConsentInfo-V0: name: x-correlator in: header description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-ConsentInfo-V0' examples: REQUEST_CIRCLE_AREA_ENTERED-Geo-V0: description: A sample geofence for entering for a circle area value: protocol: HTTP sink: 'https://notificationSendServer12.supertelco.com' types: - org.camaraproject.geofencing-subscriptions.v0.area-entered config: subscriptionDetail: device: phoneNumber: '+99999991000' area: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 2000 initialEvent: true subscriptionMaxEvents: 10 subscriptionExpireTime: '2045-03-22T05:40:58.469Z' REQUEST_CIRCLE_AREA_LEFT-Geo-V0: description: A sample geofence for leaving a circle area value: protocol: HTTP sink: 'https://notificationSendServer12.supertelco.com' types: - org.camaraproject.geofencing-subscriptions.v0.area-left config: subscriptionDetail: device: phoneNumber: '+99999991001' area: areaType: CIRCLE center: latitude: 41.354178 longitude: 2.12692 radius: 2000 initialEvent: true subscriptionMaxEvents: 10 subscriptionExpireTime: '2045-03-22T05:40:58.469Z' CIRCLE_AREA_ENTERED-Geo-V0: description: The cloud event when a geofence area was entered value: id: '123655' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.geofencing-subscriptions.v0.area-entered specversion: '1.0' datacontenttype: application/json time: '2023-03-22T05:40:23.682Z' data: subscriptionId: 987654321 device: phoneNumber: 123456789 area: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 2000 CIRCLE_AREA_LEFT-Geo-V0: description: The cloud event when a geofence area was left value: id: '123655' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.geofencing-subscriptions.v0.area-left specversion: '1.0' datacontenttype: application/json time: '2023-03-22T05:40:23.682Z' data: subscriptionId: 987654321 device: phoneNumber: 123456789 area: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 2000 SUBSCRIPTION_ENDS-Geo-V0: description: The cloud event when a geofence subscription ends value: id: '123655' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.geofencing-subscriptions.v0.subscription-ends specversion: '1.0' datacontenttype: application/json time: '2023-03-22T05:40:23.682Z' data: subscriptionId: 987654321 device: phoneNumber: 123456789 area: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 2000 terminationReason: SUBSCRIPTION_EXPIRED SUBSCRIPTION_UNPROCESSABLE-Geo-V0: description: The cloud event when the subscription process was aborted. value: id: '123655' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.geofencing-subscriptions.v0.subscription-ends specversion: '1.0' datacontenttype: application/json time: '2023-03-22T05:40:23.682Z' data: device: phoneNumber: 123456789 area: areaType: CIRCLE center: latitude: 50.735851 longitude: 7.10066 radius: 2000 terminationReason: SUBSCRIPTION_UNPROCESSABLE terminationDescription: The requested area cannot be covered by the network. RETRIEVAL_CIRCLE-LocR-V0: value: lastLocationTime: '2023-10-17T13:18:23.682Z' area: areaType: CIRCLE center: latitude: 45.754114 longitude: 4.860374 radius: 800 RETRIEVAL_POLYGON-LocR-V0: value: lastLocationTime: '2023-10-17T13:18:23.682Z' area: areaType: POLYGON boundary: - latitude: 45.754114 longitude: 4.860374 - latitude: 45.753845 longitude: 4.863185 - latitude: 45.75249 longitude: 4.861876 - latitude: 45.751224 longitude: 4.861125 - latitude: 45.751442 longitude: 4.859827 REACHABILITY_DATA-DS-RES-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' REACHABILITY_SMS-DS-RES-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' REACHABILITY_DISCONNECTED-DS-RES-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' SUBSCRIPTION_ENDS-DS-RES-V0: value: id: '123658' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-reachability-status-subscriptions.v0.subscription-ends specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' terminationReason: SUBSCRIPTION_EXPIRED subscriptionId: qs15-h556-rt89-1298 terminationDescription: Subscription expiry time has been reached time: '2024-03-22T05:40:23.682Z' SUBSCRIPTION_ACTIVE-DS-RES-V0: value: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: ACTIVE SUBSCRIPTION_ACTIVATION_REQUESTED-DS-RES-V0: value: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: ACTIVATION_REQUESTED SUBSCRIPTION_DELETED-DS-RES-V0: value: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: DELETED CREATE_DATA_SUBSCRIPTION-DS-RES-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-data config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true CREATE_SMS_SUBSCRIPTION-DS-RES-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-sms config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true CREATE_DISCONNECTED_SUBSCRIPTION-DS-RES-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-reachability-status-subscriptions.v0.reachability-disconnected config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true ROAMING_STATUS-DS-ROS-V0: value: id: '123654' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' roaming: true subscriptionId: qs15-h556-rt89-1298 time: '2023-01-17T13:18:23.682Z' ROAMING_OFF-DS-ROS-V0: value: id: '123655' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-18T13:18:23.682Z' ROAMING_ON-DS-ROS-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' ROAMING_CHANGE_COUNTRY-DS-ROS-V0: value: id: '123657' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' countryCode: 214 countryName: - ES subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' SUBSCRIPTION_ENDS-DS-ROS-V0: value: id: '123658' source: 'https://notificationSendServer12.supertelco.com' type: >- org.camaraproject.device-roaming-status-subscriptions.v0.subscription-ends specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' terminationReason: SUBSCRIPTION_EXPIRED subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' SUBSCRIPTION_ACTIVE-DS-ROS-V0: value: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: ACTIVE SUBSCRIPTION_ACTIVATION_REQUESTED-DS-ROS-V0: value: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: ACTIVATION_REQUESTED SUBSCRIPTION_DELETED-DS-ROS-V0: value: id: 550e8400-e29b-41d4-a716-446655440000 sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionExpireTime: '2024-07-17T13:18:23.682Z' subscriptionMaxEvents: 5 initialEvent: true startsAt: '2024-07-03T21:12:02.871Z' expiresAt: '2024-07-03T21:12:02.871Z' status: DELETED CREATE_RS_SUBSCRIPTION-DS-ROS-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-status config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true CREATE_RCC_SUBSCRIPTION-DS-ROS-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - >- org.camaraproject.device-roaming-status-subscriptions.v0.roaming-change-country config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true CREATE_RON_SUBSCRIPTION-DS-ROS-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-on config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true CREATE_ROFF_SUBSCRIPTION-DS-ROS-V0: value: sink: 'https://endpoint.example.com/sink' protocol: HTTP types: - org.camaraproject.device-roaming-status-subscriptions.v0.roaming-off config: subscriptionDetail: device: phoneNumber: '+99999991000' subscriptionMaxEvents: 5 initialEvent: true ROAMING_STATUS-DS-V0: value: id: '123654' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.roaming-status specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' roaming: true countryCode: 208 countryName: FR subscriptionId: qs15-h556-rt89-1298 time: '2023-01-17T13:18:23.682Z' ROAMING_OFF-DS-V0: value: id: '123655' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.roaming-off specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-18T13:18:23.682Z' ROAMING_ON-DS-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.roaming-on specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' ROAMING_CHANGE_COUNTRY-DS-V0: value: id: '123657' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.roaming-change-country specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' countryCode: 214 countryName: - ES subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' CONNECTIVITY_DATA-DS-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.connectivity-data specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' CONNECTIVITY_SMS-DS-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.connectivity-sms specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' CONNECTIVITY_DISCONNECTED-DS-V0: value: id: '123656' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.connectivity-disconnected specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' SUBSCRIPTION_ENDS-DS-V0: value: id: '123658' source: 'https://notificationSendServer12.supertelco.com' type: org.camaraproject.device-status.v0.subscription-ends specversion: '1.0' datacontenttype: application/json data: device: phoneNumber: '+99999991000' terminationReason: SUBSCRIPTION_EXPIRED subscriptionId: qs15-h556-rt89-1298 time: '2023-01-19T13:18:23.682Z' RETRIEVE_DATE-DSWAP-V1: summary: Lastest Device swap date is send back value: latestDeviceChange: '2024-09-18T07:37:53.471Z' RETRIEVE_MONITORED_NULL-DSWAP-V1: summary: Only null value is retrieved value: latestDeviceChange: null RETRIEVE_MONITORED_PERIOD-DSWAP-V1: summary: 'null returned for date, monitoredPeriod provided' value: latestDeviceChange: null monitoredPeriod: 120 CHECK-DSWAP-V1: summary: Check request with phoneNumber and maxAge value: phoneNumber: '+99999991001' maxAge: 120 RETRIEVE-DSWAP-V1: summary: Retrieve request without 3-legged access tokens value: phoneNumber: '+99999991001' QOS_STATUS_CHANGED_EXAMPLE-QoD-V0: summary: QoS status changed value: id: 83a0d986-0866-4f38-b8c0-fc65bfcda452 source: >- https://api.example.com/qod/v0/sessions/123e4567-e89b-12d3-a456-426614174000 specversion: '1.0' type: org.camaraproject.qod.v0.qos-status-changed time: '2021-12-12T00:00:00Z' data: sessionId: 123e4567-e89b-12d3-a456-426614174000 qosStatus: UNAVAILABLE statusInfo: DURATION_EXPIRED QOS_STATUS_CHANGED_EXAMPLE-QoD-V1: summary: QoS status changed value: id: 83a0d986-0866-4f38-b8c0-fc65bfcda452 source: >- https://api.example.com/qod/v0/sessions/123e4567-e89b-12d3-a456-426614174000 specversion: '1.0' type: org.camaraproject.quality-on-demand.v1.qos-status-changed time: '2021-12-12T00:00:00Z' data: sessionId: 123e4567-e89b-12d3-a456-426614174000 qosStatus: UNAVAILABLE statusInfo: DURATION_EXPIRED headers: x-correlator-Geo-V0: description: Correlation id for the different services schema: type: string x-correlator-LocV-V1: description: Correlation id for the different services schema: type: string x-correlator-DS-RE-V1: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-DS-RO-V1: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-DS-RES-V0: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-DS-ROS-V0: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 x-correlator-NV-V1: description: Correlation id for the different services schema: type: string authorization-NV-V1: description: Authorization header schema: type: string required: false code-NV-V1: description: Authorization code received from the CSP schema: type: string required: false state-NV-V1: description: Application state schema: type: string required: false x-correlator-KYC-AV-V0: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' authorization-KYC-AV-V0: description: Authorization header schema: type: string required: false x-correlator-KYC-M-V0: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' authorization-KYC-M-V0: description: Authorization header schema: type: string required: false X-Correlator-KYC-T-V0: description: Correlation id for the different services required: false schema: type: string pattern: '^[a-zA-Z0-9-]{1,55}$' example: b4333c46-49c0-4f62-80d7-f0ef930f1c46 X-Correlator-KYC-FIN-V0: description: Correlation id for the different services required: false schema: $ref: '#/components/schemas/XCorrelator-KYC-FIN-V0' x-correlator-NUMR-RECYCL-V0: description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-NUMR-RECYCL-V0' x-correlator-SIM-V1: description: Correlation id for the different services schema: type: string x-correlator-DSWAP-V1: description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-DSWAP-V1' x-correlator-Cfs-V0: description: Correlation id for the different services schema: type: string pattern: '^[a-zA-Z0-9-]{0,55}$' x-correlator-ConsentInfo-V0: description: Correlation id for the different services schema: $ref: '#/components/schemas/XCorrelator-ConsentInfo-V0' securitySchemes: openId: description: OpenID Connect authentication type: openIdConnect openIdConnectUrl: 'https://example.com/.well-known/openid-configuration'