Fork me on GitHub

Plugin DeviceRegistration

Introduction

The DeviceRegistration plugin provides management of mobile device registrations for push notification delivery. It offers a complete solution for registering, querying, and deleting registration tokens associated with user identities (GUID/CUID).

This plugin exposes a secure REST API allowing mobile applications and external services to manage device registrations. It also maintains a complete history of all operations (creations and deletions) for audit and traceability purposes.

Key features include device registration creation with validation, retrieval of registration tokens by criteria (customer_id, connection_id), registration deletion, and automatic historization of all operations.

Configuration

Available Properties

The configuration file deviceregistration.properties contains the following properties:

  • context: Application context (default: /lutece)

Spring Beans to Inject

The following beans must be configured in the Spring context (deviceregistration_context.xml file):

  • deviceregistration.deviceRegistrationDAO: DAO for device registration management (class: fr.paris.lutece.plugins.deviceregistration.business.deviceregistration.DeviceRegistrationDAO)
  • deviceregistration.deviceRegistrationHistoryDAO: DAO for history management (class: fr.paris.lutece.plugins.deviceregistration.business.history.DeviceRegistrationHistoryDAO)
  • deviceregistration.deviceRegistrationRest: Main REST service (class: fr.paris.lutece.plugins.deviceregistration.rs.DeviceRegistrationRest)
  • deviceregistration.swaggerRest: Swagger service for API documentation (class: fr.paris.lutece.plugins.deviceregistration.rs.SwaggerRest)
  • deviceregistration.uncaughtDeviceRegistrationExceptionMapper: REST exception handler (class: fr.paris.lutece.plugins.deviceregistration.rs.error.UncaughtDeviceRegistrationExceptionMapper)

Daemon Classes

This plugin does not contain any Daemon classes to activate.

Caches

This plugin does not require any cache activation.

Usage

Administration Rights

The plugin defines the following administration right:

  • DEVICEREGISTRATION_MANAGEMENT: Device registration management (level 1) - Access via URL: jsp/admin/plugins/deviceregistration/ManageDeviceRegistrations.jsp

Exposed Java Services

The plugin exposes the following Java services:

DeviceRegistrationService (singleton)

  • getInstance(): Get the unique service instance
  • createDeviceRegistration(String customerId, String connectionId, String registrationToken, String tokenIssuer): Create a new device registration with data validation and automatic history entry creation
  • deleteDeviceRegistration(String customerId, String connectionId, String registrationToken, String tokenIssuer): Delete one or more device registrations according to provided criteria with automatic historization
  • getRegistrationTokensByCriteria(String customerId, String connectionId, String tokenIssuer): Retrieve the list of registration tokens according to customer_id and/or connection_id criteria

DeviceRegistrationHistoryService (singleton)

  • getInstance(): Get the unique service instance
  • createDeviceRegistrationHistory(DeviceRegistration deviceRegistration, ChangeType changeType): Create a history entry to track creation and deletion operations

REST API

The plugin exposes the following REST APIs (base path: /rest/deviceregistration/v1):

GET /rest/deviceregistration/v1/token

  • Description: Get all registration tokens by identity (GUID/CUID)
  • Query Parameters: connectionId (optional), customerId (optional)
  • Required Headers: CLIENT_CODE (mandatory) - Client code/token issuer
  • Response 200: Registration token(s) found (DeviceRegistrationResponse)
  • Response 400: Processing error with explanation message
  • Response 404: Registration token not found
  • Content-Type: application/json

POST /rest/deviceregistration/v1/token

  • Description: Create a new device registration
  • Required Headers: CLIENT_CODE (mandatory) - Client code/token issuer
  • Body: DeviceRegistrationRequest (JSON) with customerId, connectionId and registrationToken
  • Response 200: Device registration created (DeviceRegistrationResponse)
  • Response 400: Processing error with explanation message
  • Response 409: Token already exists
  • Content-Type: application/json

DELETE /rest/deviceregistration/v1/token

  • Description: Delete a device registration
  • Required Headers: CLIENT_CODE (mandatory) - Client code/token issuer
  • Body: DeviceRegistrationRequest (JSON) with customerId, connectionId and registrationToken
  • Response 204: Device registration deleted successfully
  • Response 400: Processing error with explanation message
  • Response 404: Nothing was deleted
  • Content-Type: application/json

Swagger documentation available via the swaggerui plugin.