Various AT Protocol integrations with obsidian
20
fork

Configure Feed

Select the types of activity you want to include in your feed.

remove lex generated code

-949
-44
lex.config.js
··· 1 - // file: lex.config.js 2 - import { defineLexiconConfig } from '@atcute/lex-cli'; 3 - 4 - export default defineLexiconConfig({ 5 - files: ['lexicons/**/*.json'], 6 - outdir: 'src/lexicons/', 7 - pull: { 8 - outdir: 'lexicons/', 9 - clean: false, 10 - sources: [ 11 - { 12 - type: 'git', 13 - remote: 'https://github.com/cosmik-network/semble.git', 14 - ref: 'main', 15 - pattern: ['src/modules/atproto/infrastructure/lexicons/**/*.json'], 16 - }, 17 - { 18 - type: 'git', 19 - remote: 'https://tangled.org/margin.at/margin.git', 20 - ref: 'main', 21 - pattern: ['lexicons/**/*.json'], 22 - }, 23 - // { 24 - // type: 'git', 25 - // remote: 'https://tangled.org/leaflet.pub/leaflet.git', 26 - // ref: 'main', 27 - // pattern: ['lexicons/**/*.json'], 28 - // }, 29 - // { 30 - // type: 'atproto', 31 - // mode: 'nsids', 32 - // nsids: [ 33 - // 'site.standard.publication', 34 - // 'site.standard.document', 35 - // 'site.standard.theme.basic', 36 - // 'site.standard.theme.color', 37 - // 'pub.leaflet.document', 38 - // 'pub.leaflet.canvas', 39 - // 40 - // ], 41 - // }, 42 - ], 43 - }, 44 - });
-8
lexicons/README.md
··· 1 - # lexicon sources 2 - 3 - this directory contains lexicon documents pulled from the following sources: 4 - 5 - - https://github.com/cosmik-network/semble.git (ref: main) 6 - - commit: 0c1ee36649c20c0713a0ad0fd20209c0154b8550 7 - - https://tangled.org/margin.at/margin.git (ref: main) 8 - - commit: ac7f76cb2ce7d27087825178d95e8d267b524d88
-273
lexicons/at/margin/annotation.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.annotation", 4 - "revision": 2, 5 - "description": "W3C Web Annotation Data Model compliant annotation record for ATProto", 6 - "defs": { 7 - "main": { 8 - "type": "record", 9 - "description": "A W3C-compliant web annotation stored on the AT Protocol", 10 - "key": "tid", 11 - "record": { 12 - "type": "object", 13 - "required": ["target", "createdAt"], 14 - "properties": { 15 - "motivation": { 16 - "type": "string", 17 - "description": "W3C motivation for the annotation", 18 - "knownValues": [ 19 - "commenting", 20 - "highlighting", 21 - "bookmarking", 22 - "tagging", 23 - "describing", 24 - "linking", 25 - "replying", 26 - "editing", 27 - "questioning", 28 - "assessing" 29 - ] 30 - }, 31 - "body": { 32 - "type": "ref", 33 - "ref": "#body", 34 - "description": "The annotation content (text or reference)" 35 - }, 36 - "target": { 37 - "type": "ref", 38 - "ref": "#target", 39 - "description": "The resource being annotated with optional selector" 40 - }, 41 - "tags": { 42 - "type": "array", 43 - "description": "Tags for categorization", 44 - "items": { 45 - "type": "string", 46 - "maxLength": 64, 47 - "maxGraphemes": 32 48 - }, 49 - "maxLength": 10 50 - }, 51 - "createdAt": { 52 - "type": "string", 53 - "format": "datetime" 54 - } 55 - } 56 - } 57 - }, 58 - "body": { 59 - "type": "object", 60 - "description": "Annotation body - the content of the annotation", 61 - "properties": { 62 - "value": { 63 - "type": "string", 64 - "maxLength": 10000, 65 - "maxGraphemes": 3000, 66 - "description": "Text content of the annotation" 67 - }, 68 - "format": { 69 - "type": "string", 70 - "description": "MIME type of the body content", 71 - "default": "text/plain" 72 - }, 73 - "language": { 74 - "type": "string", 75 - "description": "BCP47 language tag" 76 - }, 77 - "uri": { 78 - "type": "string", 79 - "format": "uri", 80 - "description": "Reference to external body content" 81 - } 82 - } 83 - }, 84 - "target": { 85 - "type": "object", 86 - "description": "W3C SpecificResource - the target with optional selector", 87 - "required": ["source"], 88 - "properties": { 89 - "source": { 90 - "type": "string", 91 - "format": "uri", 92 - "description": "The URL being annotated" 93 - }, 94 - "sourceHash": { 95 - "type": "string", 96 - "description": "SHA256 hash of normalized URL for indexing" 97 - }, 98 - "title": { 99 - "type": "string", 100 - "maxLength": 500, 101 - "description": "Page title at time of annotation" 102 - }, 103 - "selector": { 104 - "type": "union", 105 - "description": "Selector to identify the specific segment", 106 - "refs": [ 107 - "#textQuoteSelector", 108 - "#textPositionSelector", 109 - "#cssSelector", 110 - "#xpathSelector", 111 - "#fragmentSelector", 112 - "#rangeSelector" 113 - ] 114 - }, 115 - "state": { 116 - "type": "ref", 117 - "ref": "#timeState", 118 - "description": "State of the resource at annotation time" 119 - } 120 - } 121 - }, 122 - "textQuoteSelector": { 123 - "type": "object", 124 - "description": "W3C TextQuoteSelector - select text by quoting it with context", 125 - "required": ["exact"], 126 - "properties": { 127 - "type": { 128 - "type": "string", 129 - "const": "TextQuoteSelector" 130 - }, 131 - "exact": { 132 - "type": "string", 133 - "maxLength": 5000, 134 - "maxGraphemes": 1500, 135 - "description": "The exact text to match" 136 - }, 137 - "prefix": { 138 - "type": "string", 139 - "maxLength": 500, 140 - "maxGraphemes": 150, 141 - "description": "Text immediately before the selection" 142 - }, 143 - "suffix": { 144 - "type": "string", 145 - "maxLength": 500, 146 - "maxGraphemes": 150, 147 - "description": "Text immediately after the selection" 148 - } 149 - } 150 - }, 151 - "textPositionSelector": { 152 - "type": "object", 153 - "description": "W3C TextPositionSelector - select by character offsets", 154 - "required": ["start", "end"], 155 - "properties": { 156 - "type": { 157 - "type": "string", 158 - "const": "TextPositionSelector" 159 - }, 160 - "start": { 161 - "type": "integer", 162 - "minimum": 0, 163 - "description": "Starting character position (0-indexed, inclusive)" 164 - }, 165 - "end": { 166 - "type": "integer", 167 - "minimum": 0, 168 - "description": "Ending character position (exclusive)" 169 - } 170 - } 171 - }, 172 - "cssSelector": { 173 - "type": "object", 174 - "description": "W3C CssSelector - select DOM elements by CSS selector", 175 - "required": ["value"], 176 - "properties": { 177 - "type": { 178 - "type": "string", 179 - "const": "CssSelector" 180 - }, 181 - "value": { 182 - "type": "string", 183 - "maxLength": 2000, 184 - "description": "CSS selector string" 185 - } 186 - } 187 - }, 188 - "xpathSelector": { 189 - "type": "object", 190 - "description": "W3C XPathSelector - select by XPath expression", 191 - "required": ["value"], 192 - "properties": { 193 - "type": { 194 - "type": "string", 195 - "const": "XPathSelector" 196 - }, 197 - "value": { 198 - "type": "string", 199 - "maxLength": 2000, 200 - "description": "XPath expression" 201 - } 202 - } 203 - }, 204 - "fragmentSelector": { 205 - "type": "object", 206 - "description": "W3C FragmentSelector - select by URI fragment", 207 - "required": ["value"], 208 - "properties": { 209 - "type": { 210 - "type": "string", 211 - "const": "FragmentSelector" 212 - }, 213 - "value": { 214 - "type": "string", 215 - "maxLength": 1000, 216 - "description": "Fragment identifier value" 217 - }, 218 - "conformsTo": { 219 - "type": "string", 220 - "format": "uri", 221 - "description": "Specification the fragment conforms to" 222 - } 223 - } 224 - }, 225 - "rangeSelector": { 226 - "type": "object", 227 - "description": "W3C RangeSelector - select range between two selectors", 228 - "required": ["startSelector", "endSelector"], 229 - "properties": { 230 - "type": { 231 - "type": "string", 232 - "const": "RangeSelector" 233 - }, 234 - "startSelector": { 235 - "type": "union", 236 - "description": "Selector for range start", 237 - "refs": [ 238 - "#textQuoteSelector", 239 - "#textPositionSelector", 240 - "#cssSelector", 241 - "#xpathSelector" 242 - ] 243 - }, 244 - "endSelector": { 245 - "type": "union", 246 - "description": "Selector for range end", 247 - "refs": [ 248 - "#textQuoteSelector", 249 - "#textPositionSelector", 250 - "#cssSelector", 251 - "#xpathSelector" 252 - ] 253 - } 254 - } 255 - }, 256 - "timeState": { 257 - "type": "object", 258 - "description": "W3C TimeState - record when content was captured", 259 - "properties": { 260 - "sourceDate": { 261 - "type": "string", 262 - "format": "datetime", 263 - "description": "When the source was accessed" 264 - }, 265 - "cached": { 266 - "type": "string", 267 - "format": "uri", 268 - "description": "URL to cached/archived version" 269 - } 270 - } 271 - } 272 - } 273 - }
-30
lexicons/at/margin/authFull.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.authFull", 4 - "defs": { 5 - "main": { 6 - "type": "permission-set", 7 - "title": "Margin", 8 - "title:langs": {}, 9 - "detail": "Full access to Margin features including annotations, highlights, bookmarks, and collections.", 10 - "detail:langs": {}, 11 - "permissions": [ 12 - { 13 - "type": "permission", 14 - "resource": "repo", 15 - "action": ["create", "update", "delete"], 16 - "collection": [ 17 - "at.margin.annotation", 18 - "at.margin.highlight", 19 - "at.margin.bookmark", 20 - "at.margin.reply", 21 - "at.margin.like", 22 - "at.margin.collection", 23 - "at.margin.collectionItem", 24 - "at.margin.profile" 25 - ] 26 - } 27 - ] 28 - } 29 - } 30 - }
-52
lexicons/at/margin/bookmark.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.bookmark", 4 - "description": "A bookmark record - save URL for later", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "A bookmarked URL (motivation: bookmarking)", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["source", "createdAt"], 13 - "properties": { 14 - "source": { 15 - "type": "string", 16 - "format": "uri", 17 - "description": "The bookmarked URL" 18 - }, 19 - "sourceHash": { 20 - "type": "string", 21 - "description": "SHA256 hash of normalized URL for indexing" 22 - }, 23 - "title": { 24 - "type": "string", 25 - "maxLength": 500, 26 - "description": "Page title" 27 - }, 28 - "description": { 29 - "type": "string", 30 - "maxLength": 1000, 31 - "maxGraphemes": 300, 32 - "description": "Optional description/note" 33 - }, 34 - "tags": { 35 - "type": "array", 36 - "description": "Tags for categorization", 37 - "items": { 38 - "type": "string", 39 - "maxLength": 64, 40 - "maxGraphemes": 32 41 - }, 42 - "maxLength": 10 43 - }, 44 - "createdAt": { 45 - "type": "string", 46 - "format": "datetime" 47 - } 48 - } 49 - } 50 - } 51 - } 52 - }
-40
lexicons/at/margin/collection.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.collection", 4 - "description": "A collection of annotations (like a folder or notebook)", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "A named collection for organizing annotations", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["name", "createdAt"], 13 - "properties": { 14 - "name": { 15 - "type": "string", 16 - "maxLength": 100, 17 - "maxGraphemes": 50, 18 - "description": "Collection name" 19 - }, 20 - "description": { 21 - "type": "string", 22 - "maxLength": 500, 23 - "maxGraphemes": 150, 24 - "description": "Collection description" 25 - }, 26 - "icon": { 27 - "type": "string", 28 - "maxLength": 100, 29 - "maxGraphemes": 100, 30 - "description": "Emoji icon or icon identifier for the collection" 31 - }, 32 - "createdAt": { 33 - "type": "string", 34 - "format": "datetime" 35 - } 36 - } 37 - } 38 - } 39 - } 40 - }
-37
lexicons/at/margin/collectionItem.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.collectionItem", 4 - "description": "An item in a collection (links annotation to collection)", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "Associates an annotation with a collection", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["collection", "annotation", "createdAt"], 13 - "properties": { 14 - "collection": { 15 - "type": "string", 16 - "format": "at-uri", 17 - "description": "AT URI of the collection" 18 - }, 19 - "annotation": { 20 - "type": "string", 21 - "format": "at-uri", 22 - "description": "AT URI of the annotation, highlight, or bookmark" 23 - }, 24 - "position": { 25 - "type": "integer", 26 - "minimum": 0, 27 - "description": "Sort order within the collection" 28 - }, 29 - "createdAt": { 30 - "type": "string", 31 - "format": "datetime" 32 - } 33 - } 34 - } 35 - } 36 - } 37 - }
-42
lexicons/at/margin/highlight.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.highlight", 4 - "description": "A lightweight highlight record - annotation without body text", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "A highlight on a web page (motivation: highlighting)", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["target", "createdAt"], 13 - "properties": { 14 - "target": { 15 - "type": "ref", 16 - "ref": "at.margin.annotation#target", 17 - "description": "The resource and segment being highlighted" 18 - }, 19 - "color": { 20 - "type": "string", 21 - "description": "Highlight color (hex or named)", 22 - "maxLength": 20 23 - }, 24 - "tags": { 25 - "type": "array", 26 - "description": "Tags for categorization", 27 - "items": { 28 - "type": "string", 29 - "maxLength": 64, 30 - "maxGraphemes": 32 31 - }, 32 - "maxLength": 10 33 - }, 34 - "createdAt": { 35 - "type": "string", 36 - "format": "datetime" 37 - } 38 - } 39 - } 40 - } 41 - } 42 - }
-40
lexicons/at/margin/like.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.like", 4 - "defs": { 5 - "main": { 6 - "type": "record", 7 - "description": "A like on an annotation or reply", 8 - "key": "tid", 9 - "record": { 10 - "type": "object", 11 - "required": ["subject", "createdAt"], 12 - "properties": { 13 - "subject": { 14 - "type": "ref", 15 - "ref": "#subjectRef", 16 - "description": "Reference to the annotation or reply being liked" 17 - }, 18 - "createdAt": { 19 - "type": "string", 20 - "format": "datetime" 21 - } 22 - } 23 - } 24 - }, 25 - "subjectRef": { 26 - "type": "object", 27 - "required": ["uri", "cid"], 28 - "properties": { 29 - "uri": { 30 - "type": "string", 31 - "format": "at-uri" 32 - }, 33 - "cid": { 34 - "type": "string", 35 - "format": "cid" 36 - } 37 - } 38 - } 39 - } 40 - }
-51
lexicons/at/margin/profile.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.profile", 4 - "defs": { 5 - "main": { 6 - "type": "record", 7 - "description": "A profile for a user on the Margin network.", 8 - "key": "literal:self", 9 - "record": { 10 - "type": "object", 11 - "required": ["createdAt"], 12 - "properties": { 13 - "displayName": { 14 - "type": "string", 15 - "maxLength": 640, 16 - "description": "Display name for the user." 17 - }, 18 - "avatar": { 19 - "type": "blob", 20 - "accept": ["image/png", "image/jpeg"], 21 - "maxSize": 1000000, 22 - "description": "User avatar image." 23 - }, 24 - "bio": { 25 - "type": "string", 26 - "maxLength": 5000, 27 - "description": "User biography or description." 28 - }, 29 - "website": { 30 - "type": "string", 31 - "maxLength": 1000, 32 - "description": "User website URL." 33 - }, 34 - "links": { 35 - "type": "array", 36 - "description": "List of other relevant links (e.g. GitHub, Bluesky, etc).", 37 - "items": { 38 - "type": "string", 39 - "maxLength": 1000 40 - }, 41 - "maxLength": 20 42 - }, 43 - "createdAt": { 44 - "type": "string", 45 - "format": "datetime" 46 - } 47 - } 48 - } 49 - } 50 - } 51 - }
-59
lexicons/at/margin/reply.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "at.margin.reply", 4 - "revision": 2, 5 - "description": "A reply to an annotation or another reply", 6 - "defs": { 7 - "main": { 8 - "type": "record", 9 - "description": "A reply to an annotation (motivation: replying)", 10 - "key": "tid", 11 - "record": { 12 - "type": "object", 13 - "required": ["parent", "root", "text", "createdAt"], 14 - "properties": { 15 - "parent": { 16 - "type": "ref", 17 - "ref": "#replyRef", 18 - "description": "Reference to the parent annotation or reply" 19 - }, 20 - "root": { 21 - "type": "ref", 22 - "ref": "#replyRef", 23 - "description": "Reference to the root annotation of the thread" 24 - }, 25 - "text": { 26 - "type": "string", 27 - "maxLength": 10000, 28 - "maxGraphemes": 3000, 29 - "description": "Reply text content" 30 - }, 31 - "format": { 32 - "type": "string", 33 - "description": "MIME type of the text content", 34 - "default": "text/plain" 35 - }, 36 - "createdAt": { 37 - "type": "string", 38 - "format": "datetime" 39 - } 40 - } 41 - } 42 - }, 43 - "replyRef": { 44 - "type": "object", 45 - "description": "Strong reference to an annotation or reply", 46 - "required": ["uri", "cid"], 47 - "properties": { 48 - "uri": { 49 - "type": "string", 50 - "format": "at-uri" 51 - }, 52 - "cid": { 53 - "type": "string", 54 - "format": "cid" 55 - } 56 - } 57 - } 58 - } 59 - }
-21
lexicons/com/atproto/repo/strongRef.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.repo.strongRef", 4 - "description": "A URI with a content-hash fingerprint.", 5 - "defs": { 6 - "main": { 7 - "type": "object", 8 - "required": ["uri", "cid"], 9 - "properties": { 10 - "cid": { 11 - "type": "string", 12 - "format": "cid" 13 - }, 14 - "uri": { 15 - "type": "string", 16 - "format": "at-uri" 17 - } 18 - } 19 - } 20 - } 21 - }
-131
lexicons/network/cosmik/card.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "network.cosmik.card", 4 - "description": "A single record type for all cards.", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "A record representing a card with content.", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["type", "content"], 13 - "properties": { 14 - "type": { 15 - "type": "string", 16 - "description": "The type of card", 17 - "knownValues": ["URL", "NOTE"] 18 - }, 19 - "content": { 20 - "type": "union", 21 - "description": "The specific content of the card, determined by the card type.", 22 - "refs": ["#urlContent", "#noteContent"] 23 - }, 24 - "url": { 25 - "type": "string", 26 - "format": "uri", 27 - "description": "Optional URL associated with the card. Required for URL cards, optional for NOTE cards." 28 - }, 29 - "parentCard": { 30 - "type": "ref", 31 - "description": "Optional strong reference to a parent card (for NOTE cards).", 32 - "ref": "com.atproto.repo.strongRef" 33 - }, 34 - "createdAt": { 35 - "type": "string", 36 - "format": "datetime", 37 - "description": "Timestamp when this card was created (usually set by PDS)." 38 - }, 39 - "originalCard": { 40 - "type": "ref", 41 - "description": "Optional strong reference to the original card (for NOTE cards).", 42 - "ref": "com.atproto.repo.strongRef" 43 - }, 44 - "provenance": { 45 - "type": "ref", 46 - "description": "Optional provenance information for this card.", 47 - "ref": "network.cosmik.defs#provenance" 48 - } 49 - } 50 - } 51 - }, 52 - "urlContent": { 53 - "type": "object", 54 - "description": "Content structure for a URL card.", 55 - "required": ["url"], 56 - "properties": { 57 - "url": { 58 - "type": "string", 59 - "format": "uri", 60 - "description": "The URL being saved" 61 - }, 62 - "metadata": { 63 - "type": "ref", 64 - "ref": "#urlMetadata", 65 - "description": "Optional metadata about the URL" 66 - } 67 - } 68 - }, 69 - "noteContent": { 70 - "type": "object", 71 - "description": "Content structure for a note card.", 72 - "required": ["text"], 73 - "properties": { 74 - "text": { 75 - "type": "string", 76 - "description": "The note text content", 77 - "maxLength": 10000 78 - } 79 - } 80 - }, 81 - "urlMetadata": { 82 - "type": "object", 83 - "description": "Metadata about a URL.", 84 - "properties": { 85 - "title": { 86 - "type": "string", 87 - "description": "Title of the page" 88 - }, 89 - "description": { 90 - "type": "string", 91 - "description": "Description of the page" 92 - }, 93 - "author": { 94 - "type": "string", 95 - "description": "Author of the content" 96 - }, 97 - "publishedDate": { 98 - "type": "string", 99 - "format": "datetime", 100 - "description": "When the content was published" 101 - }, 102 - "siteName": { 103 - "type": "string", 104 - "description": "Name of the site" 105 - }, 106 - "imageUrl": { 107 - "type": "string", 108 - "format": "uri", 109 - "description": "URL of a representative image" 110 - }, 111 - "type": { 112 - "type": "string", 113 - "description": "Type of content (e.g., 'video', 'article')" 114 - }, 115 - "retrievedAt": { 116 - "type": "string", 117 - "format": "datetime", 118 - "description": "When the metadata was retrieved" 119 - }, 120 - "doi": { 121 - "type": "string", 122 - "description": "Digital Object Identifier (DOI) for academic content" 123 - }, 124 - "isbn": { 125 - "type": "string", 126 - "description": "International Standard Book Number (ISBN) for books" 127 - } 128 - } 129 - } 130 - } 131 - }
-51
lexicons/network/cosmik/collection.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "network.cosmik.collection", 4 - "description": "A single record type for collections of cards.", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "A record representing a collection of cards.", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["name", "accessType"], 13 - "properties": { 14 - "name": { 15 - "type": "string", 16 - "description": "Name of the collection", 17 - "maxLength": 100 18 - }, 19 - "description": { 20 - "type": "string", 21 - "description": "Description of the collection", 22 - "maxLength": 500 23 - }, 24 - "accessType": { 25 - "type": "string", 26 - "description": "Access control for the collection", 27 - "knownValues": ["OPEN", "CLOSED"] 28 - }, 29 - "collaborators": { 30 - "type": "array", 31 - "description": "List of collaborator DIDs who can add cards to closed collections", 32 - "items": { 33 - "type": "string", 34 - "description": "DID of a collaborator" 35 - } 36 - }, 37 - "createdAt": { 38 - "type": "string", 39 - "format": "datetime", 40 - "description": "Timestamp when this collection was created (usually set by PDS)." 41 - }, 42 - "updatedAt": { 43 - "type": "string", 44 - "format": "datetime", 45 - "description": "Timestamp when this collection was last updated." 46 - } 47 - } 48 - } 49 - } 50 - } 51 - }
-52
lexicons/network/cosmik/collectionLink.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "network.cosmik.collectionLink", 4 - "description": "A record that links a card to a collection.", 5 - "defs": { 6 - "main": { 7 - "type": "record", 8 - "description": "A record representing the relationship between a card and a collection.", 9 - "key": "tid", 10 - "record": { 11 - "type": "object", 12 - "required": ["collection", "card", "addedBy", "addedAt"], 13 - "properties": { 14 - "collection": { 15 - "type": "ref", 16 - "description": "Strong reference to the collection record.", 17 - "ref": "com.atproto.repo.strongRef" 18 - }, 19 - "card": { 20 - "type": "ref", 21 - "description": "Strong reference to the card record in the users library.", 22 - "ref": "com.atproto.repo.strongRef" 23 - }, 24 - "originalCard": { 25 - "type": "ref", 26 - "description": "Strong reference to the original card record (may be in another library).", 27 - "ref": "com.atproto.repo.strongRef" 28 - }, 29 - "addedBy": { 30 - "type": "string", 31 - "description": "DID of the user who added the card to the collection" 32 - }, 33 - "addedAt": { 34 - "type": "string", 35 - "format": "datetime", 36 - "description": "Timestamp when the card was added to the collection." 37 - }, 38 - "createdAt": { 39 - "type": "string", 40 - "format": "datetime", 41 - "description": "Timestamp when this link record was created (usually set by PDS)." 42 - }, 43 - "provenance": { 44 - "type": "ref", 45 - "description": "Optional provenance information for this link.", 46 - "ref": "network.cosmik.defs#provenance" 47 - } 48 - } 49 - } 50 - } 51 - } 52 - }
-18
lexicons/network/cosmik/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "network.cosmik.defs", 4 - "description": "Common definitions for annotation types and references", 5 - "defs": { 6 - "provenance": { 7 - "type": "object", 8 - "description": "Represents the provenance or source of a record.", 9 - "properties": { 10 - "via": { 11 - "type": "ref", 12 - "description": "Strong reference to the card that led to this record.", 13 - "ref": "com.atproto.repo.strongRef" 14 - } 15 - } 16 - } 17 - } 18 - }