Skip to main content

Database Schema

Auto-generated

This page is generated from apps/backend/prisma/schema.prisma at build time. Do not edit it by hand — change the source and rebuild. This guarantees the reference always matches the code that ships.

UltraTorrent stores everything in PostgreSQL, managed by Prisma. There are 130 models. A single ER diagram of all of them would be unreadable, so they are grouped by domain below.

Never hand-edit the database

Schema changes go through a Prisma migration so every install converges on the same shape. See Database & Prisma.

Automation

2 models.

AutomationRule

Table: automation_rules

ColumnType
idString
nameString
descriptionString?
triggerString
conditionsJson
actionsJson
isEnabledBoolean
priorityInt
createdAtDateTime
updatedAtDateTime

AutomationLog

Table: automation_logs

ColumnType
idString
ruleIdString
statusString
contextJson
messageString?
createdAtDateTime

IMDb catalogue

8 models.

IMDbTitle

Table: imdb_titles

ColumnType
idString
tconstString
titleTypeString
primaryTitleString
originalTitleString
isAdultBoolean
startYearInt?
endYearInt?
runtimeMinutesInt?
genresString[]
createdAtDateTime
updatedAtDateTime

IMDbAka

Table: imdb_akas

ColumnType
idString
titleIdString
titleString
regionString?
languageString?
typesString?
attributesString?
orderingInt?
isOriginalTitleBoolean

IMDbCrew

Table: imdb_crew

ColumnType
idString
titleIdString
directorsString[]
writersString[]

IMDbEpisode

Table: imdb_episodes

ColumnType
idString
episodeTitleIdString
parentTitleIdString
seasonNumberInt?
episodeNumberInt?

IMDbPrincipal

Table: imdb_principals

ColumnType
idString
titleIdString
orderingInt
personIdString
categoryString?
jobString?
charactersString?

IMDbPerson

Table: imdb_persons

ColumnType
idString
nconstString
primaryNameString
birthYearInt?
deathYearInt?
primaryProfessionString[]
knownForTitlesString[]

IMDbRating

Table: imdb_ratings

ColumnType
idString
titleIdString
averageRatingFloat
numVotesInt

IMDbDatasetImport

Table: imdb_dataset_imports

ColumnType
idString
statusString
sourcePathString
startedAtDateTime?
completedAtDateTime?
failedAtDateTime?
errorMessageString?
filesImportedJson
recordsImportedInt
statsJson?
strategyString?
datasetDateDateTime?
createdAtDateTime
updatedAtDateTime

Identity & audit

10 models.

User

Table: users

ColumnType
idString
usernameString
emailString
displayNameString?
timezoneString?
passwordHashString
isActiveBoolean
isSystemBoolean
lastLoginAtDateTime?
failedLoginAttemptsInt
lockedUntilDateTime?
totpSecretString?
totpEnabledBoolean
recoveryCodesString[]
createdAtDateTime
updatedAtDateTime

Role

Table: roles

ColumnType
idString
nameString
descriptionString?
isSystemBoolean
createdAtDateTime
updatedAtDateTime

UserRole

Table: user_roles

ColumnType
userIdString
roleIdString

RolePermission

Table: role_permissions

ColumnType
roleIdString
permissionIdString

ApiKey

Table: api_keys

ColumnType
idString
userIdString
nameString
prefixString
keyHashString
scopesString[]
lastUsedAtDateTime?
expiresAtDateTime?
revokedAtDateTime?
createdAtDateTime

AuditLog

Table: audit_logs

ColumnType
idString
userIdString?
actionString
objectTypeString?
objectIdString?
resultString
ipAddressString?
userAgentString?
metadataJson?
createdAtDateTime

UserNotificationPreference

Table: user_notification_preferences

ColumnType
idString
userIdString
eventKeyString
enabledBoolean
inAppEnabledBoolean
emailEnabledBoolean
telegramEnabledBoolean
discordEnabledBoolean
createdAtDateTime
updatedAtDateTime

UserNotification

Table: user_notifications

ColumnType
idString
userIdString
eventIdString
eventKeyString
categoryString
severityString
titleString
bodyString?
deepLinkString?
presentationJson?
artConnectionIdString?
artPathString?
resourceTypeString?
resourceIdString?
readAtDateTime?
archivedAtDateTime?
createdAtDateTime

UserNotificationChannel

Table: user_notification_channels

ColumnType
idString
userIdString
typeString
enabledBoolean
verifiedAtDateTime?
encryptedConfigJson
maskedDestinationString?
lastTestedAtDateTime?
lastSuccessAtDateTime?
lastFailureAtDateTime?
lastErrorString?
consecutiveFailuresInt
createdAtDateTime
updatedAtDateTime
deletedAtDateTime?

UserNotificationDelivery

Table: user_notification_deliveries

ColumnType
idString
userIdString
notificationIdString?
eventKeyString
channelTypeString
channelIdString?
statusString
attemptsInt
nextAttemptAtDateTime?
lastErrorString?
suppressedReasonString?
createdAtDateTime
sentAtDateTime?
completedAtDateTime?

Indexers

1 model.

Indexer

Table: indexers

ColumnType
idString
nameString
implementationString
protocolString
baseUrlString
configJson
enabledBoolean
priorityInt
categoriesInt[]
capabilitiesJson?
minSeedersInt?
timeoutMsInt
statusString
statusMessageString?
lastTestedAtDateTime?
createdAtDateTime
updatedAtDateTime

