com.suibari.nagi.post

suibari.com

Schema Diff

+20 -0

From

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

To

CID
bafyreicxvzfevnh...
Indexed At
2026-08-28 15:58 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 13 non-breaking changes.

Non-Breaking Changes (13)
  • 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.channel" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.post:body.channelOnly" }
  • 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.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") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body", tgt: "com.suibari.nagi.post:body.silentReply", kind: "prop", name: Some("silentReply") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.post:body.channel", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }

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

Compare Other Versions

Lexicon Garden

@