Devices
Overview#
The device type determines how you receive notifications. It is an abstraction of an end-user's target device for receiving notifications. The main example of a device is an email address, which is currently the only type of device which is supported.
Note: Future versions of the Platform will support other device types, such as browser installation or a physical device such as a mobile phone.
How Devices work#
Each device is owned by a particular user, and by default, each user's registered email address (in the Passport Service) will be automatically created as a new EMAIL type device. However, a user may also add and administer additional devices.
Note: The same device identity (for example, email address) cannot be created multiple times for the same owning user.
Using the Device API#
APIs for devices are permissioned differently from the other entities in the Notification Service. A normal user can only perform operations on devices that they own. However, a Platform Manager user can perform operations on devices for all users.
Device properties#
When you create a device, the following properties are supported:
_owner._irn: The IRN of the owning user. This must be in the form of:passportsvc:user:<user id>where<user id>is the ID of the calling user._transport: Currently onlyEMAILis supported.
When transport is EMAIL, just one property is supported: _email.address, which is the target email address.
Note: All device properties are immutable.
Device API examples#
This section lists some useful examples of using the Notification Service API to perform operations on devices.
For a full reference to the Device API, refer to the Device Rest API page.
How to create a device#
To create an EMAIL type device, refer to the sample code shown below.
const device = await IafNotification.createDevice({ _owner: { _irn: "passportsvc:user:<user id>" }, _transport: "EMAIL", _email: { _address: "[email protected]" }}, ctx);
How to list devices#
To list devices, you must provide a query. The query must include at a minimum, the owner IRN of the calling user.
The following query properties are supported:
transportowner.irn
Note: These properties map to the same properties used when creating or updating templates.
Refer to the sample code below.
const devices = await IafNotification.listDevices({ owner: { irn: "passportsvc:user:<user id>" }}, ctx);How to delete a device#
To delete a device, with a given ID, refer to the sample code below.
await IafNotification.deleteDevice(device._id, ctx);