Media Manager

39 models.

MediaUserWatch

Table: media_user_watches

ColumnType
idString
userIdString
keyString
mediaTypeString
imdbIdString?
tmdbIdString?
tvdbIdString?
showTitleString?
titleString?
yearInt?
seasonInt?
episodeInt?
watchedAtDateTime
sourceString
syncedAtDateTime?
createdAtDateTime

MediaUserRating

Table: media_user_ratings

ColumnType
idString
userIdString
keyString
mediaTypeString
imdbIdString?
tmdbIdString?
tvdbIdString?
showTitleString?
titleString?
seasonInt?
episodeInt?
ratingInt
ratedAtDateTime
sourceString
syncedAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaLibrary

Table: media_libraries

ColumnType
idString
nameString
kindString
pathString
presetString
templateString?
modeString
autoOrganizeBoolean
isEnabledBoolean
scanIntervalMinutesInt?
lastScanAtDateTime?
watchEnabledBoolean
scanOnStartupBoolean
nfoEnabledBoolean
artworkEnabledBoolean
createdAtDateTime
updatedAtDateTime

MediaShow

Table: media_shows

ColumnType
idString
libraryIdString
mediaTypeString
titleString
yearInt?
pathString
imdbIdString?
canonicalKeyString
episodeCountInt
createdAtDateTime
updatedAtDateTime
tmdbIdString?

MediaItem

Table: media_items

ColumnType
idString
libraryIdString
mediaTypeString
titleString
sortTitleString?
yearInt?
seasonInt?
episodeInt?
episodeEndInt?
matchStatusString
confidenceFloat
lockedBoolean
pathString
duplicateGroupIdString?
seriesImdbIdString?
createdAtDateTime
updatedAtDateTime

MediaFile

Table: media_files

ColumnType
idString
itemIdString
pathString
sizeBigInt
modifiedAtDateTime?
containerString?
videoCodecString?
audioCodecString?
resolutionString?
hdrString?
languageString?
releaseGroupString?
qualityString?
widthInt?
heightInt?
bitrateKbpsInt?
durationSecInt?
audioChannelsInt?
frameRateFloat?
videoBitDepthInt?
chromaSubsamplingString?
colorPrimariesString?
colorTransferString?
colorSpaceString?
hdrFormatString?
techSourceString?
probedAtDateTime?
probeErrorString?
probeAttemptsInt
createdAtDateTime

MediaMetadata

Table: media_metadata

ColumnType
idString
itemIdString
titleString?
originalTitleString?
sortTitleString?
overviewString?
releaseDateDateTime?
yearInt?
runtimeInt?
genresJson
studiosJson
castJson
crewJson
directorsJson
writersJson
ratingFloat?
certificationString?
tagsJson
providerNameString?
fieldSourcesJson?
updatedAtDateTime

MediaShowMetadata

Table: media_show_metadata

ColumnType
idString
showIdString
titleString?
originalTitleString?
sortTitleString?
overviewString?
firstAiredAtDateTime?
yearInt?
statusString?
networksJson
genresJson
studiosJson
castJson
crewJson
ratingFloat?
certificationString?
tagsJson
providerNameString?
fieldSourcesJson?
updatedAtDateTime

MediaSeason

Table: media_seasons

ColumnType
idString
showIdString
seasonNumberInt
titleString?
overviewString?
firstAiredAtDateTime?
providerNameString?
updatedAtDateTime
createdAtDateTime

MediaArtwork

Table: media_artwork

ColumnType
idString
itemIdString?
showIdString?
typeString
urlString?
localPathString?
sourceString?
selectedBoolean
widthInt?
heightInt?
seasonNumberInt?
createdAtDateTime

MediaSubtitle

Table: media_subtitles

ColumnType
idString
itemIdString
pathString
languageString
forcedBoolean
sdhBoolean
sourceString?
createdAtDateTime

MediaExternalId

Table: media_external_ids

ColumnType
idString
itemIdString
providerString
externalIdString
urlString?

MediaCollection

Table: media_collections

ColumnType
idString
nameString
overviewString?
artworkPathString?
createdAtDateTime
updatedAtDateTime

MediaCollectionItem

Table: media_collection_items

ColumnType
collectionIdString
itemIdString

MediaRenameTemplate

Table: media_rename_templates

ColumnType
idString
nameString
mediaTypeString
templateString
isDefaultBoolean
createdAtDateTime
updatedAtDateTime

MediaProcessingJob

Table: media_processing_jobs

ColumnType
idString
typeString
statusString
libraryIdString?
itemIdString?
payloadJson
resultJson?
errorString?
progressInt
startedAtDateTime?
finishedAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaDuplicateGroup

Table: media_duplicate_groups

ColumnType
idString
groupKeyString
groupTypeString
reasonString
statusString
confidenceInt
requiresReviewBoolean
potentialSavingsBytesBigInt
recommendedItemIdString?
recommendationJson?
warningsJson?
versionInt
ignoredReasonString?
ignoredByIdString?
ignoredAtDateTime?
resolvedByIdString?
resolvedAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaDuplicateScanState

Table: media_duplicate_scan_state

