Push Server Database
PowerAuth Push Server requires several database tables in order to work.
You can download DDL scripts for supported databases:
Tables
- Push devices
- Push service credentials
- Push messages
- Push campaigns
- Push campaign users
- Push campaign devices
Push Devices Table
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. |
Push Service Credentials Table
Table name: push_app_credentials
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_private_key | BLOB | - | Firebase service account private key used when obtaining access tokens for FCM HTTP v1 API. |
| android_project_id | VARCHAR(255) | - | Firebase project ID, used when sending push messages using FCM. |
Push Messages Table
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) |
| 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) |
Push Campaigns Table
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 |
Push Campaign Users Table
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 |
Push Campaign Devices Table
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 |