Skip to content

Type Reference

This page documents every type in the Trove GraphQL schema.

ScalarFormatExample
DateTimeISO 8601 string"2026-03-25T12:00:00Z"
JSONArbitrary JSON value{ "key": "value" }, 42, [1, 2, 3]

Container for search and discovery query results.

FieldTypeDescription
results[SearchResult!]!Array of ranked search results.
totalMatchesInt!Total number of matching documents (may exceed the returned results).
queryTimeMsInt!Time taken to execute the search in milliseconds.

A single search result with its document and relevance metadata.

FieldTypeDescription
documentDocument!The matched document.
snippetString!A text snippet showing the most relevant passage.
relevanceScoreFloat!Similarity score between 0 and 1. Higher is more relevant.

A piece of content stored in your knowledge base.

FieldTypeNullableDescription
idID!NoUnique document identifier.
sourceSource!NoThe source this document belongs to.
feedFeedYesThe feed within the source that produced this document.
externalIdString!NoIdentifier from the upstream system (e.g., tweet ID, article URL hash).
titleStringYesDocument title.
urlStringYesOriginal URL.
authorStringYesDocument author.
contentDateDateTimeYesOriginal publication or creation date from the upstream.
indexedAtDateTime!NoTimestamp when the document was indexed in Trove.
previewTextStringYesFirst ~300 words of the document, stored inline for fast access. Use this for listings and summaries.
fullTextStringYesComplete document text. Lazy-loaded from blob storage on demand. Only request this field when you need the full content.
wordCountIntYesTotal word count of the document.
contentTypeContentType!NoThe kind of content — see the ContentType enum.
tags[String!]!NoArray of tags applied to the document.
metadataJSONYesArbitrary metadata from the upstream system.
createdAtDateTime!NoTimestamp when the document record was created.

Paginated document list returned by the documents query.

FieldTypeDescription
nodes[Document!]!Array of documents in the current page.
totalCountInt!Total number of documents matching the filters.
hasMoreBoolean!Whether more documents exist beyond the current page.

A configured source that fills your knowledge base with documents.

FieldTypeNullableDescription
idID!NoUnique source identifier.
sourceTypeString!NoType of source (e.g., "rss", "hacker-news", "podcast", "manual").
nameString!NoDisplay name.
descriptionStringYesOptional description.
iconStringYesIcon identifier or emoji.
statusSourceStatus!NoCurrent status: ACTIVE, PAUSED, ERROR, or SETUP.
kindSourceKind!NoExecution contract — how the source collects. See SourceKind.
transportTransportYesMechanism it uses to reach the upstream. See Transport. null for the manual/saved source.
documentSemanticsDocumentSemantics!NoWhether documents are appended or upserted. See DocumentSemantics.
configJSONYesSource configuration. Holds preferences only — never credentials.
documentCountInt!NoTotal number of documents from this source.
lastSyncedAtDateTimeYesTimestamp of the last successful sync.
errorMessageStringYesError message if the source is in ERROR status.
createdAtDateTime!NoTimestamp when the source was created.
updatedAtDateTime!NoTimestamp of the last update.
recentDocuments[Document!]!NoLatest documents from this source. Accepts limit argument (default 5).
topAuthors[AuthorStat!]!NoMost prolific authors in this source. Accepts limit argument (default 20).
dateRangeDateRangeYesEarliest and latest document dates in this source.
syncRuns[SyncRun!]!NoRecent sync run history. Accepts limit argument (default 5).
feeds[Feed!]!NoThe individual feeds/streams within this source, each with its own sync state.

A single publication, channel, or profile within a source. Multi-feed sources (e.g. an RSS source with several feeds) have one Feed per publication, each tracking its own sync position.

