NorthRelayNorthRelay
API Reference

Schema Reference

Database schema reference generated from Prisma schema

Schema Reference

Auto-generated from prisma/schema.prisma. This page documents the database models and enums used by the NorthRelay API.

Last generated: 2026-03-19

Models

ModelTableFieldsDescription
Accountaccounts12
Sessionsessions4
VerificationTokenverification_tokens3
Userusers66
InboxSettingsinbox_settings13
ApiKeyapi_keys16
AuditLogaudit_logs9
AdminAuditLogadmin_audit_logs6
Domaindomains25
SystemDomainsystem_domains8
SubdomainSlotsubdomain_slots8
Mailboxmailboxes10
MailboxAliasmailbox_aliases7
InboxUserinbox_users21
InboxUserAliasinbox_user_aliases6
Emailemails26
EmailEventemail_events16
ScheduledEmailscheduled_emails9
Suppressionsuppressions6
Templatetemplates20
TemplateVersiontemplate_versions11
BrandThemebrand_themes32
UnsubscribePreferenceunsubscribe_preferences5
Webhookwebhooks17
WebhookDeliverywebhook_deliveries9
AbuseReportabuse_reports16
AdminNoteadmin_notes6
ReputationScorereputation_scores16
ReputationHistoryreputation_history9
ReputationIncidentreputation_incidents10
SystemAlertsystem_alerts13
SystemConfigsystem_config5
MaintenanceWindowmaintenance_windows10
BackupLogbackup_logs11
AlertConfigurationalert_configurations11
Invoiceinvoices10
EmailBatchemail_batches11
SuppressionGroupsuppression_groups8
SuppressionGroupMembersuppression_group_members4
DedicatedIpdedicated_ips9
IpPoolip_pools7
IpPoolIpip_pool_ips3
Subusersubusers11
RevokedTokenrevoked_tokens5
Contactcontacts18
ContactTagcontact_tags3
ContactCustomFieldcontact_custom_fields4
Campaigncampaigns41
ContactListcontact_lists16
ContactListMembercontact_list_members7
CampaignRecipientcampaign_recipients11
CampaignEventcampaign_events8
DomainAddondomain_addons12
PendingSignuppending_signups10
SystemSettingsystem_settings8

Account

Table: accounts

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
typeStringYes-
providerStringYes-
refreshTokenStringNo-Column: refresh_token
accessTokenStringNo-Column: access_token
expiresAtIntNo-Column: expires_at
tokenTypeStringNo-Column: token_type
scopeStringNo-
idTokenStringNo-Column: id_token
sessionStateStringNo-Column: session_state
providerAccountIdStringYes-Column: provider_account_id
userIdStringYes-Column: user_id

Unique constraints: (provider, providerAccountId)


Session

Table: sessions

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
expiresDateTimeYes-
sessionTokenStringYes-Unique, Column: session_token
userIdStringYes-

VerificationToken

Table: verification_tokens

FieldTypeRequiredDefaultNotes
identifierStringYes-
tokenStringYes-Unique
expiresDateTimeYes-

Unique constraints: (identifier, token)


User

