com.suibari.nagi.getPreferences

suibari.com

Schema Diff

+43 -1

From

CID
bafyreig6i7ujb7i...
Indexed At
2026-08-27 00:10 UTC
View this version

To

CID
bafyreicl3hijasn...
Indexed At
2026-09-02 11:47 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 9 non-breaking changes.

Breaking Changes (3)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences", src: "com.suibari.nagi.getPreferences#moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences.automatic", kind: "prop", name: Some("automatic") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences", src: "com.suibari.nagi.getPreferences#moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences.selfNsfw", kind: "prop", name: Some("selfNsfw") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences", src: "com.suibari.nagi.getPreferences#moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences.selfAi", kind: "prop", name: Some("selfAi") }
Non-Breaking Changes (9)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences.automatic" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences.selfAi" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences.selfNsfw" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.moderationPreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.moderationPreferencesUpdatedAt" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.moderationPreferences", kind: "prop", name: Some("moderationPreferences") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.moderationPreferencesUpdatedAt", kind: "prop", name: Some("moderationPreferencesUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output.moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences.automatic" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences.selfAi" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences.selfNsfw" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.moderationPreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.moderationPreferencesUpdatedAt" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences", src: "com.suibari.nagi.getPreferences#moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences.automatic", kind: "prop", name: Some("automatic") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences", src: "com.suibari.nagi.getPreferences#moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences.selfNsfw", kind: "prop", name: Some("selfNsfw") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#moderationPreferences", src: "com.suibari.nagi.getPreferences#moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences.selfAi", kind: "prop", name: Some("selfAi") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.moderationPreferences", kind: "prop", name: Some("moderationPreferences") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.moderationPreferencesUpdatedAt", kind: "prop", name: Some("moderationPreferencesUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output.moderationPreferences", tgt: "com.suibari.nagi.getPreferences#moderationPreferences", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "customFavorite": {
5 5
      "description": "Bluemoji のスナップショット。url などは表示のたびに再解決されるので、権威は uri のみ。",
6 6
      "properties": {
7 7
        "emoji": {
8 8
          "type": "unknown"
9 9
        },
10 10
        "kind": {
11 11
          "const": "custom",
12 12
          "type": "string"
13 13
        }
14 14
      },
15 15
      "required": [
16 16
        "kind",
17 17
        "emoji"
18 18
      ],
19 19
      "type": "object"
20 20
    },
21 21
    "feedTab": {
22 22
      "description": "フィードのタブ1枚。必要なフィールドは kind ごとに異なる(list / custom は source、channel は uri、search は query)。",
23 23
      "properties": {
24 24
        "id": {
25 25
          "maxLength": 64,
26 26
          "type": "string"
27 27
        },
28 28
        "kind": {
29 29
          "knownValues": [
30 30
            "list",
31 31
            "global",
32 32
            "custom",
33 33
            "channel",
34 34
            "search"
35 35
          ],
36 36
          "maxLength": 32,
37 37
          "type": "string"
38 38
        },
39 39
        "label": {
40 40
          "description": "表示名のスナップショット。権威は uri / query 側。",
41 41
          "maxLength": 64,
42 42
          "type": "string"
43 43
        },
44 44
        "query": {
45 45
          "description": "kind が search のときの保存クエリ。",
46 46
          "maxLength": 128,
47 47
          "type": "string"
48 48
        },
49 49
        "queryKind": {
50 50
          "knownValues": [
51 51
            "keyword",
52 52
            "tag"
53 53
          ],
54 54
          "maxLength": 32,
55 55
          "type": "string"
56 56
        },
57 57
        "source": {
58 58
          "description": "kind が list / custom のときの参照先(list=home, custom=affirmation)。将来のユーザー定義フィードは uri で指す。",
59 59
          "knownValues": [
60 60
            "home",
61 61
            "affirmation"
62 62
          ],
63 63
          "maxLength": 32,
64 64
          "type": "string"
65 65
        },
66 66
        "uri": {
67 67
          "description": "kind が channel のときのチャンネル。",
68 68
          "format": "at-uri",
69 69
          "maxLength": 2048,
70 70
          "type": "string"
71 71
        }
72 72
      },
73 73
      "required": [
74 74
        "id",
75 75
        "kind"
76 76
      ],
77 77
      "type": "object"
78 78
    },
79 79
    "languagePreferences": {
80 80
      "properties": {
81 81
        "autoTranslate": {
82 82
          "type": "boolean"
83 83
        },
84 84
        "post": {
85 85
          "maxLength": 16,
86 86
          "type": "string"
87 87
        },
88 88
        "provider": {
89 89
          "knownValues": [
90 90
            "kagi",
91 91
            "deepl",
92 92
            "google"
93 93
          ],
94 94
          "type": "string"
95 95
        },
96 96
        "translation": {
97 97
          "maxLength": 16,
98 98
          "type": "string"
99 99
        }
100 100
      },
101 101
      "required": [
102 102
        "post",
103 103
        "translation",
104 104
        "provider",
105 105
        "autoTranslate"
106 106
      ],
107 107
      "type": "object"
108 108
    },
