com.suibari.nagi.putPreferences

suibari.com

Schema Diff

+24 -0

From

CID
bafyreigjcqxtfpa...
Indexed At
2026-08-06 12:22 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@