ColumnType
idString
inputDigestString
updatedAtDateTime
createdAtDateTime

MediaDuplicateCandidate

Table: media_duplicate_candidates

ColumnType
idString
groupIdString
itemIdString
pathString
fileSizeBigInt
hashString?
qualityScoreInt
recommendationRankInt
recommendationReasonsJson?
selectedActionString
createdAtDateTime
updatedAtDateTime

MediaDuplicateResolution

Table: media_duplicate_resolutions

ColumnType
idString
scopeString
groupIdString?
statusString
keepItemIdString?
canonicalShowIdString?
inputFingerprintString?
previewJson?
groupVersionInt
expectedSavingsBytesBigInt
actualSavingsBytesBigInt
errorSummaryString?
createdByIdString?
startedAtDateTime?
completedAtDateTime?
failedAtDateTime?
createdAtDateTime

MediaDuplicateResolutionAction

Table: media_duplicate_resolution_actions

ColumnType
idString
resolutionIdString
actionTypeString
statusString
sourcePathString?
destinationPathString?
errorMessageString?
metadataJson?
createdAtDateTime
updatedAtDateTime

MediaAnalyticsImportSource

Table: media_analytics_import_sources

ColumnType
idString
nameString
typeString
baseUrlString
encryptedApiKeyString?
enabledBoolean
syncEnabledBoolean
lastConnectionTestAtDateTime?
lastImportAtDateTime?
lastIncrementalSyncAtDateTime?
importCursorJson?
sourceVersionString?
statusString?
notesString?
createdAtDateTime
updatedAtDateTime

MediaAnalyticsImportJob

Table: media_analytics_import_jobs

ColumnType
idString
sourceIdString
statusString
modeString
selectedSectionsJson?
progressInt
totalRecordsInt
processedRecordsInt
importedRecordsInt
skippedRecordsInt
failedRecordsInt
warningsJson?
errorsJson?
startedAtDateTime?
completedAtDateTime?
createdByIdString?
createdAtDateTime
updatedAtDateTime

MediaNfoFile

Table: media_nfo_files

ColumnType
idString
itemIdString
typeString
pathString
generatedAtDateTime

MediaRenameOperation

Table: media_rename_operations

ColumnType
idString
sourceString
destinationString?
actionString
kindString
modeString
statusString
messageString?
torrentHashString?
runIdString?
undoneAtDateTime?
createdAtDateTime

MediaRenameJob

Table: media_rename_jobs

ColumnType
idString
torrentHashString?
engineIdString?
statusString
modeString
sourcePathString
destinationPathString?
mediaTypeString?
parsedMetadataJson?
providerMetadataJson?
confidenceScoreInt?
dryRunResultJson?
executedByString?
createdAtDateTime
completedAtDateTime?

MediaRenameFile

Table: media_rename_files

ColumnType
idString
jobIdString
originalPathString
proposedPathString?
finalPathString?
fileTypeString?
actionString
statusString
errorMessageString?
createdAtDateTime
updatedAtDateTime

MediaNamingTemplate

Table: media_naming_templates

ColumnType
idString
nameString
mediaTypeString
serverPresetString
templateString
enabledBoolean
createdAtDateTime
updatedAtDateTime

MediaCleanupPolicy

Table: media_cleanup_policies

ColumnType
idString
nameString
descriptionString?
statusString
enabledBoolean
modeString
scheduleCronString?
freeSpaceTriggerPercentInt?
currentDraftVersionIdString?
publishedVersionIdString?
createdByIdString?
updatedByIdString?
lastRunAtDateTime?
createdAtDateTime
updatedAtDateTime
archivedAtDateTime?

MediaCleanupPolicyVersion

Table: media_cleanup_policy_versions

ColumnType
idString
policyIdString
versionNumberInt
statusString
documentJson
checksumString
requiredPermissionsString[]
factKeysString[]
changeNotesString?
createdByIdString?
createdAtDateTime
publishedAtDateTime?
archivedAtDateTime?

MediaCleanupRun

Table: media_cleanup_runs

ColumnType
idString
policyIdString
policyVersionIdString
triggerString
statusString
simulateBoolean
jobIdString?
inputDigestString?
filesScannedInt
itemsEvaluatedInt
candidatesMatchedInt
candidatesExcludedInt
candidatesEligibleInt
estimatedReclaimBytesBigInt
actualReclaimBytesBigInt
exclusionBreakdownJson?
scopeItemIdsJson?
errorSummaryString?
createdByIdString?
startedAtDateTime?
completedAtDateTime?
failedAtDateTime?
cancelledAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaCleanupCandidate

Table: media_cleanup_candidates

ColumnType
idString
runIdString
policyVersionIdString
mediaItemIdString?
mediaFileIdString?
mediaLibraryIdString?
pathString
fileSizeBytesBigInt
statusString
exclusionReasonString?
fingerprintString
reasonSnapshotJson
rankScoreFloat?
rankReasonsJson?
replacementFileIdString?
replacementReasonsJson?
protectionStateJson?
estimatedReclaimBytesBigInt
createdAtDateTime
updatedAtDateTime

MediaCleanupPlan

Table: media_cleanup_plans

