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