com.suibari.nagi.getPreferences
Schema Diff
+47 -1
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
}