com.suibari.nagi.putPreferences

suibari.com

Schema Diff

+25 -0

From

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

To

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

Compatibility Analysis

Backward Compatible

Backward compatible. 15 non-breaking changes.

Non-Breaking Changes (15)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#feedTab" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs:items" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs:items" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabs", kind: "prop", name: Some("feedTabs") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs", tgt: "com.suibari.nagi.putPreferences:input.feedTabs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabs", kind: "prop", name: Some("feedTabs") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs", tgt: "com.suibari.nagi.putPreferences:output.feedTabs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences: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.putPreferences:input.feedTabs" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabs:items" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabs:items" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabs", kind: "prop", name: Some("feedTabs") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs", tgt: "com.suibari.nagi.putPreferences:input.feedTabs:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabs", kind: "prop", name: Some("feedTabs") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.feedTabsUpdatedAt", kind: "prop", name: Some("feedTabsUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs", tgt: "com.suibari.nagi.putPreferences:output.feedTabs:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output.feedTabs:items", tgt: "com.suibari.nagi.getPreferences#feedTab", kind: "ref", name: None }
1 1
{
2 2
  "id": "com.suibari.nagi.putPreferences",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "procedure",
6 6
      "input": {
7 7
        "schema": {
8 8
          "type": "object",
9 9
          "properties": {
10 +
            "feedTabs": {
11 +
              "type": "array",
12 +
              "items": {
13 +
                "ref": "com.suibari.nagi.getPreferences#feedTab",
14 +
                "type": "ref"
15 +
              },
16 +
              "maxLength": 16
17 +
            },
10 18
            "readPositions": {
11 19
              "type": "array",
12 20
              "items": {
13 21
                "ref": "com.suibari.nagi.getPreferences#readPosition",
14 22
                "type": "ref"
15 23
              },
16 24
              "maxLength": 16
17 25
            },
18 26
            "emojiFavorites": {
19 27
              "type": "array",
20 28
              "items": {
21 29
                "type": "unknown"
22 30
              },
23 31
              "maxLength": 32
24 32
            },
33 +
            "feedTabsUpdatedAt": {
34 +
              "type": "string",
35 +
              "format": "datetime",
36 +
              "description": "feedTabs を送るときは必須。保存済みより古ければ書き込まない。"
37 +
            },
25 38
            "emojiFavoritesUpdatedAt": {
26 39
              "type": "string",
27 40
              "format": "datetime",
28 41
              "description": "emojiFavorites を送るときは必須。保存済みより古ければ書き込まない。"
29 42
            }
30 43
          }
31 44
        },
32 45
        "encoding": "application/json"
33 46
      },
34 47
      "errors": [
35 48
        {
36 49
          "name": "AuthRequired"
37 50
        },
38 51
        {
39 52
          "name": "InvalidRequest"
40 53
        }
41 54
      ],
42 55
      "output": {
43 56
        "schema": {
44 57
          "type": "object",
45 58
          "required": [
46 59
            "readPositions",
47 60
            "emojiFavorites"
48 61
          ],
49 62
          "properties": {
63 +
            "feedTabs": {
64 +
              "type": "array",
65 +
              "items": {
66 +
                "ref": "com.suibari.nagi.getPreferences#feedTab",
67 +
                "type": "ref"
68 +
              },
69 +
              "maxLength": 16
70 +
            },
50 71
            "readPositions": {
51 72
              "type": "array",
52 73
              "items": {
53 74
                "ref": "com.suibari.nagi.getPreferences#readPosition",
54 75
                "type": "ref"
55 76
              },
56 77
              "description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。"
57 78
            },
58 79
            "emojiFavorites": {
59 80
              "type": "array",
60 81
              "items": {
61 82
                "type": "unknown"
62 83
              },
63 84
              "maxLength": 32
64 85
            },
86 +
            "feedTabsUpdatedAt": {
87 +
              "type": "string",
88 +
              "format": "datetime"
89 +
            },
65 90
            "emojiFavoritesUpdatedAt": {
66 91
              "type": "string",
67 92
              "format": "datetime"
68 93
            }
69 94
          }
70 95
        },
71 96
        "encoding": "application/json"
72 97
      },
73 98
      "description": "同期対象の設定を書き込む。既読位置は (indexedAt, uri) が進むときだけ更新する単調マージ、お気に入りは updatedAt による後勝ち。どちらも省略でき、送った分だけが更新される。"
74 99
    }
75 100
  },
76 101
  "$type": "com.atproto.lexicon.schema",
77 102
  "lexicon": 1
78 103
}

Compare Other Versions

Lexicon Garden

@