FieldTypeNullableDescription
idID!NoUnique feed identifier.
sourceSource!NoThe source this feed belongs to.
externalKeyString!NoIdentifier for the feed within its source (feed URL, username, or "default").
nameString!NoDisplay name.
statusFeedStatus!NoCurrent status: ACTIVE, PAUSED, or ERROR.
cursorStringYesRaw resume position (typed-watermark JSON). Prefer watermark for a parsed view.
watermarkFeedWatermark!NoParsed view of cursor — how the feed resumes and where it’s up to.
documentCountInt!NoNumber of documents from this feed.
lastSyncedAtDateTimeYesTimestamp of the last successful sync.
errorMessageStringYesError message if the feed is in ERROR status.
configJSONYesFeed-specific preferences. Never credentials.
recentDocuments[Document!]!NoLatest documents from this feed. Accepts limit argument.

A human-meaningful view of a feed’s sync position, projected from its cursor.

FieldTypeNullableDescription
strategyWatermarkStrategy!NoHow the feed resumes: DATE, ID_SET, or NONE.
syncedThroughDateTimeYesFor DATE: the high-water timestamp synced through.
trackedCountIntYesFor ID_SET: how many ids/URLs are remembered.
atCapacityBooleanYesFor ID_SET: whether the bounded set has reached its limit.

Author frequency data for a source.

FieldTypeDescription
authorString!Author name.
documentCountInt!Number of documents by this author.

Date bounds for documents in a source.

FieldTypeNullableDescription
earliestDateTimeYesEarliest document date. null if the source has no dated documents.
latestDateTimeYesLatest document date. null if the source has no dated documents.

A record of a source sync, written by the sync client via createSyncRun.

FieldTypeNullableDescription
idID!NoUnique sync run identifier.
sourceSource!NoThe source this sync run belongs to.
feedIdID!NoThe feed within the source that was synced.
statusSyncRunStatus!NoCurrent status: RUNNING, SUCCESS, ERROR, or CANCELLED.
documentsSyncedInt!NoNumber of documents indexed in this run.
cursorBeforeStringYesCursor position before the sync started.
cursorAfterStringYesCursor position after the sync completed.
errorMessageStringYesError message if the sync failed.
startedAtDateTime!NoTimestamp when the sync started.
completedAtDateTimeYesTimestamp when the sync completed. null if still running.
durationMsIntYesTotal sync duration in milliseconds. null if still running.
logsStringYesThe run’s transcript, when the client recorded one.

Account-level statistics and aggregates.

FieldTypeDescription
totalDocumentsInt!Total number of documents across all sources.
totalSourcesInt!Total number of sources.
activeSourcesInt!Number of sources with ACTIVE status.
documentsBySourceType[SourceTypeStat!]!Document count breakdown by source type.
documentsByContentType[ContentTypeStat!]!Document count breakdown by content type.
topAuthors[AuthorStat!]!Most prolific authors across all sources. Accepts limit argument (default 50).
recentSyncRuns[SyncRun!]!Recent sync runs across all sources. Accepts limit argument (default 5).

Document count for a specific source type.

FieldTypeDescription
sourceTypeString!The source type (e.g., "rss", "hacker-news").
documentCountInt!Number of documents from sources of this type.

Document count for a specific content type.

FieldTypeDescription
contentTypeContentType!The content type — see the ContentType enum.
documentCountInt!Number of documents with this content type.

Result of a batch document ingestion.

FieldTypeNullableDescription
documentsIndexedInt!NoNumber of documents successfully indexed.
documentsSkippedInt!NoNumber of documents skipped (already exist with the same (feedId, externalId)).
transcriptionsQueuedInt!NoNumber of audio documents queued for asynchronous transcription.
documentsQueuedInt!NoNumber of document files (e.g. PDFs) queued for asynchronous text extraction.
cursorStringYesUpdated cursor position for the feed.
errors[IngestError!]YesArray of per-document errors, if any. null when all documents succeed.

Error details for a single document that failed during ingestion.

FieldTypeDescription
externalIdString!The externalId of the document that failed.
messageString!Description of the error.

Input for the createSource mutation.

