com.suibari.nagi.getPreferences

suibari.com

Schema Diff

+72 -0

From

CID
bafyreiabr6sllqx...
Indexed At
2026-08-05 09:00 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 20 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#feedTab", src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.id", kind: "prop", name: Some("id") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.suibari.nagi.getPreferences#feedTab", src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.kind", kind: "prop", name: Some("kind") }
Non-Breaking Changes (20)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.id" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.kind" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.label" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.query" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.queryKind" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.source" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.uri" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.feedTabs" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.feedTabs:items" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.feedTabsUpdatedAt" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.label", kind: "prop", name: Some("label") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.query", kind: "prop", name: Some("query") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.queryKind", kind: "prop", name: Some("queryKind") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.source", kind: "prop", name: Some("source") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences#feedTab", tgt: "com.suibari.nagi.getPreferences#feedTab.uri", kind: "prop", name: Some("uri") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.feedTabs", kind: "prop", name: Some("feedTabs") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output", tgt: "com.suibari.nagi.getPreferences:output.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences:output.feedTabs", tgt: "com.suibari.nagi.getPreferences:output.feedTabs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.getPreferences: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.getPreferences#feedTab.id" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.kind" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.label" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.query" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.queryKind" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.source" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab.uri" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.feedTabs" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.feedTabs:items" }
  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences:output.feedTabsUpdatedAt" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@