com.suibari.nagi.putPreferences

同期対象の本人設定を書き込む。既読位置は単調マージ、配列・言語・コンテンツ表示設定・最後のブックマークフォルダは updatedAt による後勝ち。各項目は省略でき、送った分だけを更新する。

Repository @suibari.com did:plc:uixgxpiqf4i63p6rgpu7ytmx namespace authority
Details · procedure
Kindprocedure
Authoritynagi.suibari.com
Indexed

Showing version bafyreigxmuciixj7xe4gyqwzqca2ftn2xw3plfwbl5laopwofek5jfo34m. Show the latest

cid bafyreigxmuciixj7xe4gyqwzqca2ftn2xw3plfwbl5laopwofek5jfo34m

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "同期対象の本人設定を書き込む。既読位置は単調マージ、配列・言語・コンテンツ表示設定・最後のブックマークフォルダは updatedAt による後勝ち。各項目は省略でき、送った分だけを更新する。",
      "errors": [
        {
          "name": "AuthRequired"
        },
        {
          "name": "InvalidRequest"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "chronicleReadYears": {
              "description": "年ごとの既読ハッシュ。過去の版は蓄積せず、現在の年表内容と一致する版だけを保存する。",
              "items": {
                "ref": "com.suibari.nagi.getChronicle#readYear",
                "type": "ref"
              },
              "maxLength": 100,
              "type": "array"
            },
            "detectedTimezone": {
              "description": "Nagi を開いたときにブラウザが検出したタイムゾーン(IANA 名)。手動で選んでいる間は送らない。UTC や Etc/* は受け取っても使わない。",
              "maxLength": 64,
              "type": "string"
            },
            "diaryDay": {
              "description": "日記の1日の区切り。送った項目だけを変える。",
              "properties": {
                "startHour": {
                  "description": "区切りの時刻(18〜23, 0〜6)。",
                  "maximum": 23,
                  "minimum": 0,
                  "type": "integer"
                },
                "timezone": {
                  "description": "手動のタイムゾーン。null を送ると自動検出に戻す。",
                  "maxLength": 64,
                  "type": "string"
                }
              },
              "type": "object"
            },
            "emojiFavorites": {
              "items": {
                "type": "unknown"
              },
              "maxLength": 32,
              "type": "array"
            },
            "emojiFavoritesUpdatedAt": {
              "description": "emojiFavorites を送るときは必須。保存済みより古ければ書き込まない。",
              "format": "datetime",
              "type": "string"
            },
            "feedTabs": {
              "items": {
                "ref": "com.suibari.nagi.getPreferences#feedTab",
                "type": "ref"
              },
              "maxLength": 16,
              "type": "array"
            },
            "feedTabsUpdatedAt": {
              "description": "feedTabs を送るときは必須。保存済みより古ければ書き込まない。",
              "format": "datetime",
              "type": "string"
            },
            "languagePreferences": {
              "ref": "com.suibari.nagi.getPreferences#languagePreferences",
              "type": "ref"
            },
            "languagePreferencesUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "lastBookmarkFolderId": {
              "maxLength": 64,
              "nullable": true,
              "type": "string"
            },
            "lastBookmarkFolderUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "moderationPreferences": {
              "ref": "com.suibari.nagi.getPreferences#moderationPreferences",
              "type": "ref"
            },
            "moderationPreferencesUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "preferredName": {
              "description": "botたんに呼んでほしい名前。空文字を送ると登録を解除し、表示名に戻す。送らなければ変更しない。",
              "maxGraphemes": 40,
              "maxLength": 120,
              "type": "string"
            },
            "readPositions": {
              "items": {
                "ref": "com.suibari.nagi.getPreferences#readPosition",
                "type": "ref"
              },
              "maxLength": 16,
              "type": "array"
            },
            "replyFreq": {
              "description": "botたんからの返信確率(0〜100%)。送らなければ変更しない。",
              "maximum": 100,
              "minimum": 0,
              "type": "integer"
            }
          },
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "chronicleReadYears": {
              "description": "年ごとの既読ハッシュ。過去の版は蓄積せず、現在の年表内容と一致する版だけを保存する。",
              "items": {
                "ref": "com.suibari.nagi.getChronicle#readYear",
                "type": "ref"
              },
              "type": "array"
            },
            "emojiFavorites": {
              "items": {
                "type": "unknown"
              },
              "maxLength": 32,
              "type": "array"
            },
            "emojiFavoritesUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "feedTabs": {
              "items": {
                "ref": "com.suibari.nagi.getPreferences#feedTab",
                "type": "ref"
              },
              "maxLength": 16,
              "type": "array"
            },
            "feedTabsUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "languagePreferences": {
              "ref": "com.suibari.nagi.getPreferences#languagePreferences",
              "type": "ref"
            },
            "languagePreferencesUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "lastBookmarkFolderId": {
              "maxLength": 64,
              "type": "string"
            },
            "lastBookmarkFolderUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "moderationPreferences": {
              "ref": "com.suibari.nagi.getPreferences#moderationPreferences",
              "type": "ref"
            },
            "moderationPreferencesUpdatedAt": {
              "format": "datetime",
              "type": "string"
            },
            "preferredName": {
              "description": "botたんに呼んでほしい名前。省略時は未設定=表示名で呼ばれる。",
              "maxGraphemes": 40,
              "maxLength": 120,
              "type": "string"
            },
            "readPositions": {
              "description": "マージ後の確定値。送った位置が負けた場合は保存済みの方が返る。",
              "items": {
                "ref": "com.suibari.nagi.getPreferences#readPosition",
                "type": "ref"
              },
              "type": "array"
            },
            "replyFreq": {
              "description": "botたんからの返信確率(0〜100%)。",
              "maximum": 100,
              "minimum": 0,
              "type": "integer"
            }
          },
          "required": [
            "readPositions",
            "emojiFavorites"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "com.suibari.nagi.putPreferences",
  "lexicon": 1
}