{
"id": "app.thesocialwire.preferences",
"defs": {
"main": {
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"createdAt",
"updatedAt"
],
"properties": {
"createdAt": {
"type": "string",
"format": "datetime",
"maxLength": 64,
"description": "ISO 8601 timestamp when this preferences record was created."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"maxLength": 64,
"description": "ISO 8601 timestamp when this preferences record was last updated."
},
"visibleFeeds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 32,
"knownValues": [
"readLater",
"archive",
"subscribed",
"following"
]
},
"description": "Ordered top-level reader feeds shown in clients. At least one value must be retained by clients."
},
"readLaterService": {
"type": "string",
"maxLength": 32,
"description": "The read-later provider used by the /saved surface.",
"knownValues": [
"latr-link",
"latrkit",
"instapaper",
"omnivore",
"readwise-reader",
"raindrop"
]
},
"rssArticleOpenMode": {
"type": "string",
"maxLength": 16,
"description": "Whether RSS articles open in The Social Wire's native feed-content reader or on the publisher's original site.",
"knownValues": [
"reader",
"original"
]
},
"readLaterConnections": {
"type": "object",
"properties": {
"omnivore": {
"ref": "#connection",
"type": "ref"
},
"raindrop": {
"ref": "#connection",
"type": "ref"
},
"instapaper": {
"ref": "#connection",
"type": "ref"
},
"readwise-reader": {
"ref": "#connection",
"type": "ref"
}
},
"description": "Non-sensitive connection metadata for read-later providers. Do not store API tokens, passwords, refresh tokens, or secrets here."
},
"feedsWithUnreadCounts": {
"type": "array",
"items": {
"type": "string",
"maxLength": 32,
"knownValues": [
"readLater",
"archive",
"subscribed",
"following"
]
},
"description": "Top-level reader feeds whose unread badges are shown. Values should also appear in visibleFeeds."
},
"showTopLevelFeedUnreadCounts": {
"type": "boolean",
"description": "Legacy global switch for aggregate unread badges. New clients use feedsWithUnreadCounts."
}
}
},
"description": "Account-level preferences for The Social Wire. This record stores non-sensitive preferences only; third-party access tokens and secrets must not be stored in ATProto repos."
},
"connection": {
"type": "object",
"properties": {
"connectedAt": {
"type": "string",
"format": "datetime",
"maxLength": 64,
"description": "ISO 8601 timestamp when the provider was connected."
},
"accountLabel": {
"type": "string",
"maxLength": 320,
"description": "User-visible account identifier, such as a username or email. Do not store credentials."
}
},
"description": "Non-sensitive provider connection metadata."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}