ColumnType
idString
runIdString
policyVersionIdString
statusString
actionString
retentionDaysInt?
candidateCountInt
estimatedReclaimBytesBigInt
actualReclaimBytesBigInt
executionJobIdString?
createdByIdString?
approvedByIdString?
approvedAtDateTime?
rejectedByIdString?
rejectedAtDateTime?
rejectionReasonString?
expiresAtDateTime?
executedAtDateTime?
errorSummaryString?
createdAtDateTime
updatedAtDateTime

MediaCleanupAction

Table: media_cleanup_actions

ColumnType
idString
planIdString
candidateIdString
mediaItemIdString?
mediaFileIdString?
actionTypeString
statusString
sourcePathString
destinationPathString?
pinnedFingerprintString
fileSizeBytesBigInt
reclaimedBytesBigInt
skipReasonString?
errorCodeString?
errorMessageString?
startedAtDateTime?
completedAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaCleanupProtection

Table: media_cleanup_protections

ColumnType
idString
targetTypeString
mediaItemIdString?
mediaFileIdString?
mediaShowIdString?
mediaLibraryIdString?
seasonNumberInt?
episodeNumberInt?
externalIdentityKeyString?
pathPrefixString?
tagValueString?
collectionIdString?
torrentHashString?
canonicalPathSnapshotString?
protectionTypeString
conditionKindString?
conditionConfigJson?
reasonString
protectedUntilDateTime?
createdByUserIdString
createdAtDateTime
revokedAtDateTime?
revokedByUserIdString?
revokeReasonString?

MediaCleanupQuarantineItem

Table: media_cleanup_quarantine_items

ColumnType
idString
actionIdString?
planIdString?
runIdString?
policyVersionIdString?
mediaItemIdString?
mediaFileIdString?
originalPathString
quarantinePathString
storageRootString
fileSizeBytesBigInt
fingerprintString
statusString
restoreDeadlineDateTime?
quarantinedAtDateTime
restoredAtDateTime?
restoredByIdString?
purgedAtDateTime?
purgedByIdString?

MediaPlaybackAggregate

Table: media_playback_aggregates

ColumnType
idString
mediaItemIdString
startedPlayCountInt
completedPlayCountInt
uniqueViewerCountInt
lastPlayedAtDateTime?
maximumProgressPercentInt
averageProgressPercentFloat
totalPlaybackSecondsBigInt
completionThresholdPercentInt
sourceRowCountInt
resolvedSourceRowCountInt
computedAtDateTime
updatedAtDateTime

MediaIntakeJob

Table: media_intake_jobs

ColumnType
idString
profileIdString
torrentHashString?
engineIdString?
sourcePathString
importedPathString?
stateString
resumeStateString?
strategyString?
strategyReasonString?
idempotencyKeyString
attemptsInt
lastErrorString?
qualityScoreFloat?
mediaItemIdString?
libraryIdString?
startedAtDateTime?
importedAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaIntakeEvent

Table: media_intake_events

ColumnType
idString
jobIdString
fromStateString?
toStateString
messageString?
dataJson?
userIdString?
createdAtDateTime

Media acquisition (Smart Download)

7 models.

MediaAcquisitionWatchlistItem

Table: media_acquisition_watchlist_items

ColumnType
idString
typeString
titleString
normalizedTitleString
titleAliasesString[]
yearInt?
externalIdsJson?
seasonNumberInt?
episodeNumberInt?
collectionNameString?
statusString
priorityInt
profileIdString?
rssRuleIdString?
targetLibraryIdString?
libraryShowIdString?
settingsJson?
createdByString?
createdAtDateTime
updatedAtDateTime

WantedEpisode

Table: wanted_episodes

ColumnType
idString
watchlistItemIdString
seriesTconstString
episodeTconstString?
seasonNumberInt
episodeNumberInt
episodeTitleString?
airYearInt?
statusString
searchStatusString
lastSearchedAtDateTime?
grabbedAtDateTime?
grabbedEvaluationIdString?
downloadUrlString?
releaseTitleString?
torrentHashString?
deadReleasesString[]
intakeRuleIdString?
lastCheckedAtDateTime
createdAtDateTime

WantedMovie

Table: wanted_movies

ColumnType
idString
watchlistItemIdString
movieTconstString
titleString
yearInt?
statusString
searchStatusString
lastSearchedAtDateTime?
grabbedAtDateTime?
grabbedEvaluationIdString?
downloadUrlString?
releaseTitleString?
lastCheckedAtDateTime
createdAtDateTime

MediaAcquisitionProfile

Table: media_acquisition_profiles

ColumnType
idString
nameString
descriptionString?
mediaTypeString
minimumScoreInt
approvalScoreInt
minimumResolutionString?
preferredResolutionString?
preferredSourceString?
preferredCodecString?
preferredAudioString?
preferredHdrString?
preferredLanguagesJson?
requiredTermsJson?
excludedTermsJson?
preferredGroupsJson?
minSizeBytesBigInt?
maxSizeBytesBigInt?
qualityRulesJson?
duplicateRulesJson?
storageRulesJson?
automationRulesJson?
enabledBoolean
createdByString?
createdAtDateTime
updatedAtDateTime

MediaAcquisitionEvaluation

Table: media_acquisition_evaluations

