com.suibari.nagi.drawCard
Schema Diff
+30 -1
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 7 non-breaking changes.
Breaking Changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.drawCard:output", src: "com.suibari.nagi.drawCard:output", tgt: "com.suibari.nagi.drawCard:output.source", kind: "prop", name: Some("source") }
Non-Breaking Changes (7)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.drawCard:input" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.drawCard:input.reactionUri" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.drawCard:input.source" }
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.drawCard:output.source" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.drawCard", tgt: "com.suibari.nagi.drawCard:input", kind: "prop", name: Some("input") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.drawCard:input", tgt: "com.suibari.nagi.drawCard:input.reactionUri", kind: "prop", name: Some("reactionUri") }
- AddedEdge AddedEdge { src: "com.suibari.nagi.drawCard:input", tgt: "com.suibari.nagi.drawCard:input.source", kind: "prop", name: Some("source") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.drawCard:input" }AddedVertex { vertex_id: "com.suibari.nagi.drawCard:input.reactionUri" }AddedVertex { vertex_id: "com.suibari.nagi.drawCard:input.source" }AddedVertex { vertex_id: "com.suibari.nagi.drawCard:output.source" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "com.suibari.nagi.drawCard:output", src: "com.suibari.nagi.drawCard:output", tgt: "com.suibari.nagi.drawCard:output.source", kind: "prop", name: Some("source") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.drawCard", tgt: "com.suibari.nagi.drawCard:input", kind: "prop", name: Some("input") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.drawCard:input", tgt: "com.suibari.nagi.drawCard:input.reactionUri", kind: "prop", name: Some("reactionUri") }
- Non-breaking: AddedEdge { src: "com.suibari.nagi.drawCard:input", tgt: "com.suibari.nagi.drawCard:input.source", kind: "prop", name: Some("source") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "全肯定カードを1枚引く。1日1回(JST 4:00 が日付境界)。本日ぶんを既に引いている場合はエラーにせず、その日引いたカードをそのまま返す(冪等)。抽選はサーバ側で行い、結果は AppView にのみ保存される。",
5
+
"description": "全肯定カードを1枚引く。my Nagiの通常枠と他ユーザーへのリアクション枠を1日各1回利用できる(JST 4:00 が日付境界)。同じ枠を既に引いている場合は、そのカードをそのまま返す(冪等)。抽選はサーバ側で行う。",
6
6
"errors": [
7
7
{
8
8
"name": "AuthRequired"
9
9
}
10
10
],
11
+
"input": {
12
+
"encoding": "application/json",
13
+
"schema": {
14
+
"properties": {
15
+
"reactionUri": {
16
+
"description": "source=reaction のとき必須。本人が当日作成した他ユーザー宛てリアクション。",
17
+
"format": "at-uri",
18
+
"type": "string"
19
+
},
20
+
"source": {
21
+
"description": "省略時は後方互換のためmy_nagi。",
22
+
"knownValues": [
23
+
"my_nagi",
24
+
"reaction"
25
+
],
26
+
"type": "string"
27
+
}
28
+
},
29
+
"type": "object"
30
+
}
31
+
},
11
32
"output": {
12
33
"encoding": "application/json",
13
34
"schema": {
14
35
"properties": {
15
36
"alreadyDrawn": {
16
37
"description": "true なら本日は既に引き済みで、返しているのはそのカード。",
17
38
"type": "boolean"
18
39
},
19
40
"card": {
20
41
"description": "引いたカード(定義 + 所持情報)。botたんコメントは非同期生成なので初回は空。",
21
42
"type": "unknown"
22
43
},
23
44
"commentPending": {
24
45
"description": "true の間は botたんコメントを生成中。クライアントは getCards で取り直す。",
25
46
"type": "boolean"
26
47
},
27
48
"drawStatus": {
28
49
"type": "unknown"
29
50
},
30
51
"isNew": {
31
52
"description": "コレクション初登場なら true。既に持っているカードなら false。",
32
53
"type": "boolean"
54
+
},
55
+
"source": {
56
+
"knownValues": [
57
+
"my_nagi",
58
+
"reaction"
59
+
],
60
+
"type": "string"
33
61
}
34
62
},
35
63
"required": [
36
64
"card",
65
+
"source",
37
66
"alreadyDrawn",
38
67
"drawStatus"
39
68
],
40
69
"type": "object"
41
70
}
42
71
},
43
72
"type": "procedure"
44
73
}
45
74
},
46
75
"id": "com.suibari.nagi.drawCard",
47
76
"lexicon": 1
48
77
}