Generated reference · Data / schema

veritas — data model

Tables, columns, enums, and foreign-key relations — generated from the committed Prisma schema.

67tables45enums87relations

On this page

The persisted data model of veritas, generated from its schema.prisma — every table (Prisma model + its Postgres @@map name), its columns, the enums it defines, and the foreign-key edges that wire them together.

67Tables
769Columns
45Enums
87FK relations

Tables (67)#

Sourcesources#
id String PKslug String uniqname Stringkind SourceKindstatus SourceStatuscanonicalDomain String?homeUrl String?countryCode Stringregion String?languages String[]notes String?ownershipName String?ownershipType OwnershipTypeownershipDetails Json?biasPoliticalScore Float?biasConfidence Float? +15 more
SourceFeedsource_feeds#
id String PKsourceId StringfeedType FeedTypeurl StringisActive BooleanfetchIntervalSeconds Intpriority IntlastFetchedAt DateTime?lastHttpStatus Int?etag String?lastModified String?consecutiveFailures IntbackoffUntil DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTime +1 more
FK: sourceSource Cascade
FeedItemfeed_items#
id String PKsourceFeedId StringdedupeKey Stringguid String?url Stringtitle String?summary String?contentHtml String?publishedAt DateTime?authors String[]categories String[]raw Json?firstSeenAt DateTimelastSeenAt DateTimecreatedAt DateTimeupdatedAt DateTime +1 more
FK: sourceFeedSourceFeed Cascade
NormalizedFeedItemnormalized_feed_items#
id String PKfeedItemId String uniqnormalizedTitle StringnormalizedText StringnormalizedHtml String?extractedAt DateTimemetadata JsoncreatedAt DateTimeupdatedAt DateTimearticle Article?
FK: feedItemFeedItem Cascade
SocialMonitorsocial_monitors#
id String PKplatform SocialPlatformquery StringisActive BooleanfetchIntervalSeconds IntsinceId String?lastFetchedAt DateTime?lastHttpStatus Int?consecutiveFailures IntbackoffUntil DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTimeposts SocialPost[]
SocialPostsocial_posts#
id String PKmonitorId String?platform SocialPlatformexternalId StringauthorExternalId String?authorUsername String?url String?content String?publishedAt DateTime?raw Json?metadata JsonfirstSeenAt DateTimelastSeenAt DateTimecreatedAt DateTimeupdatedAt DateTime
FK: monitorSocialMonitor SetNull
Articlearticles#
id String PKcanonicalNormalizedFeedItemId String? uniqslug String uniqstatus ArticleStatuscontentType ArticleContentTypepriority ContentPriorityheadline Stringsummary String?body StringbodyHtml String?languageTag StringsourceId String?sourceUrl String?sourcePublishedAt DateTime?featuredMediaAssetId String?audioVersionUrl String? +41 more
FK: canonicalNormalizedFeedItemNormalizedFeedItem SetNull · sourceSource SetNull · featuredMediaAssetMediaAsset SetNull · reviewedByUserAuthUser SetNull · storyClusterStoryCluster SetNull · relatedFromArticleRelated · relatedToArticleRelated
Authorauthors#
id String PKslug String uniqname Stringbio String?avatarUrl String?sourceId String?twitterHandle String?linkedinUrl String?facebookUrl String?websiteUrl String?expertise String[]metadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleAuthor[]userFollows UserAuthorFollow[]
FK: sourceSource SetNull
ArticleAuthorarticle_authors#
articleId StringauthorId Stringposition Introle ContributorRole
FK: articleArticle Cascade · authorAuthor Cascade
ArticleAttributionarticle_attributions#
articleId Stringurl StringsourceId String?publishedAt DateTime?title String?languageTag String?metadata JsoncreatedAt DateTime
FK: articleArticle Cascade · sourceSource SetNull
ArticleTranslationarticle_translations#
id String PKarticleId StringlanguageTag Stringheadline Stringsummary String?body StringbodyHtml String?quality TranslationQualitymetadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: articleArticle Cascade
ArticlePerspectivearticle_perspectives#
id String PKarticleId StringsourceId String?url Stringstance PerspectiveStancesummary String?metadata JsoncreatedAt DateTime
FK: articleArticle Cascade · sourceSource SetNull
ArticleRelatedarticle_related_articles#
articleId StringrelatedArticleId String
FK: articleArticle Cascade · relatedArticleArticle Cascade
Categorycategories#
id String PKslug String uniqname Stringdescription String?parentId String?sortOrder IntisActive Booleanicon String?color String?metadata JsoncreatedAt DateTimeupdatedAt DateTimetopics Topic[]articles ArticleCategory[]
FK: parentCategory SetNull · childrenCategory
Topictopics#
id String PKslug String uniqname Stringdescription String?categoryId String?isActive BooleanisTrending BooleantrendScore Floatmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleTopic[]userFollows UserTopicFollow[]
FK: categoryCategory SetNull
Tagtags#
id String PKslug String uniqlabel StringusageCount Intmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleTag[]
ArticleCategoryarticle_categories#
articleId StringcategoryId String
FK: articleArticle Cascade · categoryCategory Cascade
ArticleTopicarticle_topics#
articleId StringtopicId String
FK: articleArticle Cascade · topicTopic Cascade
ArticleTagarticle_tags#
articleId StringtagId String
FK: articleArticle Cascade · tagTag Cascade
Entityentities#
id String PKentityType EntityTypename StringnormalizedName Stringsummary String?externalIds Jsonmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleEntity[]
FK: entityRelationsFromEntityRelationship · entityRelationsToEntityRelationship
ArticleEntityarticle_entities#
articleId StringentityId Stringconfidence Floatsalience Floatmetadata Json
FK: articleArticle Cascade · entityEntity Cascade
EntityRelationshipentity_relationships#
id String PKfromEntityId StringtoEntityId StringrelationshipType Stringconfidence Floatmetadata JsoncreatedAt DateTime
FK: fromEntityEntity Cascade · toEntityEntity Cascade
MediaAssetmedia_assets#
id String PKkind MediaKindrole MediaRolesource MediaSourceoriginalUrl String?cdnUrl String?mimeType String?width Int?height Int?durationSeconds Float?sizeBytes Int?checksum String?altText String?caption String?credit String?storageProvider MediaStorageProvider? +6 more
FK: featuredInArticlesArticle
ArticleMediaarticle_media#
articleId StringmediaAssetId Stringposition Int
FK: articleArticle Cascade · mediaAssetMediaAsset Cascade
StoryClusterstory_clusters#
id String PKtitle Stringsummary String?status StoryClusterStatusmethod ClusteringMethodscore Float?canonicalArticleId String?lastActivityAt DateTimearchivedAt DateTime?mergedIntoId String?metadata JsoncreatedAt DateTimeupdatedAt DateTimearticles Article[]members StoryClusterMember[]
FK: mergedIntoStoryCluster SetNull · mergedFromStoryCluster
StoryClusterMemberstory_cluster_members#
storyClusterId StringarticleId StringisCanonical BooleanaddedAt DateTime
FK: storyClusterStoryCluster Cascade · articleArticle Cascade
Claimclaims#
id String PKtext StringnormalizedText String uniqclaimType ClaimTypespeaker String?context String?checkworthiness Floatmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleClaim[]verifications ClaimVerification[]
ArticleClaimarticle_claims#
articleId StringclaimId Stringposition Intconfidence Float
FK: articleArticle Cascade · claimClaim Cascade
ArticleFactCheckarticle_fact_checks#
articleId String PKoverallStatus FactCheckOverallStatuslastCheckedAt DateTime?checkedBy String?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: articleArticle Cascade
ClaimVerificationclaim_verifications#
id String PKclaimId Stringstatus FactCheckOverallStatusconfidence Floatsummary String?notes String[]verifiedBy Stringmetadata JsoncreatedAt DateTimeupdatedAt DateTimeevidence ClaimEvidence[]
FK: claimClaim Cascade
ClaimEvidenceclaim_evidence#
id String PKclaimVerificationId Stringurl StringsourceId String?quote String?title String?summary String?stance EvidenceStancerelevance Floatcredibility FloatretrievedAt DateTimemetadata JsoncreatedAt DateTime
FK: claimVerificationClaimVerification Cascade · sourceSource SetNull
ArticleEmbeddingarticle_embeddings#
articleId Stringprovider EmbeddingProvidermodel Stringdimensions Intembedding Unsupportedmetadata JsoncreatedAt DateTime
FK: articleArticle Cascade
AuthUserauth_users#
id String PKemail String uniqpasswordHash String?name String?avatarUrl String?isActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimeidentities AuthIdentity[]passwordReset PasswordReset[]reviewedArticles Article[]articleReads UserArticleRead[]savedArticles UserSavedArticle[]topicFollows UserTopicFollow[]sourcePreferences UserSourcePreference[] +3 more
AuthIdentityauth_identities#
id String PKuserId Stringprovider StringproviderAccountId Stringemail String?accessToken String?refreshToken String?expiresAt DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: userAuthUser Cascade
PasswordResetpassword_resets#
id String PKuserId Stringtoken String uniqexpiresAt DateTimeusedAt DateTime?createdAt DateTime
FK: userAuthUser Cascade
UserArticleReaduser_article_reads#
userId StringarticleId StringfirstReadAt DateTimelastReadAt DateTimereadCount IntreadPercent FloattimeOnPage Intmetadata Json
FK: userAuthUser Cascade · articleArticle Cascade
UserSavedArticleuser_saved_articles#
userId StringarticleId StringsavedAt DateTime
FK: userAuthUser Cascade · articleArticle Cascade
UserTopicFollowuser_topic_follows#
userId StringtopicId StringfollowedAt DateTime
FK: userAuthUser Cascade · topicTopic Cascade
UserSourcePreferenceuser_source_preferences#
userId StringsourceId Stringpreference SourcePreferenceTypecreatedAt DateTime
FK: userAuthUser Cascade · sourceSource Cascade
UserAuthorFollowuser_author_follows#
userId StringauthorId StringfollowedAt DateTime
FK: userAuthUser Cascade · authorAuthor Cascade
VoiceProfilevoice_profiles#
id String PKslug String uniqprovider VoiceProviderproviderVoiceId StringdisplayName Stringdescription String?languageTags String[]defaultSettings JsondefaultFormat StringisActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimeaudioRenders ArticleAudioRender[]
ArticleAudioRenderarticle_audio_renders#
id String PKarticleId StringvoiceProfileId StringlanguageTag Stringstatus ScheduleRunStatusaudioUrl String?durationSeconds Float?sizeBytes Int?storageProvider MediaStorageProvider?storageBucket String?storageKey String?errorMessage String?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: articleArticle Cascade · voiceProfileVoiceProfile Cascade
AvatarProfileavatar_profiles#
id String PKslug String uniqprovider StringproviderAvatarId StringdisplayName Stringdescription String?isActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimevideoRenders ArticleVideoRender[]
ArticleVideoRenderarticle_video_renders#
id String PKarticleId StringavatarProfileId StringlanguageTag Stringstatus ScheduleRunStatusvideoUrl String?thumbnailUrl String?durationSeconds Float?sizeBytes Int?storageProvider MediaStorageProvider?storageBucket String?storageKey String?errorMessage String?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: articleArticle Cascade · avatarProfileAvatarProfile Cascade
UserPushTokenuser_push_tokens#
id String PKuserId Stringprovider Stringtoken Stringplatform String?deviceId String?isActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimenotifications PushNotificationOutbox[]deliveries PushNotificationDelivery[]
FK: userAuthUser Cascade
PushNotificationOutboxpush_notification_outbox#
id String PKprovider StringuserId StringpushTokenId Stringkind StringdedupeKey Stringstatus StringnotBefore DateTime?expiresAt DateTime?attempts IntlastError String?payload Jsonmetadata JsoncreatedAt DateTimeupdatedAt DateTimedeliveries PushNotificationDelivery[]
FK: userAuthUser Cascade · pushTokenUserPushToken Cascade
PushNotificationDeliverypush_notification_deliveries#
id String PKoutboxId StringuserId StringpushTokenId Stringkind Stringstatus Stringerror String?sentAt DateTimemetadata Json
FK: outboxPushNotificationOutbox Cascade · pushTokenUserPushToken Cascade
YouTubeShortsScheduleRunyoutube_shorts_schedule_runs#
id String PKdateKey StringslotMinutes InttimeZone Stringstatus ScheduleRunStatusattempts IntclaimedAt DateTime?startedAt DateTime?finishedAt DateTime?articleId String?articleSlug String?youtubeVideoId String?youtubeUrl String?errorMessage String?metadata JsoncreatedAt DateTime +1 more
FK: articleArticle SetNull
TikTokScheduleRuntiktok_schedule_runs#
id String PKdateKey StringslotMinutes InttimeZone Stringstatus ScheduleRunStatusattempts IntclaimedAt DateTime?startedAt DateTime?finishedAt DateTime?articleId String?articleSlug String?tiktokPublishId String?tiktokVideoId String?tiktokUrl String?errorMessage String?metadata Json +2 more
FK: articleArticle SetNull
WhatsAppChannelSubscriberwhatsapp_channel_subscribers#
id String PKphoneE164 String uniqstatus WhatsAppSubscriberStatussubscribedAt DateTimeunsubscribedAt DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTime
WhatsAppChannelPostwhatsapp_channel_posts#
id String PKarticleId String uniqarticleSlug Stringpriority ContentPrioritystatus WhatsAppPostStatusmessageText String?recipients Intsucceeded Intfailed InterrorMessage String?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: articleArticle Cascade
ArticleCorrectionarticle_corrections#
id String PKarticleId Stringkind CorrectionKindseverity CorrectionSeveritysummary StringpublicNote String?publishedAt DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: articleArticle Cascade
ArticleAIReviewarticle_ai_reviews#
articleId Stringkind AIReviewKindreviewedAt DateTimeinputTextHash Stringapproved Booleanscore Float?report JsontriggeredByUserId String?metadata JsoncreatedAt DateTime
FK: articleArticle Cascade
ArticleRevisionarticle_revisions#
id String PKarticleId Stringversion Intheadline Stringsummary String?body StringbodyHtml String?changedBy String?changeNote String?metadata JsoncreatedAt DateTime
FK: articleArticle Cascade
ArticleSummaryVariantarticle_summary_variants#
id String PKarticleId Stringvariant Stringsummary Stringscore Float?metadata JsoncreatedAt DateTime
FK: articleArticle Cascade
ArticleHeadlineVariantarticle_headline_variants#
id String PKarticleId Stringvariant Stringheadline Stringscore Float?metadata JsoncreatedAt DateTime
FK: articleArticle Cascade
CalendarEventcalendar_events#
id String PKsourceId String?title Stringdescription String?location String?startTime DateTimeendTime DateTime?allDay Booleanrecurrence String?status StringexternalId String?metadata JsoncreatedAt DateTimeupdatedAt DateTime
FK: sourceSource SetNull
NmcComplaintnmc_complaints#
id String PKarticleId String?sourceId String?complainantType NmcComplainantTypecategory NmcViolationCategorystage NmcComplaintStageseverity NmcComplaintSeveritysummary Stringdetails StringevidenceUrls String[]remedySought NmcRemedy[]remedyOrdered NmcRemedy[]rulingNotes String?complianceDeadline DateTime?isCompliant Boolean?filedAt DateTime +3 more
FK: articleArticle SetNull · sourceSource SetNull
NmcComplaintTransitionnmc_complaint_transitions#
id String PKcomplaintId StringfromStage NmcComplaintStagetoStage NmcComplaintStagenotes StringtransitionedAt DateTime
FK: complaintNmcComplaint Cascade
NmcContentChecknmc_content_checks#
id String PKsourceId String?articleId String?overallScore Intcompliant BooleanviolationCount IntprincipleScores Jsonmethodology StringcheckedAt DateTimeviolationFlags NmcViolationFlag[]
FK: sourceSource SetNull · articleArticle SetNull
NmcViolationFlagnmc_violation_flags#
id String PKcontentCheckId Stringcategory NmcViolationCategoryseverity NmcComplaintSeveritydescription StringtextExcerpt String?recommendedRemedy NmcRemedycreatedAt DateTime
FK: contentCheckNmcContentCheck Cascade
DpaConsentdpa_consents#
id String PKuserId Stringpurpose DpaProcessingPurposelawfulBasis DpaLawfulBasisconsentGiven BooleanconsentText StringconsentVersion StringgrantedAt DateTime?withdrawnAt DateTime?expiresAt DateTime?ipAddress String?userAgent String?createdAt DateTimeupdatedAt DateTime
DpaSubjectRequestdpa_subject_requests#
id String PKuserId StringrequestType DpaRequestTypestatus DpaRequestStatusdescription StringresponseNotes String?refusalReason String?deadlineAt DateTimesubmittedAt DateTimeacknowledgedAt DateTime?completedAt DateTime?exportFileUrl String?createdAt DateTimeupdatedAt DateTime
Electionelections#
id String PKname StringelectionType ElectionTypeelectionDate DateTimeisActive BooleanregisteredParties JsonpresidentialCandidates Jsonmetadata JsoncreatedAt DateTimeupdatedAt DateTimeviolations ElectionCoverageViolation[]
ElectionCoverageViolationelection_coverage_violations#
id String PKelectionId StringviolationType ElectionCoverageViolationTypeseverity CoverageComplianceLeveldescription StringlegalBasis StringaffectedParty String?articleId String?sourceId String?recommendation Stringmetadata JsonrecordedAt DateTimecreatedAt DateTimeupdatedAt DateTime
FK: electionElection Cascade
PaymentTransactionpayment_transactions#
id String PKuserId StringtransactionType PaymentTransactionTypeprovider StringreferenceId String uniqexternalId StringfinancialTransactionId String?amount Decimalcurrency StringphoneNumber Stringstatus PaymentTransactionStatusproviderStatus String?failureCode String?failureMessage String?payerMessage StringpayeeNote String +4 more
PaymentSubscriptionpayment_subscriptions#
id String PKuserId StringplanId Stringprovider StringphoneNumber Stringstatus SubscriptionStatuspreApprovalId String?currentPeriodStart DateTimecurrentPeriodEnd DateTimelastPaymentAt DateTime?lastPaymentTransactionId String?nextBillingAt DateTimefailedAttempts IntcancelledAt DateTime?metadata JsoncreatedAt DateTime +1 more