ColumnType
idString
sourceTypeString
sourceIdString?
releaseNameString
parsedMetadataJson?
watchlistItemIdString?
profileIdString?
libraryMatchJson?
releaseScoreJson?
duplicateRiskJson?
qualityGapJson?
storageCheckJson?
serverSelectionJson?
decisionString
decisionReasonString?
priorityInt
confidenceInt
requiresApprovalBoolean
approvalStatusString
actionTakenString?
torrentHashString?
traceJson?
createdAtDateTime
updatedAtDateTime

MediaAcquisitionAction

Table: media_acquisition_actions

ColumnType
idString
evaluationIdString
actionTypeString
statusString
payloadJson?
resultJson?
createdByString?
createdAtDateTime
completedAtDateTime?
errorMessageString?

MediaAcquisitionHistory

Table: media_acquisition_history

ColumnType
idString
watchlistItemIdString?
evaluationIdString?
eventTypeString
messageString
metadataJson?
createdAtDateTime

Media server analytics

9 models.

MediaServerIntegration

Table: media_server_integrations

ColumnType
idString
nameString
kindString
configJson
isEnabledBoolean
lastRefreshAtDateTime?
isDefaultBoolean
statusString?
serverVersionString?
platformString?
capabilitiesJson?
lastHealthCheckAtDateTime?
notesString?
createdAtDateTime
updatedAtDateTime

MediaServerSession

Table: media_server_sessions

ColumnType
idString
connectionIdString
providerSessionIdString
providerUserIdString?
userNameString?
titleString
showTitleString?
episodeTitleString?
missedPollsInt
seasonNumberInt?
episodeNumberInt?
yearInt?
externalIdsJson?
mediaTypeString?
libraryNameString?
deviceString?
clientString?
ipAddressString?
playbackStateString?
progressPercentInt?
playbackMethodString?
videoCodecString?
audioCodecString?
resolutionString?
containerString?
bitrateKbpsInt?
artPathString?
startedAtDateTime
updatedAtDateTime

MediaServerWatchHistory

Table: media_server_watch_history

ColumnType
idString
connectionIdString?
importSourceIdString?
providerHistoryIdString?
providerUserIdString?
userNameString?
titleString
mediaTypeString?
libraryNameString?
deviceString?
clientString?
ipAddressString?
startedAtDateTime
stoppedAtDateTime?
watchedSecondsInt?
percentCompleteInt?
playbackMethodString?
resolutionString?
videoCodecString?
audioCodecString?
containerString?
bitrateKbpsInt?
importSourceString?
importedAtDateTime?
createdAtDateTime

MediaServerLibrary

Table: media_server_libraries

ColumnType
idString
connectionIdString
providerLibraryIdString
nameString
typeString
itemCountInt?
lastSyncedAtDateTime
createdAtDateTime
updatedAtDateTime

MediaServerUser

Table: media_server_users

ColumnType
idString
connectionIdString?
providerUserIdString?
userNameString
emailString?
playsInt
lastSeenAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaProviderSyncRun

Table: media_provider_sync_runs

ColumnType
idString
connectionIdString?
typeString
statusString
librariesSyncedInt
usersSyncedInt
messageString?
startedAtDateTime
finishedAtDateTime?

MediaServerNewsletter

Table: media_server_newsletters

ColumnType
idString
nameString
brandTitleString?
enabledBoolean
frequencyString
recipientEmailsJson
contentSectionsJson
subjectTemplateString?
dateRangeModeString
lastDaysInt
startDateDateTime?
sendWeekdayInt?
sendHourInt
sendMinuteInt
timezoneString?
lastSuccessfulSendAtDateTime?
nextRunAtDateTime?
createdAtDateTime
updatedAtDateTime

MediaServerNewsletterDelivery

Table: media_server_newsletter_deliveries

ColumnType
idString
newsletterIdString
recipientEmailString
statusString
subjectString?
sentAtDateTime?
errorMessageString?
createdAtDateTime

MediaServerConfig

Table: media_server_configs

ColumnType
idString
providerString
nameString
baseUrlString
encryptedConfigString
enabledBoolean
createdAtDateTime
updatedAtDateTime

Platform

35 models.

TraktAccount

Table: trakt_accounts

ColumnType
idString
userIdString
usernameString?
slugString?
accessTokenString
refreshTokenString
expiresAtDateTime
scopeString?
syncCollectionBoolean
syncWatchedBoolean
syncRatingsBoolean
syncWatchlistBoolean
scrobbleEnabledBoolean
mediaServerUserNameString?
lastCollectionSyncAtDateTime?
lastWatchedSyncAtDateTime?
lastRatingsSyncAtDateTime?
lastWatchlistSyncAtDateTime?
lastErrorString?
createdAtDateTime
updatedAtDateTime

Permission

Table: permissions

ColumnType
idString
keyString
descriptionString?

RefreshToken

Table: refresh_tokens

ColumnType
idString
userIdString
tokenHashString
familyString
userAgentString?
ipAddressString?
expiresAtDateTime
revokedAtDateTime?
createdAtDateTime

TransferLedger

Table: transfer_ledgers

ColumnType
engineIdString
baselineDownloadedBigInt
baselineUploadedBigInt
baselineSourceString?
baselineAtDateTime?
accruedDownloadedBigInt
accruedUploadedBigInt
resetsObservedInt
createdAtDateTime
updatedAtDateTime

RetiredTorrentTransfer

Table: retired_torrent_transfers

