com.suibari.nagi.getPreferences

suibari.com

Schema Diff

+12 -0

From

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

To

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

Compatibility Analysis

Backward Compatible

Backward compatible. 4 non-breaking changes.

Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.preferredName" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.replyFreq" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.preferredName", kind: "prop", name: Some("preferredName") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.replyFreq", kind: "prop", name: Some("replyFreq") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.preferredName" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.replyFreq" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.preferredName", kind: "prop", name: Some("preferredName") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.replyFreq", kind: "prop", name: Some("replyFreq") }
1 1
{
2 2
  "id": "com.suibari.nagi.getPreferences",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "query",
6 6
      "errors": [
7 7
        {
8 8
          "name": "AuthRequired"
9 9
        }
10 10
      ],
11 11
      "output": {
12 12
        "schema": {
13 13
          "type": "object",
14 14
          "required": [
15 15
            "readPositions",
16 16
            "emojiFavorites"
17 17
          ],
18 18
          "properties": {
19 19
            "feedTabs": {
20 20
              "type": "array",
21 21
              "items": {
22 22
                "ref": "#feedTab",
23 23
                "type": "ref"
24 24
              },
25 25
              "maxLength": 16,
26 26
              "description": "フィードのタブ。表示順そのまま。"
27 27
            },
28 +
            "replyFreq": {
29 +
              "type": "integer",
30 +
              "maximum": 100,
31 +
              "minimum": 0,
32 +
              "description": "botたんからの返信確率(0〜100%)。Bluesky側のfreq設定と共用。"
33 +
            },
34 +
            "preferredName": {
35 +
              "type": "string",
36 +
              "maxLength": 120,
37 +
              "description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
38 +
              "maxGraphemes": 40
39 +
            },
28 40
            "readPositions": {
29 41
              "type": "array",
30 42
              "items": {
31 43
                "ref": "#readPosition",
32 44
                "type": "ref"
33 45
              }
34 46
            },
35 47
            "emojiFavorites": {
36 48
              "type": "array",
37 49
              "items": {
38 50
                "type": "unknown"
39 51
              },
40 52
              "maxLength": 32,
41 53
              "description": "お気に入り絵文字パレット。表示順そのまま。要素は #unicodeFavorite または #customFavorite。"
42 54
            },
43 55
            "feedTabsUpdatedAt": {
44 56
              "type": "string",
45 57
              "format": "datetime",
46 58
              "description": "省略時は、この利用者がまだ一度もタブをカスタムしていないことを表す(クライアントは既定タブを使う)。"
47 59
            },
48 60
            "emojiFavoritesUpdatedAt": {
49 61
              "type": "string",
50 62
              "format": "datetime",
51 63
              "description": "省略時は、この利用者のお気に入りがまだ一度も同期されていないことを表す。"
52 64
            }
53 65
          }
54 66
        },
55 67
        "encoding": "application/json"
56 68
      },
57 69
      "description": "端末をまたいで同期する本人の設定(my Nagi の既読位置とお気に入り絵文字)を返す。他ユーザーからは参照できない。"
58 70
    },
59 71
    "feedTab": {
60 72
      "type": "object",
61 73
      "required": [
62 74
        "id",
63 75
        "kind"
64 76
      ],
65 77
      "properties": {
66 78
        "id": {
67 79
          "type": "string",
68 80
          "maxLength": 64
69 81
        },
70 82
        "uri": {
71 83
          "type": "string",
72 84
          "format": "at-uri",
73 85
          "maxLength": 2048,
74 86
          "description": "kind が channel のときのチャンネル。"
75 87
        },
76 88
        "kind": {
77 89
          "type": "string",
78 90
          "maxLength": 32,
79 91
          "knownValues": [
80 92
            "list",
81 93
            "global",
82 94
            "custom",
83 95
            "channel",
84 96
            "search"
85 97
          ]
86 98
        },
87 99
        "label": {
88 100
          "type": "string",
89 101
          "maxLength": 64,
90 102
          "description": "表示名のスナップショット。権威は uri / query 側。"
91 103
        },
92 104
        "query": {
93 105
          "type": "string",
94 106
          "maxLength": 128,
95 107
          "description": "kind が search のときの保存クエリ。"
96 108
        },
97 109
        "source": {
98 110
          "type": "string",
99 111
          "maxLength": 32,
100 112
          "description": "kind が list / custom のときの参照先(list=home, custom=affirmation)。将来のユーザー定義フィードは uri で指す。",
101 113
          "knownValues": [
102 114
            "home",
103 115
            "affirmation"
104 116
          ]
105 117
        },
106 118
        "queryKind": {
107 119
          "type": "string",
108 120
          "maxLength": 32,
109 121
          "knownValues": [
110 122
            "keyword",
111 123
            "tag"
112 124
          ]
113 125
        }
114 126
      },
115 127
      "description": "フィードのタブ1枚。必要なフィールドは kind ごとに異なる(list / custom は source、channel は uri、search は query)。"
116 128
    },
117 129
    "readPosition": {
118 130
      "type": "object",
119 131
      "required": [
120 132
        "section",
121 133
        "indexedAt",
122 134
        "uri"
123 135
      ],
124 136
      "properties": {
125 137
        "uri": {
126 138
          "type": "string",
127 139
          "format": "at-uri",
128 140
          "maxLength": 2048
129 141
        },
130 142
        "section": {
131 143
          "type": "string",
132 144
          "maxLength": 32,
133 145
          "knownValues": [
134 146
            "bot",
135 147
            "community",
136 148
            "list",
137 149
            "channels",
138 150
            "news"
139 151
          ]
140 152
        },
141 153
        "indexedAt": {
142 154
          "type": "string",
143 155
          "format": "datetime"
144 156
        }
145 157
      },
146 158
      "description": "「ここまで読んだ」位置。新旧の比較は (indexedAt, uri) の辞書順で行う。"
147 159
    },
148 160
    "customFavorite": {
149 161
      "type": "object",
150 162
      "required": [
151 163
        "kind",
152 164
        "emoji"
153 165
      ],
154 166
      "properties": {
155 167
        "kind": {
156 168
          "type": "string",
157 169
          "const": "custom"
158 170
        },
159 171
        "emoji": {
160 172
          "type": "unknown"
161 173
        }
162 174
      },
163 175
      "description": "Bluemoji のスナップショット。url などは表示のたびに再解決されるので、権威は uri のみ。"
164 176
    },
165 177
    "unicodeFavorite": {
166 178
      "type": "object",
167 179
      "required": [
168 180
        "kind",
169 181
        "emoji"
170 182
      ],
171 183
      "properties": {
172 184
        "kind": {
173 185
          "type": "string",
174 186
          "const": "unicode"
175 187
        },
176 188
        "emoji": {
177 189
          "type": "string",
178 190
          "maxLength": 64
179 191
        }
180 192
      }
181 193
    }
182 194
  },
183 195
  "$type": "com.atproto.lexicon.schema",
184 196
  "lexicon": 1
185 197
}

Compare Other Versions

Lexicon Garden

@