com.suibari.nagi.getPreferences
Schema Diff
+12 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- 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.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") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.preferredName" }AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.replyFreq" }
Additional Notes
- 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") }
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
},
48
60
"emojiFavoritesUpdatedAt": {
49
61
"type": "string",
50
62
"format": "datetime",
51
63
"description": "省略時は、この利用者のお気に入りがまだ一度も同期されていないことを表す。"
52
64
}
53
65
}
54
66
},
55
67
"encoding": "application/json"
56
68
},
57
69
"description": "端末をまたいで同期する本人の設定(my Nagi の既読位置とお気に入り絵文字)を返す。他ユーザーからは参照できない。"
58
70
},
59
71
"feedTab": {
60
72
"type": "object",
61
73
"required": [
62
74
"id",
63
75
"kind"
64
76
],
65
77
"properties": {
66
78
"id": {
67
79
"type": "string",
68
80
"maxLength": 64
69
81
},
70
82
"uri": {
71
83
"type": "string",
72
84
"format": "at-uri",
73
85
"maxLength": 2048,
74
86
"description": "kind が channel のときのチャンネル。"
75
87
},
76
88
"kind": {
77
89
"type": "string",
78
90
"maxLength": 32,
79
91
"knownValues": [
80
92
"list",
81
93
"global",
82
94
"custom",
83
95
"channel",
84
96
"search"
85
97
]
86
98
},
87
99
"label": {
88
100
"type": "string",
89
101
"maxLength": 64,
90
102
"description": "表示名のスナップショット。権威は uri / query 側。"
91
103
},
92
104
"query": {
93
105
"type": "string",
94
106
"maxLength": 128,
95
107
"description": "kind が search のときの保存クエリ。"
96
108
},
97
109
"source": {
98
110
"type": "string",
99
111
"maxLength": 32,
100
112
"description": "kind が list / custom のときの参照先(list=home, custom=affirmation)。将来のユーザー定義フィードは uri で指す。",
101
113
"knownValues": [
102
114
"home",
103
115
"affirmation"
104
116
]
105
117
},
106
118
"queryKind": {
107
119
"type": "string",
108
120
"maxLength": 32,
109
121
"knownValues": [
110
122
"keyword",
111
123
"tag"
112
124
]
113
125
}
114
126
},
115
127
"description": "フィードのタブ1枚。必要なフィールドは kind ごとに異なる(list / custom は source、channel は uri、search は query)。"
116
128
},
117
129
"readPosition": {
118
130
"type": "object",
119
131
"required": [
120
132
"section",
121
133
"indexedAt",
122
134
"uri"
123
135
],
124
136
"properties": {
125
137
"uri": {
126
138
"type": "string",
127
139
"format": "at-uri",
128
140
"maxLength": 2048
129
141
},
130
142
"section": {
131
143
"type": "string",
132
144
"maxLength": 32,
133
145
"knownValues": [
134
146
"bot",
135
147
"community",
136
148
"list",
137
149
"channels",
138
150
"news"
139
151
]
140
152
},
141
153
"indexedAt": {
142
154
"type": "string",
143
155
"format": "datetime"
144
156
}
145
157
},
146
158
"description": "「ここまで読んだ」位置。新旧の比較は (indexedAt, uri) の辞書順で行う。"
147
159
},
148
160
"customFavorite": {
149
161
"type": "object",
150
162
"required": [
151
163
"kind",
152
164
"emoji"
153
165
],
154
166
"properties": {
155
167
"kind": {
156
168
"type": "string",
157
169
"const": "custom"
158
170
},
159
171
"emoji": {
160
172
"type": "unknown"
161
173
}
162
174
},
163
175
"description": "Bluemoji のスナップショット。url などは表示のたびに再解決されるので、権威は uri のみ。"
164
176
},
165
177
"unicodeFavorite": {
166
178
"type": "object",
167
179
"required": [
168
180
"kind",
169
181
"emoji"
170
182
],
171
183
"properties": {
172
184
"kind": {
173
185
"type": "string",
174
186
"const": "unicode"
175
187
},
176
188
"emoji": {
177
189
"type": "string",
178
190
"maxLength": 64
179
191
}
180
192
}
181
193
}
182
194
},
183
195
"$type": "com.atproto.lexicon.schema",
184
196
"lexicon": 1
185
197
}