ColumnType
idString
engineIdString
hashString
nameString
downloadedBigInt
uploadedBigInt
ratioFloat
firstSeenAtDateTime?
retiredAtDateTime

ParkedTorrent

Table: parked_torrents

ColumnType
hashString
engineIdString
nameString
reasonString
parkedAtDateTime
probingSinceDateTime?
lastProbedAtDateTime?
probeCountInt
lastSeedersInt
updatedAtDateTime

DownloadPath

Table: download_paths

ColumnType
idString
labelString
pathString
isDefaultBoolean
createdAtDateTime

Setting

Table: settings

ColumnType
keyString
valueJson
updatedAtDateTime

SystemEvent

Table: system_events

ColumnType
idString
typeString
severityString
payloadJson
createdAtDateTime

ModuleState

Table: module_states

ColumnType
idString
moduleIdString
enabledBoolean
statusString
tierString
reasonString?
metadataJson?
createdAtDateTime
updatedAtDateTime

ModuleEvent

Table: module_events

ColumnType
idString
moduleIdString
eventTypeString
messageString
metadataJson?
userIdString?
createdAtDateTime

TrashItem

Table: trash_items

ColumnType
idString
originalPathString
nameString
trashPathString
storageRootString
isDirectoryBoolean
sizeBigInt
deletedByIdString?
deletedAtDateTime

AcquisitionMatchCandidate

Table: acquisition_match_candidates

ColumnType
idString
priorityOrderInt
nameString
descriptionString?
enabledBoolean
matchTypeString
patternString?
requiredTermsJson
excludedTermsJson
qualityRulesJson
sizeRulesJson
lastMatchedAtDateTime?
matchCountInt
createdAtDateTime
updatedAtDateTime

SubtitleProviderConfig

Table: subtitle_provider_configs

ColumnType
idString
providerString
isEnabledBoolean
priorityInt
configJson
healthyBoolean?
lastCheckedAtDateTime?
lastErrorString?
quotaRemainingInt?
quotaResetAtDateTime?
createdAtDateTime
updatedAtDateTime

SubtitleFingerprint

Table: subtitle_fingerprints

ColumnType
idString
itemIdString
fileIdString?
movieHashString?
sha256String?
fileSizeBigInt
runtimeSecInt?
frameRateFloat?
resolutionString?
videoCodecString?
audioCodecString?
audioLanguageString?
containerString?
sourceString?
releaseGroupString?
hdrString?
editionString?
seasonInt?
episodeInt?
imdbIdString?
tmdbIdString?
tvdbIdString?
mediaTypeString?
computedAtDateTime
updatedAtDateTime

SubtitleCandidate

Table: subtitle_candidates

ColumnType
idString
itemIdString
providerString
providerFileIdString?
languageString
releaseNameString?
filenameString?
movieHashString?
imdbIdString?
tmdbIdString?
tvdbIdString?
seasonInt?
episodeInt?
runtimeSecInt?
downloadsInt?
uploaderString?
ratingFloat?
trustedUploaderBoolean
machineTranslatedBoolean
hearingImpairedBoolean
forcedBoolean
fileSizeBigInt?
downloadUrlString?
matchLevelInt?
scoreInt
scoreTierString?
scoreBreakdownJson?
rawMetadataJson?
createdAtDateTime

SubtitleDownload

Table: subtitle_downloads

ColumnType
idString
itemIdString
providerString
languageString
forcedBoolean
hearingImpairedBoolean
pathString
releaseNameString?
scoreInt
scoreTierString?
matchLevelInt?
fileSizeBigInt
statusString
validationIdString?
providerFileIdString?
createdAtDateTime
updatedAtDateTime

SubtitleValidation

Table: subtitle_validations

ColumnType
idString
formatString?
validBoolean
cueCountInt
startMsInt?
endMsInt?
issuesJson
runtimeDeltaSecInt?
methodString?
createdAtDateTime

SubtitleLanguageSetting

Table: subtitle_language_settings

ColumnType
idString
libraryIdString
requiredLanguagesJson
preferredLanguagesJson
forcedLanguagesJson
hearingImpairedBoolean
machineTranslationBoolean
preferredProvidersJson
synchronizationRequiredBoolean
minimumScoreInt
automaticReplacementBoolean
createdAtDateTime
updatedAtDateTime

SubtitleHistory

Table: subtitle_history

ColumnType
idString
itemIdString?
actionString
providerString?
languageString?
scoreInt?
messageString?
metadataJson?
createdAtDateTime

SubtitleJob

Table: subtitle_jobs

ColumnType
idString
typeString
statusString
libraryIdString?
itemIdString?
providerString?
languageString?
payloadJson
resultJson?
errorString?
progressInt
startedAtDateTime?
finishedAtDateTime?
createdAtDateTime
updatedAtDateTime

SubtitleSynchronization

Table: subtitle_synchronizations

ColumnType
idString
downloadIdString
providerString
methodString
versionString?
offsetMsInt
driftFactorFloat
confidenceFloat?
matchedRegionsJson?
originalPathString
syncedPathString
statusString
messageString?
createdAtDateTime

PlatformJob

Table: platform_jobs

