com.suibari.nagi.putPreferences
Schema Diff
+34 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 19 non-breaking changes.
Non-Breaking Changes (19)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferences" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferences" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferences", kind: "prop", name: Some("languagePreferences") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferences", kind: "prop", name: Some("languagePreferences") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences: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.putPreferences:input.languagePreferences" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferences" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferences", kind: "prop", name: Some("languagePreferences") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferences", kind: "prop", name: Some("languagePreferences") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences: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
"main": {
5
-
"description": "同期対象の設定を書き込む。既読位置は (indexedAt, uri) が進むときだけ更新する単調マージ、お気に入りは updatedAt による後勝ち。どちらも省略でき、送った分だけが更新される。",
5
+
"description": "同期対象の本人設定を書き込む。既読位置は単調マージ、配列・言語設定・最後のブックマークフォルダは updatedAt による後勝ち。各項目は省略でき、送った分だけを更新する。",
6
6
"errors": [
7
7
{
8
8
"name": "AuthRequired"
9
9
},
10
10
{
11
11
"name": "InvalidRequest"
12
12
}
13
13
],
14
14
"input": {
15
15
"encoding": "application/json",
16
16
"schema": {
17
17
"properties": {
18
18
"emojiFavorites": {
19
19
"items": {
20
20
"type": "unknown"
21
21
},
22
22
"maxLength": 32,
23
23
"type": "array"
24
24
},
25
25
"emojiFavoritesUpdatedAt": {
26
26
"description": "emojiFavorites を送るときは必須。保存済みより古ければ書き込まない。",
27
27
"format": "datetime",
28
28
"type": "string"
29
29
},
30
30
"feedTabs": {
31
31
"items": {
32
32
"ref": "com.suibari.nagi.getPreferences#feedTab",
33
33
"type": "ref"
34
34
},
35
35
"maxLength": 16,
36
36
"type": "array"
37
37
},
38
38
"feedTabsUpdatedAt": {
39
39
"description": "feedTabs を送るときは必須。保存済みより古ければ書き込まない。",
40
40
"format": "datetime",
41
41
"type": "string"
42
42
},
43
+
"languagePreferences": {
44
+
"ref": "com.suibari.nagi.getPreferences#languagePreferences",
45
+
"type": "ref"
46
+
},
47
+
"languagePreferencesUpdatedAt": {
48
+
"format": "datetime",
49
+
"type": "string"
50
+
},
51
+
"lastBookmarkFolderId": {
52
+
"maxLength": 64,
53
+
"nullable": true,
54
+
"type": "string"
55
+
},
56
+
"lastBookmarkFolderUpdatedAt": {
57
+
"format": "datetime",
58
+
"type": "string"
59
+
},
43
60
"preferredName": {
44
61
"description": "botたんに呼んでほしい名前。空文字を送ると登録を解除し、表示名に戻す。送らなければ変更しない。",
45
62
"maxGraphemes": 40,
46
63
"maxLength": 120,
47
64
"type": "string"
48
65
},
49
66
"readPositions": {
50
67
"items": {
51
68
"ref": "com.suibari.nagi.getPreferences#readPosition",
52
69
"type": "ref"
53
70
},
54
71
"maxLength": 16,
55
72
"type": "array"
56
73
},
57
74
"replyFreq": {
58
75
"description": "botたんからの返信確率(0〜100%)。送らなければ変更しない。",
59
76
"maximum": 100,
60
77
"minimum": 0,
61
78
"type": "integer"
62
79
}
63
80
},
64
81
"type": "object"
65
82
}
66
83
},
67
84
"output": {
68
85
"encoding": "application/json",
69
86
"schema": {
70
87
"properties": {
71
88
"emojiFavorites": {
72
89
"items": {
73
90
"type": "unknown"
74
91
},
75
92
"maxLength": 32,
76
93
"type": "array"
77
94
},
78
95
"emojiFavoritesUpdatedAt": {
79
96
"format": "datetime",
80
97
"type": "string"
81
98
},
82
99
"feedTabs": {
83
100
"items": {
84
101
"ref": "com.suibari.nagi.getPreferences#feedTab",
85
102
"type": "ref"
86
103
},
87
104
"maxLength": 16,
88
105
"type": "array"
89
106
},
90
107
"feedTabsUpdatedAt": {
91
108
"format": "datetime",
92
109
"type": "string"
93
110
},
111
+
"languagePreferences": {
112
+
"ref": "com.suibari.nagi.getPreferences#languagePreferences",
113
+
"type": "ref"
114
+
},
115
+
"languagePreferencesUpdatedAt": {
116
+
"format": "datetime",
117
+
"type": "string"
118
+
},
119
+
"lastBookmarkFolderId": {
120
+
"maxLength": 64,
121
+
"type": "string"
122
+
},
123
+
"lastBookmarkFolderUpdatedAt": {
124
+
"format": "datetime",
125
+
"type": "string"
126
+
},
94
127
"preferredName": {
95
128
"description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
96
129
"maxGraphemes": 40,
97
130
"maxLength": 120,
98
131
"type": "string"
99
132
},
100
133
"readPositions": {
101
134
"description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。",
102
135
"items": {
103
136
"ref": "com.suibari.nagi.getPreferences#readPosition",
104
137
"type": "ref"
105
138
},
106
139
"type": "array"
107
140
},
108
141
"replyFreq": {
109
142
"description": "botたんからの返信確率(0〜100%)。",
110
143
"maximum": 100,
111
144
"minimum": 0,
112
145
"type": "integer"
113
146
}
114
147
},
115
148
"required": [
116
149
"readPositions",
117
150
"emojiFavorites"
118
151
],
119
152
"type": "object"
120
153
}
121
154
},
122
155
"type": "procedure"
123
156
}
124
157
},
125
158
"id": "com.suibari.nagi.putPreferences",
126
159
"lexicon": 1
127
160
}