Enums (45)#

SourceStatus4 values
activepausedretiredpending
SourceKind12 values
newspaperbroadcasternews_agencydigital_nativewire_servicepublishergovernmentngoblogsocialacademicother
OwnershipType10 values
privatestatepublicpoliticalreligiousngocommunityacademicunknownother
FeedType5 values
rssatomsitemapapiscrape
ArticleStatus6 values
draftpending_reviewpublishedscheduledarchivedretracted
ArticleContentType10 values
newsanalysisopinionfeatureinterviewinvestigationbreakinglive_updateexplainerfact_check
TranslationQuality3 values
machinehumanverified
PerspectiveStance4 values
supportingcriticalneutralanalysis
EntityType9 values
personorganizationplaceeventproductworkconceptlegislationother
MediaKind6 values
imagevideoaudioembeddocumentinfographic
MediaRole8 values
featuredinlinethumbnailgallerysocialherobackgroundother
MediaSource4 values
extracteduploadedgeneratedlicensed
MediaStorageProvider7 values
externals3gcsr2miniolocalcdn
FactCheckOverallStatus8 values
verifiedlikely_truedisputedmisleadingmostly_falsefalse_statusunverifiableunverified
ClaimType7 values
factualopinionpredictionquotestatisticalhistoricalscientific
EvidenceStance4 values
supportsrefutesneutralinconclusive
ClusteringMethod6 values
semantic_similarityentity_overlaptemporal_proximitytopic_modelinghybridmanual
StoryClusterStatus4 values
activedevelopingarchivedmerged
EmbeddingProvider2 values
openaicohere
VoiceProvider4 values
elevenlabsghana_nlpopenaigoogle
SocialPlatform5 values
xfacebookinstagramtiktokyoutube
ContentPriority4 values
breakinghighnormallow
ScheduleRunStatus5 values
claimedrunningcompletedfailedskipped
WhatsAppSubscriberStatus2 values
activeunsubscribed
WhatsAppPostStatus3 values
runningcompletedfailed
SourcePreferenceType2 values
preferavoid
ContributorRole7 values
authoreditorreviewertranslatorphotographerillustratorcontributor
CorrectionKind4 values
correctionclarificationupdateretraction
CorrectionSeverity3 values
lowmediumhigh
AIReviewKind2 values
managing_editor_qc_v1editor_in_chief_standards_v1
NmcViolationCategory14 values
indecencyinaccuracyoffending_sensibilitiesprejudice_stereotypingmixing_facts_opinioninvasion_of_privacydefamationincitementcontempt_of_courtendangering_national_securityplagiarismunfair_reportingminors_exploitationadvertising_deception
NmcComplaintStage8 values
filedunder_reviewsettlement_meetinginvestigationdeliberationrulingcomplianceclosed
NmcComplaintSeverity4 values
criticalhighmediumlow
NmcComplainantType4 values
individualorganizationregulatorautomated
NmcRemedy7 values
retractionformal_apologyrejoindercorrection_with_prominencecontent_removalwritten_warningpublic_censure
DpaLawfulBasis7 values
consentcontractlegal_obligationlegitimate_interestpublic_dutyvital_interestjournalism_exemption
DpaProcessingPurpose11 values
account_managementcontent_deliverypersonalizationanalyticsadvertisingpush_notificationsemail_communicationsresearchjournalismsecuritylegal_compliance
DpaRequestType7 values
accesscorrectionerasureobjectionconsent_withdrawaldata_exportrestrict_processing
DpaRequestStatus6 values
submittedacknowledgedprocessingcompletedrefusedexpired
ElectionType5 values
presidentialparliamentarydistrict_assemblyreferendumby_election
ElectionCoverageViolationType13 values
unequal_coveragesilence_period_violationunauthorized_resultsfalse_election_informationincitement_to_violencepartisan_languagemissing_rejoindercandidate_endorsementhate_speechvoter_intimidationcampaign_advertising_undisclosedexit_poll_during_votingaccreditation_violation
CoverageComplianceLevel4 values
compliantminor_violationmajor_violationcritical_violation
PaymentTransactionType3 values
collectiondisbursementrefund
PaymentTransactionStatus6 values
initiatedpendingsuccessfulfailedcancelledexpired
SubscriptionStatus4 values
activepast_duecancelledexpired_status