Skip to navigation

Policy management

API reference

What changed is in the event’s detail object.

Service policy modified

A service policy was modified in the emnify Portal or through the emnify REST API. Use this event to review changes that can affect your bill, such as a new data limit or an enabled service, when they happen.

The platform generates one event for each successful request that changes a service policy. A request that fails, or that doesn’t change anything, doesn’t generate an event. If you turn a setting on and then off again, you get two events.

The event is about the service policy, not about a device, so it contains no endpoint, sim, or imsi properties. The user property identifies who made the change. For a change made with an application token, name is the name of the token, and username starts with app-token-.

The event source is API (ID 2), and the severity is Warn (ID 1).

For settings changes, the event contains the new values, not the previous ones. To see what a setting was before, look at the earlier events for the same service policy.

The detail object of a service policy modified event contains the following properties:

PropertyTypeDescription
service_profileObjectThe service policy that was modified: id (Integer) and name (String).
categoryStringThe kind of change. One of attributes, service_assignments, limits, or firewall_profile_assignments.
changed_dataObjectWhat the request changed. Its content depends on the category.

Settings changes

When category is attributes, a setting of the service policy itself changed. For example, its name, the allowed radio access technologies, the SMS interface, the breakout region, or the device-to-device (D2D) mode.

changed_data only contains the settings that changed, with their new values:

  • Boolean settings, such as allowed_4g or apply_data_quota, are true or false. Turning IP or DNS firewall enforcement on or off shows up as ip_firewall_rule_set_enforced or dns_firewall_rule_set_enforced.
  • name is a string.
  • description is an object with a value property, for example {"value": "Trucks in Germany"}.
  • References to other objects, such as api_callback, api_secret, esme_interface_type, dns, and breakout_region, are objects with an id property, for example {"id": 3}.
  • dns_firewall_rule_set_mode is allowlist or blocklist, and d2d_mode is disabled, enabled, or forward_to_backend.

A null value inside the object means the setting was cleared, for example {"id": null} when the API callback was removed. If you clear the description in the emnify Portal, the event shows an empty string, {"value": ""}.

For what each setting does, see the service profile object. For the D2D modes, see Enable device-to-device communication. dns_firewall_rule_set_mode sets whether the assigned DNS firewall profiles work as an allowlist or a blocklist.

Service, limit, and firewall profile changes

For the other categories, changed_data contains an added list and a removed list. Both lists are always present, and one of them can be empty. A removed item keeps its values, so you can see what was removed.

CategoryChangesProperties of each item
service_assignmentsA service was turned on or off for the service policy.service_id: 38 for data, 6 for SMS inbound, or 32 for SMS outbound.
limitsA data limit or an SMS limit was added, replaced, or removed.service_id, limit_id, volume, period_id, warning_percent, and satellite_only. volume is in bytes for data limits and in SMS for SMS limits. period_id is 1 for daily and 2 for monthly. warning_percent is left out when no warning is configured.
firewall_profile_assignmentsAn IP firewall or DNS firewall profile was assigned or removed.firewall_type (ip or dns) and firewall_profile_id.

When a request replaces an SMS limit, the old limit is in removed and the new one is in added, in the same event.

{
"timestamp": "2026-11-01T21:40:29.000Z",
"alert": false,
"description": "Service policy 'Fleet EU': description changed to 'Trucks in Germany'.",
"id": 2729804254740486,
"event_type": {
"id": 82,
"description": "Service policy modified"
},
"event_source": {
"id": 2,
"description": "API"
},
"event_severity": {
"id": 1,
"description": "Warn"
},
"organisation": {
"id": 14543,
"name": "Sample Corp"
},
"user": {
"id": 676919,
"name": "Sample User",
"username": "user@sample.com"
},
"detail": {
"service_profile": {
"id": 1440022,
"name": "Fleet EU"
},
"category": "attributes",
"changed_data": {
"description": {
"value": "Trucks in Germany"
}
}
}
}
{
"timestamp": "2026-11-01T21:45:10.000Z",
"alert": false,
"description": "Service policy 'Fleet EU': monthly data limit of 1 GB added (warning at 80%).",
"id": 2729805548863511,
"event_type": {
"id": 82,
"description": "Service policy modified"
},
"event_source": {
"id": 2,
"description": "API"
},
"event_severity": {
"id": 1,
"description": "Warn"
},
"organisation": {
"id": 14543,
"name": "Sample Corp"
},
"user": {
"id": 676919,
"name": "Sample User",
"username": "user@sample.com"
},
"detail": {
"service_profile": {
"id": 1440022,
"name": "Fleet EU"
},
"category": "limits",
"changed_data": {
"added": [
{
"service_id": 38,
"limit_id": 17,
"volume": 1000000000,
"period_id": 2,
"warning_percent": 80,
"satellite_only": false
}
],
"removed": []
}
}
}