FieldTypeRequiredDescription
sourceTypeString!YesThe type of source (e.g., "rss", "hacker-news", "podcast").
nameString!YesDisplay name for the source.
descriptionStringNoOptional description.
iconStringNoIcon identifier or emoji.
kindSourceKindNoExecution contract — see SourceKind.
transportTransportNoHow the source reaches its upstream — see Transport.
documentSemanticsDocumentSemanticsNoAppend vs upsert — see DocumentSemantics.
configJSON!YesSource-specific configuration (feed URLs, filters, etc.). Preferences only — never credentials.

Input for the updateSource mutation. All fields are optional; only included fields are updated.

FieldTypeRequiredDescription
nameStringNoNew display name.
descriptionStringNoNew description.
configJSONNoUpdated configuration. Replaces the entire config object.

Input for the saveDocument mutation (quick save).

FieldTypeRequiredDescription
textStringNoText content to save.
urlStringNoOriginal URL.
titleStringNoDocument title.
sourceStringNoFree-form attribution label (e.g., "clipboard", "share-extension").
tags[String!]NoTags to apply.

Input for a single document in the ingestDocuments mutation.

FieldTypeRequiredDescription
externalIdString!YesUnique identifier from the upstream system. Used for deduplication with feedId (the (feedId, externalId) pair).
titleStringNoDocument title.
textStringNoFull text content. Required unless a file URL is provided.
fileUrlStringNoGeneric file-by-URL; routed by mimeType (PDF extracts text, audio transcribes).
mimeTypeStringNoMIME type for fileUrl (e.g. application/pdf, audio/mpeg).
audioUrlStringNoShorthand for an mp3-by-URL; treated as fileUrl with mimeType: audio/mpeg.
urlStringNoOriginal URL.
authorStringNoDocument author.
dateDateTimeNoOriginal publication or creation date.
contentTypeContentTypeNoThe kind of content — see the ContentType enum. Defaults to TEXT.
tags[String!]NoTags to apply.
metadataJSONNoArbitrary metadata stored with the document.

The operational status of a source.

ValueDescription
ACTIVESource is active. The sync client pushes new content as it syncs.
PAUSEDSource is paused. The sync client should stop syncing it until resumed.
ERRORThe last sync reported an error. Check errorMessage for details.
SETUPSource is newly created and has not completed its first sync.

The status of an individual sync run.

ValueDescription
RUNNINGSync is currently in progress.
SUCCESSSync completed successfully.
ERRORSync failed. Check errorMessage for details.
CANCELLEDSync was cancelled before completion.

The operational status of a feed within a source.

ValueDescription
ACTIVEFeed is active and syncing.
PAUSEDFeed is paused.
ERRORThe last sync of this feed reported an error.

The kind of content a document holds.

ValueDescription
TEXTArticle or page text.
TRANSCRIPTTranscribed audio (e.g. a podcast episode).
HIGHLIGHTA highlight or excerpt.
BOOKMARKA saved link/bookmark.

A source’s execution contract — how it collects.

ValueDescription
SCHEDULED_SYNCPolls its upstream on a cadence and appends new documents (the only built kind today).
ON_DEMAND_FETCHFetches a single record on request (reserved).
ON_DEMAND_QUERYRuns a parameterized query on request (reserved).

How a source reaches its upstream.

ValueDescription
FEEDRSS/Atom feed.
SCRAPESitemap or HTML crawl.
APIJSON/REST API.
BROWSERAuthenticated browser session.
LOCALLocal files or database (reserved).

How a source’s documents are written on ingest.

ValueDescription
APPENDImmutable — new documents are added, duplicates skipped.
UPSERTCurrent-state — documents replace prior versions (reserved).

How a feed tracks its sync position (see FeedWatermark).

ValueDescription
DATEA high-water timestamp.
ID_SETA bounded set of seen ids/URLs.
NONENo watermark — re-scans each run, relying on dedup.

Available sort fields for the documents query.

ValueDescription
INDEXED_ATSort by when the document was indexed in Trove (default).
CONTENT_DATESort by the original publication date.
TITLESort alphabetically by title.
AUTHORSort alphabetically by author.

Sort direction for the documents query.

ValueDescription
ASCAscending order (oldest first, A-Z).
DESCDescending order (newest first, Z-A). Default.