{
"id": "pub.chive.actor.getDiscoverySettings",
"defs": {
"main": {
"type": "query",
"errors": [
{
"name": "AuthenticationRequired"
},
{
"name": "PDSNotFound"
}
],
"output": {
"schema": {
"type": "object",
"required": [
"enablePersonalization",
"relatedPapersSignals",
"citationNetworkDisplay",
"showRecommendationReasons"
],
"properties": {
"followedFieldUris": {
"type": "array",
"items": {
"type": "string",
"format": "at-uri"
},
"description": "Field URIs the user follows for discovery"
},
"trendingPreferences": {
"ref": "#trendingPreferences",
"type": "ref",
"description": "Preferences for the trending feed"
},
"relatedPapersSignals": {
"ref": "#relatedPapersSignals",
"type": "ref",
"description": "Signals to use for related papers"
},
"relatedPapersWeights": {
"ref": "#relatedPapersWeights",
"type": "ref",
"description": "Relative weights for related papers signals"
},
"enablePersonalization": {
"type": "boolean",
"description": "Enable personalized recommendations based on profile"
},
"citationNetworkDisplay": {
"type": "string",
"description": "How to display citation network",
"knownValues": [
"hidden",
"preview",
"expanded"
]
},
"recommendationDiversity": {
"type": "string",
"description": "How diverse recommendations should be relative to user's fields",
"knownValues": [
"low",
"medium",
"high"
]
},
"relatedPapersThresholds": {
"ref": "#relatedPapersThresholds",
"type": "ref",
"description": "Thresholds for related papers filtering"
},
"showRecommendationReasons": {
"type": "boolean",
"description": "Show explanations for why papers are recommended"
},
"minimumEndorsementThreshold": {
"type": "integer",
"description": "Minimum number of endorsements for a paper to appear in recommendations"
},
"followingTabIncludesWorkFields": {
"type": "boolean",
"description": "Whether the Following tab also includes the user's work fields"
}
}
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"properties": {}
},
"description": "Get the authenticated user's discovery settings from their PDS"
},
"trendingPreferences": {
"type": "object",
"properties": {
"defaultLimit": {
"type": "integer",
"maximum": 100,
"minimum": 5,
"description": "Default number of trending results to show"
},
"defaultWindow": {
"type": "string",
"description": "Default time window for trending",
"knownValues": [
"24h",
"7d",
"30d"
]
}
},
"description": "Preferences for the trending feed"
},
"relatedPapersSignals": {
"type": "object",
"properties": {
"topics": {
"type": "boolean",
"description": "Show topic/concept-based relationships"
},
"authors": {
"type": "boolean",
"description": "Show papers by overlapping authors"
},
"semantic": {
"type": "boolean",
"description": "Show semantically similar papers (SPECTER2 / MLT)"
},
"citations": {
"type": "boolean",
"description": "Show citation-based relationships"
},
"coCitation": {
"type": "boolean",
"description": "Show papers frequently cited together"
},
"collaborative": {
"type": "boolean",
"description": "Show collaborative filtering recommendations"
},
"bibliographicCoupling": {
"type": "boolean",
"description": "Show papers that cite the same references"
}
},
"description": "Configuration for related papers panel signals"
},
"relatedPapersWeights": {
"type": "object",
"properties": {
"semantic": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Weight for SPECTER2 / MLT semantic similarity"
},
"coCitation": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Weight for co-citation and bibliographic coupling"
},
"authorNetwork": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Weight for co-author network proximity"
},
"collaborative": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Weight for collaborative filtering signal"
},
"conceptOverlap": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Weight for OpenAlex concept/topic overlap"
}
},
"description": "Relative importance of each related papers signal (0-100, auto-normalized)"
},
"relatedPapersThresholds": {
"type": "object",
"properties": {
"minScore": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Minimum combined score to include a paper (0-100, maps to 0.0-1.0)"
},
"maxResults": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum number of related papers to show"
}
},
"description": "Thresholds for related papers filtering"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"revision": 1
}