Coverage policy modified Pre-release

A coverage policy was modified in the emnify Portal or through the emnify REST API. Use this event to review changes that can affect your bill, such as a new data plan or an added coverage area, when they happen.

The platform generates an event for each successful request that changes a coverage policy. A request that fails, or that doesn’t change anything, doesn’t generate an event. If you block a network and then unblock it again, you get two events.

A request that changes the data plan also removes the policy’s coverage areas, data allowances, and inclusive volume. It generates one event for the new data plan, and one event each for the removed coverage areas and data allowances. The removed inclusive volume is in the data plan event, as {"id": null}.

Changes made with Update tariff profile (PATCH /api/v1/tariff_profile/{tariff_profile_id}), or with PUT or DELETE /api/v1/tariff_profile/{tariff_profile_id}/inclusive_volume/{inclusive_volume_id}, don’t generate this event.

As with service policy modified events, the event contains no endpoint, sim, or imsi properties, and the user property identifies who made the change. The event source is API (ID 2), and the severity is Warn (ID 1). For settings changes, the event contains the new values, not the previous ones.

The detail object of a coverage policy modified event contains the following properties:

PropertyTypeDescription
tariff_profileObjectThe coverage policy that was modified: id (Integer) and name (String).
categoryStringThe kind of change. One of attributes, ratezone_selections, operator_blocklist, or data_allowance_assignments.
changed_dataObjectWhat the request changed. Its content depends on the category.

Coverage policy settings changes

When category is attributes, a setting of the coverage policy itself changed. changed_data only contains the settings that changed, with their new values:

  • name is a string.
  • description is an object with a value property, for example {"value": "Trucks in Germany"}.
  • tariff is the data plan, an object with id and name properties, for example {"id": 2, "name": "Regional Pro"}.
  • inclusive_volume is an object with an id property, for example {"id": 4}.

A null value inside the object means the setting was cleared, for example {"value": null} when the description was removed.

Coverage area, network, and data allowance changes

For the other categories, changed_data contains an added list and a removed list. Both lists are always present, and one of them can be empty.

CategoryChangesProperties of each item
ratezone_selectionsA coverage area was turned on or off for the coverage policy.ratezone_id and ratezone_name.
operator_blocklistA network, or a radio access technology (RAT) on a network, was blocked or unblocked.operator_id, operator_name, rat_type_id, and rat_type_name. When the whole network is blocked, rat_type_id and rat_type_name are null.
data_allowance_assignmentsA data allowance was assigned to or removed from the coverage policy.data_allowance_id and data_allowance_name.

When a request replaces a data allowance or the blocked RATs of a network, the old items are in removed and the new ones are in added, in the same event. Blocking 4G on a network also blocks LTE-M, so both RATs are in added.

For how to block networks and RATs, see Block networks and Block radio access technologies (RATs).

{
"timestamp": "2026-11-02T09:12:45.000Z",
"alert": false,
"description": "Coverage policy 'Global IoT': tariff changed to 'Regional Pro'.",
"id": 2730511984302217,
"event_type": {
"id": 88,
"description": "Coverage policy modified"
},
"event_source": {
"id": 2,
"description": "API"
},
"event_severity": {
"id": 1,
"description": "Warn"
},
"organisation": {
"id": 14543,
"name": "Sample Corp"
},
"user": {
"id": 676919,
"name": "Sample User",
"username": "user@sample.com"
},
"detail": {
"tariff_profile": {
"id": 212,
"name": "Global IoT"
},
"category": "attributes",
"changed_data": {
"tariff": {
"id": 2,
"name": "Regional Pro"
}
}
}
}
{
"timestamp": "2026-11-02T09:20:03.000Z",
"alert": false,
"description": "Coverage policy 'Global IoT': operator 'Telekom DE' blocked, 2G on operator 'Vodafone DE' blocked.",
"id": 2730512438170754,
"event_type": {
"id": 88,
"description": "Coverage policy modified"
},
"event_source": {
"id": 2,
"description": "API"
},
"event_severity": {
"id": 1,
"description": "Warn"
},
"organisation": {
"id": 14543,
"name": "Sample Corp"
},
"user": {
"id": 676919,
"name": "Sample User",
"username": "user@sample.com"
},
"detail": {
"tariff_profile": {
"id": 212,
"name": "Global IoT"
},
"category": "operator_blocklist",
"changed_data": {
"added": [
{
"operator_id": 5,
"operator_name": "Telekom DE",
"rat_type_id": null,
"rat_type_name": null
},
{
"operator_id": 7,
"operator_name": "Vodafone DE",
"rat_type_id": 2,
"rat_type_name": "2G"
}
],
"removed": []
}
}
}