com.suibari.nagi.getPreferences
Schema Diff
+8 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 6 non-breaking changes.
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getChronicle#readYear" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.chronicleReadYears" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.chronicleReadYears:items" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.chronicleReadYears", kind: "prop", name: Some("chronicleReadYears") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output.chronicleReadYears", tgt: "com.suibari.nagi.getPreferences:output.chronicleReadYears:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output.chronicleReadYears:items", tgt: "com.suibari.nagi.getChronicle#readYear", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.getChronicle#readYear" }AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.chronicleReadYears" }AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.chronicleReadYears:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.chronicleReadYears", kind: "prop", name: Some("chronicleReadYears") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output.chronicleReadYears", tgt: "com.suibari.nagi.getPreferences:output.chronicleReadYears:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output.chronicleReadYears:items", tgt: "com.suibari.nagi.getChronicle#readYear", 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
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
+
"chronicleReadYears": {
121
+
"description": "年ごとの既読ハッシュ。過去の版は蓄積せず、現在の年表内容と一致する版だけを保存する。",
122
+
"items": {
123
+
"ref": "com.suibari.nagi.getChronicle#readYear",
124
+
"type": "ref"
125
+
},
126
+
"type": "array"
127
+
},
120
128
"emojiFavorites": {
121
129
"description": "お気に入り絵文字パレット。表示順そのまま。要素は #unicodeFavorite または #customFavorite。",
122
130
"items": {
123
131
"type": "unknown"
124
132
},
125
133
"maxLength": 32,
126
134
"type": "array"
127
135
},
128
136
"emojiFavoritesUpdatedAt": {
129
137
"description": "省略時は、この利用者のお気に入りがまだ一度も同期されていないことを表す。",
130
138
"format": "datetime",
131
139
"type": "string"
132
140
},
133
141
"feedTabs": {
134
142
"description": "フィードのタブ。表示順そのまま。",
135
143
"items": {
136
144
"ref": "#feedTab",
137
145
"type": "ref"
138
146
},
139
147
"maxLength": 16,
140
148
"type": "array"
141
149
},
142
150
"feedTabsUpdatedAt": {
143
151
"description": "省略時は、この利用者がまだ一度もタブをカスタムしていないことを表す(クライアントは既定タブを使う)。",
144
152
"format": "datetime",
145
153
"type": "string"
146
154
},
147
155
"languagePreferences": {
148
156
"ref": "#languagePreferences",
149
157
"type": "ref"
150
158
},
151
159
"languagePreferencesUpdatedAt": {
152
160
"format": "datetime",
153
161
"type": "string"
154
162
},
155
163
"lastBookmarkFolderId": {
156
164
"maxLength": 64,
157
165
"type": "string"
158
166
},
159
167
"lastBookmarkFolderUpdatedAt": {
160
168
"format": "datetime",
161
169
"type": "string"
162
170
},
163
171
"moderationPreferences": {
164
172
"ref": "#moderationPreferences",
165
173
"type": "ref"
166
174
},
167
175
"moderationPreferencesUpdatedAt": {
168
176
"format": "datetime",
169
177
"type": "string"
170
178
},
171
179
"preferredName": {
172
180
"description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
173
181
"maxGraphemes": 40,
174
182
"maxLength": 120,
175
183
"type": "string"
176
184
},
177
185
"readPositions": {
178
186
"items": {
179
187
"ref": "#readPosition",
180
188
"type": "ref"
181
189
},
182
190
"type": "array"
183
191
},
184
192
"replyFreq": {
185
193
"description": "botたんからの返信確率(0〜100%)。Bluesky側のfreq設定と共用。",
186
194
"maximum": 100,
187
195
"minimum": 0,
188
196
"type": "integer"
189
197
}
190
198
},
191
199
"required": [
192
200
"readPositions",
193
201
"emojiFavorites"
194
202
],
195
203
"type": "object"
196
204
}
197
205
},
198
206
"type": "query"
199
207
},
200
208
"moderationPreferences": {
201
209
"properties": {
202
210
"automatic": {
203
211
"knownValues": [
204
212
"warn",
205
213
"hide",
206
214
"ignore"
207
215
],
208
216
"type": "string"
209
217
},
210
218
"selfAi": {
211
219
"knownValues": [
212
220
"warn",
213
221
"hide",
214
222
"ignore"
215
223
],
216
224
"type": "string"
217
225
},
218
226
"selfNsfw": {
219
227
"knownValues": [
220
228
"warn",
221
229
"hide",
222
230
"ignore"
223
231
],
224
232
"type": "string"
225
233
}
226
234
},
227
235
"required": [
228
236
"automatic",
229
237
"selfAi",
230
238
"selfNsfw"
231
239
],
232
240
"type": "object"
233
241
},
234
242
"readPosition": {
235
243
"description": "「ここまで読んだ」位置。新旧の比較は (indexedAt, uri) の辞書順で行う。",
236
244
"properties": {
237
245
"indexedAt": {
238
246
"format": "datetime",
239
247
"type": "string"
240
248
},
241
249
"section": {
242
250
"knownValues": [
243
251
"bot",
244
252
"community",
245
253
"list",
246
254
"channels",
247
255
"news"
248
256
],
249
257
"maxLength": 32,
250
258
"type": "string"
251
259
},
252
260
"uri": {
253
261
"format": "at-uri",
254
262
"maxLength": 2048,
255
263
"type": "string"
256
264
}
257
265
},
258
266
"required": [
259
267
"section",
260
268
"indexedAt",
261
269
"uri"
262
270
],
263
271
"type": "object"
264
272
},
265
273
"unicodeFavorite": {
266
274
"properties": {
267
275
"emoji": {
268
276
"maxLength": 64,
269
277
"type": "string"
270
278
},
271
279
"kind": {
272
280
"const": "unicode",
273
281
"type": "string"
274
282
}
275
283
},
276
284
"required": [
277
285
"kind",
278
286
"emoji"
279
287
],
280
288
"type": "object"
281
289
}
282
290
},
283
291
"id": "com.suibari.nagi.getPreferences",
284
292
"lexicon": 1
285
293
}