com.suibari.nagi.getPreferences

suibari.com

Schema Diff

+47 -1

From

CID
bafyreia4u6fnnvd...
Indexed At
2026-08-15 17:15 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 14 non-breaking changes.

Breaking Changes (4)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.provider", kind: "prop", name: Some("provider") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.autoTranslate", kind: "prop", name: Some("autoTranslate") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.post", kind: "prop", name: Some("post") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.translation", kind: "prop", name: Some("translation") }
Non-Breaking Changes (14)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.autoTranslate" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.post" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.provider" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.translation" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.languagePreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.languagePreferencesUpdatedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderId" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderUpdatedAt" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.languagePreferences", kind: "prop", name: Some("languagePreferences") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.autoTranslate" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.post" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.provider" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences.translation" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.languagePreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.languagePreferencesUpdatedAt" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderId" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderUpdatedAt" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.provider", kind: "prop", name: Some("provider") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.autoTranslate", kind: "prop", name: Some("autoTranslate") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.post", kind: "prop", name: Some("post") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences", src: "com.suibari.nagi.getPreferences#languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences.translation", kind: "prop", name: Some("translation") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.languagePreferences", kind: "prop", name: Some("languagePreferences") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", 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 +
    "languagePreferences": {
80 +
      "properties": {
81 +
        "autoTranslate": {
82 +
          "type": "boolean"
83 +
        },
84 +
        "post": {
85 +
          "maxLength": 16,
86 +
          "type": "string"
87 +
        },
88 +
        "provider": {
89 +
          "knownValues": [
90 +
            "kagi",
91 +
            "deepl",
92 +
            "google"
93 +
          ],
94 +
          "type": "string"
95 +
        },
96 +
        "translation": {
97 +
          "maxLength": 16,
98 +
          "type": "string"
99 +
        }
100 +
      },
101 +
      "required": [
102 +
        "post",
103 +
        "translation",
104 +
        "provider",
105 +
        "autoTranslate"
106 +
      ],
107 +
      "type": "object"
108 +
    },
79 109
    "main": {
80 -
      "description": "端末をまたいで同期する本人の設定(my Nagi の既読位置とお気に入り絵文字)を返す。他ユーザーからは参照できない。",
110 +
      "description": "端末をまたいで同期する本人の設定(既読位置、お気に入り絵文字、フィードタブ、投稿・翻訳言語、最後のブックマークフォルダ)を返す。他ユーザーからは参照できない。",
81 111
      "errors": [
82 112
        {
83 113
          "name": "AuthRequired"
84 114
        }
85 115
      ],
86 116
      "output": {
87 117
        "encoding": "application/json",
88 118
        "schema": {
89 119
          "properties": {
90 120
            "emojiFavorites": {
91 121
              "description": "お気に入り絵文字パレット。表示順そのまま。要素は #unicodeFavorite または #customFavorite。",
92 122
              "items": {
93 123
                "type": "unknown"
94 124
              },
95 125
              "maxLength": 32,
96 126
              "type": "array"
97 127
            },
98 128
            "emojiFavoritesUpdatedAt": {
99 129
              "description": "省略時は、この利用者のお気に入りがまだ一度も同期されていないことを表す。",
100 130
              "format": "datetime",
101 131
              "type": "string"
102 132
            },
103 133
            "feedTabs": {
104 134
              "description": "フィードのタブ。表示順そのまま。",
105 135
              "items": {
106 136
                "ref": "#feedTab",
107 137
                "type": "ref"
108 138
              },
109 139
              "maxLength": 16,
110 140
              "type": "array"
111 141
            },
112 142
            "feedTabsUpdatedAt": {
113 143
              "description": "省略時は、この利用者がまだ一度もタブをカスタムしていないことを表す(クライアントは既定タブを使う)。",
114 144
              "format": "datetime",
115 145
              "type": "string"
116 146
            },
147 +
            "languagePreferences": {
148 +
              "ref": "#languagePreferences",
149 +
              "type": "ref"
150 +
            },
151 +
            "languagePreferencesUpdatedAt": {
152 +
              "format": "datetime",
153 +
              "type": "string"
154 +
            },
155 +
            "lastBookmarkFolderId": {
156 +
              "maxLength": 64,
157 +
              "type": "string"
158 +
            },
159 +
            "lastBookmarkFolderUpdatedAt": {
160 +
              "format": "datetime",
161 +
              "type": "string"
162 +
            },
117 163
            "preferredName": {
118 164
              "description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
119 165
              "maxGraphemes": 40,
120 166
              "maxLength": 120,
121 167
              "type": "string"
122 168
            },
123 169
            "readPositions": {
124 170
              "items": {
125 171
                "ref": "#readPosition",
126 172
                "type": "ref"
127 173
              },
128 174
              "type": "array"
129 175
            },
130 176
            "replyFreq": {
131 177
              "description": "botたんからの返信確率(0〜100%)。Bluesky側のfreq設定と共用。",
132 178
              "maximum": 100,
133 179
              "minimum": 0,
134 180
              "type": "integer"
135 181
            }
136 182
          },
137 183
          "required": [
138 184
            "readPositions",
139 185
            "emojiFavorites"
140 186
          ],
141 187
          "type": "object"
142 188
        }
143 189
      },
144 190
      "type": "query"
145 191
    },
146 192
    "readPosition": {
147 193
      "description": "「ここまで読んだ」位置。新旧の比較は (indexedAt, uri) の辞書順で行う。",
148 194
      "properties": {
149 195
        "indexedAt": {
150 196
          "format": "datetime",
151 197
          "type": "string"
152 198
        },
153 199
        "section": {
154 200
          "knownValues": [
155 201
            "bot",
156 202
            "community",
157 203
            "list",
158 204
            "channels",
159 205
            "news"
160 206
          ],
161 207
          "maxLength": 32,
162 208
          "type": "string"
163 209
        },
164 210
        "uri": {
165 211
          "format": "at-uri",
166 212
          "maxLength": 2048,
167 213
          "type": "string"
168 214
        }
169 215
      },
170 216
      "required": [
171 217
        "section",
172 218
        "indexedAt",
173 219
        "uri"
174 220
      ],
175 221
      "type": "object"
176 222
    },
177 223
    "unicodeFavorite": {
178 224
      "properties": {
179 225
        "emoji": {
180 226
          "maxLength": 64,
181 227
          "type": "string"
182 228
        },
183 229
        "kind": {
184 230
          "const": "unicode",
185 231
          "type": "string"
186 232
        }
187 233
      },
188 234
      "required": [
189 235
        "kind",
190 236
        "emoji"
191 237
      ],
192 238
      "type": "object"
193 239
    }
194 240
  },
195 241
  "id": "com.suibari.nagi.getPreferences",
196 242
  "lexicon": 1
197 243
}

Compare Other Versions

Lexicon Garden

@