com.suibari.nagi.putPreferences
Schema Diff
+25 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 15 non-breaking changes.
Non-Breaking Changes (15)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs:items" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs:items" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabs", kind: "prop", name: Some("feedTabs") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs", tgt: "com.suibari.nagi.putPreferences:input.feedTabs:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabs", kind: "prop", name: Some("feedTabs") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs", tgt: "com.suibari.nagi.putPreferences:output.feedTabs:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs:items" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs:items" }AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabs", kind: "prop", name: Some("feedTabs") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs", tgt: "com.suibari.nagi.putPreferences:input.feedTabs:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabs", kind: "prop", name: Some("feedTabs") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs", tgt: "com.suibari.nagi.putPreferences:output.feedTabs:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
1
1
{
2
2
"id": "com.suibari.nagi.putPreferences",
3
3
"defs": {
4
4
"main": {
5
5
"type": "procedure",
6
6
"input": {
7
7
"schema": {
8
8
"type": "object",
9
9
"properties": {
10
+
"feedTabs": {
11
+
"type": "array",
12
+
"items": {
13
+
"ref": "com.suibari.nagi.getPreferences#feedTab",
14
+
"type": "ref"
15
+
},
16
+
"maxLength": 16
17
+
},
10
18
"readPositions": {
11
19
"type": "array",
12
20
"items": {
13
21
"ref": "com.suibari.nagi.getPreferences#readPosition",
14
22
"type": "ref"
15
23
},
16
24
"maxLength": 16
17
25
},
18
26
"emojiFavorites": {
19
27
"type": "array",
20
28
"items": {
21
29
"type": "unknown"
22
30
},
23
31
"maxLength": 32
24
32
},
33
+
"feedTabsUpdatedAt": {
34
+
"type": "string",
35
+
"format": "datetime",
36
+
"description": "feedTabs を送るときは必須。保存済みより古ければ書き込まない。"
37
+
},
25
38
"emojiFavoritesUpdatedAt": {
26
39
"type": "string",
27
40
"format": "datetime",
28
41
"description": "emojiFavorites を送るときは必須。保存済みより古ければ書き込まない。"
29
42
}
30
43
}
31
44
},
32
45
"encoding": "application/json"
33
46
},
34
47
"errors": [
35
48
{
36
49
"name": "AuthRequired"
37
50
},
38
51
{
39
52
"name": "InvalidRequest"
40
53
}
41
54
],
42
55
"output": {
43
56
"schema": {
44
57
"type": "object",
45
58
"required": [
46
59
"readPositions",
47
60
"emojiFavorites"
48
61
],
49
62
"properties": {
63
+
"feedTabs": {
64
+
"type": "array",
65
+
"items": {
66
+
"ref": "com.suibari.nagi.getPreferences#feedTab",
67
+
"type": "ref"
68
+
},
69
+
"maxLength": 16
70
+
},
50
71
"readPositions": {
51
72
"type": "array",
52
73
"items": {
53
74
"ref": "com.suibari.nagi.getPreferences#readPosition",
54
75
"type": "ref"
55
76
},
56
77
"description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。"
57
78
},
58
79
"emojiFavorites": {
59
80
"type": "array",
60
81
"items": {
61
82
"type": "unknown"
62
83
},
63
84
"maxLength": 32
64
85
},
86
+
"feedTabsUpdatedAt": {
87
+
"type": "string",
88
+
"format": "datetime"
89
+
},
65
90
"emojiFavoritesUpdatedAt": {
66
91
"type": "string",
67
92
"format": "datetime"
68
93
}
69
94
}
70
95
},
71
96
"encoding": "application/json"
72
97
},
73
98
"description": "同期対象の設定を書き込む。既読位置は (indexedAt, uri) が進むときだけ更新する単調マージ、お気に入りは updatedAt による後勝ち。どちらも省略でき、送った分だけが更新される。"
74
99
}
75
100
},
76
101
"$type": "com.atproto.lexicon.schema",
77
102
"lexicon": 1
78
103
}