Device Status notification details
On this page, you will find the different types of notification JSON
schemas for Device-Status,
such as Connectivity
, Roaming
and End of subscription
.
Underneath each JSON
schema, there is a table with further information on the specific schema right above it.
At the bottom of this page, you can also check a table, which contains further details on the values that are shared by all the different schemas.
Remember that the string values represented below are just examples that can be used. So, they should contain your real device-status values.
Supported event types
org.camaraproject.device-status.v0.roaming-status
- Used for receiving updates about changes to device roamingorg.camaraproject.device-status.v0.roaming-change-country
- Notification is sent due to roaming country changingorg.camaraproject.device-status.v0.roaming-on
- Device has entered roaming statusorg.camaraproject.device-status.v0.roaming-off
- Device has stopped roamingorg.camaraproject.device-status.v0.connectivity-data
- Device has connected to the data networkorg.camaraproject.device-status.v0.connectivity-sms
- Device has connected to the SMS networkorg.camaraproject.device-status.v0.connectivity-disconnected
- Device has disconnected from the networkorg.camaraproject.device-status.v0.subscription-ends
- Device Status notification subscription has expired
Connectivity-event-detail schema
This is the notification JSON
schema is used for notifications about device connectivity:
{
"id": "9884b8d2-5392-4ed7-8cde-0ce25bf58df3",
"source": "/device-status/v0/subscriptions/83b1eaae-4533-4bff-a0af-e805cb8a2940",
"type": "org.camaraproject.device-status.v0.connectivity-data",
"specversion": "1.0",
"datacontenttype": "application/json",
"time": "2026-04-17T07:31:01.416474Z",
"data": {
"device": {
"phoneNumber": "36701234567",
"networkAccessIdentifier": "device@testcsp.net",
"ipv4Address": {
"publicAddress": "233.252.0.2",
"privateAddress": "192.0.2.25",
"publicPort": 80
},
"ipv6Address": "2001:db8:1234:5678:9abc:def0:fedc:ba98"
},
"subscriptionId": "83b1eaae-4533-4bff-a0af-e805cb8a2940"
}
}
Note that different connectivity statuses are communicated by using different notification types. In this case
connectivity-data
notifications only inform about a device connecting to the data network. To receive disconnection
or SMS connectivity data, use the connectivity-disconnected
and connectivity-sms
event types.
Roaming-event-detail schema
This is the notification JSON
schema roaming related notifications.
{
"id": "2628b42e-8789-4fcd-942a-841f16f52897",
"source": "/device-status/v0/subscriptions/90409561-68f5-4360-b12d-9003f4dca8b0",
"type": "org.camaraproject.device-status.v0.roaming-status",
"specversion": "1.0",
"datacontenttype": "application/json",
"time": "2026-04-17T07:31:01.416474Z",
"data": {
"device": {
"phoneNumber": "36701234567",
"networkAccessIdentifier": "device@testcsp.net",
"ipv4Address": {
"publicAddress": "233.252.0.2",
"privateAddress": "192.0.2.25",
"publicPort": 80
},
"ipv6Address": "2001:db8:1234:5678:9abc:def0:fedc:ba98"
},
"subscriptionId": "90409561-68f5-4360-b12d-9003f4dca8b0",
"roaming": true,
"countryCode": 587
}
}
Roaming-event-detail-keyword values | Description |
---|---|
roaming | Either a Boolean or a "null" value. |
countryCode | Either an integer with the country code or a "null" value. |
countryName | Either a string or string array with the country name(s) or a "null" value. |
You can use the roaming-on
, roaming-off
and roaming-change-country
notifications if you are interested
in only those specific events.
Subscription-ends-event-detail schema
This is the notification JSON
schema for monitoring why a device's subscription ended.
{
"id":"2628b42e-8789-4fcd-942a-841f16f52897",
"source":"/device-status/v0/subscriptions/f76c90dd-3f68-4c69-bbdc-57bddfd0f910",
"type":"org.camaraproject.device-status.v0.subscription-ends",
"specversion":"1.0",
"datacontenttype":"application/json",
"time":"2027-04-17T07:31:01.416474Z",
"data":{
"device":{
"phoneNumber":"36701234567",
"networkAccessIdentifier": "device@testcsp.net",
"ipv4Address": {
"publicAddress": "233.252.0.2",
"privateAddress": "192.0.2.25",
"publicPort": 80
},
"ipv6Address": "2001:db8:1234:5678:9abc:def0:fedc:ba98"
},
"subscriptionId":"f76c90dd-3f68-4c69-bbdc-57bddfd0f910",
"terminationReason":"SUBSCRIPTION_EXPIRED"
}
}
Subscription-ends-keyword values | Description |
---|---|
terminationReason | A string value containing the termination reason. It explains if the subscription ended due to expiration "SUBSCRIPTION_EXPIRED" or network interruption "NETWORK_TERMINATED" . |
Shared-keyword values
Check the table below for further information on mandatory, optional values and their types.
The values described here are common to all the Device-Status notification JSON
schemas:
Keyword values | Description |
---|---|
subscriptionId | A string value with the event subscription identifier. |
source | A string value that identifies the source where the event happened. It contains the Network as Code API implementation and subscription ID. |
type | A string value returned by the API with different statuses. |
specversion | A string representing the specification version. |
datacontenttype | It indicates the media type for the event payload encoding. It must be "application/json" in the context of CAMARA APIs |
time | A string value with the time the event occurred. Date and time are specified in ISO 8601 format, e.g.: 2023-08-20T21:01:02.345Z . |
Device identifiers
Keyword values | Description |
---|---|
data | An object that will contain other objects or strings with multiple device status data. |
device | An object that will contain other objects or strings with multiple device identifiers. |
phoneNumber | Optional string with a pattern that matches "^[+]?[0-9]{5,15}$" or a "null" value. |
networkAccessIdentifier | Optional string with a pattern that matches "^[+]?[0-9]{5,15}$" or a "null" value. It is an email-like external identifier for a device (or subscriber) into the network. If both the networkAccessIdentifier and phoneNumber are included, phoneNumber will be dropped and networkAccessIdentifier will be retained. |
ipv4Address | Optional object containing an object for IPv4 address values or a "null" value. It refers to the IPv4 address of the device. An IP address is needed for some flow-oriented services, such as QoD. |
publicAddress | Optional string with either the device's public IPv4 address, the Network Address Translation (NAT) behind it or a "null" value. Learn more about NAT. |
privateAddress | Optional string with the device's private IPv4 address if it is behind NAT or a "null" value. |
publicPort | Optional integer with the public port used by the device or a "null" value. A port is necessary, as private address ranges overlap, and public port is used to extend the range for Carrier-grade NAT (CGNAT), a type of large-scale NAT. |
ipv6Address | Optional string containing the device's IPv6 address or a "null" value. An IP address is needed for some flow-oriented services, such as QoD. |