com.suibari.nagi.post

suibari.com

Schema Diff

+13 -0

From

CID
bafyreib6yz54o4n...
Indexed At
2026-07-23 06:37 UTC
View this version

To

CID
bafyreicxvzfevnh...
Indexed At
2026-08-28 15:58 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.botSilent" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.cwRestricted" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.silentReply" }
  • 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.botSilent", kind: "prop", name: Some("botSilent") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.cwRestricted", kind: "prop", name: Some("cwRestricted") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.silentReply", kind: "prop", name: Some("silentReply") }

Migration Guidance

Added Elements

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

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.botSilent", kind: "prop", name: Some("botSilent") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.cwRestricted", kind: "prop", name: Some("cwRestricted") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.silentReply", kind: "prop", name: Some("silentReply") }
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 45
          "channel": {
46 46
            "ref": "com.atproto.repo.strongRef",
47 47
            "type": "ref"
48 48
          },
49 49
          "kossori": {
50 50
            "type": "boolean"
51 51
          },
52 +
          "botSilent": {
53 +
            "type": "boolean"
54 +
          },
52 55
          "createdAt": {
53 56
            "type": "string",
54 57
            "format": "datetime"
55 58
          },
56 59
          "linkCards": {
57 60
            "type": "array",
58 61
            "items": {
59 62
              "ref": "#linkCard",
60 63
              "type": "ref"
61 64
            },
62 65
            "maxLength": 4
63 66
          },
64 67
          "channelOnly": {
65 68
            "type": "boolean"
69 +
          },
70 +
          "silentReply": {
71 +
            "type": "boolean",
72 +
            "description": "true の返信は直接の返信先へ通知しない。返信以外では効果を持たない。"
73 +
          },
74 +
          "cwRestricted": {
75 +
            "type": "boolean"
66 76
          }
67 77
        }
68 78
      }
69 79
    },
70 80
    "image": {
71 81
      "type": "object",
72 82
      "required": [
73 83
        "image",
74 84
        "alt"
75 85
      ],
76 86
      "properties": {
77 87
        "alt": {
78 88
          "type": "string",
79 89
          "maxLength": 10000,
80 90
          "maxGraphemes": 1000
81 91
        },
82 92
        "image": {
83 93
          "type": "blob",
84 94
          "accept": [
85 95
            "image/jpeg",
86 96
            "image/png",
87 97
            "image/webp",
88 98
            "image/gif"
89 99
          ],
90 100
          "maxSize": 2000000
91 101
        },
92 102
        "aspectRatio": {
93 103
          "ref": "app.bsky.embed.defs#aspectRatio",
94 104
          "type": "ref"
105 +
        },
106 +
        "contentWarning": {
107 +
          "type": "boolean"
95 108
        }
96 109
      }
97 110
    },
98 111
    "quote": {
99 112
      "type": "object",
100 113
      "required": [
101 114
        "record"
102 115
      ],
103 116
      "properties": {
104 117
        "images": {
105 118
          "type": "array",
106 119
          "items": {
107 120
            "ref": "#image",
108 121
            "type": "ref"
109 122
          },
110 123
          "maxLength": 4,
111 124
          "minLength": 1
112 125
        },
113 126
        "record": {
114 127
          "ref": "com.atproto.repo.strongRef",
115 128
          "type": "ref"
116 129
        }
117 130
      }
118 131
    },
119 132
    "images": {
120 133
      "type": "object",
121 134
      "required": [
122 135
        "images"
123 136
      ],
124 137
      "properties": {
125 138
        "images": {
126 139
          "type": "array",
127 140
          "items": {
128 141
            "ref": "#image",
129 142
            "type": "ref"
130 143
          },
131 144
          "maxLength": 4,
132 145
          "minLength": 1
133 146
        }
134 147
      }
135 148
    },
136 149
    "linkCard": {
137 150
      "type": "object",
138 151
      "required": [
139 152
        "uri",
140 153
        "title"
141 154
      ],
142 155
      "properties": {
143 156
        "uri": {
144 157
          "type": "string",
145 158
          "format": "uri",
146 159
          "maxLength": 2048
147 160
        },
148 161
        "thumb": {
149 162
          "type": "blob",
150 163
          "accept": [
151 164
            "image/jpeg",
152 165
            "image/png",
153 166
            "image/webp"
154 167
          ],
155 168
          "maxSize": 1000000
156 169
        },
157 170
        "title": {
158 171
          "type": "string",
159 172
          "maxLength": 3000,
160 173
          "maxGraphemes": 300
161 174
        },
162 175
        "description": {
163 176
          "type": "string",
164 177
          "maxLength": 10000,
165 178
          "maxGraphemes": 1000
166 179
        }
167 180
      }
168 181
    },
169 182
    "replyRef": {
170 183
      "type": "object",
171 184
      "required": [
172 185
        "root",
173 186
        "parent"
174 187
      ],
175 188
      "properties": {
176 189
        "root": {
177 190
          "ref": "com.atproto.repo.strongRef",
178 191
          "type": "ref"
179 192
        },
180 193
        "parent": {
181 194
          "ref": "com.atproto.repo.strongRef",
182 195
          "type": "ref"
183 196
        }
184 197
      }
185 198
    }
186 199
  },
187 200
  "$type": "com.atproto.lexicon.schema",
188 201
  "lexicon": 1
189 202
}

Compare Other Versions

Lexicon Garden

@