com.suibari.nagi.putPreferences

suibari.com

Schema Diff

+34 -1

From

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

To

CID
bafyreid7xn7cdqj...
Indexed At
2026-08-27 00:10 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 19 non-breaking changes.

Non-Breaking Changes (19)
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferences" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId" }
  • AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt" }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferences", kind: "prop", name: Some("languagePreferences") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:input.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferences", kind: "prop", name: Some("languagePreferences") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
  • AddedEdge AddedEdge { src: "com.suibari.nagi.putPreferences:output.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.suibari.nagi.getPreferences#languagePreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferences" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId" }
  • AddedVertex { vertex_id: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt" }

Additional Notes

  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferences", kind: "prop", name: Some("languagePreferences") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input", tgt: "com.suibari.nagi.putPreferences:input.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:input.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferences", kind: "prop", name: Some("languagePreferences") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.languagePreferencesUpdatedAt", kind: "prop", name: Some("languagePreferencesUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderId", kind: "prop", name: Some("lastBookmarkFolderId") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output", tgt: "com.suibari.nagi.putPreferences:output.lastBookmarkFolderUpdatedAt", kind: "prop", name: Some("lastBookmarkFolderUpdatedAt") }
  • Non-breaking: AddedEdge { src: "com.suibari.nagi.putPreferences:output.languagePreferences", tgt: "com.suibari.nagi.getPreferences#languagePreferences", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 -
      "description": "同期対象の設定を書き込む。既読位置は (indexedAt, uri) が進むときだけ更新する単調マージ、お気に入りは updatedAt による後勝ち。どちらも省略でき、送った分だけが更新される。",
5 +
      "description": "同期対象の本人設定を書き込む。既読位置は単調マージ、配列・言語設定・最後のブックマークフォルダは 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 +
            "languagePreferences": {
44 +
              "ref": "com.suibari.nagi.getPreferences#languagePreferences",
45 +
              "type": "ref"
46 +
            },
47 +
            "languagePreferencesUpdatedAt": {
48 +
              "format": "datetime",
49 +
              "type": "string"
50 +
            },
51 +
            "lastBookmarkFolderId": {
52 +
              "maxLength": 64,
53 +
              "nullable": true,
54 +
              "type": "string"
55 +
            },
56 +
            "lastBookmarkFolderUpdatedAt": {
57 +
              "format": "datetime",
58 +
              "type": "string"
59 +
            },
43 60
            "preferredName": {
44 61
              "description": "botたんに呼んでほしい名前。空文字を送ると登録を解除し、表示名に戻す。送らなければ変更しない。",
45 62
              "maxGraphemes": 40,
46 63
              "maxLength": 120,
47 64
              "type": "string"
48 65
            },
49 66
            "readPositions": {
50 67
              "items": {
51 68
                "ref": "com.suibari.nagi.getPreferences#readPosition",
52 69
                "type": "ref"
53 70
              },
54 71
              "maxLength": 16,
55 72
              "type": "array"
56 73
            },
57 74
            "replyFreq": {
58 75
              "description": "botたんからの返信確率(0〜100%)。送らなければ変更しない。",
59 76
              "maximum": 100,
60 77
              "minimum": 0,
61 78
              "type": "integer"
62 79
            }
63 80
          },
64 81
          "type": "object"
65 82
        }
66 83
      },
67 84
      "output": {
68 85
        "encoding": "application/json",
69 86
        "schema": {
70 87
          "properties": {
71 88
            "emojiFavorites": {
72 89
              "items": {
73 90
                "type": "unknown"
74 91
              },
75 92
              "maxLength": 32,
76 93
              "type": "array"
77 94
            },
78 95
            "emojiFavoritesUpdatedAt": {
79 96
              "format": "datetime",
80 97
              "type": "string"
81 98
            },
82 99
            "feedTabs": {
83 100
              "items": {
84 101
                "ref": "com.suibari.nagi.getPreferences#feedTab",
85 102
                "type": "ref"
86 103
              },
87 104
              "maxLength": 16,
88 105
              "type": "array"
89 106
            },
90 107
            "feedTabsUpdatedAt": {
91 108
              "format": "datetime",
92 109
              "type": "string"
93 110
            },
111 +
            "languagePreferences": {
112 +
              "ref": "com.suibari.nagi.getPreferences#languagePreferences",
113 +
              "type": "ref"
114 +
            },
115 +
            "languagePreferencesUpdatedAt": {
116 +
              "format": "datetime",
117 +
              "type": "string"
118 +
            },
119 +
            "lastBookmarkFolderId": {
120 +
              "maxLength": 64,
121 +
              "type": "string"
122 +
            },
123 +
            "lastBookmarkFolderUpdatedAt": {
124 +
              "format": "datetime",
125 +
              "type": "string"
126 +
            },
94 127
            "preferredName": {
95 128
              "description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
96 129
              "maxGraphemes": 40,
97 130
              "maxLength": 120,
98 131
              "type": "string"
99 132
            },
100 133
            "readPositions": {
101 134
              "description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。",
102 135
              "items": {
103 136
                "ref": "com.suibari.nagi.getPreferences#readPosition",
104 137
                "type": "ref"
105 138
              },
106 139
              "type": "array"
107 140
            },
108 141
            "replyFreq": {
109 142
              "description": "botたんからの返信確率(0〜100%)。",
110 143
              "maximum": 100,
111 144
              "minimum": 0,
112 145
              "type": "integer"
113 146
            }
114 147
          },
115 148
          "required": [
116 149
            "readPositions",
117 150
            "emojiFavorites"
118 151
          ],
119 152
          "type": "object"
120 153
        }
121 154
      },
122 155
      "type": "procedure"
123 156
    }
124 157
  },
125 158
  "id": "com.suibari.nagi.putPreferences",
126 159
  "lexicon": 1
127 160
}

Compare Other Versions

Lexicon Garden

@