-
Notifications
You must be signed in to change notification settings - Fork 12
Push Server Database
PowerAuth Push Server requires several new database tables in order to work.
Here are the bootstrap schemes for MySQL and Oracle.
- Push devices
- Push service credentials
- Push messages
- Push campaigns
- Push campaign users
- Push campaign devices
Table name: push_device
Purpose: Stores push tokens specific for a given device.
Columns:
Name | Type | Info | Note |
---|---|---|---|
id | BIGINT(20) | primary key, index, autoincrement | Unique device registration ID. |
activation_id | VARCHAR(37) | index | Application name, for example "Mobile Banking". |
user_id | BIGINT(20) | index | Associated user ID |
app_id | BIGINT(20) | index | Associated application ID |
platform | VARCHAR(30) | - | Mobile OS Platform ("ios", "android") |
push_token | VARCHAR(255) | - | Push token associated with a given device. Type of the token is determined by the platform column. |
timestamp_created | TIMESTAMP | - | Timestamp of the last device registration. |
is_active | INT(11) | - | PowerAuth 2.0 activation status (boolean), used as an activation status cache so that communication with PowerAuth 2.0 Server can be minimal. |
encryption_key | TEXT | - | Base64 encoded key that is used for deriving per-message end-to-end encryption keys in case the message is encrypted. |
encryption_key_index | TEXT | - | Base64 encoded session index (byte[] ) used to derive encryption_key from KEY_TRANSPORT key. |
Table name: push_credential
Purpose: Stores per-app credentials used for communication with APNs / FCM.
Columns:
Name | Type | Info | Note |
---|---|---|---|
id | BIGINT(20) | primary key, index, autoincrement | Unique credential record ID. |
app_id | BIGINT(20) | index | Associated application ID |
ios_key_id | VARCHAR(255) | - | Key ID used for identifying a private key in APNs service. |
ios_private_key | BLOB | - | Binary representation of P8 file with private key used for Apple's APNs service. |
ios_team_id | VARCHAR(255) | - | Team ID used for sending push notifications. |
ios_bundle | VARCHAR(255) | - | Application bundle ID, used as a APNs "topic". |
android_server_key | TEXT | - | Base64 encoded token (SERVER_KEY) used for Google's FCM service. |
android_bundle | VARCHAR(255) | - | Application package name, used as a reference to application. |
Table name: push_message
Purpose: Stores individual messages that were sent by the push server and their sent status.
Columns:
Name | Type | Info | Note |
---|---|---|---|
id | BIGINT(20) | primary key, index, autoincrement | Unique message record ID. |
device_registration_id | INT | index | Associated device registration (device that is used to receive the message), for the purpose of resend on fail operation. |
user_id | BIGINT(20) | index | Associated user ID. |
activation_id | VARCHAR(37) | index | PowerAuth 2.0 activation ID. |
silent | INT | - | Flag indicating if the message was "silent" (0 = NO, 1 = YES) |
personal | INT | - | Flag indicating if the message was "personal" - sent only on active devices (0 = NO, 1 = YES) |
encrypted | INT | - | Flag indicating if the message was "encrypted" (0 = NO, 1 = YES) |
message_body | TEXT | - | Payload of the message in a unified server format. This format is later translated in a platform specific payload. |
timestamp_created | TIMESTAMP | - | Date and time when the record was created. |
status | INT | - | Value indicating message send status. (-1 = FAILED, 0 = PENDING, 1 = SENT) |
Table name: push_campaign
Purpose: Stores particular campaigns together with notification messages
Columns:
Name | Type | Info | Note |
---|---|---|---|
id | BIGINT(20) | primary key, index, autoincrement | Unique campaign record ID. |
appid | BIGINT(20) | index | Associated Application identifier |
message | TEXT | - | Certain notification that is written in unified format |
sent | INT(1) | - | Flag indicating if campaign was successfully sent |
timestamp_created | TIMESTAMP | - | Timestamp of campaign creation |
timestamp_sent | TIMESTAMP | - | Timestamp of campaign successful sending |
Table name: push_campaign_user
Purpose: Stores users who are going to get notification from specific campaign
Columns:
Name | Type | Info | Note |
---|---|---|---|
id | BIGINT(20) | primary key, index, autoincrement | Unique user ID |
campaign_id | BIGINT(20) | index | Identifier of campaign that is user related to |
user_id | BIGINT(20) | index | Identifier of user, can occur multiple times in different campaigns |
timestamp_created | TIMESTAMP | - | Timestamp of user creation |
Table name: push_campaign_device
Purpose: Stores devices related to certain campaign to ensure that each device will receive only one message
Columns:
Name | Type | Info | Note |
---|---|---|---|
id | BIGINT(20) | primary key, index, autoincrement | Unique device ID |
campaign_id | BIGINT(20) | index | Identifier of campaign that is device related to |
platform | VARCHAR(20) | - | Platform that is device running on |
token | VARCHAR(255) | - | Push token associated with a given device |
status | INT(11) | - | Status used in concurrent sending. States: sent, sending, failed |
timestamp_created | TIMESTAMP | - | Timestamp of device creation |
Deployment Tutorials
Integration Tutorials
Reference Manual
Technical Topics