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
  "$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 +
            "feedTabs": {
31 +
              "items": {
32 +
                "ref": "com.suibari.nagi.getPreferences#feedTab",
33 +
                "type": "ref"
34 +
              },
35 +
              "maxLength": 16,
36 +
              "type": "array"
37 +
            },
38 +
            "feedTabsUpdatedAt": {
39 +
              "description": "feedTabs を送るときは必須。保存済みより古ければ書き込まない。",
40 +
              "format": "datetime",
41 +
              "type": "string"
42 +
            },
30 43
            "readPositions": {
31 44
              "items": {
32 45
                "ref": "com.suibari.nagi.getPreferences#readPosition",
33 46
                "type": "ref"
34 47
              },
35 48
              "maxLength": 16,
36 49
              "type": "array"
37 50
            }
38 51
          },
39 52
          "type": "object"
40 53
        }
41 54
      },
42 55
      "output": {
43 56
        "encoding": "application/json",
44 57
        "schema": {
45 58
          "properties": {
46 59
            "emojiFavorites": {
47 60
              "items": {
48 61
                "type": "unknown"
49 62
              },
50 63
              "maxLength": 32,
51 64
              "type": "array"
52 65
            },
53 66
            "emojiFavoritesUpdatedAt": {
54 67
              "format": "datetime",
55 68
              "type": "string"
56 69
            },
70 +
            "feedTabs": {
71 +
              "items": {
72 +
                "ref": "com.suibari.nagi.getPreferences#feedTab",
73 +
                "type": "ref"
74 +
              },
75 +
              "maxLength": 16,
76 +
              "type": "array"
77 +
            },
78 +
            "feedTabsUpdatedAt": {
79 +
              "format": "datetime",
80 +
              "type": "string"
81 +
            },
57 82
            "readPositions": {
58 83
              "description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。",
59 84
              "items": {
60 85
                "ref": "com.suibari.nagi.getPreferences#readPosition",
61 86
                "type": "ref"
62 87
              },
63 88
              "type": "array"
64 89
            }
65 90
          },
66 91
          "required": [
67 92
            "readPositions",
68 93
            "emojiFavorites"
69 94
          ],
70 95
          "type": "object"
71 96
        }
72 97
      },
73 98
      "type": "procedure"
74 99
    }
75 100
  },
76 101
  "id": "com.suibari.nagi.putPreferences",
77 102
  "lexicon": 1
78 103
}

Compare Other Versions

Lexicon Garden

@