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)#
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 moreid String PKsourceId StringfeedType FeedTypeurl StringisActive BooleanfetchIntervalSeconds Intpriority IntlastFetchedAt DateTime?lastHttpStatus Int?etag String?lastModified String?consecutiveFailures IntbackoffUntil DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTime +1 moreFK:
source→Source Cascadeid 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 moreFK:
sourceFeed→SourceFeed Cascadeid String PKfeedItemId String uniqnormalizedTitle StringnormalizedText StringnormalizedHtml String?extractedAt DateTimemetadata JsoncreatedAt DateTimeupdatedAt DateTimearticle Article?FK:
feedItem→FeedItem Cascadeid String PKplatform SocialPlatformquery StringisActive BooleanfetchIntervalSeconds IntsinceId String?lastFetchedAt DateTime?lastHttpStatus Int?consecutiveFailures IntbackoffUntil DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTimeposts SocialPost[]id String PKmonitorId String?platform SocialPlatformexternalId StringauthorExternalId String?authorUsername String?url String?content String?publishedAt DateTime?raw Json?metadata JsonfirstSeenAt DateTimelastSeenAt DateTimecreatedAt DateTimeupdatedAt DateTimeFK:
monitor→SocialMonitor SetNullid 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 moreFK:
canonicalNormalizedFeedItem→NormalizedFeedItem SetNull · source→Source SetNull · featuredMediaAsset→MediaAsset SetNull · reviewedByUser→AuthUser SetNull · storyCluster→StoryCluster SetNull · relatedFrom→ArticleRelated · relatedTo→ArticleRelatedid 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:
source→Source SetNullarticleId StringauthorId Stringposition Introle ContributorRoleFK:
article→Article Cascade · author→Author CascadearticleId Stringurl StringsourceId String?publishedAt DateTime?title String?languageTag String?metadata JsoncreatedAt DateTimeFK:
article→Article Cascade · source→Source SetNullid String PKarticleId StringlanguageTag Stringheadline Stringsummary String?body StringbodyHtml String?quality TranslationQualitymetadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
article→Article Cascadeid String PKarticleId StringsourceId String?url Stringstance PerspectiveStancesummary String?metadata JsoncreatedAt DateTimeFK:
article→Article Cascade · source→Source SetNullid String PKslug String uniqname Stringdescription String?parentId String?sortOrder IntisActive Booleanicon String?color String?metadata JsoncreatedAt DateTimeupdatedAt DateTimetopics Topic[]articles ArticleCategory[]FK:
parent→Category SetNull · children→Categoryid String PKslug String uniqname Stringdescription String?categoryId String?isActive BooleanisTrending BooleantrendScore Floatmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleTopic[]userFollows UserTopicFollow[]FK:
category→Category SetNullid String PKslug String uniqlabel StringusageCount Intmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleTag[]articleId StringcategoryId StringFK:
article→Article Cascade · category→Category CascadearticleId StringtopicId StringFK:
article→Article Cascade · topic→Topic Cascadeid String PKentityType EntityTypename StringnormalizedName Stringsummary String?externalIds Jsonmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleEntity[]FK:
entityRelationsFrom→EntityRelationship · entityRelationsTo→EntityRelationshiparticleId StringentityId Stringconfidence Floatsalience Floatmetadata JsonFK:
article→Article Cascade · entity→Entity Cascadeid String PKfromEntityId StringtoEntityId StringrelationshipType Stringconfidence Floatmetadata JsoncreatedAt DateTimeFK:
fromEntity→Entity Cascade · toEntity→Entity Cascadeid 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 moreFK:
featuredInArticles→ArticlearticleId StringmediaAssetId Stringposition IntFK:
article→Article Cascade · mediaAsset→MediaAsset Cascadeid String PKtitle Stringsummary String?status StoryClusterStatusmethod ClusteringMethodscore Float?canonicalArticleId String?lastActivityAt DateTimearchivedAt DateTime?mergedIntoId String?metadata JsoncreatedAt DateTimeupdatedAt DateTimearticles Article[]members StoryClusterMember[]FK:
mergedInto→StoryCluster SetNull · mergedFrom→StoryClusterstoryClusterId StringarticleId StringisCanonical BooleanaddedAt DateTimeFK:
storyCluster→StoryCluster Cascade · article→Article Cascadeid String PKtext StringnormalizedText String uniqclaimType ClaimTypespeaker String?context String?checkworthiness Floatmetadata JsoncreatedAt DateTimeupdatedAt DateTimearticles ArticleClaim[]verifications ClaimVerification[]articleId StringclaimId Stringposition Intconfidence FloatFK:
article→Article Cascade · claim→Claim CascadearticleId String PKoverallStatus FactCheckOverallStatuslastCheckedAt DateTime?checkedBy String?metadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
article→Article Cascadeid String PKclaimId Stringstatus FactCheckOverallStatusconfidence Floatsummary String?notes String[]verifiedBy Stringmetadata JsoncreatedAt DateTimeupdatedAt DateTimeevidence ClaimEvidence[]FK:
claim→Claim Cascadeid String PKclaimVerificationId Stringurl StringsourceId String?quote String?title String?summary String?stance EvidenceStancerelevance Floatcredibility FloatretrievedAt DateTimemetadata JsoncreatedAt DateTimeFK:
claimVerification→ClaimVerification Cascade · source→Source SetNullarticleId Stringprovider EmbeddingProvidermodel Stringdimensions Intembedding Unsupportedmetadata JsoncreatedAt DateTimeFK:
article→Article Cascadeid 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 moreid String PKuserId Stringprovider StringproviderAccountId Stringemail String?accessToken String?refreshToken String?expiresAt DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
user→AuthUser Cascadeid String PKuserId Stringtoken String uniqexpiresAt DateTimeusedAt DateTime?createdAt DateTimeFK:
user→AuthUser CascadeuserId StringarticleId StringfirstReadAt DateTimelastReadAt DateTimereadCount IntreadPercent FloattimeOnPage Intmetadata JsonFK:
user→AuthUser Cascade · article→Article CascadeuserId StringarticleId StringsavedAt DateTimeFK:
user→AuthUser Cascade · article→Article CascadeuserId StringtopicId StringfollowedAt DateTimeFK:
user→AuthUser Cascade · topic→Topic CascadeuserId StringsourceId Stringpreference SourcePreferenceTypecreatedAt DateTimeFK:
user→AuthUser Cascade · source→Source CascadeuserId StringauthorId StringfollowedAt DateTimeFK:
user→AuthUser Cascade · author→Author Cascadeid String PKslug String uniqprovider VoiceProviderproviderVoiceId StringdisplayName Stringdescription String?languageTags String[]defaultSettings JsondefaultFormat StringisActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimeaudioRenders ArticleAudioRender[]id String PKarticleId StringvoiceProfileId StringlanguageTag Stringstatus ScheduleRunStatusaudioUrl String?durationSeconds Float?sizeBytes Int?storageProvider MediaStorageProvider?storageBucket String?storageKey String?errorMessage String?metadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
article→Article Cascade · voiceProfile→VoiceProfile Cascadeid String PKslug String uniqprovider StringproviderAvatarId StringdisplayName Stringdescription String?isActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimevideoRenders ArticleVideoRender[]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 DateTimeFK:
article→Article Cascade · avatarProfile→AvatarProfile Cascadeid String PKuserId Stringprovider Stringtoken Stringplatform String?deviceId String?isActive Booleanmetadata JsoncreatedAt DateTimeupdatedAt DateTimenotifications PushNotificationOutbox[]deliveries PushNotificationDelivery[]FK:
user→AuthUser Cascadeid String PKprovider StringuserId StringpushTokenId Stringkind StringdedupeKey Stringstatus StringnotBefore DateTime?expiresAt DateTime?attempts IntlastError String?payload Jsonmetadata JsoncreatedAt DateTimeupdatedAt DateTimedeliveries PushNotificationDelivery[]FK:
user→AuthUser Cascade · pushToken→UserPushToken Cascadeid String PKoutboxId StringuserId StringpushTokenId Stringkind Stringstatus Stringerror String?sentAt DateTimemetadata JsonFK:
outbox→PushNotificationOutbox Cascade · pushToken→UserPushToken Cascadeid 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 moreFK:
article→Article SetNullid 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 moreFK:
article→Article SetNullid String PKphoneE164 String uniqstatus WhatsAppSubscriberStatussubscribedAt DateTimeunsubscribedAt DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTimeid String PKarticleId String uniqarticleSlug Stringpriority ContentPrioritystatus WhatsAppPostStatusmessageText String?recipients Intsucceeded Intfailed InterrorMessage String?metadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
article→Article Cascadeid String PKarticleId Stringkind CorrectionKindseverity CorrectionSeveritysummary StringpublicNote String?publishedAt DateTime?metadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
article→Article CascadearticleId Stringkind AIReviewKindreviewedAt DateTimeinputTextHash Stringapproved Booleanscore Float?report JsontriggeredByUserId String?metadata JsoncreatedAt DateTimeFK:
article→Article Cascadeid String PKarticleId Stringversion Intheadline Stringsummary String?body StringbodyHtml String?changedBy String?changeNote String?metadata JsoncreatedAt DateTimeFK:
article→Article Cascadeid String PKarticleId Stringvariant Stringsummary Stringscore Float?metadata JsoncreatedAt DateTimeFK:
article→Article Cascadeid String PKarticleId Stringvariant Stringheadline Stringscore Float?metadata JsoncreatedAt DateTimeFK:
article→Article Cascadeid String PKsourceId String?title Stringdescription String?location String?startTime DateTimeendTime DateTime?allDay Booleanrecurrence String?status StringexternalId String?metadata JsoncreatedAt DateTimeupdatedAt DateTimeFK:
source→Source SetNullid 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 moreFK:
article→Article SetNull · source→Source SetNullid String PKcomplaintId StringfromStage NmcComplaintStagetoStage NmcComplaintStagenotes StringtransitionedAt DateTimeFK:
complaint→NmcComplaint Cascadeid String PKsourceId String?articleId String?overallScore Intcompliant BooleanviolationCount IntprincipleScores Jsonmethodology StringcheckedAt DateTimeviolationFlags NmcViolationFlag[]FK:
source→Source SetNull · article→Article SetNullid String PKcontentCheckId Stringcategory NmcViolationCategoryseverity NmcComplaintSeveritydescription StringtextExcerpt String?recommendedRemedy NmcRemedycreatedAt DateTimeFK:
contentCheck→NmcContentCheck Cascadeid String PKuserId Stringpurpose DpaProcessingPurposelawfulBasis DpaLawfulBasisconsentGiven BooleanconsentText StringconsentVersion StringgrantedAt DateTime?withdrawnAt DateTime?expiresAt DateTime?ipAddress String?userAgent String?createdAt DateTimeupdatedAt DateTimeid String PKuserId StringrequestType DpaRequestTypestatus DpaRequestStatusdescription StringresponseNotes String?refusalReason String?deadlineAt DateTimesubmittedAt DateTimeacknowledgedAt DateTime?completedAt DateTime?exportFileUrl String?createdAt DateTimeupdatedAt DateTimeid String PKname StringelectionType ElectionTypeelectionDate DateTimeisActive BooleanregisteredParties JsonpresidentialCandidates Jsonmetadata JsoncreatedAt DateTimeupdatedAt DateTimeviolations ElectionCoverageViolation[]id String PKelectionId StringviolationType ElectionCoverageViolationTypeseverity CoverageComplianceLeveldescription StringlegalBasis StringaffectedParty String?articleId String?sourceId String?recommendation Stringmetadata JsonrecordedAt DateTimecreatedAt DateTimeupdatedAt DateTimeFK:
election→Election Cascadeid String PKuserId StringtransactionType PaymentTransactionTypeprovider StringreferenceId String uniqexternalId StringfinancialTransactionId String?amount Decimalcurrency StringphoneNumber Stringstatus PaymentTransactionStatusproviderStatus String?failureCode String?failureMessage String?payerMessage StringpayeeNote String +4 moreid String PKuserId StringplanId Stringprovider StringphoneNumber Stringstatus SubscriptionStatuspreApprovalId String?currentPeriodStart DateTimecurrentPeriodEnd DateTimelastPaymentAt DateTime?lastPaymentTransactionId String?nextBillingAt DateTimefailedAttempts IntcancelledAt DateTime?metadata JsoncreatedAt DateTime +1 moreEnums (45)#
SourceStatus4 valuesactivepausedretiredpendingSourceKind12 valuesnewspaperbroadcasternews_agencydigital_nativewire_servicepublishergovernmentngoblogsocialacademicotherOwnershipType10 valuesprivatestatepublicpoliticalreligiousngocommunityacademicunknownotherFeedType5 valuesrssatomsitemapapiscrapeArticleStatus6 valuesdraftpending_reviewpublishedscheduledarchivedretractedArticleContentType10 valuesnewsanalysisopinionfeatureinterviewinvestigationbreakinglive_updateexplainerfact_checkTranslationQuality3 valuesmachinehumanverifiedPerspectiveStance4 valuessupportingcriticalneutralanalysisEntityType9 valuespersonorganizationplaceeventproductworkconceptlegislationotherMediaKind6 valuesimagevideoaudioembeddocumentinfographicMediaRole8 valuesfeaturedinlinethumbnailgallerysocialherobackgroundotherMediaSource4 valuesextracteduploadedgeneratedlicensedMediaStorageProvider7 valuesexternals3gcsr2miniolocalcdnFactCheckOverallStatus8 valuesverifiedlikely_truedisputedmisleadingmostly_falsefalse_statusunverifiableunverifiedClaimType7 valuesfactualopinionpredictionquotestatisticalhistoricalscientificEvidenceStance4 valuessupportsrefutesneutralinconclusiveClusteringMethod6 valuessemantic_similarityentity_overlaptemporal_proximitytopic_modelinghybridmanualStoryClusterStatus4 valuesactivedevelopingarchivedmergedEmbeddingProvider2 valuesopenaicohereVoiceProvider4 valueselevenlabsghana_nlpopenaigoogleSocialPlatform5 valuesxfacebookinstagramtiktokyoutubeContentPriority4 valuesbreakinghighnormallowScheduleRunStatus5 valuesclaimedrunningcompletedfailedskippedWhatsAppSubscriberStatus2 valuesactiveunsubscribedWhatsAppPostStatus3 valuesrunningcompletedfailedSourcePreferenceType2 valuespreferavoidContributorRole7 valuesauthoreditorreviewertranslatorphotographerillustratorcontributorCorrectionKind4 valuescorrectionclarificationupdateretractionCorrectionSeverity3 valueslowmediumhighAIReviewKind2 valuesmanaging_editor_qc_v1editor_in_chief_standards_v1NmcViolationCategory14 valuesindecencyinaccuracyoffending_sensibilitiesprejudice_stereotypingmixing_facts_opinioninvasion_of_privacydefamationincitementcontempt_of_courtendangering_national_securityplagiarismunfair_reportingminors_exploitationadvertising_deceptionNmcComplaintStage8 valuesfiledunder_reviewsettlement_meetinginvestigationdeliberationrulingcomplianceclosedNmcComplaintSeverity4 valuescriticalhighmediumlowNmcComplainantType4 valuesindividualorganizationregulatorautomatedNmcRemedy7 valuesretractionformal_apologyrejoindercorrection_with_prominencecontent_removalwritten_warningpublic_censureDpaLawfulBasis7 valuesconsentcontractlegal_obligationlegitimate_interestpublic_dutyvital_interestjournalism_exemptionDpaProcessingPurpose11 valuesaccount_managementcontent_deliverypersonalizationanalyticsadvertisingpush_notificationsemail_communicationsresearchjournalismsecuritylegal_complianceDpaRequestType7 valuesaccesscorrectionerasureobjectionconsent_withdrawaldata_exportrestrict_processingDpaRequestStatus6 valuessubmittedacknowledgedprocessingcompletedrefusedexpiredElectionType5 valuespresidentialparliamentarydistrict_assemblyreferendumby_electionElectionCoverageViolationType13 valuesunequal_coveragesilence_period_violationunauthorized_resultsfalse_election_informationincitement_to_violencepartisan_languagemissing_rejoindercandidate_endorsementhate_speechvoter_intimidationcampaign_advertising_undisclosedexit_poll_during_votingaccreditation_violationCoverageComplianceLevel4 valuescompliantminor_violationmajor_violationcritical_violationPaymentTransactionType3 valuescollectiondisbursementrefundPaymentTransactionStatus6 valuesinitiatedpendingsuccessfulfailedcancelledexpiredSubscriptionStatus4 valuesactivepast_duecancelledexpired_status