com.suibari.nagi.post

suibari.com

Schema Diff

+13 -0

From

CID
bafyreih5sy3jkyu...
Indexed At
2026-07-22 04:13 UTC
View this version

To

CID
bafyreieg2dqy3i2...
Indexed At
2026-07-29 11:42 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 8 non-breaking changes.

Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post#image.contentWarning" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.channel" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.channelOnly" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.cwRestricted" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post#image", tgt: "com.suibari.nagi.post#image.contentWarning", kind: "prop", name: Some("contentWarning") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channel", kind: "prop", name: Some("channel") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channelOnly", kind: "prop", name: Some("channelOnly") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.cwRestricted", kind: "prop", name: Some("cwRestricted") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.post#image.contentWarning" }
  • AddedVertex { vertex_id: "com.suibari.nagi.post:body.channel" }
  • AddedVertex { vertex_id: "com.suibari.nagi.post:body.channelOnly" }
  • AddedVertex { vertex_id: "com.suibari.nagi.post:body.cwRestricted" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.suibari.nagi.post#image", tgt: "com.suibari.nagi.post#image.contentWarning", kind: "prop", name: Some("contentWarning") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channel", kind: "prop", name: Some("channel") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.channelOnly", kind: "prop", name: Some("channelOnly") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.cwRestricted", kind: "prop", name: Some("cwRestricted") }
1 1
{
2 2
  "id": "com.suibari.nagi.post",
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
          "text",
11 11
          "createdAt"
12 12
        ],
13 13
        "properties": {
14 14
          "text": {
15 15
            "type": "string",
16 16
            "maxLength": 30000,
17 17
            "maxGraphemes": 3000
18 18
          },
19 19
          "embed": {
20 20
            "refs": [
21 21
              "#images",
22 22
              "#quote"
23 23
            ],
24 24
            "type": "union"
25 25
          },
26 26
          "langs": {
27 27
            "type": "array",
28 28
            "items": {
29 29
              "type": "string",
30 30
              "format": "language"
31 31
            },
32 32
            "maxLength": 3
33 33
          },
34 34
          "reply": {
35 35
            "ref": "#replyRef",
36 36
            "type": "ref"
37 37
          },
38 38
          "facets": {
39 39
            "type": "array",
40 40
            "items": {
41 41
              "ref": "app.bsky.richtext.facet",
42 42
              "type": "ref"
43 43
            }
44 44
          },
45 +
          "channel": {
46 +
            "ref": "com.atproto.repo.strongRef",
47 +
            "type": "ref"
48 +
          },
45 49
          "kossori": {
46 50
            "type": "boolean"
47 51
          },
48 52
          "createdAt": {
49 53
            "type": "string",
50 54
            "format": "datetime"
51 55
          },
52 56
          "linkCards": {
53 57
            "type": "array",
54 58
            "items": {
55 59
              "ref": "#linkCard",
56 60
              "type": "ref"
57 61
            },
58 62
            "maxLength": 4
63 +
          },
64 +
          "channelOnly": {
65 +
            "type": "boolean"
66 +
          },
67 +
          "cwRestricted": {
68 +
            "type": "boolean"
59 69
          }
60 70
        }
61 71
      }
62 72
    },
63 73
    "image": {
64 74
      "type": "object",
65 75
      "required": [
66 76
        "image",
67 77
        "alt"
68 78
      ],
69 79
      "properties": {
70 80
        "alt": {
71 81
          "type": "string",
72 82
          "maxLength": 10000,
73 83
          "maxGraphemes": 1000
74 84
        },
75 85
        "image": {
76 86
          "type": "blob",
77 87
          "accept": [
78 88
            "image/jpeg",
79 89
            "image/png",
80 90
            "image/webp",
81 91
            "image/gif"
82 92
          ],
83 93
          "maxSize": 2000000
84 94
        },
85 95
        "aspectRatio": {
86 96
          "ref": "app.bsky.embed.defs#aspectRatio",
87 97
          "type": "ref"
98 +
        },
99 +
        "contentWarning": {
100 +
          "type": "boolean"
88 101
        }
89 102
      }
90 103
    },
91 104
    "quote": {
92 105
      "type": "object",
93 106
      "required": [
94 107
        "record"
95 108
      ],
96 109
      "properties": {
97 110
        "images": {
98 111
          "type": "array",
99 112
          "items": {
100 113
            "ref": "#image",
101 114
            "type": "ref"
102 115
          },
103 116
          "maxLength": 4,
104 117
          "minLength": 1
105 118
        },
106 119
        "record": {
107 120
          "ref": "com.atproto.repo.strongRef",
108 121
          "type": "ref"
109 122
        }
110 123
      }
111 124
    },
112 125
    "images": {
113 126
      "type": "object",
114 127
      "required": [
115 128
        "images"
116 129
      ],
117 130
      "properties": {
118 131
        "images": {
119 132
          "type": "array",
120 133
          "items": {
121 134
            "ref": "#image",
122 135
            "type": "ref"
123 136
          },
124 137
          "maxLength": 4,
125 138
          "minLength": 1
126 139
        }
127 140
      }
128 141
    },
129 142
    "linkCard": {
130 143
      "type": "object",
131 144
      "required": [
132 145
        "uri",
133 146
        "title"
134 147
      ],
135 148
      "properties": {
136 149
        "uri": {
137 150
          "type": "string",
138 151
          "format": "uri",
139 152
          "maxLength": 2048
140 153
        },
141 154
        "thumb": {
142 155
          "type": "blob",
143 156
          "accept": [
144 157
            "image/jpeg",
145 158
            "image/png",
146 159
            "image/webp"
147 160
          ],
148 161
          "maxSize": 1000000
149 162
        },
150 163
        "title": {
151 164
          "type": "string",
152 165
          "maxLength": 3000,
153 166
          "maxGraphemes": 300
154 167
        },
155 168
        "description": {
156 169
          "type": "string",
157 170
          "maxLength": 10000,
158 171
          "maxGraphemes": 1000
159 172
        }
160 173
      }
161 174
    },
162 175
    "replyRef": {
163 176
      "type": "object",
164 177
      "required": [
165 178
        "root",
166 179
        "parent"
167 180
      ],
168 181
      "properties": {
169 182
        "root": {
170 183
          "ref": "com.atproto.repo.strongRef",
171 184
          "type": "ref"
172 185
        },
173 186
        "parent": {
174 187
          "ref": "com.atproto.repo.strongRef",
175 188
          "type": "ref"
176 189
        }
177 190
      }
178 191
    }
179 192
  },
180 193
  "$type": "com.atproto.lexicon.schema",
181 194
  "lexicon": 1
182 195
}

Compare Other Versions

Lexicon Garden

@