com.suibari.nagi.putPreferences
Schema Diff
+24 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 8 non-breaking changes.
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.preferredName" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.replyFreq" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.preferredName" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.replyFreq" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.preferredName", kind: "prop", name: Some("preferredName") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.replyFreq", kind: "prop", name: Some("replyFreq") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.preferredName", kind: "prop", name: Some("preferredName") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.replyFreq", kind: "prop", name: Some("replyFreq") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.preferredName" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.replyFreq" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.preferredName" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.replyFreq" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.preferredName", kind: "prop", name: Some("preferredName") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.replyFreq", kind: "prop", name: Some("replyFreq") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.preferredName", kind: "prop", name: Some("preferredName") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.replyFreq", kind: "prop", name: Some("replyFreq") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "同期対象の設定を書き込む。既読位置は (indexedAt, uri) が進むときだけ更新する単調マージ、お気に入りは 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
+
"preferredName": {
44
+
"description": "botたんに呼んでほしい名前。空文字を送ると登録を解除し、表示名に戻す。送らなければ変更しない。",
45
+
"maxGraphemes": 40,
46
+
"maxLength": 120,
47
+
"type": "string"
48
+
},
43
49
"readPositions": {
44
50
"items": {
45
51
"ref": "com.suibari.nagi.getPreferences#readPosition",
46
52
"type": "ref"
47
53
},
48
54
"maxLength": 16,
49
55
"type": "array"
56
+
},
57
+
"replyFreq": {
58
+
"description": "botたんからの返信確率(0〜100%)。送らなければ変更しない。",
59
+
"maximum": 100,
60
+
"minimum": 0,
61
+
"type": "integer"
50
62
}
51
63
},
52
64
"type": "object"
53
65
}
54
66
},
55
67
"output": {
56
68
"encoding": "application/json",
57
69
"schema": {
58
70
"properties": {
59
71
"emojiFavorites": {
60
72
"items": {
61
73
"type": "unknown"
62
74
},
63
75
"maxLength": 32,
64
76
"type": "array"
65
77
},
66
78
"emojiFavoritesUpdatedAt": {
67
79
"format": "datetime",
68
80
"type": "string"
69
81
},
70
82
"feedTabs": {
71
83
"items": {
72
84
"ref": "com.suibari.nagi.getPreferences#feedTab",
73
85
"type": "ref"
74
86
},
75
87
"maxLength": 16,
76
88
"type": "array"
77
89
},
78
90
"feedTabsUpdatedAt": {
79
91
"format": "datetime",
80
92
"type": "string"
81
93
},
94
+
"preferredName": {
95
+
"description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
96
+
"maxGraphemes": 40,
97
+
"maxLength": 120,
98
+
"type": "string"
99
+
},
82
100
"readPositions": {
83
101
"description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。",
84
102
"items": {
85
103
"ref": "com.suibari.nagi.getPreferences#readPosition",
86
104
"type": "ref"
87
105
},
88
106
"type": "array"
107
+
},
108
+
"replyFreq": {
109
+
"description": "botたんからの返信確率(0〜100%)。",
110
+
"maximum": 100,
111
+
"minimum": 0,
112
+
"type": "integer"
89
113
}
90
114
},
91
115
"required": [
92
116
"readPositions",
93
117
"emojiFavorites"
94
118
],
95
119
"type": "object"
96
120
}
97
121
},
98
122
"type": "procedure"
99
123
}
100
124
},
101
125
"id": "com.suibari.nagi.putPreferences",
102
126
"lexicon": 1
103
127
}