Table: users

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
nameStringNo-
emailStringYes-Unique
emailVerifiedDateTimeNo-
passwordHashStringNo-
imageStringNo-
createdAtDateTimeYesnow(
updatedAtDateTimeYes-
quotaLimitIntYes3000
quotaUsedIntYes0
quotaResetAtDateTimeYesnow(
poolTypePoolTypeYesShared
planTierPlanTierYesFree
roleuser_roleYesUSER
accountTypeaccount_typeYesUSERColumn: account_type
statususer_statusYesACTIVE
suspendReasonStringNo-
suspendedAtDateTimeNo-Column: suspended_at
verificationCodeStringNo-Column: verification_code
verificationCodeExpiresDateTimeNo-Column: verification_code_expires
verificationTokenStringNo-Column: verification_token
companyStringNo-
stripeCustomerIdStringNo-Column: stripe_customer_id
stripeSubscriptionIdStringNo-Column: stripe_subscription_id
stripePaymentMethodIdStringNo-Column: stripe_payment_method_id
timezoneStringYes"UTC"
totpSecretStringNo-Column: totp_secret
totpEnabledBooleanYesfalseColumn: totp_enabled
totpBackupCodesString[]Yes-Column: totp_backup_codes
totpVerifiedAtDateTimeNo-Column: totp_verified_at
notifyDeliveryReportsBooleanYestrueColumn: notify_delivery_reports
notifyBounceAlertsBooleanYestrueColumn: notify_bounce_alerts
notifyBillingUpdatesBooleanYestrueColumn: notify_billing_updates
notifyProductUpdatesBooleanYesfalseColumn: notify_product_updates
templateDefaultsJsonNo-Column: template_defaults
deletedAtDateTimeNo-Column: deleted_at
abuseReportsAbuseReport[]Yes-
accountsAccount[]Yes-
apiKeysApiKey[]Yes-
auditLogsAuditLog[]Yes-
domainsDomain[]Yes-
emailEventsEmailEvent[]Yes-
emailsEmail[]Yes-
emailBatchesEmailBatch[]Yes-
invoicesInvoice[]Yes-
mailboxesMailbox[]Yes-
mailboxAliasesMailboxAlias[]Yes-
reputationScoreReputationScoreNo-
scheduledEmailsScheduledEmail[]Yes-
sessionsSession[]Yes-
suppressionsSuppression[]Yes-
templatesTemplate[]Yes-
webhooksWebhook[]Yes-
inboxSettingsInboxSettingsNo-
suppressionGroupsSuppressionGroup[]Yes-
dedicatedIpsDedicatedIp[]Yes-
ipPoolsIpPool[]Yes-
subusersSubuser[]Yes-
revokedTokensRevokedToken[]Yes-
brandThemesBrandTheme[]Yes-
unsubscribePreferencesUnsubscribePreference[]Yes-
contactsContact[]Yes-
inboxUsersInboxUser[]Yes-
campaignsCampaign[]Yes-
contactListsContactList[]Yes-
domainAddonsDomainAddon[]Yes-

InboxSettings

Table: inbox_settings

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Unique, Column: user_id
signatureStringNo-
showImagesBooleanYestrueColumn: show_images
autoArchiveBooleanYesfalseColumn: auto_archive
replyFormatStringYes"inline"
previewLinesIntYes2Column: preview_lines
notificationsJsonNo-
securityJsonNo-
appearanceJsonNo-
filtersJsonNo-
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at

ApiKey

Table: api_keys

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
nameStringYes-
activeBooleanYestrue
isRevokedBooleanYesfalseColumn: is_revoked
revokedAtDateTimeNo-Column: revoked_at
revokedByStringNo-Column: revoked_by
banReasonStringNo-Column: ban_reason
createdAtDateTimeYesnow(Column: created_at
expiresAtDateTimeNo-Column: expires_at
keyHashStringYes-Unique, Column: key_hash
keyPrefixStringYes-Column: key_prefix
bcryptHashStringNo-Column: bcrypt_hash
lastUsedAtDateTimeNo-Column: last_used_at
usageCountIntYes0Column: usage_count
scopesJsonNo-
userIdStringYes-Column: user_id

AuditLog

Table: audit_logs

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
actionStringYes-
locationStringNo-
statusStringYes-
metadataJsonNo-
timestampDateTimeYesnow(
ipAddressStringNo"unknown"Column: ip_address
userAgentStringNo-Column: user_agent
userIdStringNo-Column: user_id

AdminAuditLog

Table: admin_audit_logs

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
adminEmailStringYes-
actionStringYes-
targetUserIdStringNo-
detailsJsonNo-
createdAtDateTimeYesnow(

Domain

Table: domains

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-
hostnameStringYes-
domainTypeDomainTypeYesCUSTOM
verifiedBooleanYesfalse
isSystemDomainBooleanYesfalseColumn: is_system_domain
isManagedDomainBooleanYesfalse
parentDomainStringNo-
subdomainStringNo-
dnsStatusJsonNo-
createdAtDateTimeYesnow(
updatedAtDateTimeYes-
verificationTokenStringNo-
verifiedAtDateTimeNo-
dnsRecordsJsonNo-
verificationTypeStringNo"domain"
isInboxHostedBooleanYesfalseColumn: is_inbox_hosted
mxVerifiedBooleanYesfalseColumn: mx_verified
mxVerifiedAtDateTimeNo-Column: mx_verified_at
mxCheckedAtDateTimeNo-Column: mx_checked_at
catchAllEnabledBooleanYesfalseColumn: catch_all_enabled
mailboxesMailbox[]Yes-
aliasesMailboxAlias[]Yes-
addonsDomainAddon[]Yes-
inboxUsersInboxUser[]Yes-

Unique constraints: (userId, hostname)


SystemDomain

Table: system_domains

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
domainStringYes-Unique
poolTypePoolTypeYes-Column: pool_type
isActiveBooleanYestrue
dkimSelectorStringYes"default"
dkimPublicKeyStringNo-
createdAtDateTimeYesnow(
updatedAtDateTimeYes-

SubdomainSlot

Table: subdomain_slots

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
subdomainStringYes-
parentDomainStringYes-Column: parent_domain
categoryStringYes-
isAssignedBooleanYesfalseColumn: is_assigned
assignedUserIdStringNo-Column: assigned_user_id
assignedAtDateTimeNo-Column: assigned_at
createdAtDateTimeYesnow(Column: created_at

Unique constraints: (subdomain, parentDomain)


Mailbox

Table: mailboxes

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
prefixStringYes-
userIdStringYes-Column: user_id
domainIdStringYes-Column: domain_id
isRelayEnabledBooleanYestrueColumn: is_relay_enabled
isInboxEnabledBooleanYesfalseColumn: is_inbox_enabled
quotaBytesBigIntYes1073741824Column: quota_bytes
dailySendLimitIntYes100Column: daily_send_limit
lastUsedAtDateTimeNo-Column: last_used_at
createdAtDateTimeYesnow(Column: created_at

Unique constraints: (prefix, domainId)


MailboxAlias

Table: mailbox_aliases

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
aliasStringYes-Unique
prefixStringYes-
userIdStringYes-Column: user_id
domainIdStringYes-Column: domain_id
activeBooleanYestrue
createdAtDateTimeYesnow(Column: created_at

InboxUser

Table: inbox_users

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
ownerIdStringYes-Column: owner_id
domainIdStringYes-Column: domain_id
emailStringYes-Unique
localPartStringYes-Column: local_part
displayNameStringNo-Column: display_name
passwordHashStringYes-Column: password_hash
allowedUsernamesString[]Yes[]Column: allowed_usernames
allowedDomainIdsString[]Yes[]Column: allowed_domain_ids
stalwartPrincipalIdStringNo-Unique, Column: stalwart_principal_id
quotaBytesBigIntYes1073741824Column: quota_bytes
usedBytesBigIntYes0Column: used_bytes
dailySendLimitIntYes100Column: daily_send_limit
dailySentCountIntYes0Column: daily_sent_count
statusInboxUserStatusYesACTIVE
mustChangePasswordBooleanYesfalseColumn: must_change_password
lastLoginAtDateTimeNo-Column: last_login_at
lastSentAtDateTimeNo-Column: last_sent_at
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
aliasesInboxUserAlias[]Yes-

InboxUserAlias

Table: inbox_user_aliases

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
inboxUserIdStringYes-Column: inbox_user_id
aliasStringYes-Unique
localPartStringYes-Column: local_part
activeBooleanYestrue
createdAtDateTimeYesnow(Column: created_at

Email

Table: emails

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
messageIdStringYes-Unique, Column: message_id
userIdStringYes-Column: user_id
fromEmailStringYes-Column: from_email
fromNameStringNo-Column: from_name
toRecipientsJsonYes-Column: to_recipients
ccRecipientsJsonNo-Column: cc_recipients
bccRecipientsJsonNo-Column: bcc_recipients
replyToJsonNo-Column: reply_to
subjectStringYes-
htmlContentStringNo-Column: html_content
textContentStringNo-Column: text_content
attachmentsJsonNo-
statusemail_statusYesQueued
poolTypePoolTypeYes-Column: pool_type
poolTierPlanTierYes-Column: pool_tier
categoriesJsonNo-
tagsJsonNo-
sourceemail_sourceNo-Column: source
queuedAtDateTimeYesnow(Column: queued_at
sentAtDateTimeNo-Column: sent_at
deliveredAtDateTimeNo-Column: delivered_at
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
batchIdStringNo-Column: batch_id
emailEventsEmailEvent[]Yes-

EmailEvent

Table: email_events

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
emailIdStringYes-Column: email_id
messageIdStringYes-Column: message_id
eventTypeevent_typeYes-Column: event_type
timestampDateTimeYesnow(
processedAtDateTimeYesnow(Column: processed_at
recipientStringNo-
senderStringNo-
subjectStringNo-
detailsJsonNo-
statusCodeStringNo-Column: status_code
statusMessageStringNo-Column: status_message
rawPayloadJsonNo-Column: raw_payload
userIdStringNo-Column: user_id
poolTypePoolTypeNo-Column: pool_type
queuedAtDateTimeNo-Column: queued_at

ScheduledEmail

Table: scheduled_emails

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
messageIdStringYes-Unique, Column: message_id
userIdStringYes-Column: user_id
emailDataJsonYes-Column: email_data
scheduledForDateTimeYes-Column: scheduled_for
statusscheduled_statusYesPending
sentAtDateTimeNo-Column: sent_at
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at

Suppression

Table: suppressions

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
emailStringYes-
reasonsuppression_reasonYes-
detailsJsonNo-
createdAtDateTimeYesnow(Column: created_at

Unique constraints: (userId, email)


Template

Table: templates

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
nameStringYes-
subjectStringYes-
htmlContentStringNo-Column: html_content
textContentStringNo-Column: text_content
versionIntYes1
variablesJsonNo-
extractedVariablesJsonNo-Column: extracted_variables
variablesLastExtractedDateTimeNo-Column: variables_last_extracted
testDataJsonNo-Column: test_data
mjmlContentStringNo-Column: mjml_content
formattemplate_formatYesBLOCKSColumn: format
blockContentJsonNo-Column: block_content
categoryTemplateCategoryYesOTHER
themeIdStringNo-Column: theme_id
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
versionsTemplateVersion[]Yes-
campaignsCampaign[]Yes-

Unique constraints: (userId, name, version)


TemplateVersion

Table: template_versions

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
templateIdStringYes-Column: template_id
versionIntYes-
userIdStringYes-Column: user_id
nameStringYes-
subjectStringYes-
htmlContentStringNo-Column: html_content
textContentStringNo-Column: text_content
variablesJsonNo-
blockContentJsonNo-Column: block_content
createdAtDateTimeYesnow(Column: created_at

Unique constraints: (templateId, version)


BrandTheme

Table: brand_themes

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
nameStringYes"Default"
isDefaultBooleanYesfalseColumn: is_default
primaryColorStringYes"#0070f3"Column: primary_color
secondaryColorStringYes"#1a1a1a"Column: secondary_color
accentColorStringYes"#00c2ff"Column: accent_color
fontFamilyStringYes"-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif"Column: font_family
fontNameStringYes"System"Column: font_name
logoUrlStringNo-Column: logo_url
companyNameStringYes"My Company"Column: company_name
footerHtmlStringNo-Column: footer_html
socialLinksJsonNo-Column: social_links
bgColorStringYes"#f8fafc"Column: bg_color
cardBgColorStringYes"#ffffff"Column: card_bg_color
headingColorStringYes"#0f172a"Column: heading_color
textColorStringYes"#475569"Column: text_color
mutedColorStringYes"#94a3b8"Column: muted_color
borderRadiusStringYes"8px"Column: border_radius
buttonRadiusStringYes"8px"Column: button_radius
buttonStyleStringYes"filled"Column: button_style
designStyleStringYes"default"Column: design_style
defaultFromNameStringNo-Column: default_from_name
defaultFromEmailStringNo-Column: default_from_email
trackingDomainStringNo-Column: tracking_domain
trackingDomainVerifiedBooleanYesfalseColumn: tracking_domain_verified
unsubscribePageTitleStringNo-Column: unsubscribe_page_title
unsubscribePageMessageStringNo-Column: unsubscribe_page_message
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
templatesTemplate[]Yes-
campaignsCampaign[]Yes-

Unique constraints: (userId, name)


UnsubscribePreference

Table: unsubscribe_preferences

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
contactEmailStringYes-Column: contact_email
categoryStringNo-
createdAtDateTimeYesnow(Column: created_at

Unique constraints: (userId, contactEmail, category)


Webhook

Table: webhooks

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
urlStringYes-
eventsJsonYes-
descriptionStringNo-
activeBooleanYestrue
secretHashStringYes-Column: secret_hash
secretPrefixStringYes-Column: secret_prefix
previousSecretHashStringNo-Column: previous_secret_hash
previousSecretValidUntilDateTimeNo-Column: previous_secret_valid_until
failureNotifyBooleanYesfalseColumn: failure_notify
failureEmailsJsonNo-Column: failure_emails
failureThresholdIntYes5Column: failure_threshold
autoDisableAfterIntYes0Column: auto_disable_after
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
webhookDeliveriesWebhookDelivery[]Yes-

WebhookDelivery

Table: webhook_deliveries

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
webhookIdStringYes-Column: webhook_id
eventIdStringNo-Column: event_id
deliveredAtDateTimeYesnow(Column: delivered_at
statusCodeIntYes-Column: status_code
successBooleanYes-
retriesIntYes0
responseTimeIntNo-Column: response_time
errorMessageStringNo-Column: error_message

AbuseReport

Table: abuse_reports

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-
reporterEmailStringNo-
reportTypeStringYes-
priorityAbuseReportPriorityYesLOW
statusAbuseReportStatusYesOPEN
subjectStringNo-
descriptionStringYes-
evidenceJsonNo-
sourceIpStringNo-
assignedToStringNo-
resolutionStringNo-
resolvedAtDateTimeNo-
createdAtDateTimeYesnow(
updatedAtDateTimeYes-
notesAdminNote[]Yes-

AdminNote

Table: admin_notes

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
adminEmailStringYes-
contentStringYes-
isInternalBooleanYestrue
abuseReportIdStringYes-
createdAtDateTimeYesnow(

ReputationScore

Table: reputation_scores

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Unique
scoreIntYes100
trendReputationTrendYesSTABLE
poolPoolTypeYesShared
bounceRateFloatYes0
complaintRateFloatYes0
volumeTodayIntYes0
volumeWeekIntYes0
activeIncidentsIntYes0
lastIncidentAtDateTimeNo-
calculatedAtDateTimeYesnow(
createdAtDateTimeYesnow(
updatedAtDateTimeYes-
historyReputationHistory[]Yes-
incidentsReputationIncident[]Yes-

ReputationHistory

Table: reputation_history

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
reputationIdStringYes-
dateDateTimeYes-
scoreIntYes-
bounceRateFloatYes0
complaintRateFloatYes0
volumeIntYes0
deltaIntYes0
createdAtDateTimeYesnow(

Unique constraints: (reputationId, date)


ReputationIncident

Table: reputation_incidents

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
reputationIdStringYes-
typeStringYes-
severityIncidentSeverityYesWARNING
impactIntYes-
descriptionStringYes-
resolvedBooleanYesfalse
resolvedAtDateTimeNo-
resolutionStringNo-
createdAtDateTimeYesnow(

SystemAlert

Table: system_alerts

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
alertTypeStringYes-Column: alert_type
severityStringYes-
statusStringYes"Unread"
titleStringYes-
messageStringYes-
detailsJsonNo-
sourceStringYes-
acknowledgedBooleanYesfalse
acknowledgedByStringNo-Column: acknowledged_by
acknowledgedAtDateTimeNo-Column: acknowledged_at
resolvedAtDateTimeNo-Column: resolved_at
createdAtDateTimeYesnow(Column: created_at

SystemConfig

Table: system_config

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
keyStringYes-Unique
valueJsonYes-
updatedByStringYes-Column: updated_by
updatedAtDateTimeYesnow(Column: updated_at

MaintenanceWindow

Table: maintenance_windows

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
titleStringYes-
descriptionStringNo-
startTimeDateTimeYes-Column: start_time
endTimeDateTimeYes-Column: end_time
statusmaintenance_window_statusYesScheduled
impactLevelStringYes"Low"Column: impact_level
createdByStringYes-Column: created_by
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at

BackupLog

Table: backup_logs

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
backupTypeStringYes-Column: backup_type
statusbackup_statusYesRunning
sizeBytesBigIntNo-Column: size_bytes
durationIntNo-
locationStringNo-
errorMessageStringNo-Column: error_message
triggeredByStringYes-Column: triggered_by
startedAtDateTimeYesnow(Column: started_at
completedAtDateTimeNo-Column: completed_at
retentionDaysIntYes90Column: retention_days

AlertConfiguration

Table: alert_configurations

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
alertTypeStringYes-Unique, Column: alert_type
enabledBooleanYestrue
thresholdJsonYes-
severityStringYes"Medium"
channelsJsonYes"[]"
recipientsJsonYes"[]"
descriptionStringNo-
updatedByStringYes-Column: updated_by
updatedAtDateTimeYesnow(Column: updated_at
createdAtDateTimeYesnow(Column: created_at

Invoice

Table: invoices

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-
amountDecimalYes-
currencyStringYes"CAD"
statusinvoice_statusYesPending
pdfUrlStringNo-
periodStartDateTimeYes-
periodEndDateTimeYes-
stripeInvoiceIdStringNo-
createdAtDateTimeYesnow(

EmailBatch

Table: email_batches

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
statusbatch_statusYesPending
totalCountIntYes-Column: total_count
sentCountIntYes0Column: sent_count
failedCountIntYes0Column: failed_count
scheduleModeStringYes"immediate"Column: schedule_mode
metadataJsonNo-
createdAtDateTimeYesnow(Column: created_at
completedAtDateTimeNo-Column: completed_at
emailsEmail[]Yes-

SuppressionGroup

Table: suppression_groups

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
nameStringYes-
descriptionStringNo-
isDefaultBooleanYesfalseColumn: is_default
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
membersSuppressionGroupMember[]Yes-

Unique constraints: (userId, name)


SuppressionGroupMember

Table: suppression_group_members

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
groupIdStringYes-Column: group_id
emailStringYes-
createdAtDateTimeYesnow(Column: created_at

Unique constraints: (groupId, email)


DedicatedIp

Table: dedicated_ips

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
addressStringYes-Unique
hostnameStringNo-
warmupBooleanYesfalse
warmupStartedAtDateTimeNo-Column: warmup_started_at
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
poolsIpPoolIp[]Yes-

IpPool

Table: ip_pools

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
nameStringYes-
isDefaultBooleanYesfalseColumn: is_default
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
ipsIpPoolIp[]Yes-

Unique constraints: (userId, name)


IpPoolIp

Table: ip_pool_ips

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
poolIdStringYes-Column: pool_id
ipIdStringYes-Column: ip_id

Unique constraints: (poolId, ipId)


Subuser

Table: subusers

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
usernameStringYes-Unique
emailStringYes-
statussubuser_statusYesActive
permissionsJsonNo-
rateLimitIntNo-Column: rate_limit
ipPoolIdStringNo-Column: ip_pool_id
apiKeyHashStringNo-Unique, Column: api_key_hash
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at

RevokedToken

Table: revoked_tokens

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
jtiStringYes-Unique
userIdStringYes-Column: user_id
expiresAtDateTimeYes-Column: expires_at
revokedAtDateTimeYesnow(Column: revoked_at

Contact

Table: contacts

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
emailStringYes-
firstNameStringNo-Column: first_name
lastNameStringNo-Column: last_name
phoneStringNo-
metadataJsonNo-
sourceContactSourceYes-
statusContactStatusYesACTIVE
subscribedAtDateTimeYesnow(Column: subscribed_at
unsubscribedAtDateTimeNo-Column: unsubscribed_at
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
tagsContactTag[]Yes-
customFieldsContactCustomField[]Yes-
listMembershipsContactListMember[]Yes-
campaignEventsCampaignEvent[]Yes-
campaignRecipientsCampaignRecipient[]Yes-

Unique constraints: (userId, email)


ContactTag

Table: contact_tags

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
contactIdStringYes-Column: contact_id
tagStringYes-

Unique constraints: (contactId, tag)


ContactCustomField

Table: contact_custom_fields

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
contactIdStringYes-Column: contact_id
keyStringYes-
valueStringYes-

Unique constraints: (contactId, key)


Campaign

Table: campaigns

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
nameStringYes-
subjectStringYes-
preheaderTextStringNo-Column: preheader_text
fromNameStringYes-Column: from_name
fromEmailStringYes-Column: from_email
replyToStringNo-Column: reply_to
templateIdStringNo-Column: template_id
htmlContentStringNo-Column: html_content
textContentStringNo-Column: text_content
themeIdStringNo-Column: theme_id
templateVariablesJsonNo-Column: template_variables
statusCampaignStatusYes-
approvalStatusApprovalStatusYesDRAFTColumn: approval_status
approvedByStringNo-Column: approved_by
approvedAtDateTimeNo-Column: approved_at
reviewNotesStringNo-Column: review_notes
scheduledForDateTimeNo-Column: scheduled_for
sentAtDateTimeNo-Column: sent_at
completedAtDateTimeNo-Column: completed_at
sendWindowJsonNo-Column: send_window
maxRecipientsIntNo-Column: max_recipients
estimatedCostDecimalNo-Column: estimated_cost
abTestEnabledBooleanYesfalseColumn: ab_test_enabled
abTestConfigJsonNo-Column: ab_test_config
trackOpensBooleanYestrueColumn: track_opens
trackClicksBooleanYestrueColumn: track_clicks
totalRecipientsIntYes0Column: total_recipients
sentCountIntYes0Column: sent_count
deliveredCountIntYes0Column: delivered_count
openedCountIntYes0Column: opened_count
clickedCountIntYes0Column: clicked_count
bouncedCountIntYes0Column: bounced_count
complainedCountIntYes0Column: complained_count
unsubscribedCountIntYes0Column: unsubscribed_count
parentIdStringNo-Column: parent_id
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
recipientsCampaignRecipient[]Yes-
eventsCampaignEvent[]Yes-

ContactList

Table: contact_lists

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
userIdStringYes-Column: user_id
ownerIdStringYes-Column: owner_id
nameStringYes-
descriptionStringNo-
typeListTypeYes-
segmentRulesJsonNo-Column: segment_rules
contactCountIntYes0Column: contact_count
isArchivedBooleanYesfalseColumn: is_archived
archivedAtDateTimeNo-Column: archived_at
metadataJsonNo-
lastSyncedAtDateTimeNo-Column: last_synced_at
createdAtDateTimeYesnow(Column: created_at
updatedAtDateTimeYes-Column: updated_at
membersContactListMember[]Yes-
campaignsCampaignRecipient[]Yes-

Unique constraints: (userId, name)


ContactListMember

Table: contact_list_members

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
contactIdStringYes-Column: contact_id
listIdStringYes-Column: list_id
addedAtDateTimeYesnow(Column: added_at
addedByStringNo-Column: added_by
removedAtDateTimeNo-Column: removed_at
removedByStringNo-Column: removed_by

Unique constraints: (contactId, listId)


CampaignRecipient

Table: campaign_recipients

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
campaignIdStringYes-Column: campaign_id
listIdStringNo-Column: list_id
contactIdStringNo-Column: contact_id
excludedBooleanYesfalse
statusCampaignRecipientStatusYesPENDING
sentAtDateTimeNo-Column: sent_at
deliveredAtDateTimeNo-Column: delivered_at
openedAtDateTimeNo-Column: opened_at
clickedAtDateTimeNo-Column: clicked_at
bouncedAtDateTimeNo-Column: bounced_at

Unique constraints: (campaignId, listId), (campaignId, contactId)


CampaignEvent

Table: campaign_events

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
campaignIdStringYes-Column: campaign_id
contactIdStringYes-Column: contact_id
eventCampaignEventTypeYes-
metadataJsonNo-
ipAddressStringNo-Column: ip_address
userAgentStringNo-Column: user_agent
occurredAtDateTimeYesnow(Column: occurred_at

DomainAddon

Table: domain_addons

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
domainIdStringYes-Column: domain_id
userIdStringYes-Column: user_id
addonTypeAddonTypeYes-Column: addon_type
statusAddonStatusYesACTIVE
pricePerMonthIntYes1000Column: price_per_month
stripeSubscriptionIdStringNo-Column: stripe_subscription_id
stripeItemIdStringNo-Column: stripe_item_id
enabledAtDateTimeYesnow(Column: enabled_at
cancelledAtDateTimeNo-Column: cancelled_at
expiresAtDateTimeNo-Column: expires_at
metadataJsonNo-

Unique constraints: (domainId, addonType)


PendingSignup

Table: pending_signups

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
tokenStringYes-Unique
emailStringYes-
passwordHashStringYes-Column: password_hash
companyNameStringYes-Column: company_name
subdomainStringYes-
selectedDomainStringYes-Column: selected_domain
planTierStringYes-Column: plan_tier
createdAtDateTimeYesnow(Column: created_at
expiresAtDateTimeYes-Column: expires_at

SystemSetting

Table: system_settings

FieldTypeRequiredDefaultNotes
idStringYescuid(Primary Key
keyStringYes-Unique
valueJsonYes-
descriptionStringNo-
categoryStringYes"general"
isPublicBooleanYesfalseColumn: is_public
updatedAtDateTimeYes-Column: updated_at
updatedByStringNo-Column: updated_by

Enums

template_format

Value
LEGACY
BLOCKS

TemplateCategory

Value
TRANSACTIONAL
AUTHENTICATION
NOTIFICATION
SECURITY
MARKETING
OTHER

email_status

Value
Queued
Processing
Sent
Delivered
Bounced
Failed
Deferred

email_source

Value
API
INBOX
SMTP
INBOUND
SCHEDULED
TEST

event_type

Value
Queued
Processing
Sent
Delivered
Bounced
Deferred
Dropped
Opened
Clicked
SpamComplaint
Unsubscribed

scheduled_status

Value
Pending
Sent
Cancelled
Failed

batch_status

Value
Pending
Processing
Completed
PartialFailure
Failed

suppression_reason

Value
Bounce
Complaint
Unsubscribe
Manual

PlanTier

Value
Free
Starter
Micro
Pro
Scale
Enterprise

PoolType

Value
Shared
Isolated
Dedicated

DomainType

Value
SYSTEM_SUBDOMAIN
CUSTOM
INFRASTRUCTURE

ReputationTrend

Value
STABLE
IMPROVING
DECLINING

IncidentSeverity

Value
INFO
WARNING
CRITICAL

user_role

Value
USER @map("User")
ADMIN @map("Admin")
SUPER_ADMIN @map("SuperAdmin")

account_type

Value
USER @map("User")
SERVICE @map("Service")
SYSTEM @map("System")

user_status

Value
ACTIVE @map("Active")
SUSPENDED @map("Suspended")
BANNED @map("Banned")

InboxUserStatus

Value
ACTIVE @map("Active")
SUSPENDED @map("Suspended")
DELETED @map("Deleted")

AbuseReportStatus

Value
OPEN @map("Open")
REVIEWING @map("Reviewing")
RESOLVED @map("Resolved")
DISMISSED @map("Dismissed")

AbuseReportPriority

Value
LOW @map("Low")
MEDIUM @map("Medium")
HIGH @map("High")
CRITICAL @map("Critical")

invoice_status

Value
Pending
Paid
Failed
Refunded

maintenance_window_status

Value
Scheduled
InProgress
Completed
Cancelled

backup_status

Value
Running
Completed
Failed
Cancelled

subuser_status

Value
Active
Suspended

ContactSource

Value
MANUAL
CSV_IMPORT
API
FORM
SYNC

ContactStatus

Value
ACTIVE
UNSUBSCRIBED
BOUNCED
COMPLAINED
CLEANED

CampaignStatus

Value
DRAFT
SCHEDULED
SENDING
SENT
PAUSED
CANCELLED

ApprovalStatus

Value
DRAFT
PENDING_REVIEW
APPROVED
REJECTED

ListType

Value
STATIC
DYNAMIC

CampaignRecipientStatus

Value
PENDING
SENDING
SENT
DELIVERED
FAILED
BOUNCED

CampaignEventType

Value
SENT
DELIVERED
OPENED
CLICKED
BOUNCED
COMPLAINED
UNSUBSCRIBED
FAILED

AddonType

Value
INBOX_HOSTING
DEDICATED_IP
ADVANCED_ANALYTICS
CUSTOM_DKIM

AddonStatus

Value
ACTIVE
CANCELLED
EXPIRED
PENDING_PAYMENT

On this page