ColumnType
idString
typeString
nameString?
descriptionString?
moduleKeyString
workspaceKeyString?
sourceTypeString
sourceIdString?
correlationIdString?
parentJobIdString?
rootJobIdString?
scheduleIdString?
workflowExecutionIdString?
resourceTypeString?
resourceIdString?
libraryIdString?
mediaItemIdString?
statusString
phaseString?
progressPercentInt
progressCurrentInt?
progressTotalInt?
progressUnitString?
statusMessageKeyString?
statusMessageParamsJson?
queuedAtDateTime
scheduledForDateTime?
startedAtDateTime?
heartbeatAtDateTime?
completedAtDateTime?
failedAtDateTime?
cancelledAtDateTime?
pausedAtDateTime?
resumedAtDateTime?
expiresAtDateTime?
priorityInt
queueNameString?
workerIdString?
attemptInt
maxAttemptsInt

PlatformJobEvent

Table: platform_job_events

ColumnType
idString
jobIdString
sequenceInt
levelString
eventTypeString
messageKeyString?
messageParamsJson?
sanitizedMessageString?
progressInt?
metadataJson?
createdAtDateTime

Workflow

Table: workflows

ColumnType
idString
nameString
descriptionString?
workspaceKeyString?
enabledBoolean
statusString
tagsString[]
currentDraftVersionIdString?
publishedVersionIdString?
createdByIdString?
updatedByIdString?
createdAtDateTime
updatedAtDateTime
archivedAtDateTime?

WorkflowVersion

Table: workflow_versions

ColumnType
idString
workflowIdString
versionNumberInt
statusString
graphJson
triggerSummaryJson?
requiredPermissionsString[]
checksumString
changeNotesString?
createdByIdString?
createdAtDateTime
publishedAtDateTime?
archivedAtDateTime?

WorkflowExecution

Table: workflow_executions

ColumnType
idString
workflowIdString
workflowVersionIdString
triggerTypeString?
triggerEventIdString?
triggerSourceString?
correlationIdString?
traceIdString?
statusString
inputContextJson?
outputSummaryJson?
currentNodeIdsString[]
jobIdString?
executionIdentityUserIdString?
resumeAtDateTime?
expiresAtDateTime?
heartbeatAtDateTime?
parentExecutionIdString?
depthInt
startedAtDateTime?
completedAtDateTime?
failedAtDateTime?
cancelledAtDateTime?
createdAtDateTime
updatedAtDateTime

WorkflowNodeExecution

Table: workflow_node_executions

ColumnType
idString
workflowExecutionIdString
nodeIdString
nodeTypeString
statusString
attemptInt
maxAttemptsInt
inputSummaryJson?
outputSummaryJson?
jobIdString?
errorCodeString?
errorMessageString?
warningsJson?
startedAtDateTime?
completedAtDateTime?
createdAtDateTime
updatedAtDateTime

WorkflowApproval

Table: workflow_approvals

ColumnType
idString
workflowExecutionIdString
nodeExecutionIdString?
statusString
requestedFromUserIdString?
requestedFromRoleIdString?
requiredPermissionString?
riskLevelString?
requestedAtDateTime
respondedAtDateTime?
respondedByIdString?
commentString?
expiresAtDateTime?

WorkflowVariable

Table: workflow_variables

ColumnType
idString
scopeString
workflowIdString?
keyString
valueTypeString
encryptedValueString?
plainValueJson?
descriptionString?
createdByIdString?
createdAtDateTime
updatedAtDateTime

WorkflowTemplate

Table: workflow_templates

ColumnType
idString
keyString
nameKeyString
descriptionKeyString?
categoryString
graphJson
requiredModulesString[]
requiredPermissionsString[]
defaultEnabledBoolean
createdAtDateTime
updatedAtDateTime

StorageProfile

Table: storage_profiles

ColumnType
idString
nameString
descriptionString?
isDefaultBoolean
isEnabledBoolean
stagingRootString
tempRootString?
failedRootString?
quarantineRootString?
movieLibraryIdString?
tvLibraryIdString?
musicLibraryIdString?
defaultStrategyString
createdAtDateTime
updatedAtDateTime

IntakeIntent

Table: intake_intents

ColumnType
hashString
engineIdString
profileIdString
createdByIdString?
createdAtDateTime
consumedAtDateTime?

PathMappingRule

Table: path_mapping_rules

ColumnType
idString
spaceString
fromPrefixString
toPrefixString
scopeIdString?
priorityInt
isEnabledBoolean
createdAtDateTime
updatedAtDateTime

StorageCapabilityProbe

Table: storage_capability_probes

ColumnType
idString
profileIdString
sourceRootString
targetRootString
sameDeviceBoolean
hardlinkBoolean
reflinkBoolean
symlinkBoolean
providerRelocationBoolean
filesystemString?
detailString?
errorString?
detectedAtDateTime

RSS

8 models.

RssFeed

Table: rss_feeds

ColumnType
idString
nameString
urlString
refreshIntervalInt
isEnabledBoolean
lastFetchedAtDateTime?
createdAtDateTime
updatedAtDateTime

RssRule

Table: rss_rules

ColumnType
idString
feedIdString
nameString
includeRegexString?
excludeRegexString?
categoryIdString?
savePathString?
autoDownloadBoolean
isEnabledBoolean
createdAtDateTime
importModeString
storageProfileIdString?
preMigrationSavePathString?
mediaTypeString?
showStatusString?
showStatusProviderString?
showStatusProviderIdString?
showStatusCheckedAtDateTime?
showStatusRecommendationString?
showFirstAirDateDateTime?
showLastAirDateDateTime?
showNextEpisodeAirDateDateTime?
showStatusWarningsJson
allowInactiveShowMonitoringBoolean

