site.mochott.article

tokimeki.blue

Schema Diff

+5 -0

From

CID
bafyreigmpnxog5b...
Indexed At
2026-03-25 13:32 UTC
View this version

To

CID
bafyreic6dc5bggs...
Indexed At
2026-08-03 12:09 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "site.mochott.article:body.topic" }
  • AddedEdge AddedEdge { src: "site.mochott.article:body", tgt: "site.mochott.article:body.topic", kind: "prop", name: Some("topic") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "site.mochott.article:body.topic" }

Additional Notes

  • Non-breaking: AddedEdge { src: "site.mochott.article:body", tgt: "site.mochott.article:body.topic", kind: "prop", name: Some("topic") }
1 1
{
2 2
  "id": "site.mochott.article",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "profile",
11 11
          "title",
12 12
          "createdAt"
13 13
        ],
14 14
        "properties": {
15 15
          "path": {
16 16
            "type": "string",
17 17
            "maxLength": 500,
18 18
            "description": "Custom URL path slug for the article. Used to construct human-readable URLs."
19 19
          },
20 20
          "tags": {
21 21
            "type": "array",
22 22
            "items": {
23 23
              "type": "string",
24 24
              "maxLength": 640,
25 25
              "maxGraphemes": 64
26 26
            },
27 27
            "maxLength": 8,
28 28
            "description": "Tags for categorizing the article."
29 29
          },
30 30
          "blobs": {
31 31
            "type": "array",
32 32
            "items": {
33 33
              "ref": "site.mochott.defs#blobMetadata",
34 34
              "type": "ref"
35 35
            },
36 36
            "description": "Blob references for media embedded within the article content."
37 37
          },
38 38
          "title": {
39 39
            "type": "string",
40 40
            "maxLength": 5000,
41 41
            "description": "Title of the article.",
42 42
            "maxGraphemes": 500
43 43
          },
44 +
          "topic": {
45 +
            "type": "string",
46 +
            "maxLength": 100,
47 +
            "description": "Slug of the platform writing topic (投稿のお題) this article participates in."
48 +
          },
44 49
          "content": {
45 50
            "ref": "#tiptapDocument",
46 51
            "type": "ref",
47 52
            "description": "Rich text content in TipTap editor JSON format."
48 53
          },
49 54
          "profile": {
50 55
            "type": "string",
51 56
            "format": "at-uri",
52 57
            "description": "AT URI of the publication profile this article belongs to."
53 58
          },
54 59
          "category": {
55 60
            "type": "string",
56 61
            "maxLength": 100,
57 62
            "description": "Primary category of the article."
58 63
          },
59 64
          "createdAt": {
60 65
            "type": "string",
61 66
            "format": "datetime",
62 67
            "description": "Timestamp when the article was created."
63 68
          },
64 69
          "updatedAt": {
65 70
            "type": "string",
66 71
            "format": "datetime",
67 72
            "description": "Timestamp when the article was last updated."
68 73
          },
69 74
          "coverImage": {
70 75
            "type": "blob",
71 76
            "accept": [
72 77
              "image/png",
73 78
              "image/jpeg",
74 79
              "image/webp"
75 80
            ],
76 81
            "maxSize": 1000000,
77 82
            "description": "Cover image displayed at the top of the article and in previews."
78 83
          },
79 84
          "description": {
80 85
            "type": "string",
81 86
            "maxLength": 30000,
82 87
            "description": "Short summary or excerpt of the article, used for previews and SEO.",
83 88
            "maxGraphemes": 3000
84 89
          },
85 90
          "textContent": {
86 91
            "type": "string",
87 92
            "maxLength": 100000,
88 93
            "description": "Plain text representation of the article content, primarily for search indexing and text-only consumers."
89 94
          }
90 95
        }
91 96
      },
92 97
      "description": "Record representing a single blog article published to a publication."
93 98
    },
94 99
    "tiptapDocument": {
95 100
      "type": "object",
96 101
      "required": [
97 102
        "type"
98 103
      ],
99 104
      "properties": {
100 105
        "text": {
101 106
          "type": "string",
102 107
          "description": "Text content for text-type nodes."
103 108
        },
104 109
        "type": {
105 110
          "type": "string",
106 111
          "description": "Node type identifier (e.g. 'doc', 'paragraph', 'heading')."
107 112
        },
108 113
        "attrs": {
109 114
          "type": "unknown",
110 115
          "description": "Node-specific attributes."
111 116
        },
112 117
        "marks": {
113 118
          "type": "array",
114 119
          "items": {
115 120
            "type": "unknown"
116 121
          },
117 122
          "description": "Inline formatting marks applied to this node."
118 123
        },
119 124
        "content": {
120 125
          "type": "array",
121 126
          "items": {
122 127
            "type": "unknown"
123 128
          },
124 129
          "description": "Child nodes of this document node."
125 130
        }
126 131
      },
127 132
      "description": "A TipTap editor document node. Represents a recursive tree structure for rich text content."
128 133
    }
129 134
  },
130 135
  "$type": "com.atproto.lexicon.schema",
131 136
  "lexicon": 1,
132 137
  "revision": 1,
133 138
  "description": "A blog article record. Contains rich text content, metadata, and optional media attachments."
134 139
}

Compare Other Versions

Lexicon Garden

@