com.suibari.nagi.drawCard

suibari.com

Schema Diff

+13 -4

From

CID
bafyreid7oykvpxe...
Indexed At
2026-08-15 17:15 UTC
View this version

To

CID
bafyreibnekfzbfh...
Indexed At
2026-08-18 15:21 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 4 non-breaking changes.

Breaking Changes (2)
  • ConstraintTightened ConstraintTightened { vertex_id: "com.suibari.nagi.drawCard:input.source", sort: "knownValues", old_value: "[\"my_nagi\",\"reaction\"]", new_value: "[\"my_nagi\",\"reaction\",\"anniversary\"]" }
  • ConstraintTightened ConstraintTightened { vertex_id: "com.suibari.nagi.drawCard:output.source", sort: "knownValues", old_value: "[\"my_nagi\",\"reaction\"]", new_value: "[\"my_nagi\",\"reaction\",\"anniversary\"]" }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.drawCard:output.cards" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.drawCard:output.cards:items" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.drawCard:output", tgt: "com.suibari.nagi.drawCard:output.cards", kind: "prop", name: Some("cards") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.drawCard:output.cards", tgt: "com.suibari.nagi.drawCard:output.cards:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.drawCard:output.cards" }
  • AddedVertex { vertex_id: "com.suibari.nagi.drawCard:output.cards:items" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "com.suibari.nagi.drawCard:input.source", sort: "knownValues", old_value: "[\"my_nagi\",\"reaction\"]", new_value: "[\"my_nagi\",\"reaction\",\"anniversary\"]" }
  • ConstraintTightened ConstraintTightened { vertex_id: "com.suibari.nagi.drawCard:output.source", sort: "knownValues", old_value: "[\"my_nagi\",\"reaction\"]", new_value: "[\"my_nagi\",\"reaction\",\"anniversary\"]" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.suibari.nagi.drawCard:output", tgt: "com.suibari.nagi.drawCard:output.cards", kind: "prop", name: Some("cards") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.drawCard:output.cards", tgt: "com.suibari.nagi.drawCard:output.cards:items", kind: "items", name: None }
1 1
{
2 2
  "id": "com.suibari.nagi.drawCard",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "procedure",
6 6
      "input": {
7 7
        "schema": {
8 8
          "type": "object",
9 9
          "properties": {
10 10
            "source": {
11 11
              "type": "string",
12 -
              "description": "省略時は後方互換のためmy_nagi。",
12 +
              "description": "省略時は後方互換のためmy_nagi。anniversary は記念日カードの受け取りで、抽選枠を消費しない。",
13 13
              "knownValues": [
14 14
                "my_nagi",
15 -
                "reaction"
15 +
                "reaction",
16 +
                "anniversary"
16 17
              ]
17 18
            },
18 19
            "reactionUri": {
19 20
              "type": "string",
20 21
              "format": "at-uri",
21 22
              "description": "source=reaction のとき必須。本人が当日作成した他ユーザー宛てリアクション。"
22 23
            }
23 24
          }
24 25
        },
25 26
        "encoding": "application/json"
26 27
      },
27 28
      "errors": [
28 29
        {
29 30
          "name": "AuthRequired"
30 31
        }
31 32
      ],
32 33
      "output": {
33 34
        "schema": {
34 35
          "type": "object",
35 36
          "required": [
36 37
            "card",
37 38
            "source",
38 39
            "alreadyDrawn",
39 40
            "drawStatus"
40 41
          ],
41 42
          "properties": {
42 43
            "card": {
43 44
              "type": "unknown",
44 45
              "description": "引いたカード(定義 + 所持情報)。botたんコメントは非同期生成なので初回は空。"
45 46
            },
47 +
            "cards": {
48 +
              "type": "array",
49 +
              "items": {
50 +
                "type": "unknown"
51 +
              },
52 +
              "description": "source=anniversary のみ。同日に複数の記念日が重なることがあるので今回受け取ったぶんを全部返す。card はこの先頭と同じ。"
53 +
            },
46 54
            "isNew": {
47 55
              "type": "boolean",
48 56
              "description": "コレクション初登場なら true。既に持っているカードなら false。"
49 57
            },
50 58
            "source": {
51 59
              "type": "string",
52 60
              "knownValues": [
53 61
                "my_nagi",
54 -
                "reaction"
62 +
                "reaction",
63 +
                "anniversary"
55 64
              ]
56 65
            },
57 66
            "drawStatus": {
58 67
              "type": "unknown"
59 68
            },
60 69
            "alreadyDrawn": {
61 70
              "type": "boolean",
62 71
              "description": "true なら本日は既に引き済みで、返しているのはそのカード。"
63 72
            },
64 73
            "commentPending": {
65 74
              "type": "boolean",
66 75
              "description": "true の間は botたんコメントを生成中。クライアントは getCards で取り直す。"
67 76
            }
68 77
          }
69 78
        },
70 79
        "encoding": "application/json"
71 80
      },
72 -
      "description": "全肯定カードを1枚引く。my Nagiの通常枠と他ユーザーへのリアクション枠を1日各1回利用できる(JST 4:00 が日付境界)。同じ枠を既に引いている場合は、そのカードをそのまま返す(冪等)。抽選はサーバ側で行う。"
81 +
      "description": "全肯定カードを1枚引く。my Nagiの通常枠と他ユーザーへのリアクション枠を1日各1回利用できる(JST 4:00 が日付境界)。同じ枠を既に引いている場合は、そのカードをそのまま返す(冪等)。抽選はサーバ側で行う。source=anniversary は抽選ではなく、その日が記念日の人へ未受領ぶんを一括で配る(同じ記念日は1年に1枚)。"
73 82
    }
74 83
  },
75 84
  "$type": "com.atproto.lexicon.schema",
76 85
  "lexicon": 1
77 86
}

Compare Other Versions

Lexicon Garden

@