TvShowStatus

Table: tv_show_status

ColumnType
idString
providerString
providerShowIdString
titleString
normalizedTitleString
originalStatusString?
normalizedStatusString
recommendationString
confidenceFloat
firstAirDateDateTime?
lastAirDateDateTime?
nextEpisodeAirDateDateTime?
lastEpisodeTitleString?
nextEpisodeTitleString?
totalSeasonsInt?
totalEpisodesInt?
overviewString?
posterUrlString?
warningsJson
checkedAtDateTime

RssAcquisition

Table: rss_acquisitions

ColumnType
idString
rssRuleIdString
identityString
priorityOrderInt
releaseTitleString
torrentHashString?
createdAtDateTime
updatedAtDateTime

RssSmartMatchTemplate

Table: rss_smart_match_templates

ColumnType
idString
rssRuleIdString
sourceNameString
parsedMetadataJson
generatedCandidatesJson
confidenceScoreInt
userEditedBoolean
createdAtDateTime
updatedAtDateTime

RssRuleMatchCandidate

Table: rss_rule_match_candidates

ColumnType
idString
rssRuleIdString
priorityOrderInt
nameString
descriptionString?
enabledBoolean
matchTypeString
patternString?
requiredTermsJson
excludedTermsJson
qualityRulesJson
sizeRulesJson
feedScopeJson
lastMatchedAtDateTime?
matchCountInt
createdAtDateTime
updatedAtDateTime

RssRuleMatchEvaluation

Table: rss_rule_match_evaluations

ColumnType
idString
rssRuleIdString
rssItemIdString
matchedCandidateIdString?
matchedCandidatePriorityInt?
resultString
evaluationTraceJson
actionTakenString?
torrentHashString?
createdAtDateTime

RssHistory

Table: rss_history

ColumnType
idString
feedIdString
itemGuidString
titleString
linkString
magnetString?
infoHashString?
matchedBoolean
downloadedBoolean
regrabRequestedAtDateTime?
createdAtDateTime

Torrents

11 models.

TorrentEngine

Table: torrent_engines

ColumnType
idString
nameString
kindString
configJson
isDefaultBoolean
isEnabledBoolean
createdAtDateTime
updatedAtDateTime

TorrentSnapshot

Table: torrent_snapshots

ColumnType
idString
engineIdString
hashString
nameString
stateString
progressFloat
sizeBigInt
downloadedBigInt
uploadedBigInt
ratioFloat
downloadRateInt
uploadRateInt
savePathString
labelString?
categoryIdString?
addedAtDateTime?
completedAtDateTime?
capturedAtDateTime

TorrentCategory

Table: torrent_categories

ColumnType
idString
nameString
colorString?
savePathString?
createdAtDateTime

TorrentTag

Table: torrent_tags

ColumnType
idString
nameString
colorString?
createdAtDateTime

Table: torrent_tag_links

ColumnType
snapshotIdString
tagIdString

TorrentSchedulerEngineConfig

Table: torrent_scheduler_engine_configs

ColumnType
engineIdString
modeString
modeChangedAtDateTime?
modeChangedByString?
nativeSettingsSnapshotJson?
nativeSettingsSnapshotAtDateTime?
lastSweepAtDateTime?
lastSuccessfulSweepAtDateTime?
healthStateString
healthDetailString?
createdAtDateTime
updatedAtDateTime

TorrentSchedulerPolicy

Table: torrent_scheduler_policies

ColumnType
idString
nameString
enabledBoolean
scopeTypeString
scopeIdString?
maxConcurrentDownloadsInt?
maxConcurrentSeedsInt?
maxTotalActiveInt?
maxDownloadRateKbpsInt?
maxUploadRateKbpsInt?
reserveDownloadBandwidthPercentInt?
reserveSeedBandwidthPercentInt?
seedPolicyJson?
createdByString?
createdAtDateTime
updatedAtDateTime

TorrentSchedulerDecision

Table: torrent_scheduler_decisions

ColumnType
idString
engineIdString
generatedAtDateTime
modeString
summaryJson
limitationsJson?
proposedActionsInt
appliedActionsInt
durationMsInt?
resultString

TorrentSchedulerState

Table: torrent_scheduler_states

ColumnType
engineIdString
hashString
schedulerPausedAtDateTime?
reasonCodeString?
lastActionAtDateTime?
updatedAtDateTime

TorrentSchedulerWindow

Table: torrent_scheduler_windows

ColumnType
idString
nameString
enabledBoolean
daysOfWeekInt[]
startMinuteInt
endMinuteInt
timeZoneString
priorityInt
maxConcurrentDownloadsInt?
maxConcurrentSeedsInt?
maxTotalActiveInt?
maxDownloadRateKbpsInt?
maxUploadRateKbpsInt?
allowNewDownloadsBoolean
createdByString?
createdAtDateTime
updatedAtDateTime

TorrentSchedulerOverride

Table: torrent_scheduler_overrides

ColumnType
idString
engineIdString
hashString
kindString
expiresAtDateTime?
clearedAtDateTime?
reasonString?
createdByString?
createdAtDateTime

See also