109 109
    "main": {
110 -
      "description": "端末をまたいで同期する本人の設定(既読位置、お気に入り絵文字、フィードタブ、投稿・翻訳言語、最後のブックマークフォルダ)を返す。他ユーザーからは参照できない。",
110 +
      "description": "端末をまたいで同期する本人の設定(既読位置、お気に入り絵文字、フィードタブ、投稿・翻訳言語、コンテンツ表示、最後のブックマークフォルダ)を返す。他ユーザーからは参照できない。",
111 111
      "errors": [
112 112
        {
113 113
          "name": "AuthRequired"
114 114
        }
115 115
      ],
116 116
      "output": {
117 117
        "encoding": "application/json",
118 118
        "schema": {
119 119
          "properties": {
120 120
            "emojiFavorites": {
121 121
              "description": "お気に入り絵文字パレット。表示順そのまま。要素は #unicodeFavorite または #customFavorite。",
122 122
              "items": {
123 123
                "type": "unknown"
124 124
              },
125 125
              "maxLength": 32,
126 126
              "type": "array"
127 127
            },
128 128
            "emojiFavoritesUpdatedAt": {
129 129
              "description": "省略時は、この利用者のお気に入りがまだ一度も同期されていないことを表す。",
130 130
              "format": "datetime",
131 131
              "type": "string"
132 132
            },
133 133
            "feedTabs": {
134 134
              "description": "フィードのタブ。表示順そのまま。",
135 135
              "items": {
136 136
                "ref": "#feedTab",
137 137
                "type": "ref"
138 138
              },
139 139
              "maxLength": 16,
140 140
              "type": "array"
141 141
            },
142 142
            "feedTabsUpdatedAt": {
143 143
              "description": "省略時は、この利用者がまだ一度もタブをカスタムしていないことを表す(クライアントは既定タブを使う)。",
144 144
              "format": "datetime",
145 145
              "type": "string"
146 146
            },
147 147
            "languagePreferences": {
148 148
              "ref": "#languagePreferences",
149 149
              "type": "ref"
150 150
            },
151 151
            "languagePreferencesUpdatedAt": {
152 152
              "format": "datetime",
153 153
              "type": "string"
154 154
            },
155 155
            "lastBookmarkFolderId": {
156 156
              "maxLength": 64,
157 157
              "type": "string"
158 158
            },
159 159
            "lastBookmarkFolderUpdatedAt": {
160 160
              "format": "datetime",
161 161
              "type": "string"
162 162
            },
163 +
            "moderationPreferences": {
164 +
              "ref": "#moderationPreferences",
165 +
              "type": "ref"
166 +
            },
167 +
            "moderationPreferencesUpdatedAt": {
168 +
              "format": "datetime",
169 +
              "type": "string"
170 +
            },
163 171
            "preferredName": {
164 172
              "description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
165 173
              "maxGraphemes": 40,
166 174
              "maxLength": 120,
167 175
              "type": "string"
168 176
            },
169 177
            "readPositions": {
170 178
              "items": {
171 179
                "ref": "#readPosition",
172 180
                "type": "ref"
173 181
              },
174 182
              "type": "array"
175 183
            },
176 184
            "replyFreq": {
177 185
              "description": "botたんからの返信確率(0〜100%)。Bluesky側のfreq設定と共用。",
178 186
              "maximum": 100,
179 187
              "minimum": 0,
180 188
              "type": "integer"
181 189
            }
182 190
          },
183 191
          "required": [
184 192
            "readPositions",
185 193
            "emojiFavorites"
186 194
          ],
187 195
          "type": "object"
188 196
        }
189 197
      },
190 198
      "type": "query"
191 199
    },
200 +
    "moderationPreferences": {
201 +
      "properties": {
202 +
        "automatic": {
203 +
          "knownValues": [
204 +
            "warn",
205 +
            "hide",
206 +
            "ignore"
207 +
          ],
208 +
          "type": "string"
209 +
        },
210 +
        "selfAi": {
211 +
          "knownValues": [
212 +
            "warn",
213 +
            "hide",
214 +
            "ignore"
215 +
          ],
216 +
          "type": "string"
217 +
        },
218 +
        "selfNsfw": {
219 +
          "knownValues": [
220 +
            "warn",
221 +
            "hide",
222 +
            "ignore"
223 +
          ],
224 +
          "type": "string"
225 +
        }
226 +
      },
227 +
      "required": [
228 +
        "automatic",
229 +
        "selfAi",
230 +
        "selfNsfw"
231 +
      ],
232 +
      "type": "object"
233 +
    },
192 234
    "readPosition": {
193 235
      "description": "「ここまで読んだ」位置。新旧の比較は (indexedAt, uri) の辞書順で行う。",
194 236
      "properties": {
195 237
        "indexedAt": {
196 238
          "format": "datetime",
197 239
          "type": "string"
198 240
        },
199 241
        "section": {
200 242
          "knownValues": [
201 243
            "bot",
202 244
            "community",
203 245
            "list",
204 246
            "channels",
205 247
            "news"
206 248
          ],
207 249
          "maxLength": 32,
208 250
          "type": "string"
209 251
        },
210 252
        "uri": {
211 253
          "format": "at-uri",
212 254
          "maxLength": 2048,
213 255
          "type": "string"
214 256
        }
215 257
      },
216 258
      "required": [
217 259
        "section",
218 260
        "indexedAt",
219 261
        "uri"
220 262
      ],
221 263
      "type": "object"
222 264
    },
223 265
    "unicodeFavorite": {
224 266
      "properties": {
225 267
        "emoji": {
226 268
          "maxLength": 64,
227 269
          "type": "string"
228 270
        },
229 271
        "kind": {
230 272
          "const": "unicode",
231 273
          "type": "string"
232 274
        }
233 275
      },
234 276
      "required": [
235 277
        "kind",
236 278
        "emoji"
237 279
      ],
238 280
      "type": "object"
239 281
    }
240 282
  },
241 283
  "id": "com.suibari.nagi.getPreferences",
242 284
  "lexicon": 1
243 285
}

Compare Other Versions

Lexicon Garden

@