Skip to content

/api/system

bootProgress

  • 🔥 获取内核启动进度
  • /api/system/bootProgress

响应

ts
/**
 * get the booting progress of siyuan kernel
 */
export interface IResponse {
    /**
     * status code
     */
    readonly code: number;
    readonly data: IData;
    /**
     * status message
     */
    readonly msg: string;
}

/**
 * response data
 */
export interface IData {
    /**
     * status details
     */
    readonly details: string;
    /**
     * booting progress
     */
    readonly progress: number;
}
json5
/**
 * schemas/kernel/api/system/bootProgress/response.schema.json5
 * 获取思源内核启动进度
 * REF: https://github.com/siyuan-note/siyuan/blob/master/API.md#get-boot-progress
 * REF: https://github.com/siyuan-note/siyuan/blob/v2.9.2/kernel/api/system.go#L300-L306
 * @pathname: /api/system/bootProgress
 * @version: 2.9.2
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/bootProgress/response.schema.json5',
    $comment: 'v2.9.2',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'response body',
            description: 'get the booting progress of siyuan kernel',

            type: 'object',
            additionalProperties: false,
            required: [
                'code',
                'msg',
                'data',
            ],
            properties: {
                code: {
                    type: 'integer',
                    description: 'status code',
                },
                msg: {
                    type: 'string',
                    description: 'status message',
                },
                data: {
                    $ref: '#/$defs/data',
                },
            },
        },
        data: {
            title: 'IData',
            description: 'response data',

            type: 'object',
            additionalProperties: false,
            required: [
                'details',
                'progress',
            ],
            properties: {
                details: {
                    type: 'string',
                    description: 'status details',
                },
                progress: {
                    type: 'integer',
                    description: 'booting progress',
                    minimum: 0,
                    maximum: 100,
                },
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/bootProgress/response.schema.json",
    "$comment": "v2.9.2",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "response body",
            "description": "get the booting progress of siyuan kernel",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "code",
                "msg",
                "data"
            ],
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "status code"
                },
                "msg": {
                    "type": "string",
                    "description": "status message"
                },
                "data": {
                    "$ref": "#/$defs/data"
                }
            }
        },
        "data": {
            "title": "IData",
            "description": "response data",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "details",
                "progress"
            ],
            "properties": {
                "details": {
                    "type": "string",
                    "description": "status details"
                },
                "progress": {
                    "type": "integer",
                    "description": "booting progress",
                    "minimum": 0,
                    "maximum": 100
                }
            }
        }
    }
}

currentTime

  • 🔥 获取当前时间
  • /api/system/currentTime

响应

ts
/**
 * get the timestamp of the current time of the system on which the kernel resides
 */
export interface IResponse {
    /**
     * status code
     */
    readonly code: number;
    /**
     * Unix timestamp (millisecond, ms)
     */
    readonly data: number;
    /**
     * status message
     */
    readonly msg: string;
}
json5
/**
 * schemas/kernel/api/system/currentTime/response.schema.json5
 * 获取内核所在系统当前时间的时间戳
 * REF: https://github.com/siyuan-note/siyuan/blob/master/API.md#get-the-current-time-of-the-system
 * REF: https://github.com/siyuan-note/siyuan/blob/b2c0f3ea1f387f563d10688b5ac4ee1f952ba158/kernel/api/system.go#L293-L298
 * @pathname: /api/system/currentTime
 * @version: 2.9.2
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/currentTime/response.schema.json5',
    $comment: 'v2.9.2',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'response body',
            description: 'get the timestamp of the current time of the system on which the kernel resides',

            type: 'object',
            additionalProperties: false,
            required: [
                'code',
                'msg',
                'data',
            ],
            properties: {
                code: {
                    type: 'integer',
                    description: 'status code',
                },
                msg: {
                    type: 'string',
                    description: 'status message',
                },
                data: {
                    type: 'integer',
                    description: 'Unix timestamp (millisecond, ms)',
                    examples: [
                        1690296491237,
                    ],
                },
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/currentTime/response.schema.json",
    "$comment": "v2.9.2",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "response body",
            "description": "get the timestamp of the current time of the system on which the kernel resides",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "code",
                "msg",
                "data"
            ],
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "status code"
                },
                "msg": {
                    "type": "string",
                    "description": "status message"
                },
                "data": {
                    "type": "integer",
                    "description": "Unix timestamp (millisecond, ms)",
                    "examples": [
                        1690296491237
                    ]
                }
            }
        }
    }
}

exit

  • 🛠 退出内核
  • /api/system/exit

请求

ts
/**
 * Exit the kernel
 */
export interface IPayload {
    /**
     * Whether to automatically install the new version of the installation package
     */
    readonly execInstallPkg?: number;
    /**
     * Whether to force quit the kernel
     */
    readonly force?: boolean;
}
json5
/**
 * schemas/kernel/api/system/exit/payload.schema.json5
 * 退出内核
 * REF: https://github.com/siyuan-note/siyuan/blob/v3.0.4/kernel/api/system.go#L475-L504
 * @pathname: /api/system/exit
 * @version: 3.0.4
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/exit/payload.schema.json5',
    $comment: 'v3.0.4',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'payload body',
            description: 'Exit the kernel',

            type: 'object',
            additionalProperties: false,
            required: [],
            properties: {
                execInstallPkg: {
                    // 是否自动安装新版本安装包
                    type: 'integer',
                    description: 'Whether to automatically install the new version of the installation package',
                    enum: [
                        0, // (default) 按照设置项 System.DownloadInstallPkg 检查并推送提示
                        1, // 不执行新版本安装
                        2, // 执行新版本安装
                    ],
                    default: 0,
                },
                force: {
                    // 是否强制退出内核
                    type: 'boolean',
                    description: 'Whether to force quit the kernel',
                    default: false,
                },
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/exit/payload.schema.json",
    "$comment": "v3.0.4",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "payload body",
            "description": "Exit the kernel",
            "type": "object",
            "additionalProperties": false,
            "required": [],
            "properties": {
                "execInstallPkg": {
                    "type": "integer",
                    "description": "Whether to automatically install the new version of the installation package",
                    "enum": [
                        0,
                        1,
                        2
                    ],
                    "default": 0
                },
                "force": {
                    "type": "boolean",
                    "description": "Whether to force quit the kernel",
                    "default": false
                }
            }
        }
    }
}

响应

ts
/**
 * Exit the kernel
 */
export interface IResponse {
    /**
     * status code
     */
    readonly code: number;
    readonly data: any;
    /**
     * status message
     */
    readonly msg: string;
}
json5
/**
 * schemas/kernel/api/system/exit/response.schema.json5
 * 退出内核
 * REF: https://github.com/siyuan-note/siyuan/blob/v3.0.4/kernel/api/system.go#L475-L504
 * @pathname: /api/system/exit
 * @version: 3.0.4
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/exit/response.schema.json5',
    $comment: 'v3.0.4',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'response body',
            description: 'Exit the kernel',

            type: 'object',
            additionalProperties: false,
            required: [
                'code',
                'msg',
                'data',
            ],
            properties: {
                code: {
                    type: 'integer',
                    description: 'status code',
                },
                msg: {
                    type: 'string',
                    description: 'status message',
                },
                data: {},
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/exit/response.schema.json",
    "$comment": "v3.0.4",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "response body",
            "description": "Exit the kernel",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "code",
                "msg",
                "data"
            ],
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "status code"
                },
                "msg": {
                    "type": "string",
                    "description": "status message"
                },
                "data": {}
            }
        }
    }
}

getConf

  • 🛠 获取工作空间完整配置
  • /api/system/getConf

响应

ts
/**
 * Get the full configuration of the workspace
 */
export interface IResponse {
    /**
     * status code
     */
    readonly code: number;
    readonly data: IData;
    /**
     * status message
     */
    readonly msg: string;
}

/**
 * response data
 */
export interface IData {
    readonly conf: IConf;
    /**
     * Whether the user interface is not loaded
     */
    readonly start: boolean;
}

/**
 * Configuration object
 */
export interface IConf {
    /**
     * Access authorization code
     */
    readonly accessAuthCode: TAccessAuthCode;
    readonly account: IAccount;
    readonly ai: Iai;
    readonly api: IAPI;
    readonly appearance: IAppearance;
    readonly bazaar: IBazaar;
    /**
     * Cloud Service Provider Region
     * - `0`: Chinese mainland
     * - `1`: North America
     */
    readonly cloudRegion: number;
    readonly editor: IEditor;
    readonly export: IExport;
    readonly fileTree: IFileTree;
    readonly flashcard: IFlashCard;
    readonly graph: IGraph;
    readonly keymap: IKeymap;
    /**
     * User interface language
     * Same as {@link IAppearance.lang}
     */
    readonly lang: TLang;
    /**
     * List of supported languages
     */
    readonly langs: ILang[];
    /**
     * A list of the IP addresses of the devices on which the kernel resides
     */
    readonly localIPs: string[];
    /**
     * Log level
     */
    readonly logLevel: TLogLevel;
    /**
     * Whether to open the user guide after startup
     */
    readonly openHelp: boolean;
    readonly publish: IPublish;
    /**
     * Whether it is running in read-only mode
     */
    readonly readonly: boolean;
    readonly repo: IRepo;
    readonly search: ISearch;
    /**
     * Whether to display the changelog for this release version
     */
    readonly showChangelog: boolean;
    readonly snippet: ISnippet;
    readonly stat: IStat;
    readonly sync: ISync;
    readonly system: ISystem;
    readonly tag: ITag;
    readonly uiLayout: IUILayout;
    /**
     * Community user data (Encrypted)
     */
    readonly userData: string;
}

/**
 * Access authorization code
 */
export type TAccessAuthCode = "" | "*******";

/**
 * Account configuration
 */
export interface IAccount {
    /**
     * Display the title icon
     */
    readonly displayTitle: boolean;
    /**
     * Display the VIP icon
     */
    readonly displayVIP: boolean;
}

/**
 * Artificial Intelligence (AI) related configuration
 */
export interface Iai {
    readonly openAI: IOpenAI;
}

/**
 * Open AI related configuration
 */
export interface IOpenAI {
    /**
     * API base URL
     */
    readonly apiBaseURL: string;
    /**
     * API key
     */
    readonly apiKey: string;
    /**
     * The maximum number of contexts passed when requesting the API
     */
    readonly apiMaxContexts: number;
    /**
     * Maximum number of tokens (0 means no limit)
     */
    readonly apiMaxTokens: number;
    /**
     * The model name called by the API
     */
    readonly apiModel: string;
    /**
     * API Provider
     */
    readonly apiProvider: TOpenAIAPIProvider;
    /**
     * API request proxy address
     */
    readonly apiProxy: string;
    /**
     * Parameter `temperature` that controls the randomness of the generated text
     */
    readonly apiTemperature: number;
    /**
     * API request timeout (unit: seconds)
     */
    readonly apiTimeout: number;
    /**
     * API request additional user agent field
     */
    readonly apiUserAgent: string;
    /**
     * API version number
     */
    readonly apiVersion: string;
}

/**
 * API Provider
 */
export type TOpenAIAPIProvider = "Azure" | "OpenAI";

/**
 * SiYuan API related configuration
 */
export interface IAPI {
    /**
     * API Token
     */
    readonly token: string;
}

/**
 * SiYuan appearance related configuration
 */
export interface IAppearance {
    /**
     * Close button behavior
     * - `0`: Exit application
     * - `1`: Minimize to pallets
     */
    readonly closeButtonBehavior: number;
    /**
     * Dark code block theme
     */
    readonly codeBlockThemeDark: string;
    /**
     * Light code block theme
     */
    readonly codeBlockThemeLight: string;
    /**
     * List of installed dark themes
     */
    readonly darkThemes: string[];
    /**
     * Whether to hide status bar
     */
    readonly hideStatusBar: boolean;
    /**
     * The name of the icon currently in use
     */
    readonly icon: string;
    /**
     * List of installed icon names
     */
    readonly icons: string[];
    /**
     * The version number of the icon currently in use
     */
    readonly iconVer: string;
    /**
     * The language used by the current user
     */
    readonly lang: TLang;
    /**
     * List of installed light themes
     */
    readonly lightThemes: string[];
    /**
     * The current theme mode
     * - `0`: Light theme
     * - `1`: Dark theme
     */
    readonly mode: number;
    /**
     * Whether the theme mode follows the system theme
     */
    readonly modeOS: boolean;
    /**
     * The name of the dark theme currently in use
     */
    readonly themeDark: string;
    /**
     * Whether the current theme has enabled theme JavaScript
     */
    readonly themeJS: boolean;
    /**
     * The name of the light theme currently in use
     */
    readonly themeLight: string;
    /**
     * The version number of the theme currently in use
     */
    readonly themeVer: string;
}

/**
 * The language used by the current user
 *
 * User interface language
 * Same as {@link IAppearance.lang}
 */
export type TLang = "en_US" | "es_ES" | "fr_FR" | "zh_CHT" | "zh_CN";

/**
 * SiYuan bazaar related configuration
 */
export interface IBazaar {
    /**
     * Whether to disable all plug-ins
     */
    readonly petalDisabled: boolean;
    /**
     * Whether to trust (enable) the resources for the bazaar
     */
    readonly trust: boolean;
}

/**
 * SiYuan editor related configuration
 */
export interface IEditor {
    /**
     * Allow HTML blocks to run scripts
     */
    readonly allowHTMLBLockScript: boolean;
    /**
     * The default number of backlinks to expand
     */
    readonly backlinkExpandCount: number;
    /**
     * The default number of backlinks to mention
     */
    readonly backmentionExpandCount: number;
    /**
     * The maximum length of the dynamic anchor text for block references
     */
    readonly blockRefDynamicAnchorTextMaxLen: number;
    /**
     * Whether the code block has enabled ligatures
     */
    readonly codeLigatures: boolean;
    /**
     * Whether the code block is automatically wrapped
     */
    readonly codeLineWrap: boolean;
    /**
     * Whether the code block displays line numbers
     */
    readonly codeSyntaxHighlightLineNum: boolean;
    /**
     * The number of spaces generated by the Tab key in the code block, configured as 0 means no
     * conversion to spaces
     */
    readonly codeTabSpaces: number;
    /**
     * Whether to display the bookmark icon
     */
    readonly displayBookmarkIcon: boolean;
    /**
     * Whether to display the network image mark
     */
    readonly displayNetImgMark: boolean;
    /**
     * The number of blocks loaded each time they are dynamically loaded
     */
    readonly dynamicLoadBlocks: number;
    /**
     * Whether the embedded block displays breadcrumbs
     */
    readonly embedBlockBreadcrumb: boolean;
    /**
     * Common emoji icons
     */
    readonly emoji: string[];
    /**
     * The trigger mode of the preview window
     * - `0`: Hover over the cursor
     * - `1`: Hover over the cursor while holding down Ctrl
     * - `2`: Do not trigger the floating window
     */
    readonly floatWindowMode: number;
    /**
     * The font used in the editor
     */
    readonly fontFamily: string;
    /**
     * The font size used in the editor
     */
    readonly fontSize: number;
    /**
     * Whether to enable the use of the mouse wheel to adjust the font size of the editor
     */
    readonly fontSizeScrollZoom: boolean;
    /**
     * Whether the editor uses maximum width
     */
    readonly fullWidth: boolean;
    /**
     * The time interval for generating document history, set to 0 to disable document history
     * (unit: minutes)
     */
    readonly generateHistoryInterval: number;
    /**
     * History retention days
     */
    readonly historyRetentionDays: number;
    /**
     * Whether to enable text justification
     */
    readonly justify: boolean;
    /**
     * KeTex macro definition (JSON string)
     */
    readonly katexMacros: string;
    /**
     * Whether to enable single-click list item mark focus
     */
    readonly listItemDotNumberClickFocus: boolean;
    /**
     * Whether to enable the list logical reverse indentation scheme
     */
    readonly listLogicalOutdent: boolean;
    readonly markdown: IEditorMarkdown;
    /**
     * Whether to enable the `[[` symbol to search only for document blocks
     */
    readonly onlySearchForDoc: boolean;
    /**
     * PlantUML rendering service address
     */
    readonly plantUMLServePath: string;
    /**
     * Whether to enable read-only mode
     */
    readonly readOnly: boolean;
    /**
     * Whether to enable RTL (left-to-right chirography) mode
     */
    readonly rtl: boolean;
    /**
     * Whether to enable spell checking
     */
    readonly spellcheck: boolean;
    /**
     * Whether to enable virtual references
     */
    readonly virtualBlockRef: boolean;
    /**
     * Virtual reference keyword exclusion list (separated by commas `,`)
     */
    readonly virtualBlockRefExclude: string;
    /**
     * Virtual reference keyword inclusion list (separated by commas `,`)
     */
    readonly virtualBlockRefInclude: string;
}

/**
 * Markdown syntax configuration
 */
export interface IEditorMarkdown {
    /**
     * Whether to enable inline formula syntax $foo$
     */
    readonly inlineMath: boolean;
    /**
     * Whether to enable subscript syntax ~foo~
     */
    readonly inlineSub: boolean;
    /**
     * Whether to enable superscript syntax ^foo^
     */
    readonly inlineSup: boolean;
    /**
     * Whether to enable tag syntax #foo#
     */
    readonly inlineTag: boolean;
}

/**
 * SiYuan export related configuration
 */
export interface IExport {
    /**
     * Add article title (insert the article title as a first-level title at the beginning of
     * the document)
     */
    readonly addTitle: boolean;
    /**
     * Embedded block export mode
     * - `0`: Original block content
     * - `1`: Quotation block
     */
    readonly blockEmbedMode: number;
    /**
     * Content block reference export mode
     * - `0`: Original text (deprecated)
     * - `1`: Quotation block (deprecated)
     * - `2`: Anchor text block link
     * - `3`: Anchor text only
     * - `4`: Footnote
     * - `5`: Anchor hash
     */
    readonly blockRefMode: number;
    /**
     * The symbol on the left side of the block reference anchor text during export
     */
    readonly blockRefTextLeft: string;
    /**
     * The symbol on the right side of the block reference anchor text during export
     */
    readonly blockRefTextRight: string;
    /**
     * The path of the template file used when exporting to Docx
     */
    readonly docxTemplate: string;
    /**
     * File annotation reference export mode
     * - `0`: File name - page number - anchor text
     * - `1`: Anchor text only
     */
    readonly fileAnnotationRefMode: number;
    /**
     * Custom watermark position, size, style, etc. when exporting to an image
     */
    readonly imageWatermarkDesc: string;
    /**
     * The watermark text or watermark file path used when exporting to an image
     */
    readonly imageWatermarkStr: string;
    /**
     * Whether to add YAML Front Matter when exporting to Markdown
     */
    readonly markdownYFM: boolean;
    /**
     * Pandoc executable file path
     */
    readonly pandocBin: string;
    /**
     * Whether the beginning of the paragraph is empty two spaces.
     * Insert two full-width spaces `U+3000` at the beginning of the paragraph.
     */
    readonly paragraphBeginningSpace: boolean;
    /**
     * Custom footer content when exporting to PDF
     */
    readonly pdfFooter: string;
    /**
     * Custom watermark position, size, style, etc. when exporting to PDF
     */
    readonly pdfWatermarkDesc: string;
    /**
     * The watermark text or watermark file path used when exporting to PDF
     */
    readonly pdfWatermarkStr: string;
    /**
     * Tag close marker symbol
     */
    readonly tagCloseMarker: string;
    /**
     * Tag start marker symbol
     */
    readonly tagOpenMarker: string;
}

/**
 * Document tree related configuration
 */
export interface IFileTree {
    /**
     * Whether to allow the creation of sub-documents deeper than 7 levels
     */
    readonly allowCreateDeeper: boolean;
    /**
     * Whether to automatically locate the currently open document in the document tree
     */
    readonly alwaysSelectOpenedFile: boolean;
    /**
     * Whether to close all tabs when starting
     */
    readonly closeTabsOnStart: boolean;
    /**
     * The notebook to storage the new document
     */
    readonly docCreateSaveBox: string;
    /**
     * The storage path of the new document
     */
    readonly docCreateSavePath: string;
    /**
     * The maximum number of documents listed
     */
    readonly maxListCount: number;
    /**
     * The maximum number of open tabs
     */
    readonly maxOpenTabCount: number;
    /**
     * Whether to open the file in the current tab
     */
    readonly openFilesUseCurrentTab: boolean;
    /**
     * The notebook to storage the new document created using block references
     */
    readonly refCreateSaveBox: string;
    /**
     * The storage path of the new document created using block references
     */
    readonly refCreateSavePath: string;
    /**
     * Close the secondary confirmation when deleting a document
     */
    readonly removeDocWithoutConfirm: boolean;
    /**
     * Document sorting method
     * - `0`: File name ascending
     * - `1`: File name descending
     * - `2`: File update time ascending
     * - `3`: File update time descending
     * - `4`: File name natural number ascending
     * - `5`: File name natural number descending
     * - `6`: Custom sorting
     * - `7`: Reference count ascending
     * - `8`: Reference count descending
     * - `9`: File creation time ascending
     * - `10`: File creation time descending
     * - `11`: File size ascending
     * - `12`: File size descending
     * - `13`: Sub-document count ascending
     * - `14`: Sub-document count descending
     * - `15`: Use document tree sorting rules
     * - `256`: Unspecified sorting rules, according to the notebook priority over the document
     * tree to obtain sorting rules
     */
    readonly sort: number;
    /**
     * Whether to save the content of the .sy file as a single-line JSON object
     */
    readonly useSingleLineSave: boolean;
}

/**
 * Flashcard related configuration
 */
export interface IFlashCard {
    /**
     * Whether to enable deck card making
     */
    readonly deck: boolean;
    /**
     * Whether to enable heading block card making
     */
    readonly heading: boolean;
    /**
     * Whether to enable list block card making
     */
    readonly list: boolean;
    /**
     * Whether to enable mark element card making
     */
    readonly mark: boolean;
    /**
     * Maximum interval days
     */
    readonly maximumInterval: number;
    /**
     * New card limit
     */
    readonly newCardLimit: number;
    /**
     * FSRS request retention parameter
     */
    readonly requestRetention: number;
    /**
     * Review card limit
     */
    readonly reviewCardLimit: number;
    /**
     * Review mode
     * - `0`: New and old mixed
     * - `1`: New card priority
     * - `2`: Old card priority
     */
    readonly reviewMode: number;
    /**
     * Whether to enable super block card making
     */
    readonly superBlock: boolean;
    /**
     * FSRS weight parameter list
     */
    readonly weights: string;
}

/**
 * SiYuan graph related configuration
 */
export interface IGraph {
    readonly global: IGraphGlobal;
    readonly local: IGraphLocal;
    /**
     * Maximum number of content blocks displayed
     */
    readonly maxBlocks: number;
}

/**
 * Global graph configuration
 */
export interface IGraphGlobal {
    readonly d3: IGraphD3;
    /**
     * Whether to display nodes in daily notes
     */
    readonly dailyNote: boolean;
    /**
     * The minimum number of references to the displayed node
     */
    readonly minRefs: number;
    readonly type: IGraphType;
}

/**
 * d3.js graph configuration
 */
export interface IGraphD3 {
    /**
     * Whether to display the arrow
     */
    readonly arrow: boolean;
    /**
     * Central gravity intensity
     */
    readonly centerStrength: number;
    /**
     * Repulsion radius
     */
    readonly collideRadius: number;
    /**
     * Repulsion intensity
     */
    readonly collideStrength: number;
    /**
     * Line opacity
     */
    readonly lineOpacity: number;
    /**
     * Link distance
     */
    readonly linkDistance: number;
    /**
     * Line width
     */
    readonly linkWidth: number;
    /**
     * Node size
     */
    readonly nodeSize: number;
}

/**
 * SiYuan node type filter
 */
export interface IGraphType {
    /**
     * Display quote block
     */
    readonly blockquote: boolean;
    /**
     * Display code block
     */
    readonly code: boolean;
    /**
     * Display heading block
     */
    readonly heading: boolean;
    /**
     * Display list block
     */
    readonly list: boolean;
    /**
     * Display list item
     */
    readonly listItem: boolean;
    /**
     * Display formula block
     */
    readonly math: boolean;
    /**
     * Display paragraph block
     */
    readonly paragraph: boolean;
    /**
     * Display super block
     */
    readonly super: boolean;
    /**
     * Display table block
     */
    readonly table: boolean;
    /**
     * Display tag
     */
    readonly tag: boolean;
}

/**
 * Local graph configuration
 */
export interface IGraphLocal {
    readonly d3: IGraphD3;
    /**
     * Whether to display nodes in daily notes
     */
    readonly dailyNote: boolean;
    readonly type: IGraphType;
}

/**
 * SiYuan keymap related configuration
 */
export interface IKeymap {
    readonly editor: IKeymapEditor;
    readonly general: IKeymapGeneral;
    readonly plugin: { [key: string]: { [key: string]: IKey } };
}

/**
 * SiYuan editor shortcut keys
 */
export interface IKeymapEditor {
    readonly general: IKeymapEditorGeneral;
    readonly heading: IKeymapEditorHeading;
    readonly insert: IKeymapEditorInsert;
    readonly list: IKeymapEditorList;
    readonly table: IKeymapEditorTable;
}

/**
 * SiYuan editor general shortcut keys
 */
export interface IKeymapEditorGeneral {
    readonly ai: IKey;
    readonly alignCenter: IKey;
    readonly alignLeft: IKey;
    readonly alignRight: IKey;
    readonly attr: IKey;
    readonly backlinks: IKey;
    readonly collapse: IKey;
    readonly copyBlockEmbed: IKey;
    readonly copyBlockRef: IKey;
    readonly copyHPath: IKey;
    readonly copyID: IKey;
    readonly copyPlainText: IKey;
    readonly copyProtocol: IKey;
    readonly copyProtocolInMd: IKey;
    readonly copyText: IKey;
    readonly duplicate: IKey;
    readonly exitFocus: IKey;
    readonly expand: IKey;
    readonly expandDown: IKey;
    readonly expandUp: IKey;
    readonly fullscreen: IKey;
    readonly graphView: IKey;
    readonly hLayout: IKey;
    readonly insertAfter: IKey;
    readonly insertBefore: IKey;
    readonly insertBottom: IKey;
    readonly insertRight: IKey;
    readonly jumpToParent: IKey;
    readonly jumpToParentNext: IKey;
    readonly jumpToParentPrev: IKey;
    readonly moveToDown: IKey;
    readonly moveToUp: IKey;
    readonly netAssets2LocalAssets: IKey;
    readonly netImg2LocalAsset: IKey;
    readonly newContentFile: IKey;
    readonly newNameFile: IKey;
    readonly newNameSettingFile: IKey;
    readonly openBy: IKey;
    readonly optimizeTypography: IKey;
    readonly outline: IKey;
    readonly preview: IKey;
    readonly quickMakeCard: IKey;
    readonly redo: IKey;
    readonly refPopover: IKey;
    readonly refresh: IKey;
    readonly refTab: IKey;
    readonly rename: IKey;
    readonly showInFolder: IKey;
    readonly spaceRepetition: IKey;
    readonly switchReadonly: IKey;
    readonly undo: IKey;
    readonly vLayout: IKey;
    readonly wysiwyg: IKey;
}

/**
 * SiYuan shortcut key
 */
export interface IKey {
    /**
     * Custom shortcut key
     */
    readonly custom: string;
    /**
     * Default shortcut key
     */
    readonly default: string;
}

/**
 * SiYuan editor heading shortcut keys
 */
export interface IKeymapEditorHeading {
    readonly heading1: IKey;
    readonly heading2: IKey;
    readonly heading3: IKey;
    readonly heading4: IKey;
    readonly heading5: IKey;
    readonly heading6: IKey;
    readonly paragraph: IKey;
}

/**
 * SiYuan editor insert shortcut keys
 */
export interface IKeymapEditorInsert {
    readonly "appearance": IKey;
    readonly "bold": IKey;
    readonly "check": IKey;
    readonly "clearInline": IKey;
    readonly "code": IKey;
    readonly "inline-code": IKey;
    readonly "inline-math": IKey;
    readonly "italic": IKey;
    readonly "kbd": IKey;
    readonly "lastUsed": IKey;
    readonly "link": IKey;
    readonly "mark": IKey;
    readonly "memo": IKey;
    readonly "ref": IKey;
    readonly "strike": IKey;
    readonly "sub": IKey;
    readonly "sup": IKey;
    readonly "table": IKey;
    readonly "tag": IKey;
    readonly "underline": IKey;
}

/**
 * SiYuan editor list shortcut keys
 */
export interface IKeymapEditorList {
    readonly checkToggle: IKey;
    readonly indent: IKey;
    readonly outdent: IKey;
}

/**
 * SiYuan editor table shortcut keys
 */
export interface IKeymapEditorTable {
    readonly "delete-column": IKey;
    readonly "delete-row": IKey;
    readonly "insertColumnLeft": IKey;
    readonly "insertColumnRight": IKey;
    readonly "insertRowAbove": IKey;
    readonly "insertRowBelow": IKey;
    readonly "moveToDown": IKey;
    readonly "moveToLeft": IKey;
    readonly "moveToRight": IKey;
    readonly "moveToUp": IKey;
}

/**
 * SiYuan general shortcut keys
 */
export interface IKeymapGeneral {
    readonly addToDatabase: IKey;
    readonly backlinks: IKey;
    readonly bookmark: IKey;
    readonly closeAll: IKey;
    readonly closeLeft: IKey;
    readonly closeOthers: IKey;
    readonly closeRight: IKey;
    readonly closeTab: IKey;
    readonly closeUnmodified: IKey;
    readonly commandPanel: IKey;
    readonly config: IKey;
    readonly dailyNote: IKey;
    readonly dataHistory: IKey;
    readonly editReadonly: IKey;
    readonly enter: IKey;
    readonly enterBack: IKey;
    readonly fileTree: IKey;
    readonly globalGraph: IKey;
    readonly globalSearch: IKey;
    readonly goBack: IKey;
    readonly goForward: IKey;
    readonly goToEditTabNext: IKey;
    readonly goToEditTabPrev: IKey;
    readonly goToTab1: IKey;
    readonly goToTab2: IKey;
    readonly goToTab3: IKey;
    readonly goToTab4: IKey;
    readonly goToTab5: IKey;
    readonly goToTab6: IKey;
    readonly goToTab7: IKey;
    readonly goToTab8: IKey;
    readonly goToTab9: IKey;
    readonly goToTabNext: IKey;
    readonly goToTabPrev: IKey;
    readonly graphView: IKey;
    readonly inbox: IKey;
    readonly lockScreen: IKey;
    readonly mainMenu: IKey;
    readonly move: IKey;
    readonly newFile: IKey;
    readonly outline: IKey;
    readonly recentDocs: IKey;
    readonly replace: IKey;
    readonly riffCard: IKey;
    readonly search: IKey;
    readonly selectOpen1: IKey;
    readonly splitLR: IKey;
    readonly splitMoveB: IKey;
    readonly splitMoveR: IKey;
    readonly splitTB: IKey;
    readonly stickSearch: IKey;
    readonly syncNow: IKey;
    readonly tabToWindow: IKey;
    readonly tag: IKey;
    readonly toggleDock: IKey;
    readonly toggleWin: IKey;
}

/**
 * Supported language
 */
export interface ILang {
    /**
     * Language name
     */
    readonly label: string;
    /**
     * Language identifier
     */
    readonly name: string;
}

/**
 * Log level
 */
export type TLogLevel = "debug" | "error" | "fatal" | "info" | "off" | "trace" | "warn";

/**
 * Publish service related configuration
 */
export interface IPublish {
    /**
     * Publish service basic auth configuration
     */
    readonly auth: IPublishAuth;
    /**
     * Whether to enable the publishing service
     */
    readonly enable: boolean;
    /**
     * The port used by the publishing service
     */
    readonly port: number;
}

/**
 * Publish service basic auth configuration
 *
 * Publish service basic auth related configuration
 */
export interface IPublishAuth {
    /**
     * Publish service Basic authentication username/password list
     */
    readonly accounts: IPublishAuthAccount[];
    /**
     * Whether to enable publishing service basic authentication
     */
    readonly enable: boolean;
}

/**
 * Publish service basic auth account
 */
export interface IPublishAuthAccount {
    /**
     * Remarks information
     */
    readonly memo: string;
    /**
     * Basic authentication password
     */
    readonly password: string;
    /**
     * Basic authentication username
     */
    readonly username: string;
}

/**
 * Snapshot repository related configuration
 */
export interface IRepo {
    /**
     * Snapshot encryption key (base64 encoded 256-bit key)
     */
    readonly key: string;
    /**
     * Synchronous index timing, if it exceeds this time, the user is prompted that the index
     * performance is degraded (unit: milliseconds)
     */
    readonly syncIndexTiming: number;
}

/**
 * SiYuan search related configuration
 */
export interface ISearch {
    /**
     * Whether to search in block aliases
     */
    readonly alias: boolean;
    /**
     * Whether to search in audio blocks
     */
    readonly audioBlock: boolean;
    /**
     * Extract backlink mention keywords from block aliases
     */
    readonly backlinkMentionAlias: boolean;
    /**
     * Extract backlink mention keywords from block reference anchor text
     */
    readonly backlinkMentionAnchor: boolean;
    /**
     * Extract backlink mention keywords from document names
     */
    readonly backlinkMentionDoc: boolean;
    /**
     * Maximum number of backlink mention keywords
     */
    readonly backlinkMentionKeywordsLimit: number;
    /**
     * Extract backlink mention keywords from block names
     */
    readonly backlinkMentionName: boolean;
    /**
     * Whether to search quote blocks
     */
    readonly blockquote: boolean;
    /**
     * Whether to distinguish between uppercase and lowercase letters when searching
     */
    readonly caseSensitive: boolean;
    /**
     * Whether to search code blocks
     */
    readonly codeBlock: boolean;
    /**
     * Whether to search database blocks
     */
    readonly databaseBlock: boolean;
    /**
     * Whether to search document blocks
     */
    readonly document: boolean;
    /**
     * Whether to search embedded blocks
     */
    readonly embedBlock: boolean;
    /**
     * Whether to search heading blocks
     */
    readonly heading: boolean;
    /**
     * Whether to search HTML blocks
     */
    readonly htmlBlock: boolean;
    /**
     * Whether to search block attributes
     */
    readonly ial: boolean;
    /**
     * Whether to search in iframe blocks
     */
    readonly iframeBlock: boolean;
    /**
     * Whether to search resource file paths
     */
    readonly indexAssetPath: boolean;
    /**
     * Number of search results displayed
     */
    readonly limit: number;
    /**
     * Whether to search list blocks
     */
    readonly list: boolean;
    /**
     * Whether to search list items
     */
    readonly listItem: boolean;
    /**
     * Whether to search formula blocks
     */
    readonly mathBlock: boolean;
    /**
     * Whether to search block notes
     */
    readonly memo: boolean;
    /**
     * Whether to search block names
     */
    readonly name: boolean;
    /**
     * Whether to search paragraph blocks
     */
    readonly paragraph: boolean;
    /**
     * Whether to search super blocks
     */
    readonly superBlock: boolean;
    /**
     * Whether to search table blocks
     */
    readonly table: boolean;
    /**
     * Whether to search in video blocks
     */
    readonly videoBlock: boolean;
    /**
     * Whether to get virtual reference keywords from block aliases
     */
    readonly virtualRefAlias: boolean;
    /**
     * Whether to get virtual reference keywords from block reference anchor text
     */
    readonly virtualRefAnchor: boolean;
    /**
     * Whether to get virtual reference keywords from document names
     */
    readonly virtualRefDoc: boolean;
    /**
     * Whether to get virtual reference keywords from block names
     */
    readonly virtualRefName: boolean;
    /**
     * Whether to search in widget blocks
     */
    readonly widgetBlock: boolean;
}

/**
 * SiYuan code snippets related configuration
 */
export interface ISnippet {
    /**
     * Whether to enable CSS code snippets
     */
    readonly enabledCSS: boolean;
    /**
     * Whether to enable JavaScript code snippets
     */
    readonly enabledJS: boolean;
}

/**
 * SiYuan workspace content statistics
 */
export interface IStat {
    /**
     * Asset file size (unit: bytes)
     */
    readonly assetsSize: number;
    /**
     * Number of content blocks
     */
    readonly blockCount: number;
    /**
     * Size of resource files after chunk encryption (unit: bytes)
     */
    readonly cAssetsSize: number;
    /**
     * Number of content blocks after chunk encryption
     */
    readonly cBlockCount: number;
    /**
     * Size of the data directory after chunk encryption (unit: bytes)
     */
    readonly cDataSize: number;
    /**
     * Number of content block trees after chunk encryption (number of documents)
     */
    readonly cTreeCount: number;
    /**
     * Data directory size (unit: bytes)
     */
    readonly dataSize: number;
    /**
     * Number of content block trees (number of documents)
     */
    readonly treeCount: number;
}

/**
 * SiYuan synchronization related configuration
 */
export interface ISync {
    /**
     * Cloud workspace name
     */
    readonly cloudName: string;
    /**
     * Whether to enable synchronization
     */
    readonly enabled: boolean;
    /**
     * Whether to create a conflict document when a conflict occurs during synchronization
     */
    readonly generateConflictDoc: boolean;
    /**
     * Synchronization mode
     * - `0`: Not set
     * - `1`: Automatic synchronization
     * - `2`: Manual synchronization
     * - `3`: Completely manual synchronization
     */
    readonly mode: number;
    /**
     * Whether to enable synchronization perception
     */
    readonly perception: boolean;
    /**
     * Cloud storage service provider
     * - `0`: SiYuan official cloud storage service
     * - `2`: Object storage service compatible with S3 protocol
     * - `3`: Network storage service using WebDAV protocol
     */
    readonly provider: number;
    readonly s3: ISyncS3;
    /**
     * The prompt information of the last synchronization
     */
    readonly stat: string;
    /**
     * The time of the last synchronization (Unix timestamp)
     */
    readonly synced: number;
    readonly webdav: ISyncWebDAV;
}

/**
 * S3 compatible object storage related configuration
 */
export interface ISyncS3 {
    /**
     * Access key
     */
    readonly accessKey: string;
    /**
     * Bucket name
     */
    readonly bucket: string;
    /**
     * Service endpoint address
     */
    readonly endpoint: string;
    /**
     * Whether to use path-style URLs
     */
    readonly pathStyle: boolean;
    /**
     * Storage region
     */
    readonly region: string;
    /**
     * Security key
     */
    readonly secretKey: string;
    /**
     * Whether to skip TLS verification
     */
    readonly skipTlsVerify: boolean;
    /**
     * Timeout (unit: seconds)
     */
    readonly timeout: number;
}

/**
 * WebDAV related configuration
 */
export interface ISyncWebDAV {
    /**
     * Service endpoint
     */
    readonly endpoint: string;
    /**
     * Password
     */
    readonly password: string;
    /**
     * Whether to skip TLS verification
     */
    readonly skipTlsVerify: boolean;
    /**
     * Timeout (unit: seconds)
     */
    readonly timeout: number;
    /**
     * Username
     */
    readonly username: string;
}

/**
 * System related information
 */
export interface ISystem {
    /**
     * The absolute path of the `resources` directory under the SiYuan installation directory
     */
    readonly appDir: string;
    /**
     * Boot automatically mode
     * - `0`: Close automatically start
     * - `1`: Auto start
     * - `2`: Silent auto start
     */
    readonly autoLaunch2: number;
    /**
     * The absolute path of the `conf` directory of the current workspace
     */
    readonly confDir: string;
    /**
     * Kernel operating environment
     * - `docker`: Docker container
     * - `android`: Android device
     * - `ios`: iOS device
     * - `std`: Desktop Electron environment
     */
    readonly container: TSystemContainer;
    /**
     * The absolute path of the `data` directory of the current workspace
     */
    readonly dataDir: string;
    /**
     * Whether to disable Google Analytics
     */
    readonly disableGoogleAnalytics: boolean;
    /**
     * Whether to automatically download the installation package for the new version
     */
    readonly downloadInstallPkg: boolean;
    /**
     * The absolute path of the user's home directory for the current operating system user
     */
    readonly homeDir: string;
    /**
     * The UUID of the current session
     */
    readonly id: string;
    /**
     * Whether the current version is an internal test version
     */
    readonly isInsider: boolean;
    /**
     * Whether the current version is a Microsoft Store version
     */
    readonly isMicrosoftStore: boolean;
    /**
     * Kernel version number
     */
    readonly kernelVersion: string;
    /**
     * Lock screen mode
     * - `0`: Manual
     * - `1`: Manual + Follow the operating system
     */
    readonly lockScreenMode: number;
    /**
     * The name of the current device
     */
    readonly name: string;
    readonly networkProxy: INetworkProxy;
    /**
     * Whether to enable network serve (whether to allow connections from other devices)
     */
    readonly networkServe: boolean;
    /**
     * The operating system name determined at compile time
     * (obtained using the command `go tool dist list`)
     * - `android`: Android
     * - `darwin`: macOS
     * - `ios`: iOS
     * - `linux`: Linux
     * - `windows`: Windows
     */
    readonly os: TSystemOS;
    /**
     * Operating system platform name
     */
    readonly osPlatform: string;
    /**
     * Whether to upload error logs
     */
    readonly uploadErrLog: boolean;
    /**
     * The absolute path of the workspace directory
     */
    readonly workspaceDir: string;
}

/**
 * Kernel operating environment
 * - `docker`: Docker container
 * - `android`: Android device
 * - `ios`: iOS device
 * - `std`: Desktop Electron environment
 */
export type TSystemContainer = "android" | "docker" | "ios" | "std";

/**
 * SiYuan Network proxy configuration
 */
export interface INetworkProxy {
    /**
     * Host name or host address
     */
    readonly host: string;
    /**
     * Proxy server port number
     */
    readonly port: string;
    /**
     * The protocol used by the proxy server
     * - Empty String: Use the system proxy settings
     * - `http`: HTTP
     * - `https`: HTTPS
     * - `socks5`: SOCKS5
     */
    readonly scheme: TSystemNetworkProxyScheme;
}

/**
 * The protocol used by the proxy server
 * - Empty String: Use the system proxy settings
 * - `http`: HTTP
 * - `https`: HTTPS
 * - `socks5`: SOCKS5
 */
export type TSystemNetworkProxyScheme = "" | "http" | "https" | "socks5";

/**
 * The operating system name determined at compile time
 * (obtained using the command `go tool dist list`)
 * - `android`: Android
 * - `darwin`: macOS
 * - `ios`: iOS
 * - `linux`: Linux
 * - `windows`: Windows
 */
export type TSystemOS = "android" | "darwin" | "ios" | "linux" | "windows";

/**
 * SiYuan tag dock related configuration
 */
export interface ITag {
    /**
     * Tag sorting scheme
     * - `0`: Name alphabetically ascending
     * - `1`: Name alphabetically descending
     * - `4`: Name natural ascending
     * - `5`: Name natural descending
     * - `7`: Reference count ascending
     * - `8`: Reference count descending
     */
    readonly sort: number;
}

/**
 * SiYuan UI layout related configuration
 */
export interface IUILayout {
    readonly bottom: IUILayoutDock;
    /**
     * Whether to hide the sidebar
     */
    readonly hideDock: boolean;
    readonly layout: IUILayoutLayout;
    readonly left: IUILayoutDock;
    readonly right: IUILayoutDock;
}

/**
 * SiYuan dock related configuration
 */
export interface IUILayoutDock {
    /**
     * Dock area list
     */
    readonly data: Array<IUILayoutDockTab[]>;
    /**
     * Whether to pin the dock
     */
    readonly pin: boolean;
}

/**
 * SiYuan dock tab data
 */
export interface IUILayoutDockTab {
    /**
     * Dock tab hotkey
     */
    readonly hotkey: string;
    /**
     * Hotkey description ID
     */
    readonly hotkeyLangId?: string;
    /**
     * Tab icon ID
     */
    readonly icon: string;
    /**
     * Whether to display the tab
     */
    readonly show: boolean;
    readonly size: IUILayoutDockPanelSize;
    /**
     * Tab title
     */
    readonly title: string;
    /**
     * Tab type
     */
    readonly type: string;
}

/**
 * SiYuan dock tab size
 */
export interface IUILayoutDockPanelSize {
    /**
     * Tab height (unit: px)
     */
    readonly height: number | null;
    /**
     * Tab width (unit: px)
     */
    readonly width: number | null;
}

/**
 * SiYuan panel layout
 */
export interface IUILayoutLayout {
    /**
     * Internal elements
     */
    readonly children: IUILayoutLayoutChild[];
    /**
     * Panel content layout direction
     * - `tb`: Top and bottom layout
     * - `lr`: Left and right layout
     */
    readonly direction?: TUILayoutDirection;
    /**
     * Object name
     */
    readonly instance: "Layout";
    /**
     * The direction in which the size can be adjusted
     * - `tb`: Can adjust the size up and down
     * - `lr`: Can adjust the size left and right
     */
    readonly resize?: TUILayoutDirection;
    /**
     * Panel size
     */
    readonly size?: string;
    /**
     * Layout type
     * - `normal`: Normal panel
     * - `center`: Center panel
     * - `top`: Top panel
     * - `bottom`: Bottom panel
     * - `left`: Left panel
     * - `right`: Right panel
     */
    readonly type?: TUILayoutType;
}

/**
 * SiYuan panel layout
 *
 * SiYuan window layout
 */
export interface IUILayoutLayoutChild {
    /**
     * Internal elements
     */
    readonly children: ChildElement[];
    /**
     * Panel content layout direction
     * - `tb`: Top and bottom layout
     * - `lr`: Left and right layout
     */
    readonly direction?: TUILayoutDirection;
    /**
     * Object name
     */
    readonly instance: TUILayout;
    /**
     * The direction in which the size can be adjusted
     * - `tb`: Can adjust the size up and down
     * - `lr`: Can adjust the size left and right
     */
    readonly resize?: TUILayoutDirection;
    /**
     * Panel size
     */
    readonly size?: string;
    /**
     * Layout type
     * - `normal`: Normal panel
     * - `center`: Center panel
     * - `top`: Top panel
     * - `bottom`: Bottom panel
     * - `left`: Left panel
     * - `right`: Right panel
     */
    readonly type?: TUILayoutType;
    /**
     * Panel height
     */
    readonly height?: string;
    /**
     * Panel width
     */
    readonly width?: string;
}

export type Children = ChildElement[] | IUILayoutTabContent;

/**
 * SiYuan panel layout
 *
 * SiYuan window layout
 *
 * SiYuan tab
 */
export interface ChildElement {
    /**
     * Internal elements
     *
     * Tab content
     */
    readonly children: Children;
    /**
     * Panel content layout direction
     * - `tb`: Top and bottom layout
     * - `lr`: Left and right layout
     */
    readonly direction?: TUILayoutDirection;
    /**
     * Object name
     */
    readonly instance: TUILayoutInstance;
    /**
     * The direction in which the size can be adjusted
     * - `tb`: Can adjust the size up and down
     * - `lr`: Can adjust the size left and right
     */
    readonly resize?: TUILayoutDirection;
    /**
     * Panel size
     */
    readonly size?: string;
    /**
     * Layout type
     * - `normal`: Normal panel
     * - `center`: Center panel
     * - `top`: Top panel
     * - `bottom`: Bottom panel
     * - `left`: Left panel
     * - `right`: Right panel
     */
    readonly type?: TUILayoutType;
    /**
     * Panel height
     */
    readonly height?: string;
    /**
     * Panel width
     */
    readonly width?: string;
    /**
     * Whether the tab is active
     */
    readonly active?: boolean;
    /**
     * Tab icon
     */
    readonly docIcon?: string;
    /**
     * Icon reference ID
     */
    readonly icon?: string;
    /**
     * Localization field key name
     */
    readonly lang?: string;
    /**
     * Whether the tab is pinned
     */
    readonly pin?: boolean;
    /**
     * Tab title
     */
    readonly title?: string;
}

/**
 * Tab content
 *
 * SiYuan editor tab
 *
 * SiYuan asset file tab
 *
 * SiYuan custom tab
 *
 * SiYuan back link tab
 *
 * SiYuan bookmark tab
 *
 * SiYuan filetree tab
 *
 * SiYuan graph tab
 *
 * SiYuan outline tab
 *
 * SiYuan tag tab
 *
 * SiYuan search tab
 */
export interface IUILayoutTabContent {
    /**
     * (Editor) Actions to be performed after the tab is loaded
     */
    readonly action?: string;
    /**
     * (Editor) Block ID
     *
     * (Backlink) Block ID
     *
     * (Graph) Block ID
     *
     * (Outline) Block ID
     */
    readonly blockId?: string;
    /**
     * Object name
     */
    readonly instance: TUILayoutTabContentInstance;
    /**
     * (Editor) Editor mode
     * - `wysiwyg`: WYSIWYG mode
     * - `preview`: Export preview mode
     */
    readonly mode?: TUILayoutTabEditorMode;
    /**
     * (Editor) Notebook ID
     */
    readonly notebookId?: string;
    /**
     * (Editor) Document block ID
     *
     * (Backlink) Document block ID
     *
     * (Graph) Document block ID
     */
    readonly rootId?: string;
    /**
     * (Asset) PDF file page number
     */
    readonly page?: number;
    /**
     * (Asset) Asset reference path
     */
    readonly path?: string;
    /**
     * (Custom) Data of the custom tab
     */
    readonly customModelData?: any;
    /**
     * (Custom) Type of the custom tab
     */
    readonly customModelType?: string;
    /**
     * (Backlink) Tab type
     * - `pin`: Pinned backlink panel
     * - `local`: The backlink panel of the current editor
     *
     * (Graph) Tab type
     * - `pin`: Pinned graph
     * - `local`: Graph of the current editor
     * - `global`: Global graph
     *
     * (Outline) Tab type
     * - `pin`: Pinned outline panel
     * - `local`: The outline panel of the current editor
     */
    readonly type?: TuiLayoutTabType;
    /**
     * (Outline) Whether the associated editor is in preview mode
     */
    readonly isPreview?: boolean;
    readonly config?: IUILayoutTabSearchConfig;
}

/**
 * SiYuan search tab configuration
 */
export interface IUILayoutTabSearchConfig {
    /**
     * Grouping strategy
     * - `0`: No grouping
     * - `1`: Group by document
     */
    readonly group: number;
    readonly hasReplace: any;
    /**
     * Readable path list
     */
    readonly hPath: string;
    /**
     * Search in the specified paths
     */
    readonly idPath: string[];
    /**
     * Search content
     */
    readonly k: string;
    /**
     * Search scheme
     * - `0`: Keyword (default)
     * - `1`: Query syntax
     * - `2`: SQL
     * - `3`: Regular expression
     * @defaultValue 0
     */
    readonly method: number;
    /**
     * Custom name of the query condition group
     */
    readonly name?: string;
    /**
     * Current page number
     */
    readonly page: number;
    /**
     * Replace content
     */
    readonly r: string;
    /**
     * Whether to clear the search box after removing the currently used query condition group
     */
    readonly removed?: boolean;
    readonly replaceTypes: IUILayoutTabSearchConfigReplaceTypes;
    /**
     * Search result sorting scheme
     * - `0`: Block type (default)
     * - `1`: Ascending by creation time
     * - `2`: Descending by creation time
     * - `3`: Ascending by update time
     * - `4`: Descending by update time
     * - `5`: By content order (only valid when grouping by document)
     * - `6`: Ascending by relevance
     * - `7`: Descending by relevance
     * @defaultValue 0
     */
    readonly sort: number;
    readonly types: IUILayoutTabSearchConfigTypes;
}

/**
 * Replace type filtering
 */
export interface IUILayoutTabSearchConfigReplaceTypes {
    /**
     * Replace hyperlinks
     * @defaultValue false
     */
    readonly aHref?: boolean;
    /**
     * Replace hyperlink anchor text
     * @defaultValue true
     */
    readonly aText?: boolean;
    /**
     * Replace hyperlink title
     * @defaultValue true
     */
    readonly aTitle?: boolean;
    /**
     * Replace inline code
     * @defaultValue false
     */
    readonly code?: boolean;
    /**
     * Replace code blocks
     * @defaultValue false
     */
    readonly codeBlock?: boolean;
    /**
     * Replace document title
     * @defaultValue true
     */
    readonly docTitle?: boolean;
    /**
     * Replace italic elements
     * @defaultValue true
     */
    readonly em?: boolean;
    /**
     * Replace HTML blocks
     * @defaultValue false
     */
    readonly htmlBlock?: boolean;
    /**
     * Replace image addresses
     * @defaultValue false
     */
    readonly imgSrc?: boolean;
    /**
     * Replace image anchor text
     * @defaultValue true
     */
    readonly imgText?: boolean;
    /**
     * Replace image titles
     * @defaultValue true
     */
    readonly imgTitle?: boolean;
    /**
     * Replace inline formulas
     * @defaultValue false
     */
    readonly inlineMath?: boolean;
    /**
     * Replace inline memos
     * @defaultValue true
     */
    readonly inlineMemo?: boolean;
    /**
     * Replace kdb elements
     * @defaultValue true
     */
    readonly kbd?: boolean;
    /**
     * Replace mark elements
     * @defaultValue true
     */
    readonly mark?: boolean;
    /**
     * Replace formula blocks
     * @defaultValue false
     */
    readonly mathBlock?: boolean;
    /**
     * Replace delete elements
     * @defaultValue true
     */
    readonly s?: boolean;
    /**
     * Replace bold elements
     * @defaultValue true
     */
    readonly strong?: boolean;
    /**
     * Replace subscript elements
     * @defaultValue true
     */
    readonly sub?: boolean;
    /**
     * Replace superscript elements
     * @defaultValue true
     */
    readonly sup?: boolean;
    /**
     * Replace tag elements
     * @defaultValue true
     */
    readonly tag?: boolean;
    /**
     * Replace rich text elements
     * @defaultValue true
     */
    readonly text?: boolean;
    /**
     * Replace underline elements
     * @defaultValue true
     */
    readonly u?: boolean;
}

/**
 * Search type filtering
 */
export interface IUILayoutTabSearchConfigTypes {
    /**
     * Search results contain audio blocks
     * @defaultValue false
     */
    readonly audioBlock?: boolean;
    /**
     * Search results contain blockquote blocks
     * @defaultValue false
     */
    readonly blockquote: boolean;
    /**
     * Search results contain code blocks
     * @defaultValue false
     */
    readonly codeBlock: boolean;
    /**
     * Search results contain database blocks
     * @defaultValue false
     */
    readonly databaseBlock: boolean;
    /**
     * Search results contain document blocks
     * @defaultValue false
     */
    readonly document: boolean;
    /**
     * Search results contain embed blocks
     * @defaultValue false
     */
    readonly embedBlock: boolean;
    /**
     * Search results contain heading blocks
     * @defaultValue false
     */
    readonly heading: boolean;
    /**
     * Search results contain html blocks
     * @defaultValue false
     */
    readonly htmlBlock: boolean;
    /**
     * Search results contain iframe blocks
     * @defaultValue false
     */
    readonly iframeBlock?: boolean;
    /**
     * Search results contain list blocks
     * @defaultValue false
     */
    readonly list: boolean;
    /**
     * Search results contain list item blocks
     * @defaultValue false
     */
    readonly listItem: boolean;
    /**
     * Search results contain math blocks
     * @defaultValue false
     */
    readonly mathBlock: boolean;
    /**
     * Search results contain paragraph blocks
     * @defaultValue false
     */
    readonly paragraph: boolean;
    /**
     * Search results contain super blocks
     * @defaultValue false
     */
    readonly superBlock: boolean;
    /**
     * Search results contain table blocks
     * @defaultValue false
     */
    readonly table: boolean;
    /**
     * Search results contain video blocks
     * @defaultValue false
     */
    readonly videoBlock?: boolean;
    /**
     * Search results contain widget blocks
     * @defaultValue false
     */
    readonly widgetBlock?: boolean;
}

export type TUILayoutTabContentInstance = "Asset" | "Backlink" | "Bookmark" | "Custom" | "Editor" | "Files" | "Graph" | "Outline" | "Search" | "Tag";

/**
 * (Editor) Editor mode
 * - `wysiwyg`: WYSIWYG mode
 * - `preview`: Export preview mode
 */
export type TUILayoutTabEditorMode = "preview" | "wysiwyg";

/**
 * (Backlink) Tab type
 * - `pin`: Pinned backlink panel
 * - `local`: The backlink panel of the current editor
 *
 * (Graph) Tab type
 * - `pin`: Pinned graph
 * - `local`: Graph of the current editor
 * - `global`: Global graph
 *
 * (Outline) Tab type
 * - `pin`: Pinned outline panel
 * - `local`: The outline panel of the current editor
 */
export type TuiLayoutTabType = "global" | "local" | "pin";

/**
 * Panel content layout direction
 * - `tb`: Top and bottom layout
 * - `lr`: Left and right layout
 *
 * The direction in which the size can be adjusted
 * - `tb`: Can adjust the size up and down
 * - `lr`: Can adjust the size left and right
 */
export type TUILayoutDirection = "lr" | "tb";

export type TUILayoutInstance = "Layout" | "Tab" | "Wnd";

/**
 * Layout type
 * - `normal`: Normal panel
 * - `center`: Center panel
 * - `top`: Top panel
 * - `bottom`: Bottom panel
 * - `left`: Left panel
 * - `right`: Right panel
 */
export type TUILayoutType = "bottom" | "center" | "left" | "normal" | "right" | "top";

export type TUILayout = "Layout" | "Wnd";
json5
/**
 * schemas/kernel/api/system/getConf/response.schema.json5
 * 获取工作空间完整配置
 * REF: https://github.com/siyuan-note/siyuan/blob/v3.0.13/kernel/api/system.go#L206-L225
 * @pathname: /api/system/getConf
 * @version: 3.0.13
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/getConf/response.schema.json5',
    $comment: 'v3.0.13',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'response body',
            description: 'Get the full configuration of the workspace',

            type: 'object',
            additionalProperties: false,
            required: [
                'code',
                'msg',
                'data',
            ],
            properties: {
                code: {
                    type: 'integer',
                    description: 'status code',
                },
                msg: {
                    type: 'string',
                    description: 'status message',
                },
                data: {
                    $ref: '#/$defs/data',
                },
            },
        },
        data: {
            title: 'IData',
            description: 'response data',

            type: 'object',
            additionalProperties: false,
            required: [
                'start',
                'conf',
            ],
            properties: {
                start: {
                    // 是否未加载用户界面
                    type: 'boolean',
                    description: 'Whether the user interface is not loaded',
                },
                conf: {
                    // 配置对象
                    $ref: '#/$defs/conf',
                },
            },
        },
        conf: {
            title: 'IConf',
            description: 'Configuration object',

            type: 'object',
            additionalProperties: false,
            required: [
                'accessAuthCode',
                'account',
                'ai',
                'api',
                'appearance',
                'bazaar',
                'cloudRegion',
                'editor',
                'export',
                'fileTree',
                'flashcard',
                'graph',
                'keymap',
                'lang',
                'langs',
                'localIPs',
                'logLevel',
                'openHelp',
                'publish',
                'readonly',
                'repo',
                'search',
                'showChangelog',
                'snippet',
                'stat',
                'sync',
                'system',
                'tag',
                'uiLayout',
                'userData',
            ],
            properties: {
                accessAuthCode: {
                    // 访问授权码
                    type: 'string',
                    title: 'TAccessAuthCode',
                    description: 'Access authorization code',
                    default: '',
                    enum: [
                        '',
                        '*******',
                    ],
                },
                account: {
                    // 账户相关设置项
                    $ref: '#/$defs/account',
                },
                ai: {
                    // AI 相关设置项
                    $ref: '#/$defs/ai',
                },
                api: {
                    // 思源 API 相关设置项
                    $ref: '#/$defs/api',
                },
                appearance: {
                    // 外观相关设置项
                    $ref: '#/$defs/appearance',
                },
                bazaar: {
                    // 思源集市相关设置项
                    $ref: '#/$defs/bazaar',
                },
                cloudRegion: {
                    // 云服务供应商地区
                    type: 'integer',
                    description: 'Cloud Service Provider Region\n- `0`: Chinese mainland\n- `1`: North America',
                    enum: [
                        0,
                        1,
                    ],
                },
                editor: {
                    // 编辑器相关设置项
                    $ref: '#/$defs/editor',
                },
                export: {
                    // 导出相关设置项
                    $ref: '#/$defs/export',
                },
                fileTree: {
                    // 文档树相关设置项
                    $ref: '#/$defs/fileTree',
                },
                flashcard: {
                    // 闪卡相关设置项
                    $ref: '#/$defs/flashcard',
                },
                graph: {
                    // 图谱相关设置项
                    $ref: '#/$defs/graph',
                },
                keymap: {
                    // 快捷键设置项
                    $ref: '#/$defs/keymap',
                },
                langs: {
                    // 支持的语言列表
                    type: 'array',
                    description: 'List of supported languages',
                    items: {
                        $ref: '#/$defs/lang',
                    },
                },
                lang: {
                    // 界面语言
                    type: 'string',
                    title: 'TLang',
                    description: 'User interface language  \nSame as {@link IAppearance.lang}',
                    enum: [
                        'en_US', // 英文
                        'es_ES', // 西班牙文
                        'fr_FR', // 法文
                        'zh_CHT', // 繁体中文
                        'zh_CN', // 简体中文
                    ],
                },
                localIPs: {
                    // 内核所在设备 IP 列表
                    type: 'array',
                    description: 'A list of the IP addresses of the devices on which the kernel resides',
                    items: {
                        type: 'string',
                        description: 'IP addresses (IPv4 & IPv6)',
                        examples: [
                            '127.0.0.1', //
                            '192.168.1.1', //
                            '10.0.0.1', //
                            '[::1]', //
                            '[fe80::8cc:2a8:23fc:daf3]', //
                        ],
                    },
                },
                logLevel: {
                    // 日志级别
                    type: 'string',
                    title: 'TLogLevel',
                    description: 'Log level',
                    enum: [
                        'off', // 无日志
                        'trace', // 少量
                        'debug', // 调试
                        'info', // 信息
                        'warn', // 警告
                        'error', // 错误
                        'fatal', // 致命
                    ],
                },
                openHelp: {
                    // 启动后是否需要打开用户指南
                    type: 'boolean',
                    description: 'Whether to open the user guide after startup',
                },
                publish: {
                    // 发布服务相关设置项
                    $ref: '#/$defs/publish',
                },
                readonly: {
                    // 是否是以只读模式运行
                    type: 'boolean',
                    description: 'Whether it is running in read-only mode',
                },
                repo: {
                    // 快照仓库相关设置项
                    $ref: '#/$defs/repo',
                },
                search: {
                    // 搜索相关设置项
                    $ref: '#/$defs/search',
                },
                showChangelog: {
                    // 是否显示本版本更新日志
                    type: 'boolean',
                    description: 'Whether to display the changelog for this release version',
                },
                snippet: {
                    // 代码片段相关设置项
                    $ref: '#/$defs/snippet',
                },
                stat: {
                    // 工作空间内容统计
                    $ref: '#/$defs/stat',
                },
                sync: {
                    // 同步相关设置项
                    $ref: '#/$defs/sync',
                },
                system: {
                    // 系统相关信息
                    $ref: '#/$defs/system',
                },
                tag: {
                    // 思源标签面板相关设置项
                    $ref: '#/$defs/tag',
                },
                uiLayout: {
                    // 思源界面布局相关配置项
                    $ref: '#/$defs/uiLayout',
                },
                userData: {
                    // 社区用户信息
                    type: 'string',
                    description: 'Community user data (Encrypted)',
                    default: '',
                },
            },
        },
        account: {
            title: 'IAccount',
            description: 'Account configuration',

            type: 'object',
            additionalProperties: false,
            required: [
                'displayTitle',
                'displayVIP',
            ],
            properties: {
                displayTitle: {
                    // 顶栏显示头衔
                    type: 'boolean',
                    description: 'Display the title icon',
                },
                displayVIP: {
                    // 顶栏显示 VIP 图标
                    type: 'boolean',
                    description: 'Display the VIP icon',
                },
            },
        },
        ai: {
            title: 'IAI',
            type: 'object',

            description: 'Artificial Intelligence (AI) related configuration',
            additionalProperties: false,
            required: [
                'openAI',
            ],
            properties: {
                openAI: {
                    $ref: '#/$defs/ai_openAI',
                },
            },
        },
        ai_openAI: {
            // Open AI 的 API 配置项
            title: 'IOpenAI',
            description: 'Open AI related configuration',

            type: 'object',
            additionalProperties: false,
            required: [
                'apiBaseURL',
                'apiKey',
                'apiMaxContexts',
                'apiMaxTokens',
                'apiModel',
                'apiProvider',
                'apiProxy',
                'apiTemperature',
                'apiTimeout',
                'apiUserAgent',
                'apiVersion',
            ],
            properties: {
                apiBaseURL: {
                    // API 基础 URL 地址
                    type: 'string',
                    description: 'API base URL',
                    format: 'uri',
                    examples: [
                        'https://api.openai.com/v1',
                    ],
                },
                apiKey: {
                    // API 密钥
                    type: 'string',
                    description: 'API key',
                    examples: [
                        'sk-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL',
                    ],
                },
                apiMaxContexts: {
                    // 请求 API 时传入的最大上下文数
                    type: 'integer',
                    description: 'The maximum number of contexts passed when requesting the API',
                    minimum: 0,
                },
                apiMaxTokens: {
                    // 最大 Token 数 (0 表示无限制)
                    type: 'integer',
                    description: 'Maximum number of tokens (0 means no limit)',
                    minimum: 0,
                },
                apiModel: {
                    // API 所调用的模型名称
                    type: 'string',
                    title: 'TOpenAIAPIModel',
                    description: 'The model name called by the API',
                    examples: [
                        'gpt-4',
                        'gpt-4-32k',
                        'gpt-3.5-turbo',
                        'gpt-3.5-turbo-16k',
                    ],
                },
                apiProvider: {
                    // API 供应商
                    type: 'string',
                    title: 'TOpenAIApiProvider',
                    description: 'API Provider',
                    enum: [
                        'OpenAI',
                        'Azure',
                    ],
                },
                apiProxy: {
                    // API 请求代理地址
                    type: 'string',
                    description: 'API request proxy address',
                    examples: [
                        'http://127.0.0.1:1080',
                        'socks://127.0.0.1:1080',
                        'socks5://127.0.0.1:1080',
                    ],
                },
                apiTemperature: {
                    // 控制生成的文本随机性的参数 `temperature`
                    type: 'number',
                    description: 'Parameter `temperature` that controls the randomness of the generated text',
                },
                apiTimeout: {
                    // API 请求超时时间 (单位: 秒)
                    type: 'integer',
                    description: 'API request timeout (unit: seconds)',
                    minimum: 0,
                },
                apiUserAgent: {
                    // API 请求附加的用户代理字段
                    type: 'string',
                    description: 'API request additional user agent field',
                },
                apiVersion: {
                    // API 版本号
                    type: 'string',
                    description: 'API version number',
                },
            },
        },
        api: {
            title: 'IApi',
            type: 'object',

            description: 'SiYuan API related configuration',
            additionalProperties: false,
            required: [
                'token',
            ],
            properties: {
                token: {
                    type: 'string',
                    description: 'API Token',
                    examples: [
                        '',
                        '0123456789abcdef',
                    ],
                },
            },
        },
        appearance: {
            title: 'IAppearance',
            type: 'object',

            description: 'SiYuan appearance related configuration',
            additionalProperties: false,
            required: [
                'closeButtonBehavior',
                'codeBlockThemeDark',
                'codeBlockThemeLight',
                'darkThemes',
                'hideStatusBar',
                'icon',
                'iconVer',
                'icons',
                'lang',
                'lightThemes',
                'mode',
                'modeOS',
                'themeDark',
                'themeJS',
                'themeLight',
                'themeVer',
            ],
            properties: {
                closeButtonBehavior: {
                    // 关闭按钮行为
                    type: 'integer',
                    description: 'Close button behavior\n- `0`: Exit application\n- `1`: Minimize to pallets',
                    enum: [
                        0, // 退出应用
                        1, // 最小化到托盘
                    ],
                },
                codeBlockThemeDark: {
                    // 暗色代码块主题
                    type: 'string',
                    description: 'Dark code block theme',
                },
                codeBlockThemeLight: {
                    // 亮色代码块主题
                    type: 'string',
                    description: 'Light code block theme',
                },
                darkThemes: {
                    // 已安装的暗色主题名称列表
                    type: 'array',
                    description: 'List of installed dark themes',
                    items: {
                        type: 'string',
                        description: 'Dark theme name',
                    },
                },
                hideStatusBar: {
                    // 是否隐藏状态栏
                    type: 'boolean',
                    description: 'Whether to hide status bar',
                },
                icon: {
                    // 当前使用的图标名称
                    type: 'string',
                    description: 'The name of the icon currently in use',
                },
                iconVer: {
                    // 当前使用的图标的版本号
                    type: 'string',
                    description: 'The version number of the icon currently in use',
                },
                icons: {
                    // 已安装的图标名称列表
                    type: 'array',
                    description: 'List of installed icon names',
                    items: {
                        type: 'string',
                        description: 'Icon name',
                    },
                },
                lang: {
                    // 当前用户界面所使用的语言
                    type: 'string',
                    title: 'TLang',
                    description: 'The language used by the current user',
                    enum: [
                        'en_US', // 英文
                        'es_ES', // 西班牙文
                        'fr_FR', // 法文
                        'zh_CHT', // 繁体中文
                        'zh_CN', // 简体中文
                    ],
                },
                lightThemes: {
                    // 已安装的亮色主题名称列表
                    type: 'array',
                    description: 'List of installed light themes',
                    items: {
                        type: 'string',
                        description: 'Light theme name',
                    },
                },
                mode: {
                    // 当前使用的主题模式
                    type: 'integer',
                    description: 'The current theme mode\n- `0`: Light theme\n- `1`: Dark theme',
                    enum: [
                        0, // 亮色主题
                        1, // 暗色主题
                    ],
                },
                modeOS: {
                    // 主题模式是否跟随系统主题
                    type: 'boolean',
                    description: 'Whether the theme mode follows the system theme',
                },
                themeDark: {
                    // 当前使用的暗色主题名称
                    type: 'string',
                    description: 'The name of the dark theme currently in use',
                },
                themeJS: {
                    // 当前主题是否启用了主题 JavaScript
                    type: 'boolean',
                    description: 'Whether the current theme has enabled theme JavaScript',
                },
                themeLight: {
                    // 当前使用的亮色主题名称
                    type: 'string',
                    description: 'The name of the light theme currently in use',
                },
                themeVer: {
                    // 当前使用的主题的版本号
                    type: 'string',
                    description: 'The version number of the theme currently in use',
                },
            },
        },
        bazaar: {
            title: 'IBazaar',
            type: 'object',

            description: 'SiYuan bazaar related configuration',
            additionalProperties: false,
            required: [
                'petalDisabled',
                'trust',
            ],
            properties: {
                petalDisabled: {
                    // 是否禁用所有插件
                    type: 'boolean',
                    description: 'Whether to disable all plug-ins',
                },
                trust: {
                    // 是否信任(启用)集市资源
                    type: 'boolean',
                    description: 'Whether to trust (enable) the resources for the bazaar',
                },
            },
        },
        editor: {
            title: 'IEditor',
            type: 'object',

            description: 'SiYuan editor related configuration',
            additionalProperties: false,
            required: [
                'allowHTMLBLockScript',
                'backlinkExpandCount',
                'backmentionExpandCount',
                'blockRefDynamicAnchorTextMaxLen',
                'codeLigatures',
                'codeLineWrap',
                'codeSyntaxHighlightLineNum',
                'codeTabSpaces',
                'displayBookmarkIcon',
                'displayNetImgMark',
                'dynamicLoadBlocks',
                'embedBlockBreadcrumb',
                'emoji',
                'floatWindowMode',
                'fontFamily',
                'fontSize',
                'fontSizeScrollZoom',
                'fullWidth',
                'generateHistoryInterval',
                'historyRetentionDays',
                'justify',
                'katexMacros',
                'listItemDotNumberClickFocus',
                'listLogicalOutdent',
                'markdown',
                'onlySearchForDoc',
                'plantUMLServePath',
                'readOnly',
                'rtl',
                'spellcheck',
                'virtualBlockRef',
                'virtualBlockRefExclude',
                'virtualBlockRefInclude',
            ],
            properties: {
                allowHTMLBLockScript: {
                    // 是否允许 HTML 块运行脚本
                    type: 'boolean',
                    description: 'Allow HTML blocks to run scripts',
                },
                backlinkExpandCount: {
                    // 反向链接默认展开数量
                    type: 'integer',
                    description: 'The default number of backlinks to expand',
                },
                backmentionExpandCount: {
                    // 反向链接提及默认展开数量
                    type: 'integer',
                    description: 'The default number of backlinks to mention',
                },
                blockRefDynamicAnchorTextMaxLen: {
                    // 块引用的动态锚文本最大长度
                    type: 'integer',
                    description: 'The maximum length of the dynamic anchor text for block references',
                },
                codeLigatures: {
                    // 代码块是否启用连字符号
                    type: 'boolean',
                    description: 'Whether the code block has enabled ligatures',
                },
                codeLineWrap: {
                    // 代码块是否自动折行
                    type: 'boolean',
                    description: 'Whether the code block is automatically wrapped',
                },
                codeSyntaxHighlightLineNum: {
                    // 代码块是否显示行号
                    type: 'boolean',
                    description: 'Whether the code block displays line numbers',
                },
                codeTabSpaces: {
                    // 代码块中 Tab 键生成的空格数,配置为 0 则表示不转换为空格
                    type: 'integer',
                    description: 'The number of spaces generated by the Tab key in the code block, configured as 0 means no conversion to spaces',
                    minimum: 0,
                },
                displayBookmarkIcon: {
                    // 是否显示书签图标
                    type: 'boolean',
                    description: 'Whether to display the bookmark icon',
                },
                displayNetImgMark: {
                    // 是否显示网络图片标记
                    type: 'boolean',
                    description: 'Whether to display the network image mark',
                },
                dynamicLoadBlocks: {
                    // 每次动态加载时加载的块数量
                    type: 'integer',
                    description: 'The number of blocks loaded each time they are dynamically loaded',
                    minimum: 48,
                    maximum: 1024,
                },
                embedBlockBreadcrumb: {
                    // 嵌入块是否显示面包屑
                    type: 'boolean',
                    description: 'Whether the embedded block displays breadcrumbs',
                },
                emoji: {
                    // 常用的表情图标
                    type: 'array',
                    description: 'Common emoji icons',
                    items: {
                        type: 'string',
                        description: 'Emoji icon',
                        examples: [
                            '1f4da', // Emoji 字符的十六进制 Unicode 编码
                            'material/folder-project.svg', // 引用的自定义图标的路径
                        ],
                    },
                },
                floatWindowMode: {
                    // 预览浮窗的触发模式
                    type: 'integer',
                    description: 'The trigger mode of the preview window\n- `0`: Hover over the cursor\n- `1`: Hover over the cursor while holding down Ctrl\n- `2`: Do not trigger the floating window',
                    enum: [
                        0, // 光标悬停
                        1, // 按住 Ctrl 悬停
                        2, // 不触发浮窗
                    ],
                },
                fontFamily: {
                    // 编辑器中所使用的字体
                    type: 'string',
                    description: 'The font used in the editor',
                },
                fontSize: {
                    // 编辑器中所使用的字号
                    type: 'integer',
                    description: 'The font size used in the editor',
                },
                fontSizeScrollZoom: {
                    // 是否开启使用鼠标滚轮调整编辑器字号
                    type: 'boolean',
                    description: 'Whether to enable the use of the mouse wheel to adjust the font size of the editor',
                },
                fullWidth: {
                    // 编辑器是否使用最大宽度
                    type: 'boolean',
                    description: 'Whether the editor uses maximum width',
                },
                generateHistoryInterval: {
                    // 生成文档历史的时间间隔, 设置为 0 禁用文档历史 (单位: 分钟)
                    type: 'integer',
                    description: 'The time interval for generating document history, set to 0 to disable document history (unit: minutes)',
                    minimum: 0,
                },
                historyRetentionDays: {
                    // 历史保留天数
                    type: 'integer',
                    description: 'History retention days',
                },
                justify: {
                    // 是否启用文本两端对齐
                    type: 'boolean',
                    description: 'Whether to enable text justification',
                },
                katexMacros: {
                    // KeTex 宏定义 (JSON 字符串)
                    type: 'string',
                    description: 'KeTex macro definition (JSON string)',
                },
                listItemDotNumberClickFocus: {
                    // 是否启用单击列表项标记聚焦
                    type: 'boolean',
                    description: 'Whether to enable single-click list item mark focus',
                },
                listLogicalOutdent: {
                    // 是否启用列表逻辑反向缩进方案
                    type: 'boolean',
                    description: 'Whether to enable the list logical reverse indentation scheme',
                },
                markdown: {
                    // Markdown 语法输入
                    $ref: '#/$defs/editor_markdown',
                },
                onlySearchForDoc: {
                    // 是否启用 [[ 符号仅搜索文档块
                    type: 'boolean',
                    description: 'Whether to enable the `[[` symbol to search only for document blocks',
                },
                plantUMLServePath: {
                    // PlantUML 渲染服务地址
                    type: 'string',
                    description: 'PlantUML rendering service address',
                },
                readOnly: {
                    // 是否启用只读模式
                    type: 'boolean',
                    description: 'Whether to enable read-only mode',
                },
                rtl: {
                    // 是否启用 RTL (左向书写) 模式
                    type: 'boolean',
                    description: 'Whether to enable RTL (left-to-right chirography) mode',
                },
                spellcheck: {
                    // 是否启用拼写检查
                    type: 'boolean',
                    description: 'Whether to enable spell checking',
                },
                virtualBlockRef: {
                    // 是否启用虚拟引用
                    type: 'boolean',
                    description: 'Whether to enable virtual references',
                },
                virtualBlockRefExclude: {
                    // 虚拟引用关键字排除列表 (关键字之间使用 , 符号分隔)
                    type: 'string',
                    description: 'Virtual reference keyword exclusion list (separated by commas `,`)',
                },
                virtualBlockRefInclude: {
                    // 虚拟引用关键字包含列表 (关键字之间使用 , 符号分隔)
                    type: 'string',
                    description: 'Virtual reference keyword inclusion list (separated by commas `,`)',
                },
            },
        },
        editor_markdown: {
            title: 'IEditorMarkdown',
            type: 'object',

            description: 'Markdown syntax configuration',
            additionalProperties: false,
            required: [
                'inlineMath',
                'inlineSub',
                'inlineSup',
                'inlineTag',
            ],
            properties: {
                inlineMath: {
                    // 是否启用行内公式语法 $foo$
                    type: 'boolean',
                    description: 'Whether to enable inline formula syntax $foo$',
                },
                inlineSub: {
                    // 是否启用下标语法 ~foo~
                    type: 'boolean',
                    description: 'Whether to enable subscript syntax ~foo~',
                },
                inlineSup: {
                    // 是否启用上标语法 ^foo^
                    type: 'boolean',
                    description: 'Whether to enable superscript syntax ^foo^',
                },
                inlineTag: {
                    // 是否启用标签语法 #foo#
                    type: 'boolean',
                    description: 'Whether to enable tag syntax #foo#',
                },
            },
        },
        export: {
            title: 'IExport',
            type: 'object',

            description: 'SiYuan export related configuration',
            additionalProperties: false,
            required: [
                'paragraphBeginningSpace',
                'addTitle',
                'blockRefMode',
                'blockEmbedMode',
                'blockRefTextLeft',
                'blockRefTextRight',
                'tagOpenMarker',
                'tagCloseMarker',
                'fileAnnotationRefMode',
                'pandocBin',
                'markdownYFM',
                'pdfFooter',
                'docxTemplate',
                'pdfWatermarkStr',
                'pdfWatermarkDesc',
                'imageWatermarkStr',
                'imageWatermarkDesc',
            ],
            properties: {
                paragraphBeginningSpace: {
                    // 段落开头是否空两格 (段首插入两个全宽空格 `U+3000`)
                    type: 'boolean',
                    description: 'Whether the beginning of the paragraph is empty two spaces.\nInsert two full-width spaces `U+3000` at the beginning of the paragraph.',
                },
                addTitle: {
                    // 添加文章标题 (将文章标题作为第一级标题插入文档首部)
                    type: 'boolean',
                    description: 'Add article title (insert the article title as a first-level title at the beginning of the document)',
                },
                blockRefMode: {
                    // 内容块引用导出模式
                    type: 'integer',
                    description: 'Content block reference export mode\n- `0`: Original text (deprecated)\n- `1`: Quotation block (deprecated)\n- `2`: Anchor text block link\n- `3`: Anchor text only\n- `4`: Footnote\n- `5`: Anchor hash\n',
                    enum: [
                        0, // 原始文本 (已废弃)
                        1, // 引述块 (已废弃)
                        2, // 锚文本块链接
                        3, // 仅锚文本
                        4, // 脚注
                        5, // 锚点哈希
                    ],
                },
                blockEmbedMode: {
                    // 嵌入块导出模式
                    type: 'integer',
                    description: 'Embedded block export mode\n- `0`: Original block content\n- `1`: Quotation block',
                    enum: [
                        0, // 原始块内容
                        1, // 引述块
                    ],
                },
                blockRefTextLeft: {
                    // 导出时块引用锚文本左侧符号
                    type: 'string',
                    description: 'The symbol on the left side of the block reference anchor text during export',
                },
                blockRefTextRight: {
                    // 导出时块引用锚文本右侧符号
                    type: 'string',
                    description: 'The symbol on the right side of the block reference anchor text during export',
                },
                tagOpenMarker: {
                    // 标签开始标记符号
                    type: 'string',
                    description: 'Tag start marker symbol',
                },
                tagCloseMarker: {
                    // 标签闭合标记符号
                    type: 'string',
                    description: 'Tag close marker symbol',
                },
                fileAnnotationRefMode: {
                    // 文件标注引用导出模式
                    type: 'integer',
                    description: 'File annotation reference export mode\n- `0`: File name - page number - anchor text\n- `1`: Anchor text only',
                    enum: [
                        0, // 文件名 - 页码 - 锚文本
                        1, // 仅锚文本
                    ],
                },
                pandocBin: {
                    // Pandoc 可执行文件路径
                    type: 'string',
                    description: 'Pandoc executable file path',
                },
                markdownYFM: {
                    // Markdown 导出时是否添加 YAML Front Matter
                    type: 'boolean',
                    description: 'Whether to add YAML Front Matter when exporting to Markdown',
                },
                pdfFooter: {
                    // 自定义 PDF 导出时的页脚内容
                    type: 'string',
                    description: 'Custom footer content when exporting to PDF',
                },
                docxTemplate: {
                    // Docx 导出时所使用的模板文件路径
                    type: 'string',
                    description: 'The path of the template file used when exporting to Docx',
                },
                pdfWatermarkStr: {
                    // 导出 PDF 时所使用的水印文本或水印文件路径
                    type: 'string',
                    description: 'The watermark text or watermark file path used when exporting to PDF',
                },
                pdfWatermarkDesc: {
                    // 自定义导出 PDF 时水印的位置、大小和样式等
                    type: 'string',
                    description: 'Custom watermark position, size, style, etc. when exporting to PDF',
                },
                imageWatermarkStr: {
                    // 导出图片时所使用的水印文本或水印文件路径
                    type: 'string',
                    description: 'The watermark text or watermark file path used when exporting to an image',
                },
                imageWatermarkDesc: {
                    // 自定义导出图片时水印的位置、大小和样式等
                    type: 'string',
                    description: 'Custom watermark position, size, style, etc. when exporting to an image',
                },
            },
        },
        fileTree: {
            title: 'IFileTree',
            type: 'object',

            description: 'Document tree related configuration',
            additionalProperties: false,
            required: [
                'allowCreateDeeper',
                'alwaysSelectOpenedFile',
                'closeTabsOnStart',
                'docCreateSaveBox',
                'docCreateSavePath',
                'maxListCount',
                'maxOpenTabCount',
                'openFilesUseCurrentTab',
                'refCreateSaveBox',
                'refCreateSavePath',
                'removeDocWithoutConfirm',
                'sort',
                'useSingleLineSave',
            ],
            properties: {
                allowCreateDeeper: {
                    // 是否允许创建超过 7 层深度的子文档
                    type: 'boolean',
                    description: 'Whether to allow the creation of sub-documents deeper than 7 levels',
                },
                alwaysSelectOpenedFile: {
                    // 是否在文档树中自动定位当前打开的文档
                    type: 'boolean',
                    description: 'Whether to automatically locate the currently open document in the document tree',
                },
                closeTabsOnStart: {
                    // 是否在启动时关闭所有页签
                    type: 'boolean',
                    description: 'Whether to close all tabs when starting',
                },
                docCreateSaveBox: {
                    // 新建文档的存储笔记本
                    type: 'string',
                    description: 'The notebook to storage the new document',
                },
                docCreateSavePath: {
                    // 新建文档的存储路径
                    type: 'string',
                    description: 'The storage path of the new document',
                },
                maxListCount: {
                    // 文档的最大列出数量
                    type: 'integer',
                    description: 'The maximum number of documents listed',
                },
                maxOpenTabCount: {
                    // 最大打开页签数量
                    type: 'integer',
                    description: 'The maximum number of open tabs',
                },
                openFilesUseCurrentTab: {
                    // 是否在当前页签打开文件
                    type: 'boolean',
                    description: 'Whether to open the file in the current tab',
                },
                refCreateSaveBox: {
                    // 使用块引用新建文档的存储笔记本
                    type: 'string',
                    description: 'The notebook to storage the new document created using block references',
                },
                refCreateSavePath: {
                    // 使用块引用新建文档的存储路径
                    type: 'string',
                    description: 'The storage path of the new document created using block references',
                },
                removeDocWithoutConfirm: {
                    // 关闭删除文档时的二次确认
                    type: 'boolean',
                    description: 'Close the secondary confirmation when deleting a document',
                },
                sort: {
                    // 文档排序方式
                    type: 'integer',
                    description: 'Document sorting method\n- `0`: File name ascending\n- `1`: File name descending\n- `2`: File update time ascending\n- `3`: File update time descending\n- `4`: File name natural number ascending\n- `5`: File name natural number descending\n- `6`: Custom sorting\n- `7`: Reference count ascending\n- `8`: Reference count descending\n- `9`: File creation time ascending\n- `10`: File creation time descending\n- `11`: File size ascending\n- `12`: File size descending\n- `13`: Sub-document count ascending\n- `14`: Sub-document count descending\n- `15`: Use document tree sorting rules\n- `256`: Unspecified sorting rules, according to the notebook priority over the document tree to obtain sorting rules',
                    enum: [
                        0, // 文件名字母升序
                        1, // 文件名字母降序
                        2, // 文件更新时间升序
                        3, // 文件更新时间降序
                        4, // 文件名自然数升序
                        5, // 文件名自然数降序
                        6, // 自定义排序
                        7, // 引用数升序
                        8, // 引用数降序
                        9, // 文件创建时间升序
                        10, // 文件创建时间降序
                        11, // 文件大小升序
                        12, // 文件大小降序
                        13, // 子文档数升序
                        14, // 子文档数降序
                        15, // 使用文档树排序规则
                        256, // 未指定排序规则,按照笔记本优先于文档树获取排序规则
                    ],
                },
                useSingleLineSave: {
                    // 是否将 .sy 文件的内容保存为单行的 JSON 对象
                    type: 'boolean',
                    description: 'Whether to save the content of the .sy file as a single-line JSON object',
                },
            },
        },
        flashcard: {
            title: 'IFlashCard',
            type: 'object',

            description: 'Flashcard related configuration',
            additionalProperties: false,
            required: [
                'deck',
                'heading',
                'list',
                'mark',
                'maximumInterval',
                'newCardLimit',
                'requestRetention',
                'reviewCardLimit',
                'reviewMode',
                'superBlock',
                'weights',
            ],
            properties: {
                deck: {
                    // 是否启用卡包制卡
                    type: 'boolean',
                    description: 'Whether to enable deck card making',
                },
                heading: {
                    // 是否启用标题块制卡
                    type: 'boolean',
                    description: 'Whether to enable heading block card making',
                },
                list: {
                    // 是否启用列表块制卡
                    type: 'boolean',
                    description: 'Whether to enable list block card making',
                },
                mark: {
                    // 是否启用标记元素制卡
                    type: 'boolean',
                    description: 'Whether to enable mark element card making',
                },
                maximumInterval: {
                    // 最大间隔天数
                    type: 'integer',
                    description: 'Maximum interval days',
                },
                newCardLimit: {
                    // 新卡上限
                    type: 'integer',
                    description: 'New card limit',
                },
                requestRetention: {
                    // FSRS 请求保留参数
                    type: 'number',
                    description: 'FSRS request retention parameter',
                },
                reviewCardLimit: {
                    // 复习卡上限
                    type: 'integer',
                    description: 'Review card limit',
                },
                reviewMode: {
                    // 复习模式
                    type: 'integer',
                    description: 'Review mode\n- `0`: New and old mixed\n- `1`: New card priority\n- `2`: Old card priority',
                    enum: [
                        0, // 新旧混合
                        1, // 新卡优先
                        2, // 旧卡优先
                    ],
                },
                superBlock: {
                    // 是否启用超级块制卡
                    type: 'boolean',
                    description: 'Whether to enable super block card making',
                },
                weights: {
                    // FSRS 权重参数列表
                    type: 'string',
                    description: 'FSRS weight parameter list',
                },
            },
        },
        graph: {
            title: 'IGraph',
            type: 'object',

            description: 'SiYuan graph related configuration',
            additionalProperties: false,
            required: [
                'global',
                'local',
                'maxBlocks',
            ],
            properties: {
                global: {
                    // 全局图谱配置
                    $ref: '#/$defs/graph_global',
                },
                local: {
                    // 当前文档图谱配置
                    $ref: '#/$defs/graph_local',
                },
                maxBlocks: {
                    // 内容块最大显示数
                    type: 'integer',
                    description: 'Maximum number of content blocks displayed',
                },
            },
        },
        graph_global: {
            title: 'IGraphGlobal',
            type: 'object',

            description: 'Global graph configuration',
            additionalProperties: false,
            required: [
                'd3',
                'dailyNote',
                'minRefs',
                'type',
            ],
            properties: {
                d3: {
                    // d3.js 关系图谱配置
                    $ref: '#/$defs/graph_d3',
                },
                dailyNote: {
                    // 是否展示每日笔记中的节点
                    type: 'boolean',
                    description: 'Whether to display nodes in daily notes',
                },
                minRefs: {
                    // 所展示节点的最小引用次数
                    type: 'integer',
                    description: 'The minimum number of references to the displayed node',
                },
                type: {
                    // 节点类型过滤
                    $ref: '#/$defs/graph_type',
                },
            },
        },
        graph_local: {
            title: 'IGraphLocal',
            type: 'object',

            description: 'Local graph configuration',
            additionalProperties: false,
            required: [
                'd3',
                'dailyNote',
                'type',
            ],
            properties: {
                d3: {
                    // d3.js 关系图谱配置
                    $ref: '#/$defs/graph_d3',
                },
                dailyNote: {
                    // 是否展示每日笔记中的节点
                    type: 'boolean',
                    description: 'Whether to display nodes in daily notes',
                },
                type: {
                    // 节点类型过滤
                    $ref: '#/$defs/graph_type',
                },
            },
        },
        graph_d3: {
            title: 'IGraphD3',
            type: 'object',

            description: 'd3.js graph configuration',
            additionalProperties: false,
            required: [
                'arrow',
                'centerStrength',
                'collideRadius',
                'collideStrength',
                'lineOpacity',
                'linkDistance',
                'linkWidth',
                'nodeSize',
            ],
            properties: {
                arrow: {
                    // 是否显示箭头
                    type: 'boolean',
                    description: 'Whether to display the arrow',
                },
                centerStrength: {
                    // 中心引力强度
                    type: 'number',
                    description: 'Central gravity intensity',
                },
                collideRadius: {
                    // 斥力半径
                    type: 'number',
                    description: 'Repulsion radius',
                },
                collideStrength: {
                    // 斥力强度
                    type: 'number',
                    description: 'Repulsion intensity',
                },
                lineOpacity: {
                    // 连线透明度
                    type: 'number',
                    description: 'Line opacity',
                },
                linkDistance: {
                    // 链接距离
                    type: 'integer',
                    description: 'Link distance',
                },
                linkWidth: {
                    // 连线宽度
                    type: 'number',
                    description: 'Line width',
                },
                nodeSize: {
                    // 节点大小
                    type: 'number',
                    description: 'Node size',
                },
            },
        },
        graph_type: {
            title: 'IGraphType',
            type: 'object',

            description: 'SiYuan node type filter',
            additionalProperties: false,
            required: [
                'blockquote',
                'code',
                'heading',
                'list',
                'listItem',
                'math',
                'paragraph',
                'super',
                'table',
                'tag',
            ],
            properties: {
                blockquote: {
                    // 显示引述块
                    type: 'boolean',
                    description: 'Display quote block',
                },
                code: {
                    // 显示代码块
                    type: 'boolean',
                    description: 'Display code block',
                },
                heading: {
                    // 显示标题块
                    type: 'boolean',
                    description: 'Display heading block',
                },
                list: {
                    // 显示列表块
                    type: 'boolean',
                    description: 'Display list block',
                },
                listItem: {
                    // 显示列表项
                    type: 'boolean',
                    description: 'Display list item',
                },
                math: {
                    // 显示公式块
                    type: 'boolean',
                    description: 'Display formula block',
                },
                paragraph: {
                    // 显示段落块
                    type: 'boolean',
                    description: 'Display paragraph block',
                },
                super: {
                    // 显示超级块
                    type: 'boolean',
                    description: 'Display super block',
                },
                table: {
                    // 显示表格块
                    type: 'boolean',
                    description: 'Display table block',
                },
                tag: {
                    // 显示标签
                    type: 'boolean',
                    description: 'Display tag',
                },
            },
        },
        keymap: {
            title: 'IKeymap',
            type: 'object',

            description: 'SiYuan keymap related configuration',
            additionalProperties: false,
            required: [
                'editor',
                'general',
                'plugin',
            ],
            properties: {
                editor: {
                    // 编辑器快捷键
                    $ref: '#/$defs/keymap_editor',
                },
                general: {
                    // 全局快捷键
                    $ref: '#/$defs/keymap_general',
                },
                plugin: {
                    // 插件快捷键
                    $ref: '#/$defs/keymap_plugin',
                },
            },
        },
        keymap_editor: {
            title: 'IKeymapEditor',
            type: 'object',

            description: 'SiYuan editor shortcut keys',
            additionalProperties: false,
            required: [
                'general',
                'heading',
                'insert',
                'list',
                'table',
            ],
            properties: {
                general: {
                    // 通用
                    $ref: '#/$defs/keymap_editor_general',
                },
                heading: {
                    // 标题
                    $ref: '#/$defs/keymap_editor_heading',
                },
                insert: {
                    // 插入元素
                    $ref: '#/$defs/keymap_editor_insert',
                },
                list: {
                    // 列表
                    $ref: '#/$defs/keymap_editor_list',
                },
                table: {
                    // 表格
                    $ref: '#/$defs/keymap_editor_table',
                },
            },
        },
        keymap_editor_general: {
            title: 'IKeymapEditorGeneral',
            type: 'object',

            description: 'SiYuan editor general shortcut keys',
            additionalProperties: false,
            required: [
                'ai',
                'alignCenter',
                'alignLeft',
                'alignRight',
                'attr',
                'backlinks',
                'collapse',
                'copyBlockEmbed',
                'copyBlockRef',
                'copyHPath',
                'copyID',
                'copyPlainText',
                'copyProtocol',
                'copyProtocolInMd',
                'copyText',
                'duplicate',
                'exitFocus',
                'expand',
                'expandDown',
                'expandUp',
                'fullscreen',
                'graphView',
                'hLayout',
                'insertAfter',
                'insertBefore',
                'insertBottom',
                'insertRight',
                'jumpToParent',
                'jumpToParentPrev',
                'jumpToParentNext',
                'moveToDown',
                'moveToUp',
                'netAssets2LocalAssets',
                'netImg2LocalAsset',
                'newContentFile',
                'newNameFile',
                'newNameSettingFile',
                'openBy',
                'optimizeTypography',
                'outline',
                'preview',
                'quickMakeCard',
                'redo',
                'refPopover',
                'refTab',
                'refresh',
                'rename',
                'showInFolder',
                'spaceRepetition',
                'switchReadonly',
                'undo',
                'vLayout',
                'wysiwyg',
            ],
            properties: {
                ai: {
                    $ref: '#/$defs/key',
                },
                alignCenter: {
                    $ref: '#/$defs/key',
                },
                alignLeft: {
                    $ref: '#/$defs/key',
                },
                alignRight: {
                    $ref: '#/$defs/key',
                },
                attr: {
                    $ref: '#/$defs/key',
                },
                backlinks: {
                    $ref: '#/$defs/key',
                },
                collapse: {
                    $ref: '#/$defs/key',
                },
                copyBlockEmbed: {
                    $ref: '#/$defs/key',
                },
                copyBlockRef: {
                    $ref: '#/$defs/key',
                },
                copyHPath: {
                    $ref: '#/$defs/key',
                },
                copyID: {
                    $ref: '#/$defs/key',
                },
                copyPlainText: {
                    $ref: '#/$defs/key',
                },
                copyProtocol: {
                    $ref: '#/$defs/key',
                },
                copyProtocolInMd: {
                    $ref: '#/$defs/key',
                },
                copyText: {
                    $ref: '#/$defs/key',
                },
                duplicate: {
                    $ref: '#/$defs/key',
                },
                exitFocus: {
                    $ref: '#/$defs/key',
                },
                expand: {
                    $ref: '#/$defs/key',
                },
                expandDown: {
                    $ref: '#/$defs/key',
                },
                expandUp: {
                    $ref: '#/$defs/key',
                },
                fullscreen: {
                    $ref: '#/$defs/key',
                },
                graphView: {
                    $ref: '#/$defs/key',
                },
                hLayout: {
                    $ref: '#/$defs/key',
                },
                insertAfter: {
                    $ref: '#/$defs/key',
                },
                insertBefore: {
                    $ref: '#/$defs/key',
                },
                insertBottom: {
                    $ref: '#/$defs/key',
                },
                insertRight: {
                    $ref: '#/$defs/key',
                },
                jumpToParent: {
                    $ref: '#/$defs/key',
                },
                jumpToParentNext: {
                    $ref: '#/$defs/key',
                },
                jumpToParentPrev: {
                    $ref: '#/$defs/key',
                },
                moveToDown: {
                    $ref: '#/$defs/key',
                },
                moveToUp: {
                    $ref: '#/$defs/key',
                },
                netAssets2LocalAssets: {
                    $ref: '#/$defs/key',
                },
                netImg2LocalAsset: {
                    $ref: '#/$defs/key',
                },
                newContentFile: {
                    $ref: '#/$defs/key',
                },
                newNameFile: {
                    $ref: '#/$defs/key',
                },
                newNameSettingFile: {
                    $ref: '#/$defs/key',
                },
                openBy: {
                    $ref: '#/$defs/key',
                },
                optimizeTypography: {
                    $ref: '#/$defs/key',
                },
                outline: {
                    $ref: '#/$defs/key',
                },
                preview: {
                    $ref: '#/$defs/key',
                },
                quickMakeCard: {
                    $ref: '#/$defs/key',
                },
                redo: {
                    $ref: '#/$defs/key',
                },
                refPopover: {
                    $ref: '#/$defs/key',
                },
                refTab: {
                    $ref: '#/$defs/key',
                },
                refresh: {
                    $ref: '#/$defs/key',
                },
                rename: {
                    $ref: '#/$defs/key',
                },
                showInFolder: {
                    $ref: '#/$defs/key',
                },
                spaceRepetition: {
                    $ref: '#/$defs/key',
                },
                switchReadonly: {
                    $ref: '#/$defs/key',
                },
                undo: {
                    $ref: '#/$defs/key',
                },
                vLayout: {
                    $ref: '#/$defs/key',
                },
                wysiwyg: {
                    $ref: '#/$defs/key',
                },
            },
        },
        keymap_editor_heading: {
            title: 'IKeymapEditorHeading',
            type: 'object',

            description: 'SiYuan editor heading shortcut keys',
            additionalProperties: false,
            required: [
                'heading1',
                'heading2',
                'heading3',
                'heading4',
                'heading5',
                'heading6',
                'paragraph',
            ],
            properties: {
                heading1: {
                    $ref: '#/$defs/key',
                },
                heading2: {
                    $ref: '#/$defs/key',
                },
                heading3: {
                    $ref: '#/$defs/key',
                },
                heading4: {
                    $ref: '#/$defs/key',
                },
                heading5: {
                    $ref: '#/$defs/key',
                },
                heading6: {
                    $ref: '#/$defs/key',
                },
                paragraph: {
                    $ref: '#/$defs/key',
                },
            },
        },
        keymap_editor_insert: {
            title: 'IKeymapEditorInsert',
            type: 'object',

            description: 'SiYuan editor insert shortcut keys',
            additionalProperties: false,
            required: [
                'appearance',
                'bold',
                'check',
                'clearInline',
                'code',
                'inline-code',
                'inline-math',
                'italic',
                'kbd',
                'lastUsed',
                'link',
                'mark',
                'memo',
                'ref',
                'strike',
                'sub',
                'sup',
                'table',
                'tag',
                'underline',
            ],
            properties: {
                appearance: {
                    $ref: '#/$defs/key',
                },
                bold: {
                    $ref: '#/$defs/key',
                },
                check: {
                    $ref: '#/$defs/key',
                },
                clearInline: {
                    $ref: '#/$defs/key',
                },
                code: {
                    $ref: '#/$defs/key',
                },
                'inline-code': {
                    $ref: '#/$defs/key',
                },
                'inline-math': {
                    $ref: '#/$defs/key',
                },
                italic: {
                    $ref: '#/$defs/key',
                },
                kbd: {
                    $ref: '#/$defs/key',
                },
                lastUsed: {
                    $ref: '#/$defs/key',
                },
                link: {
                    $ref: '#/$defs/key',
                },
                mark: {
                    $ref: '#/$defs/key',
                },
                memo: {
                    $ref: '#/$defs/key',
                },
                ref: {
                    $ref: '#/$defs/key',
                },
                strike: {
                    $ref: '#/$defs/key',
                },
                sub: {
                    $ref: '#/$defs/key',
                },
                sup: {
                    $ref: '#/$defs/key',
                },
                table: {
                    $ref: '#/$defs/key',
                },
                tag: {
                    $ref: '#/$defs/key',
                },
                underline: {
                    $ref: '#/$defs/key',
                },
            },
        },
        keymap_editor_list: {
            title: 'IKeymapEditorList',
            type: 'object',

            description: 'SiYuan editor list shortcut keys',
            additionalProperties: false,
            required: [
                'checkToggle',
                'indent',
                'outdent',
            ],
            properties: {
                checkToggle: {
                    $ref: '#/$defs/key',
                },
                indent: {
                    $ref: '#/$defs/key',
                },
                outdent: {
                    $ref: '#/$defs/key',
                },
            },
        },
        keymap_editor_table: {
            title: 'IKeymapEditorTable',
            type: 'object',

            description: 'SiYuan editor table shortcut keys',
            additionalProperties: false,
            required: [
                'delete-column',
                'delete-row',
                'insertColumnLeft',
                'insertColumnRight',
                'insertRowAbove',
                'insertRowBelow',
                'moveToDown',
                'moveToLeft',
                'moveToRight',
                'moveToUp',
            ],
            properties: {
                'delete-column': {
                    $ref: '#/$defs/key',
                },
                'delete-row': {
                    $ref: '#/$defs/key',
                },
                insertColumnLeft: {
                    $ref: '#/$defs/key',
                },
                insertColumnRight: {
                    $ref: '#/$defs/key',
                },
                insertRowAbove: {
                    $ref: '#/$defs/key',
                },
                insertRowBelow: {
                    $ref: '#/$defs/key',
                },
                moveToDown: {
                    $ref: '#/$defs/key',
                },
                moveToLeft: {
                    $ref: '#/$defs/key',
                },
                moveToRight: {
                    $ref: '#/$defs/key',
                },
                moveToUp: {
                    $ref: '#/$defs/key',
                },
            },
        },
        keymap_general: {
            title: 'IKeymapGeneral',
            type: 'object',

            description: 'SiYuan general shortcut keys',
            additionalProperties: false,
            required: [
                'addToDatabase',
                'backlinks',
                'bookmark',
                'closeAll',
                'closeLeft',
                'closeOthers',
                'closeRight',
                'closeTab',
                'closeUnmodified',
                'commandPanel',
                'config',
                'dailyNote',
                'dataHistory',
                'editReadonly',
                'enter',
                'enterBack',
                'fileTree',
                'globalGraph',
                'globalSearch',
                'goBack',
                'goForward',
                'goToEditTabNext',
                'goToEditTabPrev',
                'goToTab1',
                'goToTab2',
                'goToTab3',
                'goToTab4',
                'goToTab5',
                'goToTab6',
                'goToTab7',
                'goToTab8',
                'goToTab9',
                'goToTabNext',
                'goToTabPrev',
                'graphView',
                'inbox',
                'lockScreen',
                'mainMenu',
                'move',
                'newFile',
                'outline',
                'recentDocs',
                'replace',
                'riffCard',
                'search',
                'selectOpen1',
                'splitLR',
                'splitMoveB',
                'splitMoveR',
                'splitTB',
                'stickSearch',
                'syncNow',
                'tabToWindow',
                'tag',
                'toggleDock',
                'toggleWin',
            ],
            properties: {
                addToDatabase: {
                    $ref: '#/$defs/key',
                },
                backlinks: {
                    $ref: '#/$defs/key',
                },
                bookmark: {
                    $ref: '#/$defs/key',
                },
                closeAll: {
                    $ref: '#/$defs/key',
                },
                closeLeft: {
                    $ref: '#/$defs/key',
                },
                closeOthers: {
                    $ref: '#/$defs/key',
                },
                closeRight: {
                    $ref: '#/$defs/key',
                },
                closeTab: {
                    $ref: '#/$defs/key',
                },
                closeUnmodified: {
                    $ref: '#/$defs/key',
                },
                commandPanel: {
                    $ref: '#/$defs/key',
                },
                config: {
                    $ref: '#/$defs/key',
                },
                dailyNote: {
                    $ref: '#/$defs/key',
                },
                dataHistory: {
                    $ref: '#/$defs/key',
                },
                editReadonly: {
                    $ref: '#/$defs/key',
                },
                enter: {
                    $ref: '#/$defs/key',
                },
                enterBack: {
                    $ref: '#/$defs/key',
                },
                fileTree: {
                    $ref: '#/$defs/key',
                },
                globalGraph: {
                    $ref: '#/$defs/key',
                },
                globalSearch: {
                    $ref: '#/$defs/key',
                },
                goBack: {
                    $ref: '#/$defs/key',
                },
                goForward: {
                    $ref: '#/$defs/key',
                },
                goToEditTabNext: {
                    $ref: '#/$defs/key',
                },
                goToEditTabPrev: {
                    $ref: '#/$defs/key',
                },
                goToTab1: {
                    $ref: '#/$defs/key',
                },
                goToTab2: {
                    $ref: '#/$defs/key',
                },
                goToTab3: {
                    $ref: '#/$defs/key',
                },
                goToTab4: {
                    $ref: '#/$defs/key',
                },
                goToTab5: {
                    $ref: '#/$defs/key',
                },
                goToTab6: {
                    $ref: '#/$defs/key',
                },
                goToTab7: {
                    $ref: '#/$defs/key',
                },
                goToTab8: {
                    $ref: '#/$defs/key',
                },
                goToTab9: {
                    $ref: '#/$defs/key',
                },
                goToTabNext: {
                    $ref: '#/$defs/key',
                },
                goToTabPrev: {
                    $ref: '#/$defs/key',
                },
                graphView: {
                    $ref: '#/$defs/key',
                },
                inbox: {
                    $ref: '#/$defs/key',
                },
                lockScreen: {
                    $ref: '#/$defs/key',
                },
                mainMenu: {
                    $ref: '#/$defs/key',
                },
                move: {
                    $ref: '#/$defs/key',
                },
                newFile: {
                    $ref: '#/$defs/key',
                },
                outline: {
                    $ref: '#/$defs/key',
                },
                recentDocs: {
                    $ref: '#/$defs/key',
                },
                replace: {
                    $ref: '#/$defs/key',
                },
                riffCard: {
                    $ref: '#/$defs/key',
                },
                search: {
                    $ref: '#/$defs/key',
                },
                selectOpen1: {
                    $ref: '#/$defs/key',
                },
                splitLR: {
                    $ref: '#/$defs/key',
                },
                splitMoveB: {
                    $ref: '#/$defs/key',
                },
                splitMoveR: {
                    $ref: '#/$defs/key',
                },
                splitTB: {
                    $ref: '#/$defs/key',
                },
                stickSearch: {
                    $ref: '#/$defs/key',
                },
                syncNow: {
                    $ref: '#/$defs/key',
                },
                tabToWindow: {
                    $ref: '#/$defs/key',
                },
                tag: {
                    $ref: '#/$defs/key',
                },
                toggleDock: {
                    $ref: '#/$defs/key',
                },
                toggleWin: {
                    $ref: '#/$defs/key',
                },
            },
        },
        keymap_plugin: {
            title: 'IKeymapPlugin',
            type: 'object',

            description: 'SiYuan plugin shortcut keys',
            propertyNames: {
                type: 'string',
                description: 'SiYuan plugin name',
                minLength: 1,
            },
            additionalProperties: {
                $ref: '#/$defs/keys',
            },
        },
        keys: {
            title: 'IKeys',
            type: 'object',

            description: 'SiYuan shortcut keys',
            // REF: https://opis.io/json-schema/2.x/object.html#propertynames
            propertyNames: {
                type: 'string',
                minLength: 1,
            },
            // REF: https://json-schema.org/understanding-json-schema/reference/object.html#additional-properties
            additionalProperties: {
                $ref: '#/$defs/key',
            },
        },
        key: {
            title: 'IKey',
            type: 'object',

            description: 'SiYuan shortcut key',
            additionalProperties: false,
            required: [
                'custom',
                'default',
            ],
            properties: {
                custom: {
                    // 自定义快捷键
                    type: 'string',
                    description: 'Custom shortcut key',
                },
                default: {
                    // 默认快捷键
                    type: 'string',
                    description: 'Default shortcut key',
                },
            },
        },
        lang: {
            title: 'ILang',
            type: 'object',

            description: 'Supported language',
            additionalProperties: false,
            required: [
                'label',
                'name',
            ],
            properties: {
                label: {
                    // 语言名称
                    type: 'string',
                    description: 'Language name',
                    examples: [
                        '简体中文',
                        '繁体中文',
                        'English',
                    ],
                },
                name: {
                    // 语言标识
                    type: 'string',
                    description: 'Language identifier',
                    pattern: '^[a-z]{2}_[A-Z]{2,}$',
                    examples: [
                        'zh_CN',
                        'zh_CHT',
                        'en_US',
                    ],
                },
            },
        },
        publish: {
            title: 'IPublish',
            type: 'object',

            description: 'Publish service related configuration',
            additionalProperties: false,
            required: [
                'auth',
                'enable',
                'port',
            ],
            properties: {
                auth: {
                    // 发布服务 Basic 认证配置
                    description: 'Publish service basic auth configuration',
                    $ref: '#/$defs/publish_auth',
                },
                enable: {
                    // 是否开启发布服务
                    type: 'boolean',
                    description: 'Whether to enable the publishing service',
                },
                port: {
                    // 发布服务所使用的端口
                    type: 'integer',
                    description: 'The port used by the publishing service',
                },
            },
        },
        publish_auth: {
            title: 'IPublishAuth',
            type: 'object',

            description: 'Publish service basic auth related configuration',
            additionalProperties: false,
            required: [
                'accounts',
                'enable',
            ],
            properties: {
                accounts: {
                    // 发布服务 Basic 认证用户名/密码列表
                    type: 'array',
                    description: 'Publish service Basic authentication username/password list',
                    items: {
                        $ref: '#/$defs/publish_auth_account',
                    },
                },
                enable: {
                    // 是否开启发布服务 Basic 认证
                    type: 'boolean',
                    description: 'Whether to enable publishing service basic authentication',
                },
            },
        },
        publish_auth_account: {
            title: 'IPublishAuthAccount',
            type: 'object',

            description: 'Publish service basic auth account',
            additionalProperties: false,
            required: [
                'memo',
                'password',
                'username',
            ],
            properties: {
                memo: {
                    // 备注信息
                    type: 'string',
                    description: 'Remarks information',
                },
                password: {
                    // Basic 认证密码
                    type: 'string',
                    description: 'Basic authentication password',
                },
                username: {
                    // Basic 认证用户名
                    type: 'string',
                    description: 'Basic authentication username',
                },
            },
        },
        repo: {
            title: 'IRepo',
            type: 'object',

            description: 'Snapshot repository related configuration',
            additionalProperties: false,
            required: [
                'key',
                'syncIndexTiming',
            ],
            properties: {
                key: {
                    // 快照加密密钥 (base64 编码的 256 位密钥)
                    type: 'string',
                    description: 'Snapshot encryption key (base64 encoded 256-bit key)',
                    pattern: '^[A-Za-z0-9+/]{43}=$',
                },
                syncIndexTiming: {
                    // 同步索引计时,超过该时间则提示用户索引性能下降 (单位: 毫秒)
                    type: 'integer',
                    description: 'Synchronous index timing, if it exceeds this time, the user is prompted that the index performance is degraded (unit: milliseconds)',
                },
            },
        },
        search: {
            title: 'ISearch',
            type: 'object',

            description: 'SiYuan search related configuration',
            additionalProperties: false,
            required: [
                'alias',
                'audioBlock',
                'backlinkMentionAlias',
                'backlinkMentionAnchor',
                'backlinkMentionDoc',
                'backlinkMentionKeywordsLimit',
                'backlinkMentionName',
                'blockquote',
                'caseSensitive',
                'codeBlock',
                'databaseBlock',
                'document',
                'embedBlock',
                'heading',
                'htmlBlock',
                'ial',
                'iframeBlock',
                'indexAssetPath',
                'limit',
                'list',
                'listItem',
                'mathBlock',
                'memo',
                'name',
                'paragraph',
                'superBlock',
                'table',
                'videoBlock',
                'virtualRefAlias',
                'virtualRefAnchor',
                'virtualRefDoc',
                'virtualRefName',
                'widgetBlock',
            ],
            properties: {
                alias: {
                    // 是否在块别名中搜索
                    type: 'boolean',
                    description: 'Whether to search in block aliases',
                },
                audioBlock: {
                    // 是否在音频块中搜索
                    type: 'boolean',
                    description: 'Whether to search in audio blocks',
                },
                backlinkMentionAlias: {
                    // 从块别名中提取反向链接提及关键字
                    type: 'boolean',
                    description: 'Extract backlink mention keywords from block aliases',
                },
                backlinkMentionAnchor: {
                    // 从块引用锚文本中提取反向链接提及关键字
                    type: 'boolean',
                    description: 'Extract backlink mention keywords from block reference anchor text',
                },
                backlinkMentionDoc: {
                    // 从文档名中提取反向链接提及关键字
                    type: 'boolean',
                    description: 'Extract backlink mention keywords from document names',
                },
                backlinkMentionKeywordsLimit: {
                    // 反向链接提及关键字数量上限
                    type: 'integer',
                    description: 'Maximum number of backlink mention keywords',
                },
                backlinkMentionName: {
                    // 从块命名中提取反向链接提及关键字
                    type: 'boolean',
                    description: 'Extract backlink mention keywords from block names',
                },
                blockquote: {
                    // 是否搜索引述块
                    type: 'boolean',
                    description: 'Whether to search quote blocks',
                },
                caseSensitive: {
                    // 搜索时是否区分大小写字母
                    type: 'boolean',
                    description: 'Whether to distinguish between uppercase and lowercase letters when searching',
                },
                codeBlock: {
                    // 是否搜索代码块
                    type: 'boolean',
                    description: 'Whether to search code blocks',
                },
                databaseBlock: {
                    // 是否搜索数据库块
                    type: 'boolean',
                    description: 'Whether to search database blocks',
                },
                document: {
                    // 是否搜索文档块
                    type: 'boolean',
                    description: 'Whether to search document blocks',
                },
                embedBlock: {
                    // 是否搜索嵌入块
                    type: 'boolean',
                    description: 'Whether to search embedded blocks',
                },
                heading: {
                    // 是否搜索标题块
                    type: 'boolean',
                    description: 'Whether to search heading blocks',
                },
                htmlBlock: {
                    // 是否搜索 HTML 块
                    type: 'boolean',
                    description: 'Whether to search HTML blocks',
                },
                ial: {
                    // 是否搜索块属性
                    type: 'boolean',
                    description: 'Whether to search block attributes',
                },
                iframeBlock: {
                    // 是否在 iframe 块中搜索
                    type: 'boolean',
                    description: 'Whether to search in iframe blocks',
                },
                indexAssetPath: {
                    // 是否搜索资源文件路径
                    type: 'boolean',
                    description: 'Whether to search resource file paths',
                },
                limit: {
                    // 搜索结果显示数
                    type: 'integer',
                    description: 'Number of search results displayed',
                },
                list: {
                    // 是否搜索列表块
                    type: 'boolean',
                    description: 'Whether to search list blocks',
                },
                listItem: {
                    // 是否搜索列表项
                    type: 'boolean',
                    description: 'Whether to search list items',
                },
                mathBlock: {
                    // 是否搜索公式块
                    type: 'boolean',
                    description: 'Whether to search formula blocks',
                },
                memo: {
                    // 是否搜索块备注
                    type: 'boolean',
                    description: 'Whether to search block notes',
                },
                name: {
                    // 是否搜索块命名
                    type: 'boolean',
                    description: 'Whether to search block names',
                },
                paragraph: {
                    // 是否搜索段落块
                    type: 'boolean',
                    description: 'Whether to search paragraph blocks',
                },
                superBlock: {
                    // 是否搜索超级块
                    type: 'boolean',
                    description: 'Whether to search super blocks',
                },
                table: {
                    // 是否搜索表格块
                    type: 'boolean',
                    description: 'Whether to search table blocks',
                },
                videoBlock: {
                    // 是否在视频块中搜索
                    type: 'boolean',
                    description: 'Whether to search in video blocks',
                },
                virtualRefAlias: {
                    // 是否从块别名中获取虚拟引用关键字
                    type: 'boolean',
                    description: 'Whether to get virtual reference keywords from block aliases',
                },
                virtualRefAnchor: {
                    // 是否从块引用锚文本中获取虚拟引用关键字
                    type: 'boolean',
                    description: 'Whether to get virtual reference keywords from block reference anchor text',
                },
                virtualRefDoc: {
                    // 是否从文档名中获取虚拟引用关键字
                    type: 'boolean',
                    description: 'Whether to get virtual reference keywords from document names',
                },
                virtualRefName: {
                    // 是否从块命名中获取虚拟引用关键字
                    type: 'boolean',
                    description: 'Whether to get virtual reference keywords from block names',
                },
                widgetBlock: {
                    // 是否在挂件块中搜索
                    type: 'boolean',
                    description: 'Whether to search in widget blocks',
                },
            },
        },
        snippet: {
            title: 'ISnippet',
            type: 'object',

            description: 'SiYuan code snippets related configuration',
            additionalProperties: false,
            required: [
                'enabledCSS',
                'enabledJS',
            ],
            properties: {
                enabledCSS: {
                    // 是否启用 CSS 代码片段
                    type: 'boolean',
                    description: 'Whether to enable CSS code snippets',
                },
                enabledJS: {
                    // 是否启用 JavaScript 代码片段
                    type: 'boolean',
                    description: 'Whether to enable JavaScript code snippets',
                },
            },
        },
        stat: {
            title: 'IStat',
            type: 'object',

            description: 'SiYuan workspace content statistics',
            additionalProperties: false,
            required: [
                'assetsSize',
                'blockCount',
                'cAssetsSize',
                'cBlockCount',
                'cDataSize',
                'cTreeCount',
                'dataSize',
                'treeCount',
            ],
            properties: {
                assetsSize: {
                    // 资源文件大小 (单位: 字节)
                    type: 'integer',
                    description: 'Asset file size (unit: bytes)',
                },
                blockCount: {
                    // 内容块数量
                    type: 'integer',
                    description: 'Number of content blocks',
                },
                cAssetsSize: {
                    // 分块加密后的资源文件大小 (单位: 字节)
                    type: 'integer',
                    description: 'Size of resource files after chunk encryption (unit: bytes)',
                },
                cBlockCount: {
                    // 分块加密后的内容块数量
                    type: 'integer',
                    description: 'Number of content blocks after chunk encryption',
                },
                cDataSize: {
                    // 分块加密后的数据目录大小 (单位: 字节)
                    type: 'integer',
                    description: 'Size of the data directory after chunk encryption (unit: bytes)',
                },
                cTreeCount: {
                    // 分块加密后的内容块树数量 (文档数量)
                    type: 'integer',
                    description: 'Number of content block trees after chunk encryption (number of documents)',
                },
                dataSize: {
                    // 数据目录大小 (单位: 字节)
                    type: 'integer',
                    description: 'Data directory size (unit: bytes)',
                },
                treeCount: {
                    // 内容块树数量 (文档数量)
                    type: 'integer',
                    description: 'Number of content block trees (number of documents)',
                },
            },
        },
        sync: {
            title: 'ISync',
            type: 'object',

            description: 'SiYuan synchronization related configuration',
            additionalProperties: false,
            required: [
                'cloudName',
                'enabled',
                'generateConflictDoc',
                'mode',
                'perception',
                'provider',
                's3',
                'stat',
                'synced',
                'webdav',
            ],
            properties: {
                cloudName: {
                    // 云工作空间名称
                    type: 'string',
                    description: 'Cloud workspace name',
                },
                enabled: {
                    // 是否启用同步功能
                    type: 'boolean',
                    description: 'Whether to enable synchronization',
                },
                generateConflictDoc: {
                    // 同步出现冲突时是否创建冲突文档
                    type: 'boolean',
                    description: 'Whether to create a conflict document when a conflict occurs during synchronization',
                },
                mode: {
                    // 同步模式
                    type: 'integer',
                    description: 'Synchronization mode\n- `0`: Not set\n- `1`: Automatic synchronization\n- `2`: Manual synchronization\n- `3`: Completely manual synchronization',
                    enum: [
                        0, // 未设置
                        1, // 自动同步
                        2, // 手动同步
                        3, // 完全手动同步
                    ],
                },
                perception: {
                    // 是否启用同步感知功能
                    type: 'boolean',
                    description: 'Whether to enable synchronization perception',
                },
                provider: {
                    // 云端存储服务提供者
                    type: 'integer',
                    description: 'Cloud storage service provider\n- `0`: SiYuan official cloud storage service\n- `2`: Object storage service compatible with S3 protocol\n- `3`: Network storage service using WebDAV protocol',
                    enum: [
                        0, // 思源官方提供的云端存储服务
                        2, // 兼容 S3 协议的对象存储服务
                        3, // 使用 WebDAV 协议的网络存储服务
                    ],
                },
                s3: {
                    // S3 兼容对象存储相关设置项
                    $ref: '#/$defs/sync_s3',
                },
                stat: {
                    // 最近一次同步的提示信息
                    type: 'string',
                    description: 'The prompt information of the last synchronization',
                },
                synced: {
                    // 最近一次同步的时间 (Unix 时间戳)
                    type: 'integer',
                    description: 'The time of the last synchronization (Unix timestamp)',
                    examples: [
                        1700000000000,
                    ],
                },
                webdav: {
                    // WebDAV 相关设置项
                    $ref: '#/$defs/sync_webdav',
                },
            },
        },
        sync_s3: {
            title: 'ISyncS3',
            type: 'object',

            description: 'S3 compatible object storage related configuration',
            additionalProperties: false,
            required: [
                'accessKey',
                'bucket',
                'endpoint',
                'pathStyle',
                'region',
                'secretKey',
                'skipTlsVerify',
                'timeout',
            ],
            properties: {
                accessKey: {
                    // 访问密钥
                    type: 'string',
                    description: 'Access key',
                },
                bucket: {
                    // 存储桶名
                    type: 'string',
                    description: 'Bucket name',
                },
                endpoint: {
                    // 服务端点地址
                    type: 'string',
                    description: 'Service endpoint address',
                },
                pathStyle: {
                    // 是否使用路径风格的 URL
                    type: 'boolean',
                    description: 'Whether to use path-style URLs',
                },
                region: {
                    // 存储区域
                    type: 'string',
                    description: 'Storage region',
                },
                secretKey: {
                    // 安全密钥
                    type: 'string',
                    description: 'Security key',
                },
                skipTlsVerify: {
                    // 是否跳过 TLS 验证
                    type: 'boolean',
                    description: 'Whether to skip TLS verification',
                },
                timeout: {
                    // 超时时间 (单位: 秒)
                    type: 'integer',
                    description: 'Timeout (unit: seconds)',
                },
            },
        },
        sync_webdav: {
            title: 'ISyncWebDAV',
            type: 'object',

            description: 'WebDAV related configuration',
            additionalProperties: false,
            required: [
                'endpoint',
                'username',
                'password',
                'skipTlsVerify',
                'timeout',
            ],
            properties: {
                endpoint: {
                    // 服务端点
                    type: 'string',
                    description: 'Service endpoint',
                    format: 'uri',
                    examples: [
                        'https://webdav.example.com/siyuan/',
                    ],
                },
                password: {
                    // 密码
                    type: 'string',
                    description: 'Password',
                },
                skipTlsVerify: {
                    // 是否跳过 TLS 验证
                    type: 'boolean',
                    description: 'Whether to skip TLS verification',
                },
                timeout: {
                    // 超时时间 (单位: 秒)
                    type: 'integer',
                    description: 'Timeout (unit: seconds)',
                },
                username: {
                    // 用户名
                    type: 'string',
                    description: 'Username',
                },
            },
        },
        system: {
            title: 'ISystem',
            type: 'object',

            description: 'System related information',
            additionalProperties: false,
            required: [
                'appDir',
                'autoLaunch2',
                'confDir',
                'container',
                'dataDir',
                'disableGoogleAnalytics',
                'downloadInstallPkg',
                'homeDir',
                'id',
                'isInsider',
                'isMicrosoftStore',
                'kernelVersion',
                'lockScreenMode',
                'name',
                'networkProxy',
                'networkServe',
                'os',
                'osPlatform',
                'uploadErrLog',
                'workspaceDir',
            ],
            properties: {
                appDir: {
                    // 思源安装目录下的 `resources` 目录的绝对路径
                    type: 'string',
                    description: 'The absolute path of the `resources` directory under the SiYuan installation directory',
                },
                autoLaunch2: {
                    // 开机自启动模式
                    type: 'integer',
                    description: 'Boot automatically mode\n- `0`: Close automatically start\n- `1`: Auto start\n- `2`: Silent auto start',
                    enum: [
                        0, // 关闭自启动
                        1, // 自启动
                        2, // 静默自启动
                    ],
                },
                confDir: {
                    // 当前工作空间 `conf` 目录的绝对路径
                    type: 'string',
                    description: 'The absolute path of the `conf` directory of the current workspace',
                },
                container: {
                    // 内核运行环境
                    type: 'string',
                    title: 'TSystemContainer',
                    description: 'Kernel operating environment\n- `docker`: Docker container\n- `android`: Android device\n- `ios`: iOS device\n- `std`: Desktop Electron environment',
                    enum: [
                        'docker', // Docker 容器
                        'android', // Android 设备
                        'ios', // iOS 设备
                        'std', // 桌面端 Electron 环境
                    ],
                },
                dataDir: {
                    // 当前工作空间 `data` 目录的绝对路径
                    type: 'string',
                    description: 'The absolute path of the `data` directory of the current workspace',
                },
                disableGoogleAnalytics: {
                    // 是否禁用 Google Analytics
                    type: 'boolean',
                    description: 'Whether to disable Google Analytics',
                },
                downloadInstallPkg: {
                    // 是否自动下载新版本的安装包
                    type: 'boolean',
                    description: 'Whether to automatically download the installation package for the new version',
                },
                homeDir: {
                    // 当前操作系统用户的用户主目录的绝对路径
                    type: 'string',
                    description: "The absolute path of the user's home directory for the current operating system user",
                },
                id: {
                    // 当前会话的 UUID
                    type: 'string',
                    description: 'The UUID of the current session',
                    pattern: '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$',
                },
                isInsider: {
                    // 当前版本是否是内部测试版
                    type: 'boolean',
                    description: 'Whether the current version is an internal test version',
                },
                isMicrosoftStore: {
                    // 当前版本是否为微软商店版
                    type: 'boolean',
                    description: 'Whether the current version is a Microsoft Store version',
                },
                kernelVersion: {
                    // 内核版本号
                    type: 'string',
                    description: 'Kernel version number',
                    pattern: '^\\d+\\.\\d+\\.\\d+$',
                },
                lockScreenMode: {
                    // 锁屏模式
                    type: 'integer',
                    description: 'Lock screen mode\n- `0`: Manual\n- `1`: Manual + Follow the operating system',
                    enum: [
                        0, // 手动
                        1, // 手动 + 跟随操作系统
                    ],
                },
                name: {
                    // 当前设备名称
                    type: 'string',
                    description: 'The name of the current device',
                },
                networkProxy: {
                    // 网络代理配置
                    $ref: '#/$defs/system_networkProxy',
                },
                networkServe: {
                    // 是否开启网络伺服 (是否允许来自其他设备的连接)
                    type: 'boolean',
                    description: 'Whether to enable network serve (whether to allow connections from other devices)',
                },
                os: {
                    // 编译时确定的操作系统名称 (使用命令 `go tool dist list` 获取)
                    type: 'string',
                    title: 'TSystemOS',
                    description: '\
The operating system name determined at compile time\
\n(obtained using the command `go tool dist list`)\
\n- `android`: Android\
\n- `darwin`: macOS\
\n- `ios`: iOS\
\n- `linux`: Linux\
\n- `windows`: Windows\
',
                    enum: [
                        'android', // Android
                        'darwin', // macOS
                        'ios', // iOS
                        'linux', // Linux
                        'windows', // Windows
                    ],
                },
                osPlatform: {
                    // 操作系统平台名称
                    type: 'string',
                    description: 'Operating system platform name',
                },
                uploadErrLog: {
                    // 是否上传错误日志
                    type: 'boolean',
                    description: 'Whether to upload error logs',
                },
                workspaceDir: {
                    // 工作空间目录的绝对路径
                    type: 'string',
                    description: 'The absolute path of the workspace directory',
                },
            },
        },
        system_networkProxy: {
            title: 'INetworkProxy',
            type: 'object',

            description: 'SiYuan Network proxy configuration',
            additionalProperties: false,
            required: [
                'host',
                'port',
                'scheme',
            ],
            properties: {
                host: {
                    // 主机名或主机地址
                    type: 'string',
                    description: 'Host name or host address',
                },
                port: {
                    // 代理服务端口号
                    type: 'string',
                    description: 'Proxy server port number',
                    pattern: '^\\d+$',
                },
                scheme: {
                    // 代理服务所使用的协议
                    type: 'string',
                    title: 'TSystemNetworkProxyScheme',
                    description: 'The protocol used by the proxy server\n- Empty String: Use the system proxy settings\n- `http`: HTTP\n- `https`: HTTPS\n- `socks5`: SOCKS5',
                    enum: [
                        '', // 使用系统代理设置
                        'http', // HTTP
                        'https', // HTTPS
                        'socks5', // SOCKS5
                    ],
                },
            },
        },
        tag: {
            title: 'ITag',
            type: 'object',

            description: 'SiYuan tag dock related configuration',
            additionalProperties: false,
            required: [
                'sort',
            ],
            properties: {
                sort: {
                    type: 'integer',
                    description: 'Tag sorting scheme\n- `0`: Name alphabetically ascending\n- `1`: Name alphabetically descending\n- `4`: Name natural ascending\n- `5`: Name natural descending\n- `7`: Reference count ascending\n- `8`: Reference count descending',
                    default: 4,
                    enum: [
                        0, // 名称字母升序
                        1, // 名称字母降序
                        4, // 名称自然数升序
                        5, // 名称自然数降序
                        7, // 引用数升序
                        8, // 引用数降序
                    ],
                },
            },
        },
        uiLayout: {
            title: 'IUILayout',
            type: 'object',

            description: 'SiYuan UI layout related configuration',
            additionalProperties: false,
            required: [
                'bottom',
                'hideDock',
                'layout',
                'left',
                'right',
            ],
            properties: {
                bottom: {
                    // 底部停靠栏
                    $ref: '#/$defs/uiLayout_dock',
                },
                hideDock: {
                    // 是否隐藏侧边栏
                    type: 'boolean',
                    description: 'Whether to hide the sidebar',
                },
                layout: {
                    // 编辑器布局
                    $ref: '#/$defs/uiLayout_layout',
                },
                left: {
                    // 左侧停靠栏
                    $ref: '#/$defs/uiLayout_dock',
                },
                right: {
                    // 右侧停靠栏
                    $ref: '#/$defs/uiLayout_dock',
                },
            },
        },
        uiLayout_layout: {
            title: 'IUILayoutLayout',
            type: 'object',

            description: 'SiYuan panel layout',
            additionalProperties: false,
            required: [
                'children',
                'instance',
            ],
            properties: {
                children: {
                    // 内部元素
                    type: 'array',
                    title: 'IUILayoutLayoutChildren',
                    description: 'Internal elements',
                    items: {
                        title: 'IUILayoutLayoutChild',
                        oneOf: [
                            {
                                // 嵌套布局
                                $ref: '#/$defs/uiLayout_layout',
                            },
                            {
                                // 窗口元素
                                $ref: '#/$defs/uiLayout_wnd',
                            },
                        ],
                    },
                },
                direction: {
                    // 面板内容布局方向
                    type: 'string',
                    title: 'TUiLayoutDirection',
                    description: 'Panel content layout direction\n- `tb`: Top and bottom layout\n- `lr`: Left and right layout',
                    enum: [
                        'tb', // 上下布局
                        'lr', // 左右布局
                    ],
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutInstanceLayout',
                    description: 'Object name',
                    const: 'Layout',
                },
                type: {
                    // 布局类型
                    type: 'string',
                    title: 'TUiLayoutType',
                    description: 'Layout type\n- `normal`: Normal panel\n- `center`: Center panel\n- `top`: Top panel\n- `bottom`: Bottom panel\n- `left`: Left panel\n- `right`: Right panel',
                    enum: [
                        'normal', // 普通面板
                        'center', // 中央面板
                        'top', // 顶部面板
                        'bottom', // 底部面板
                        'left', // 左部面板
                        'right', // 右部面板
                    ],
                },
                size: {
                    // 面板尺寸
                    type: 'string',
                    description: 'Panel size',
                    examples: [
                        'auto', // 自动调整尺寸
                        '128px', // 固定尺寸
                    ],
                },
                resize: {
                    // 尺寸可调整的方向
                    type: 'string',
                    title: 'TUiLayoutDirection',
                    description: 'The direction in which the size can be adjusted\n- `tb`: Can adjust the size up and down\n- `lr`: Can adjust the size left and right',
                    enum: [
                        'tb', // 可上下调整尺寸
                        'lr', // 可左右调整尺寸
                    ],
                },
            },
        },
        uiLayout_wnd: {
            title: 'IUILayoutWnd',
            type: 'object',

            description: 'SiYuan window layout',
            additionalProperties: false,
            required: [
                'children',
                'instance',
            ],
            properties: {
                children: {
                    // 内部元素
                    type: 'array',
                    description: 'Internal elements',
                    items: {
                        // 页签元素
                        $ref: '#/$defs/uiLayout_tab',
                    },
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutWndInstance',
                    description: 'Object name',
                    const: 'Wnd',
                },
                height: {
                    // 窗口高度
                    type: 'string',
                    description: 'Panel height',
                    examples: [
                        '128px',
                    ],
                },
                width: {
                    // 窗口宽度
                    type: 'string',
                    description: 'Panel width',
                    examples: [
                        '128px',
                    ],
                },
                resize: {
                    // 尺寸可调整的方向
                    type: 'string',
                    title: 'TUiLayoutDirection',
                    description: 'The direction in which the size can be adjusted\n- `tb`: Can adjust the size up and down\n- `lr`: Can adjust the size left and right',
                    enum: [
                        'tb', // 可上下调整尺寸
                        'lr', // 可左右调整尺寸
                    ],
                },
            },
        },
        uiLayout_tab: {
            title: 'IUILayoutTab',
            type: 'object',

            description: 'SiYuan tab',
            additionalProperties: false,
            required: [
                'active',
                'children',
                'instance',
                'pin',
                'title',
            ],
            properties: {
                active: {
                    // 该页签是否激活
                    type: 'boolean',
                    description: 'Whether the tab is active',
                },
                children: {
                    // 页签内容
                    title: 'IUILayoutTabContent',
                    description: 'Tab content',

                    oneOf: [
                        {
                            // 编辑器
                            $ref: '#/$defs/uiLayout_tab_editor',
                        },
                        {
                            // 资源文件
                            $ref: '#/$defs/uiLayout_tab_asset',
                        },
                        {
                            // 自定义
                            $ref: '#/$defs/uiLayout_tab_custom',
                        },
                        {
                            // 反向链接
                            $ref: '#/$defs/uiLayout_tab_backlink',
                        },
                        {
                            // 书签
                            $ref: '#/$defs/uiLayout_tab_bookmark',
                        },
                        {
                            // 文档树
                            $ref: '#/$defs/uiLayout_tab_files',
                        },
                        {
                            // 关系图
                            $ref: '#/$defs/uiLayout_tab_graph',
                        },
                        {
                            // 大纲
                            $ref: '#/$defs/uiLayout_tab_outline',
                        },
                        {
                            // 标签
                            $ref: '#/$defs/uiLayout_tab_tag',
                        },
                        {
                            // 搜索
                            $ref: '#/$defs/uiLayout_tab_search',
                        },
                    ],
                },
                docIcon: {
                    // 页签图标
                    type: 'string',
                    description: 'Tab icon',
                    examples: [
                        '1f4a1', // Emoji 字符代码
                        'folder/icon.png', // 页签图标路径
                        'iconCode', // 图标引用 ID
                    ],
                },
                icon: {
                    // 图标引用 ID
                    type: 'string',
                    description: 'Icon reference ID',
                    examples: [
                        'iconCode',
                    ],
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutInstance',
                    description: 'Object name',
                    const: 'Tab',
                },
                lang: {
                    // 本地化字段键名
                    type: 'string',
                    description: 'Localization field key name',
                },
                pin: {
                    // 该页签是否被钉住
                    type: 'boolean',
                    description: 'Whether the tab is pinned',
                },
                title: {
                    // 页签标题
                    type: 'string',
                    description: 'Tab title',
                },
            },
        },
        uiLayout_tab_editor: {
            title: 'IUILayoutTabEditor',
            type: 'object',

            description: 'SiYuan editor tab',
            additionalProperties: false,
            required: [
                'blockId',
                'instance',
                'mode',
                'notebookId',
                'rootId',
            ],
            properties: {
                action: {
                    // 页签加载完成后需要执行的动作
                    type: 'string',
                    description: '(Editor) Actions to be performed after the tab is loaded',
                    examples: [
                        'cb-get-scroll', // 滚动到文档指定位置
                    ],
                },
                blockId: {
                    // 块 ID
                    type: 'string',
                    description: '(Editor) Block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Editor',
                },
                mode: {
                    // 编辑器模式
                    type: 'string',
                    title: 'TUiLayoutTabEditorMode',
                    description: '(Editor) Editor mode\n- `wysiwyg`: WYSIWYG mode\n- `preview`: Export preview mode',
                    enum: [
                        'wysiwyg', // 所见即所得模式
                        'preview', // 导出预览模式
                    ],
                },
                notebookId: {
                    // 文档所在笔记本 ID
                    type: 'string',
                    description: '(Editor) Notebook ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                rootId: {
                    // 文档块 ID
                    type: 'string',
                    description: '(Editor) Document block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
            },
        },
        uiLayout_tab_asset: {
            title: 'IUILayoutTabAsset',
            type: 'object',

            description: 'SiYuan asset file tab',
            additionalProperties: false,
            required: [
                'instance',
                'path',
            ],
            properties: {
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Asset',
                },
                path: {
                    // 资源文件引用路径
                    type: 'string',
                    description: '(Asset) Asset reference path',
                    examples: [
                        'assets/filename-20210604092205-djd749a.png',
                    ],
                },
                page: {
                    // PDF 文件页码
                    type: 'integer',
                    description: '(Asset) PDF file page number',
                },
            },
        },
        uiLayout_tab_custom: {
            title: 'IUILayoutTabCustom',
            type: 'object',

            description: 'SiYuan custom tab',
            additionalProperties: false,
            required: [
                'customModelData',
                'customModelType',
                'instance',
            ],
            properties: {
                customModelData: {
                    // 自定义页签的数据
                    description: '(Custom) Data of the custom tab',
                },
                customModelType: {
                    // 自定义页签的类型
                    type: 'string',
                    description: '(Custom) Type of the custom tab',
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Custom',
                },
            },
        },
        uiLayout_tab_backlink: {
            title: 'IUILayoutTabBacklink',
            type: 'object',

            description: 'SiYuan back link tab',
            additionalProperties: false,
            required: [
                'blockId',
                'instance',
                'rootId',
                'type',
            ],
            properties: {
                blockId: {
                    // 块 ID
                    type: 'string',
                    description: '(Backlink) Block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Backlink',
                },
                rootId: {
                    // 文档块 ID
                    type: 'string',
                    description: '(Backlink) Document block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                type: {
                    // 反向链接页签类型
                    type: 'string',
                    title: 'TUILayoutTabBacklinkType',
                    description: '(Backlink) Tab type\n- `pin`: Pinned backlink panel\n- `local`: The backlink panel of the current editor',
                    enum: [
                        'pin', // 钉住的反链面板
                        'local', // 当前编辑器的反链面板
                    ],
                },
            },
        },
        uiLayout_tab_bookmark: {
            title: 'IUILayoutTabBookmark',
            type: 'object',

            description: 'SiYuan bookmark tab',
            additionalProperties: false,
            required: [
                'instance',
            ],
            properties: {
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Bookmark',
                },
            },
        },
        uiLayout_tab_files: {
            title: 'IUILayoutTabFiles',
            type: 'object',

            description: 'SiYuan filetree tab',
            additionalProperties: false,
            required: [
                'instance',
            ],
            properties: {
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Files',
                },
            },
        },
        uiLayout_tab_graph: {
            title: 'IUILayoutTabGraph',
            type: 'object',

            description: 'SiYuan graph tab',
            additionalProperties: false,
            required: [
                'blockId',
                'instance',
                'rootId',
                'type',
            ],
            properties: {
                blockId: {
                    // 块 ID
                    type: 'string',
                    description: '(Graph) Block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Graph',
                },
                rootId: {
                    // 文档块 ID
                    type: 'string',
                    description: '(Graph) Document block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                type: {
                    // 反向链接页签类型
                    type: 'string',
                    title: 'TUILayoutTabGraphType',
                    description: '(Graph) Tab type\n- `pin`: Pinned graph\n- `local`: Graph of the current editor\n- `global`: Global graph',
                    enum: [
                        'pin', // 钉住的关系图
                        'local', // 当前编辑器的关系图
                        'global', // 全局关系图
                    ],
                },
            },
        },
        uiLayout_tab_outline: {
            title: 'IUILayoutTabOutline',
            type: 'object',

            description: 'SiYuan outline tab',
            additionalProperties: false,
            required: [
                'blockId',
                'instance',
                'isPreview',
                'type',
            ],
            properties: {
                blockId: {
                    // 块 ID
                    type: 'string',
                    description: '(Outline) Block ID',
                    pattern: '^\\d{14}-[0-9a-z]{7}$',
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Outline',
                },
                isPreview: {
                    // 关联的编辑器是否为预览模式
                    type: 'boolean',
                    description: '(Outline) Whether the associated editor is in preview mode',
                },
                type: {
                    // 大纲页签类型
                    type: 'string',
                    title: 'TUILayoutTabOutlineType',
                    description: '(Outline) Tab type\n- `pin`: Pinned outline panel\n- `local`: The outline panel of the current editor',
                    enum: [
                        'pin', // 钉住的大纲面板
                        'local', // 当前编辑器的大纲面板
                    ],
                },
            },
        },
        uiLayout_tab_tag: {
            title: 'IUILayoutTabTag',
            type: 'object',

            description: 'SiYuan tag tab',
            additionalProperties: false,
            required: [
                'instance',
            ],
            properties: {
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Tag',
                },
            },
        },
        uiLayout_tab_search: {
            title: 'IUILayoutTabSearch',
            type: 'object',

            description: 'SiYuan search tab',
            additionalProperties: false,
            required: [
                'config',
                'instance',
            ],
            properties: {
                config: {
                    // 搜索设置
                    $ref: '#/$defs/uiLayout_tab_search_config',
                },
                instance: {
                    // 对象名称
                    type: 'string',
                    title: 'TUiLayoutTabContentInstance',
                    description: 'Object name',
                    const: 'Search',
                },
            },
        },
        uiLayout_tab_search_config: {
            title: 'IUILayoutTabSearchConfig',
            type: 'object',

            description: 'SiYuan search tab configuration',
            additionalProperties: false,
            required: [
                'group',
                'hPath',
                'hasReplace',
                'idPath',
                'k',
                'method',
                'page',
                'r',
                'replaceTypes',
                'sort',
                'types',
            ],
            properties: {
                group: {
                    // 分组策略
                    type: 'integer',
                    description: 'Grouping strategy\n- `0`: No grouping\n- `1`: Group by document',
                    enum: [
                        0, // 不分组
                        1, // 按文档分组
                    ],
                },
                hPath: {
                    // 可读的路径列表
                    type: 'string',
                    description: 'Readable path list',
                },
                hasReplace: {
                    // TODO
                },
                idPath: {
                    // 在指定路径列表下搜索
                    type: 'array',
                    description: 'Search in the specified paths',
                    items: {
                        type: 'string',
                        pattern: '^(\\d{14}-[0-9a-z]{7})((/\\d{14}-[0-9a-z]{7})+(?:\\.sy)?)?$',
                        examples: [
                            '20210808180117-czj9bvb', // 笔记本
                            '20210808180117-czj9bvb/20200812220555-lj3enxa', // 包含下级文档
                            '20210808180117-czj9bvb/20200812220555-lj3enxa.sy', // 不包含下级文档
                        ],
                    },
                },
                k: {
                    // 搜索内容
                    type: 'string',
                    description: 'Search content',
                },
                method: {
                    // 搜索方案
                    type: 'integer',
                    description: 'Search scheme\n- `0`: Keyword (default)\n- `1`: Query syntax\n- `2`: SQL\n- `3`: Regular expression\n@defaultValue 0',
                    enum: [
                        0, // 关键字
                        1, // 查询语法
                        2, // SQL
                        3, // 正则表达式
                    ],
                    default: 0,
                },
                name: {
                    // 查询条件组的自定义名称
                    type: 'string',
                    description: 'Custom name of the query condition group',
                },
                page: {
                    // 当前页码
                    type: 'integer',
                    description: 'Current page number',
                },
                r: {
                    // 替换内容
                    type: 'string',
                    description: 'Replace content',
                },
                removed: {
                    // 移除当前所使用的查询条件组后是否清空搜索框
                    type: 'boolean',
                    description: 'Whether to clear the search box after removing the currently used query condition group',
                },
                replaceTypes: {
                    // 替换类型过滤
                    $ref: '#/$defs/uiLayout_tab_search_config_replaceTypes',
                },
                sort: {
                    // 查询结果排序方案
                    type: 'integer',
                    description: 'Search result sorting scheme\n- `0`: Block type (default)\n- `1`: Ascending by creation time\n- `2`: Descending by creation time\n- `3`: Ascending by update time\n- `4`: Descending by update time\n- `5`: By content order (only valid when grouping by document)\n- `6`: Ascending by relevance\n- `7`: Descending by relevance\n@defaultValue 0',
                    enum: [
                        0, // 按块类型
                        1, // 按创建时间升序
                        2, // 按创建时间降序
                        3, // 按更新时间升序
                        4, // 按更新时间降序
                        5, // 按内容顺序 (仅按文档分组时有效)
                        6, // 按相关度升序
                        7, // 按相关度降序
                    ],
                    default: 0,
                },
                types: {
                    // 搜索类型过滤
                    $ref: '#/$defs/uiLayout_tab_search_config_types',
                },
            },
        },
        uiLayout_tab_search_config_replaceTypes: {
            title: 'IUILayoutTabSearchConfigReplaceTypes',
            description: 'Replace type filtering',

            type: 'object',
            additionalProperties: false,
            required: [],
            properties: {
                aHref: {
                    // 超链接地址
                    type: 'boolean',
                    description: 'Replace hyperlinks\n@defaultValue false',
                    default: false,
                },
                aText: {
                    // 超链接锚文本
                    type: 'boolean',
                    description: 'Replace hyperlink anchor text\n@defaultValue true',
                    default: true,
                },
                aTitle: {
                    // 超链接标题
                    type: 'boolean',
                    description: 'Replace hyperlink title\n@defaultValue true',
                    default: true,
                },
                code: {
                    // 行内代码
                    type: 'boolean',
                    description: 'Replace inline code\n@defaultValue false',
                    default: false,
                },
                codeBlock: {
                    // 代码块
                    type: 'boolean',
                    description: 'Replace code blocks\n@defaultValue false',
                    default: false,
                },
                docTitle: {
                    // 文档标题
                    type: 'boolean',
                    description: 'Replace document title\n@defaultValue true',
                    default: true,
                },
                em: {
                    // 斜体元素
                    type: 'boolean',
                    description: 'Replace italic elements\n@defaultValue true',
                    default: true,
                },
                htmlBlock: {
                    // HTML 块
                    type: 'boolean',
                    description: 'Replace HTML blocks\n@defaultValue false',
                    default: false,
                },
                imgSrc: {
                    // 图片地址
                    type: 'boolean',
                    description: 'Replace image addresses\n@defaultValue false',
                    default: false,
                },
                imgText: {
                    // 图标锚文本
                    type: 'boolean',
                    description: 'Replace image anchor text\n@defaultValue true',
                    default: true,
                },
                imgTitle: {
                    // 图片标题
                    type: 'boolean',
                    description: 'Replace image titles\n@defaultValue true',
                    default: true,
                },
                inlineMath: {
                    // 行内公式
                    type: 'boolean',
                    description: 'Replace inline formulas\n@defaultValue false',
                    default: false,
                },
                inlineMemo: {
                    // 行内备注
                    type: 'boolean',
                    description: 'Replace inline memos\n@defaultValue true',
                    default: true,
                },
                kbd: {
                    // 按键元素
                    type: 'boolean',
                    description: 'Replace kdb elements\n@defaultValue true',
                    default: true,
                },
                mark: {
                    // 标记元素
                    type: 'boolean',
                    description: 'Replace mark elements\n@defaultValue true',
                    default: true,
                },
                mathBlock: {
                    // 公式块
                    type: 'boolean',
                    description: 'Replace formula blocks\n@defaultValue false',
                    default: false,
                },
                s: {
                    // 删除元素
                    type: 'boolean',
                    description: 'Replace delete elements\n@defaultValue true',
                    default: true,
                },
                strong: {
                    // 粗体元素
                    type: 'boolean',
                    description: 'Replace bold elements\n@defaultValue true',
                    default: true,
                },
                sub: {
                    // 下标元素
                    type: 'boolean',
                    description: 'Replace subscript elements\n@defaultValue true',
                    default: true,
                },
                sup: {
                    // 上标元素
                    type: 'boolean',
                    description: 'Replace superscript elements\n@defaultValue true',
                    default: true,
                },
                tag: {
                    // 标签元素
                    type: 'boolean',
                    description: 'Replace tag elements\n@defaultValue true',
                    default: true,
                },
                text: {
                    // 富文本元素
                    type: 'boolean',
                    description: 'Replace rich text elements\n@defaultValue true',
                    default: true,
                },
                u: {
                    // 下划线元素
                    type: 'boolean',
                    description: 'Replace underline elements\n@defaultValue true',
                    default: true,
                },
            },
        },
        uiLayout_tab_search_config_types: {
            title: 'IUILayoutTabSearchConfigTypes',
            description: 'Search type filtering',

            type: 'object',
            additionalProperties: false,
            required: [
                'blockquote',
                'codeBlock',
                'databaseBlock',
                'document',
                'embedBlock',
                'heading',
                'htmlBlock',
                'list',
                'listItem',
                'mathBlock',
                'paragraph',
                'superBlock',
                'table',
            ],
            properties: {
                audioBlock: {
                    type: 'boolean',
                    description: 'Search results contain audio blocks\n@defaultValue false',
                    default: false,
                },
                blockquote: {
                    type: 'boolean',
                    description: 'Search results contain blockquote blocks\n@defaultValue false',
                    default: false,
                },
                codeBlock: {
                    type: 'boolean',
                    description: 'Search results contain code blocks\n@defaultValue false',
                    default: false,
                },
                databaseBlock: {
                    type: 'boolean',
                    description: 'Search results contain database blocks\n@defaultValue false',
                    default: false,
                },
                document: {
                    type: 'boolean',
                    description: 'Search results contain document blocks\n@defaultValue false',
                    default: false,
                },
                embedBlock: {
                    type: 'boolean',
                    description: 'Search results contain embed blocks\n@defaultValue false',
                    default: false,
                },
                heading: {
                    type: 'boolean',
                    description: 'Search results contain heading blocks\n@defaultValue false',
                    default: false,
                },
                htmlBlock: {
                    type: 'boolean',
                    description: 'Search results contain html blocks\n@defaultValue false',
                    default: false,
                },
                iframeBlock: {
                    type: 'boolean',
                    description: 'Search results contain iframe blocks\n@defaultValue false',
                    default: false,
                },
                list: {
                    type: 'boolean',
                    description: 'Search results contain list blocks\n@defaultValue false',
                    default: false,
                },
                listItem: {
                    type: 'boolean',
                    description: 'Search results contain list item blocks\n@defaultValue false',
                    default: false,
                },
                mathBlock: {
                    type: 'boolean',
                    description: 'Search results contain math blocks\n@defaultValue false',
                    default: false,
                },
                paragraph: {
                    type: 'boolean',
                    description: 'Search results contain paragraph blocks\n@defaultValue false',
                    default: false,
                },
                superBlock: {
                    type: 'boolean',
                    description: 'Search results contain super blocks\n@defaultValue false',
                    default: false,
                },
                table: {
                    type: 'boolean',
                    description: 'Search results contain table blocks\n@defaultValue false',
                    default: false,
                },
                videoBlock: {
                    type: 'boolean',
                    description: 'Search results contain video blocks\n@defaultValue false',
                    default: false,
                },
                widgetBlock: {
                    type: 'boolean',
                    description: 'Search results contain widget blocks\n@defaultValue false',
                    default: false,
                },
            },
        },
        uiLayout_dock: {
            title: 'IUILayoutDock',
            type: 'object',

            description: 'SiYuan dock related configuration',
            additionalProperties: false,
            required: [
                'data',
                'pin',
            ],
            properties: {
                data: {
                    // 停靠栏区域列表
                    type: 'array',
                    description: 'Dock area list',
                    items: {
                        // 停靠栏面板列表
                        type: 'array',
                        items: {
                            $ref: '#/$defs/uiLayout_dock_tab',
                        },
                    },
                },
                pin: {
                    // 是否钉住该停靠栏
                    type: 'boolean',
                    description: 'Whether to pin the dock',
                },
            },
        },
        uiLayout_dock_tab: {
            title: 'IUILayoutDockTab',
            type: 'object',

            description: 'SiYuan dock tab data',
            additionalProperties: false,
            required: [
                'hotkey',
                'icon',
                'show',
                'size',
                'title',
                'type',
            ],
            properties: {
                hotkey: {
                    // 面板快捷键
                    type: 'string',
                    description: 'Dock tab hotkey',
                    examples: [
                        '', // 未设置快捷键
                        '⌥2', // Option + 2 / Alt + 2
                    ],
                },
                hotkeyLangId: {
                    // 快捷键描述 ID
                    type: 'string',
                    description: 'Hotkey description ID',
                },
                icon: {
                    // 面板图标 ID
                    type: 'string',
                    description: 'Tab icon ID',
                },
                show: {
                    // 是否显示该面板
                    type: 'boolean',
                    description: 'Whether to display the tab',
                },
                size: {
                    // 面板尺寸
                    $ref: '#/$defs/uiLayout_dock_tab_size',
                },
                title: {
                    // 面板标题
                    type: 'string',
                    description: 'Tab title',
                },
                type: {
                    // 面板类型
                    type: 'string',
                    description: 'Tab type',
                },
            },
        },
        uiLayout_dock_tab_size: {
            title: 'IUILayoutDockPanelSize',
            type: 'object',

            description: 'SiYuan dock tab size',
            additionalProperties: false,
            required: [
                'height',
                'width',
            ],
            properties: {
                height: {
                    // 面板高度 (单位: px)
                    type: [
                        'integer',
                        'null',
                    ],
                    description: 'Tab height (unit: px)',
                },
                width: {
                    // 面板宽度 (单位: px)
                    type: [
                        'integer',
                        'null',
                    ],
                    description: 'Tab width (unit: px)',
                },
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/getConf/response.schema.json",
    "$comment": "v3.0.13",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "response body",
            "description": "Get the full configuration of the workspace",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "code",
                "msg",
                "data"
            ],
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "status code"
                },
                "msg": {
                    "type": "string",
                    "description": "status message"
                },
                "data": {
                    "$ref": "#/$defs/data"
                }
            }
        },
        "data": {
            "title": "IData",
            "description": "response data",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "start",
                "conf"
            ],
            "properties": {
                "start": {
                    "type": "boolean",
                    "description": "Whether the user interface is not loaded"
                },
                "conf": {
                    "$ref": "#/$defs/conf"
                }
            }
        },
        "conf": {
            "title": "IConf",
            "description": "Configuration object",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "accessAuthCode",
                "account",
                "ai",
                "api",
                "appearance",
                "bazaar",
                "cloudRegion",
                "editor",
                "export",
                "fileTree",
                "flashcard",
                "graph",
                "keymap",
                "lang",
                "langs",
                "localIPs",
                "logLevel",
                "openHelp",
                "publish",
                "readonly",
                "repo",
                "search",
                "showChangelog",
                "snippet",
                "stat",
                "sync",
                "system",
                "tag",
                "uiLayout",
                "userData"
            ],
            "properties": {
                "accessAuthCode": {
                    "type": "string",
                    "title": "TAccessAuthCode",
                    "description": "Access authorization code",
                    "default": "",
                    "enum": [
                        "",
                        "*******"
                    ]
                },
                "account": {
                    "$ref": "#/$defs/account"
                },
                "ai": {
                    "$ref": "#/$defs/ai"
                },
                "api": {
                    "$ref": "#/$defs/api"
                },
                "appearance": {
                    "$ref": "#/$defs/appearance"
                },
                "bazaar": {
                    "$ref": "#/$defs/bazaar"
                },
                "cloudRegion": {
                    "type": "integer",
                    "description": "Cloud Service Provider Region\n- `0`: Chinese mainland\n- `1`: North America",
                    "enum": [
                        0,
                        1
                    ]
                },
                "editor": {
                    "$ref": "#/$defs/editor"
                },
                "export": {
                    "$ref": "#/$defs/export"
                },
                "fileTree": {
                    "$ref": "#/$defs/fileTree"
                },
                "flashcard": {
                    "$ref": "#/$defs/flashcard"
                },
                "graph": {
                    "$ref": "#/$defs/graph"
                },
                "keymap": {
                    "$ref": "#/$defs/keymap"
                },
                "langs": {
                    "type": "array",
                    "description": "List of supported languages",
                    "items": {
                        "$ref": "#/$defs/lang"
                    }
                },
                "lang": {
                    "type": "string",
                    "title": "TLang",
                    "description": "User interface language  \nSame as {@link IAppearance.lang}",
                    "enum": [
                        "en_US",
                        "es_ES",
                        "fr_FR",
                        "zh_CHT",
                        "zh_CN"
                    ]
                },
                "localIPs": {
                    "type": "array",
                    "description": "A list of the IP addresses of the devices on which the kernel resides",
                    "items": {
                        "type": "string",
                        "description": "IP addresses (IPv4 & IPv6)",
                        "examples": [
                            "127.0.0.1",
                            "192.168.1.1",
                            "10.0.0.1",
                            "[::1]",
                            "[fe80::8cc:2a8:23fc:daf3]"
                        ]
                    }
                },
                "logLevel": {
                    "type": "string",
                    "title": "TLogLevel",
                    "description": "Log level",
                    "enum": [
                        "off",
                        "trace",
                        "debug",
                        "info",
                        "warn",
                        "error",
                        "fatal"
                    ]
                },
                "openHelp": {
                    "type": "boolean",
                    "description": "Whether to open the user guide after startup"
                },
                "publish": {
                    "$ref": "#/$defs/publish"
                },
                "readonly": {
                    "type": "boolean",
                    "description": "Whether it is running in read-only mode"
                },
                "repo": {
                    "$ref": "#/$defs/repo"
                },
                "search": {
                    "$ref": "#/$defs/search"
                },
                "showChangelog": {
                    "type": "boolean",
                    "description": "Whether to display the changelog for this release version"
                },
                "snippet": {
                    "$ref": "#/$defs/snippet"
                },
                "stat": {
                    "$ref": "#/$defs/stat"
                },
                "sync": {
                    "$ref": "#/$defs/sync"
                },
                "system": {
                    "$ref": "#/$defs/system"
                },
                "tag": {
                    "$ref": "#/$defs/tag"
                },
                "uiLayout": {
                    "$ref": "#/$defs/uiLayout"
                },
                "userData": {
                    "type": "string",
                    "description": "Community user data (Encrypted)",
                    "default": ""
                }
            }
        },
        "account": {
            "title": "IAccount",
            "description": "Account configuration",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "displayTitle",
                "displayVIP"
            ],
            "properties": {
                "displayTitle": {
                    "type": "boolean",
                    "description": "Display the title icon"
                },
                "displayVIP": {
                    "type": "boolean",
                    "description": "Display the VIP icon"
                }
            }
        },
        "ai": {
            "title": "IAI",
            "type": "object",
            "description": "Artificial Intelligence (AI) related configuration",
            "additionalProperties": false,
            "required": [
                "openAI"
            ],
            "properties": {
                "openAI": {
                    "$ref": "#/$defs/ai_openAI"
                }
            }
        },
        "ai_openAI": {
            "title": "IOpenAI",
            "description": "Open AI related configuration",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "apiBaseURL",
                "apiKey",
                "apiMaxContexts",
                "apiMaxTokens",
                "apiModel",
                "apiProvider",
                "apiProxy",
                "apiTemperature",
                "apiTimeout",
                "apiUserAgent",
                "apiVersion"
            ],
            "properties": {
                "apiBaseURL": {
                    "type": "string",
                    "description": "API base URL",
                    "format": "uri",
                    "examples": [
                        "https://api.openai.com/v1"
                    ]
                },
                "apiKey": {
                    "type": "string",
                    "description": "API key",
                    "examples": [
                        "sk-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL"
                    ]
                },
                "apiMaxContexts": {
                    "type": "integer",
                    "description": "The maximum number of contexts passed when requesting the API",
                    "minimum": 0
                },
                "apiMaxTokens": {
                    "type": "integer",
                    "description": "Maximum number of tokens (0 means no limit)",
                    "minimum": 0
                },
                "apiModel": {
                    "type": "string",
                    "title": "TOpenAIAPIModel",
                    "description": "The model name called by the API",
                    "examples": [
                        "gpt-4",
                        "gpt-4-32k",
                        "gpt-3.5-turbo",
                        "gpt-3.5-turbo-16k"
                    ]
                },
                "apiProvider": {
                    "type": "string",
                    "title": "TOpenAIApiProvider",
                    "description": "API Provider",
                    "enum": [
                        "OpenAI",
                        "Azure"
                    ]
                },
                "apiProxy": {
                    "type": "string",
                    "description": "API request proxy address",
                    "examples": [
                        "http://127.0.0.1:1080",
                        "socks://127.0.0.1:1080",
                        "socks5://127.0.0.1:1080"
                    ]
                },
                "apiTemperature": {
                    "type": "number",
                    "description": "Parameter `temperature` that controls the randomness of the generated text"
                },
                "apiTimeout": {
                    "type": "integer",
                    "description": "API request timeout (unit: seconds)",
                    "minimum": 0
                },
                "apiUserAgent": {
                    "type": "string",
                    "description": "API request additional user agent field"
                },
                "apiVersion": {
                    "type": "string",
                    "description": "API version number"
                }
            }
        },
        "api": {
            "title": "IApi",
            "type": "object",
            "description": "SiYuan API related configuration",
            "additionalProperties": false,
            "required": [
                "token"
            ],
            "properties": {
                "token": {
                    "type": "string",
                    "description": "API Token",
                    "examples": [
                        "",
                        "0123456789abcdef"
                    ]
                }
            }
        },
        "appearance": {
            "title": "IAppearance",
            "type": "object",
            "description": "SiYuan appearance related configuration",
            "additionalProperties": false,
            "required": [
                "closeButtonBehavior",
                "codeBlockThemeDark",
                "codeBlockThemeLight",
                "darkThemes",
                "hideStatusBar",
                "icon",
                "iconVer",
                "icons",
                "lang",
                "lightThemes",
                "mode",
                "modeOS",
                "themeDark",
                "themeJS",
                "themeLight",
                "themeVer"
            ],
            "properties": {
                "closeButtonBehavior": {
                    "type": "integer",
                    "description": "Close button behavior\n- `0`: Exit application\n- `1`: Minimize to pallets",
                    "enum": [
                        0,
                        1
                    ]
                },
                "codeBlockThemeDark": {
                    "type": "string",
                    "description": "Dark code block theme"
                },
                "codeBlockThemeLight": {
                    "type": "string",
                    "description": "Light code block theme"
                },
                "darkThemes": {
                    "type": "array",
                    "description": "List of installed dark themes",
                    "items": {
                        "type": "string",
                        "description": "Dark theme name"
                    }
                },
                "hideStatusBar": {
                    "type": "boolean",
                    "description": "Whether to hide status bar"
                },
                "icon": {
                    "type": "string",
                    "description": "The name of the icon currently in use"
                },
                "iconVer": {
                    "type": "string",
                    "description": "The version number of the icon currently in use"
                },
                "icons": {
                    "type": "array",
                    "description": "List of installed icon names",
                    "items": {
                        "type": "string",
                        "description": "Icon name"
                    }
                },
                "lang": {
                    "type": "string",
                    "title": "TLang",
                    "description": "The language used by the current user",
                    "enum": [
                        "en_US",
                        "es_ES",
                        "fr_FR",
                        "zh_CHT",
                        "zh_CN"
                    ]
                },
                "lightThemes": {
                    "type": "array",
                    "description": "List of installed light themes",
                    "items": {
                        "type": "string",
                        "description": "Light theme name"
                    }
                },
                "mode": {
                    "type": "integer",
                    "description": "The current theme mode\n- `0`: Light theme\n- `1`: Dark theme",
                    "enum": [
                        0,
                        1
                    ]
                },
                "modeOS": {
                    "type": "boolean",
                    "description": "Whether the theme mode follows the system theme"
                },
                "themeDark": {
                    "type": "string",
                    "description": "The name of the dark theme currently in use"
                },
                "themeJS": {
                    "type": "boolean",
                    "description": "Whether the current theme has enabled theme JavaScript"
                },
                "themeLight": {
                    "type": "string",
                    "description": "The name of the light theme currently in use"
                },
                "themeVer": {
                    "type": "string",
                    "description": "The version number of the theme currently in use"
                }
            }
        },
        "bazaar": {
            "title": "IBazaar",
            "type": "object",
            "description": "SiYuan bazaar related configuration",
            "additionalProperties": false,
            "required": [
                "petalDisabled",
                "trust"
            ],
            "properties": {
                "petalDisabled": {
                    "type": "boolean",
                    "description": "Whether to disable all plug-ins"
                },
                "trust": {
                    "type": "boolean",
                    "description": "Whether to trust (enable) the resources for the bazaar"
                }
            }
        },
        "editor": {
            "title": "IEditor",
            "type": "object",
            "description": "SiYuan editor related configuration",
            "additionalProperties": false,
            "required": [
                "allowHTMLBLockScript",
                "backlinkExpandCount",
                "backmentionExpandCount",
                "blockRefDynamicAnchorTextMaxLen",
                "codeLigatures",
                "codeLineWrap",
                "codeSyntaxHighlightLineNum",
                "codeTabSpaces",
                "displayBookmarkIcon",
                "displayNetImgMark",
                "dynamicLoadBlocks",
                "embedBlockBreadcrumb",
                "emoji",
                "floatWindowMode",
                "fontFamily",
                "fontSize",
                "fontSizeScrollZoom",
                "fullWidth",
                "generateHistoryInterval",
                "historyRetentionDays",
                "justify",
                "katexMacros",
                "listItemDotNumberClickFocus",
                "listLogicalOutdent",
                "markdown",
                "onlySearchForDoc",
                "plantUMLServePath",
                "readOnly",
                "rtl",
                "spellcheck",
                "virtualBlockRef",
                "virtualBlockRefExclude",
                "virtualBlockRefInclude"
            ],
            "properties": {
                "allowHTMLBLockScript": {
                    "type": "boolean",
                    "description": "Allow HTML blocks to run scripts"
                },
                "backlinkExpandCount": {
                    "type": "integer",
                    "description": "The default number of backlinks to expand"
                },
                "backmentionExpandCount": {
                    "type": "integer",
                    "description": "The default number of backlinks to mention"
                },
                "blockRefDynamicAnchorTextMaxLen": {
                    "type": "integer",
                    "description": "The maximum length of the dynamic anchor text for block references"
                },
                "codeLigatures": {
                    "type": "boolean",
                    "description": "Whether the code block has enabled ligatures"
                },
                "codeLineWrap": {
                    "type": "boolean",
                    "description": "Whether the code block is automatically wrapped"
                },
                "codeSyntaxHighlightLineNum": {
                    "type": "boolean",
                    "description": "Whether the code block displays line numbers"
                },
                "codeTabSpaces": {
                    "type": "integer",
                    "description": "The number of spaces generated by the Tab key in the code block, configured as 0 means no conversion to spaces",
                    "minimum": 0
                },
                "displayBookmarkIcon": {
                    "type": "boolean",
                    "description": "Whether to display the bookmark icon"
                },
                "displayNetImgMark": {
                    "type": "boolean",
                    "description": "Whether to display the network image mark"
                },
                "dynamicLoadBlocks": {
                    "type": "integer",
                    "description": "The number of blocks loaded each time they are dynamically loaded",
                    "minimum": 48,
                    "maximum": 1024
                },
                "embedBlockBreadcrumb": {
                    "type": "boolean",
                    "description": "Whether the embedded block displays breadcrumbs"
                },
                "emoji": {
                    "type": "array",
                    "description": "Common emoji icons",
                    "items": {
                        "type": "string",
                        "description": "Emoji icon",
                        "examples": [
                            "1f4da",
                            "material/folder-project.svg"
                        ]
                    }
                },
                "floatWindowMode": {
                    "type": "integer",
                    "description": "The trigger mode of the preview window\n- `0`: Hover over the cursor\n- `1`: Hover over the cursor while holding down Ctrl\n- `2`: Do not trigger the floating window",
                    "enum": [
                        0,
                        1,
                        2
                    ]
                },
                "fontFamily": {
                    "type": "string",
                    "description": "The font used in the editor"
                },
                "fontSize": {
                    "type": "integer",
                    "description": "The font size used in the editor"
                },
                "fontSizeScrollZoom": {
                    "type": "boolean",
                    "description": "Whether to enable the use of the mouse wheel to adjust the font size of the editor"
                },
                "fullWidth": {
                    "type": "boolean",
                    "description": "Whether the editor uses maximum width"
                },
                "generateHistoryInterval": {
                    "type": "integer",
                    "description": "The time interval for generating document history, set to 0 to disable document history (unit: minutes)",
                    "minimum": 0
                },
                "historyRetentionDays": {
                    "type": "integer",
                    "description": "History retention days"
                },
                "justify": {
                    "type": "boolean",
                    "description": "Whether to enable text justification"
                },
                "katexMacros": {
                    "type": "string",
                    "description": "KeTex macro definition (JSON string)"
                },
                "listItemDotNumberClickFocus": {
                    "type": "boolean",
                    "description": "Whether to enable single-click list item mark focus"
                },
                "listLogicalOutdent": {
                    "type": "boolean",
                    "description": "Whether to enable the list logical reverse indentation scheme"
                },
                "markdown": {
                    "$ref": "#/$defs/editor_markdown"
                },
                "onlySearchForDoc": {
                    "type": "boolean",
                    "description": "Whether to enable the `[[` symbol to search only for document blocks"
                },
                "plantUMLServePath": {
                    "type": "string",
                    "description": "PlantUML rendering service address"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "Whether to enable read-only mode"
                },
                "rtl": {
                    "type": "boolean",
                    "description": "Whether to enable RTL (left-to-right chirography) mode"
                },
                "spellcheck": {
                    "type": "boolean",
                    "description": "Whether to enable spell checking"
                },
                "virtualBlockRef": {
                    "type": "boolean",
                    "description": "Whether to enable virtual references"
                },
                "virtualBlockRefExclude": {
                    "type": "string",
                    "description": "Virtual reference keyword exclusion list (separated by commas `,`)"
                },
                "virtualBlockRefInclude": {
                    "type": "string",
                    "description": "Virtual reference keyword inclusion list (separated by commas `,`)"
                }
            }
        },
        "editor_markdown": {
            "title": "IEditorMarkdown",
            "type": "object",
            "description": "Markdown syntax configuration",
            "additionalProperties": false,
            "required": [
                "inlineMath",
                "inlineSub",
                "inlineSup",
                "inlineTag"
            ],
            "properties": {
                "inlineMath": {
                    "type": "boolean",
                    "description": "Whether to enable inline formula syntax $foo$"
                },
                "inlineSub": {
                    "type": "boolean",
                    "description": "Whether to enable subscript syntax ~foo~"
                },
                "inlineSup": {
                    "type": "boolean",
                    "description": "Whether to enable superscript syntax ^foo^"
                },
                "inlineTag": {
                    "type": "boolean",
                    "description": "Whether to enable tag syntax #foo#"
                }
            }
        },
        "export": {
            "title": "IExport",
            "type": "object",
            "description": "SiYuan export related configuration",
            "additionalProperties": false,
            "required": [
                "paragraphBeginningSpace",
                "addTitle",
                "blockRefMode",
                "blockEmbedMode",
                "blockRefTextLeft",
                "blockRefTextRight",
                "tagOpenMarker",
                "tagCloseMarker",
                "fileAnnotationRefMode",
                "pandocBin",
                "markdownYFM",
                "pdfFooter",
                "docxTemplate",
                "pdfWatermarkStr",
                "pdfWatermarkDesc",
                "imageWatermarkStr",
                "imageWatermarkDesc"
            ],
            "properties": {
                "paragraphBeginningSpace": {
                    "type": "boolean",
                    "description": "Whether the beginning of the paragraph is empty two spaces.\nInsert two full-width spaces `U+3000` at the beginning of the paragraph."
                },
                "addTitle": {
                    "type": "boolean",
                    "description": "Add article title (insert the article title as a first-level title at the beginning of the document)"
                },
                "blockRefMode": {
                    "type": "integer",
                    "description": "Content block reference export mode\n- `0`: Original text (deprecated)\n- `1`: Quotation block (deprecated)\n- `2`: Anchor text block link\n- `3`: Anchor text only\n- `4`: Footnote\n- `5`: Anchor hash\n",
                    "enum": [
                        0,
                        1,
                        2,
                        3,
                        4,
                        5
                    ]
                },
                "blockEmbedMode": {
                    "type": "integer",
                    "description": "Embedded block export mode\n- `0`: Original block content\n- `1`: Quotation block",
                    "enum": [
                        0,
                        1
                    ]
                },
                "blockRefTextLeft": {
                    "type": "string",
                    "description": "The symbol on the left side of the block reference anchor text during export"
                },
                "blockRefTextRight": {
                    "type": "string",
                    "description": "The symbol on the right side of the block reference anchor text during export"
                },
                "tagOpenMarker": {
                    "type": "string",
                    "description": "Tag start marker symbol"
                },
                "tagCloseMarker": {
                    "type": "string",
                    "description": "Tag close marker symbol"
                },
                "fileAnnotationRefMode": {
                    "type": "integer",
                    "description": "File annotation reference export mode\n- `0`: File name - page number - anchor text\n- `1`: Anchor text only",
                    "enum": [
                        0,
                        1
                    ]
                },
                "pandocBin": {
                    "type": "string",
                    "description": "Pandoc executable file path"
                },
                "markdownYFM": {
                    "type": "boolean",
                    "description": "Whether to add YAML Front Matter when exporting to Markdown"
                },
                "pdfFooter": {
                    "type": "string",
                    "description": "Custom footer content when exporting to PDF"
                },
                "docxTemplate": {
                    "type": "string",
                    "description": "The path of the template file used when exporting to Docx"
                },
                "pdfWatermarkStr": {
                    "type": "string",
                    "description": "The watermark text or watermark file path used when exporting to PDF"
                },
                "pdfWatermarkDesc": {
                    "type": "string",
                    "description": "Custom watermark position, size, style, etc. when exporting to PDF"
                },
                "imageWatermarkStr": {
                    "type": "string",
                    "description": "The watermark text or watermark file path used when exporting to an image"
                },
                "imageWatermarkDesc": {
                    "type": "string",
                    "description": "Custom watermark position, size, style, etc. when exporting to an image"
                }
            }
        },
        "fileTree": {
            "title": "IFileTree",
            "type": "object",
            "description": "Document tree related configuration",
            "additionalProperties": false,
            "required": [
                "allowCreateDeeper",
                "alwaysSelectOpenedFile",
                "closeTabsOnStart",
                "docCreateSaveBox",
                "docCreateSavePath",
                "maxListCount",
                "maxOpenTabCount",
                "openFilesUseCurrentTab",
                "refCreateSaveBox",
                "refCreateSavePath",
                "removeDocWithoutConfirm",
                "sort",
                "useSingleLineSave"
            ],
            "properties": {
                "allowCreateDeeper": {
                    "type": "boolean",
                    "description": "Whether to allow the creation of sub-documents deeper than 7 levels"
                },
                "alwaysSelectOpenedFile": {
                    "type": "boolean",
                    "description": "Whether to automatically locate the currently open document in the document tree"
                },
                "closeTabsOnStart": {
                    "type": "boolean",
                    "description": "Whether to close all tabs when starting"
                },
                "docCreateSaveBox": {
                    "type": "string",
                    "description": "The notebook to storage the new document"
                },
                "docCreateSavePath": {
                    "type": "string",
                    "description": "The storage path of the new document"
                },
                "maxListCount": {
                    "type": "integer",
                    "description": "The maximum number of documents listed"
                },
                "maxOpenTabCount": {
                    "type": "integer",
                    "description": "The maximum number of open tabs"
                },
                "openFilesUseCurrentTab": {
                    "type": "boolean",
                    "description": "Whether to open the file in the current tab"
                },
                "refCreateSaveBox": {
                    "type": "string",
                    "description": "The notebook to storage the new document created using block references"
                },
                "refCreateSavePath": {
                    "type": "string",
                    "description": "The storage path of the new document created using block references"
                },
                "removeDocWithoutConfirm": {
                    "type": "boolean",
                    "description": "Close the secondary confirmation when deleting a document"
                },
                "sort": {
                    "type": "integer",
                    "description": "Document sorting method\n- `0`: File name ascending\n- `1`: File name descending\n- `2`: File update time ascending\n- `3`: File update time descending\n- `4`: File name natural number ascending\n- `5`: File name natural number descending\n- `6`: Custom sorting\n- `7`: Reference count ascending\n- `8`: Reference count descending\n- `9`: File creation time ascending\n- `10`: File creation time descending\n- `11`: File size ascending\n- `12`: File size descending\n- `13`: Sub-document count ascending\n- `14`: Sub-document count descending\n- `15`: Use document tree sorting rules\n- `256`: Unspecified sorting rules, according to the notebook priority over the document tree to obtain sorting rules",
                    "enum": [
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10,
                        11,
                        12,
                        13,
                        14,
                        15,
                        256
                    ]
                },
                "useSingleLineSave": {
                    "type": "boolean",
                    "description": "Whether to save the content of the .sy file as a single-line JSON object"
                }
            }
        },
        "flashcard": {
            "title": "IFlashCard",
            "type": "object",
            "description": "Flashcard related configuration",
            "additionalProperties": false,
            "required": [
                "deck",
                "heading",
                "list",
                "mark",
                "maximumInterval",
                "newCardLimit",
                "requestRetention",
                "reviewCardLimit",
                "reviewMode",
                "superBlock",
                "weights"
            ],
            "properties": {
                "deck": {
                    "type": "boolean",
                    "description": "Whether to enable deck card making"
                },
                "heading": {
                    "type": "boolean",
                    "description": "Whether to enable heading block card making"
                },
                "list": {
                    "type": "boolean",
                    "description": "Whether to enable list block card making"
                },
                "mark": {
                    "type": "boolean",
                    "description": "Whether to enable mark element card making"
                },
                "maximumInterval": {
                    "type": "integer",
                    "description": "Maximum interval days"
                },
                "newCardLimit": {
                    "type": "integer",
                    "description": "New card limit"
                },
                "requestRetention": {
                    "type": "number",
                    "description": "FSRS request retention parameter"
                },
                "reviewCardLimit": {
                    "type": "integer",
                    "description": "Review card limit"
                },
                "reviewMode": {
                    "type": "integer",
                    "description": "Review mode\n- `0`: New and old mixed\n- `1`: New card priority\n- `2`: Old card priority",
                    "enum": [
                        0,
                        1,
                        2
                    ]
                },
                "superBlock": {
                    "type": "boolean",
                    "description": "Whether to enable super block card making"
                },
                "weights": {
                    "type": "string",
                    "description": "FSRS weight parameter list"
                }
            }
        },
        "graph": {
            "title": "IGraph",
            "type": "object",
            "description": "SiYuan graph related configuration",
            "additionalProperties": false,
            "required": [
                "global",
                "local",
                "maxBlocks"
            ],
            "properties": {
                "global": {
                    "$ref": "#/$defs/graph_global"
                },
                "local": {
                    "$ref": "#/$defs/graph_local"
                },
                "maxBlocks": {
                    "type": "integer",
                    "description": "Maximum number of content blocks displayed"
                }
            }
        },
        "graph_global": {
            "title": "IGraphGlobal",
            "type": "object",
            "description": "Global graph configuration",
            "additionalProperties": false,
            "required": [
                "d3",
                "dailyNote",
                "minRefs",
                "type"
            ],
            "properties": {
                "d3": {
                    "$ref": "#/$defs/graph_d3"
                },
                "dailyNote": {
                    "type": "boolean",
                    "description": "Whether to display nodes in daily notes"
                },
                "minRefs": {
                    "type": "integer",
                    "description": "The minimum number of references to the displayed node"
                },
                "type": {
                    "$ref": "#/$defs/graph_type"
                }
            }
        },
        "graph_local": {
            "title": "IGraphLocal",
            "type": "object",
            "description": "Local graph configuration",
            "additionalProperties": false,
            "required": [
                "d3",
                "dailyNote",
                "type"
            ],
            "properties": {
                "d3": {
                    "$ref": "#/$defs/graph_d3"
                },
                "dailyNote": {
                    "type": "boolean",
                    "description": "Whether to display nodes in daily notes"
                },
                "type": {
                    "$ref": "#/$defs/graph_type"
                }
            }
        },
        "graph_d3": {
            "title": "IGraphD3",
            "type": "object",
            "description": "d3.js graph configuration",
            "additionalProperties": false,
            "required": [
                "arrow",
                "centerStrength",
                "collideRadius",
                "collideStrength",
                "lineOpacity",
                "linkDistance",
                "linkWidth",
                "nodeSize"
            ],
            "properties": {
                "arrow": {
                    "type": "boolean",
                    "description": "Whether to display the arrow"
                },
                "centerStrength": {
                    "type": "number",
                    "description": "Central gravity intensity"
                },
                "collideRadius": {
                    "type": "number",
                    "description": "Repulsion radius"
                },
                "collideStrength": {
                    "type": "number",
                    "description": "Repulsion intensity"
                },
                "lineOpacity": {
                    "type": "number",
                    "description": "Line opacity"
                },
                "linkDistance": {
                    "type": "integer",
                    "description": "Link distance"
                },
                "linkWidth": {
                    "type": "number",
                    "description": "Line width"
                },
                "nodeSize": {
                    "type": "number",
                    "description": "Node size"
                }
            }
        },
        "graph_type": {
            "title": "IGraphType",
            "type": "object",
            "description": "SiYuan node type filter",
            "additionalProperties": false,
            "required": [
                "blockquote",
                "code",
                "heading",
                "list",
                "listItem",
                "math",
                "paragraph",
                "super",
                "table",
                "tag"
            ],
            "properties": {
                "blockquote": {
                    "type": "boolean",
                    "description": "Display quote block"
                },
                "code": {
                    "type": "boolean",
                    "description": "Display code block"
                },
                "heading": {
                    "type": "boolean",
                    "description": "Display heading block"
                },
                "list": {
                    "type": "boolean",
                    "description": "Display list block"
                },
                "listItem": {
                    "type": "boolean",
                    "description": "Display list item"
                },
                "math": {
                    "type": "boolean",
                    "description": "Display formula block"
                },
                "paragraph": {
                    "type": "boolean",
                    "description": "Display paragraph block"
                },
                "super": {
                    "type": "boolean",
                    "description": "Display super block"
                },
                "table": {
                    "type": "boolean",
                    "description": "Display table block"
                },
                "tag": {
                    "type": "boolean",
                    "description": "Display tag"
                }
            }
        },
        "keymap": {
            "title": "IKeymap",
            "type": "object",
            "description": "SiYuan keymap related configuration",
            "additionalProperties": false,
            "required": [
                "editor",
                "general",
                "plugin"
            ],
            "properties": {
                "editor": {
                    "$ref": "#/$defs/keymap_editor"
                },
                "general": {
                    "$ref": "#/$defs/keymap_general"
                },
                "plugin": {
                    "$ref": "#/$defs/keymap_plugin"
                }
            }
        },
        "keymap_editor": {
            "title": "IKeymapEditor",
            "type": "object",
            "description": "SiYuan editor shortcut keys",
            "additionalProperties": false,
            "required": [
                "general",
                "heading",
                "insert",
                "list",
                "table"
            ],
            "properties": {
                "general": {
                    "$ref": "#/$defs/keymap_editor_general"
                },
                "heading": {
                    "$ref": "#/$defs/keymap_editor_heading"
                },
                "insert": {
                    "$ref": "#/$defs/keymap_editor_insert"
                },
                "list": {
                    "$ref": "#/$defs/keymap_editor_list"
                },
                "table": {
                    "$ref": "#/$defs/keymap_editor_table"
                }
            }
        },
        "keymap_editor_general": {
            "title": "IKeymapEditorGeneral",
            "type": "object",
            "description": "SiYuan editor general shortcut keys",
            "additionalProperties": false,
            "required": [
                "ai",
                "alignCenter",
                "alignLeft",
                "alignRight",
                "attr",
                "backlinks",
                "collapse",
                "copyBlockEmbed",
                "copyBlockRef",
                "copyHPath",
                "copyID",
                "copyPlainText",
                "copyProtocol",
                "copyProtocolInMd",
                "copyText",
                "duplicate",
                "exitFocus",
                "expand",
                "expandDown",
                "expandUp",
                "fullscreen",
                "graphView",
                "hLayout",
                "insertAfter",
                "insertBefore",
                "insertBottom",
                "insertRight",
                "jumpToParent",
                "jumpToParentPrev",
                "jumpToParentNext",
                "moveToDown",
                "moveToUp",
                "netAssets2LocalAssets",
                "netImg2LocalAsset",
                "newContentFile",
                "newNameFile",
                "newNameSettingFile",
                "openBy",
                "optimizeTypography",
                "outline",
                "preview",
                "quickMakeCard",
                "redo",
                "refPopover",
                "refTab",
                "refresh",
                "rename",
                "showInFolder",
                "spaceRepetition",
                "switchReadonly",
                "undo",
                "vLayout",
                "wysiwyg"
            ],
            "properties": {
                "ai": {
                    "$ref": "#/$defs/key"
                },
                "alignCenter": {
                    "$ref": "#/$defs/key"
                },
                "alignLeft": {
                    "$ref": "#/$defs/key"
                },
                "alignRight": {
                    "$ref": "#/$defs/key"
                },
                "attr": {
                    "$ref": "#/$defs/key"
                },
                "backlinks": {
                    "$ref": "#/$defs/key"
                },
                "collapse": {
                    "$ref": "#/$defs/key"
                },
                "copyBlockEmbed": {
                    "$ref": "#/$defs/key"
                },
                "copyBlockRef": {
                    "$ref": "#/$defs/key"
                },
                "copyHPath": {
                    "$ref": "#/$defs/key"
                },
                "copyID": {
                    "$ref": "#/$defs/key"
                },
                "copyPlainText": {
                    "$ref": "#/$defs/key"
                },
                "copyProtocol": {
                    "$ref": "#/$defs/key"
                },
                "copyProtocolInMd": {
                    "$ref": "#/$defs/key"
                },
                "copyText": {
                    "$ref": "#/$defs/key"
                },
                "duplicate": {
                    "$ref": "#/$defs/key"
                },
                "exitFocus": {
                    "$ref": "#/$defs/key"
                },
                "expand": {
                    "$ref": "#/$defs/key"
                },
                "expandDown": {
                    "$ref": "#/$defs/key"
                },
                "expandUp": {
                    "$ref": "#/$defs/key"
                },
                "fullscreen": {
                    "$ref": "#/$defs/key"
                },
                "graphView": {
                    "$ref": "#/$defs/key"
                },
                "hLayout": {
                    "$ref": "#/$defs/key"
                },
                "insertAfter": {
                    "$ref": "#/$defs/key"
                },
                "insertBefore": {
                    "$ref": "#/$defs/key"
                },
                "insertBottom": {
                    "$ref": "#/$defs/key"
                },
                "insertRight": {
                    "$ref": "#/$defs/key"
                },
                "jumpToParent": {
                    "$ref": "#/$defs/key"
                },
                "jumpToParentNext": {
                    "$ref": "#/$defs/key"
                },
                "jumpToParentPrev": {
                    "$ref": "#/$defs/key"
                },
                "moveToDown": {
                    "$ref": "#/$defs/key"
                },
                "moveToUp": {
                    "$ref": "#/$defs/key"
                },
                "netAssets2LocalAssets": {
                    "$ref": "#/$defs/key"
                },
                "netImg2LocalAsset": {
                    "$ref": "#/$defs/key"
                },
                "newContentFile": {
                    "$ref": "#/$defs/key"
                },
                "newNameFile": {
                    "$ref": "#/$defs/key"
                },
                "newNameSettingFile": {
                    "$ref": "#/$defs/key"
                },
                "openBy": {
                    "$ref": "#/$defs/key"
                },
                "optimizeTypography": {
                    "$ref": "#/$defs/key"
                },
                "outline": {
                    "$ref": "#/$defs/key"
                },
                "preview": {
                    "$ref": "#/$defs/key"
                },
                "quickMakeCard": {
                    "$ref": "#/$defs/key"
                },
                "redo": {
                    "$ref": "#/$defs/key"
                },
                "refPopover": {
                    "$ref": "#/$defs/key"
                },
                "refTab": {
                    "$ref": "#/$defs/key"
                },
                "refresh": {
                    "$ref": "#/$defs/key"
                },
                "rename": {
                    "$ref": "#/$defs/key"
                },
                "showInFolder": {
                    "$ref": "#/$defs/key"
                },
                "spaceRepetition": {
                    "$ref": "#/$defs/key"
                },
                "switchReadonly": {
                    "$ref": "#/$defs/key"
                },
                "undo": {
                    "$ref": "#/$defs/key"
                },
                "vLayout": {
                    "$ref": "#/$defs/key"
                },
                "wysiwyg": {
                    "$ref": "#/$defs/key"
                }
            }
        },
        "keymap_editor_heading": {
            "title": "IKeymapEditorHeading",
            "type": "object",
            "description": "SiYuan editor heading shortcut keys",
            "additionalProperties": false,
            "required": [
                "heading1",
                "heading2",
                "heading3",
                "heading4",
                "heading5",
                "heading6",
                "paragraph"
            ],
            "properties": {
                "heading1": {
                    "$ref": "#/$defs/key"
                },
                "heading2": {
                    "$ref": "#/$defs/key"
                },
                "heading3": {
                    "$ref": "#/$defs/key"
                },
                "heading4": {
                    "$ref": "#/$defs/key"
                },
                "heading5": {
                    "$ref": "#/$defs/key"
                },
                "heading6": {
                    "$ref": "#/$defs/key"
                },
                "paragraph": {
                    "$ref": "#/$defs/key"
                }
            }
        },
        "keymap_editor_insert": {
            "title": "IKeymapEditorInsert",
            "type": "object",
            "description": "SiYuan editor insert shortcut keys",
            "additionalProperties": false,
            "required": [
                "appearance",
                "bold",
                "check",
                "clearInline",
                "code",
                "inline-code",
                "inline-math",
                "italic",
                "kbd",
                "lastUsed",
                "link",
                "mark",
                "memo",
                "ref",
                "strike",
                "sub",
                "sup",
                "table",
                "tag",
                "underline"
            ],
            "properties": {
                "appearance": {
                    "$ref": "#/$defs/key"
                },
                "bold": {
                    "$ref": "#/$defs/key"
                },
                "check": {
                    "$ref": "#/$defs/key"
                },
                "clearInline": {
                    "$ref": "#/$defs/key"
                },
                "code": {
                    "$ref": "#/$defs/key"
                },
                "inline-code": {
                    "$ref": "#/$defs/key"
                },
                "inline-math": {
                    "$ref": "#/$defs/key"
                },
                "italic": {
                    "$ref": "#/$defs/key"
                },
                "kbd": {
                    "$ref": "#/$defs/key"
                },
                "lastUsed": {
                    "$ref": "#/$defs/key"
                },
                "link": {
                    "$ref": "#/$defs/key"
                },
                "mark": {
                    "$ref": "#/$defs/key"
                },
                "memo": {
                    "$ref": "#/$defs/key"
                },
                "ref": {
                    "$ref": "#/$defs/key"
                },
                "strike": {
                    "$ref": "#/$defs/key"
                },
                "sub": {
                    "$ref": "#/$defs/key"
                },
                "sup": {
                    "$ref": "#/$defs/key"
                },
                "table": {
                    "$ref": "#/$defs/key"
                },
                "tag": {
                    "$ref": "#/$defs/key"
                },
                "underline": {
                    "$ref": "#/$defs/key"
                }
            }
        },
        "keymap_editor_list": {
            "title": "IKeymapEditorList",
            "type": "object",
            "description": "SiYuan editor list shortcut keys",
            "additionalProperties": false,
            "required": [
                "checkToggle",
                "indent",
                "outdent"
            ],
            "properties": {
                "checkToggle": {
                    "$ref": "#/$defs/key"
                },
                "indent": {
                    "$ref": "#/$defs/key"
                },
                "outdent": {
                    "$ref": "#/$defs/key"
                }
            }
        },
        "keymap_editor_table": {
            "title": "IKeymapEditorTable",
            "type": "object",
            "description": "SiYuan editor table shortcut keys",
            "additionalProperties": false,
            "required": [
                "delete-column",
                "delete-row",
                "insertColumnLeft",
                "insertColumnRight",
                "insertRowAbove",
                "insertRowBelow",
                "moveToDown",
                "moveToLeft",
                "moveToRight",
                "moveToUp"
            ],
            "properties": {
                "delete-column": {
                    "$ref": "#/$defs/key"
                },
                "delete-row": {
                    "$ref": "#/$defs/key"
                },
                "insertColumnLeft": {
                    "$ref": "#/$defs/key"
                },
                "insertColumnRight": {
                    "$ref": "#/$defs/key"
                },
                "insertRowAbove": {
                    "$ref": "#/$defs/key"
                },
                "insertRowBelow": {
                    "$ref": "#/$defs/key"
                },
                "moveToDown": {
                    "$ref": "#/$defs/key"
                },
                "moveToLeft": {
                    "$ref": "#/$defs/key"
                },
                "moveToRight": {
                    "$ref": "#/$defs/key"
                },
                "moveToUp": {
                    "$ref": "#/$defs/key"
                }
            }
        },
        "keymap_general": {
            "title": "IKeymapGeneral",
            "type": "object",
            "description": "SiYuan general shortcut keys",
            "additionalProperties": false,
            "required": [
                "addToDatabase",
                "backlinks",
                "bookmark",
                "closeAll",
                "closeLeft",
                "closeOthers",
                "closeRight",
                "closeTab",
                "closeUnmodified",
                "commandPanel",
                "config",
                "dailyNote",
                "dataHistory",
                "editReadonly",
                "enter",
                "enterBack",
                "fileTree",
                "globalGraph",
                "globalSearch",
                "goBack",
                "goForward",
                "goToEditTabNext",
                "goToEditTabPrev",
                "goToTab1",
                "goToTab2",
                "goToTab3",
                "goToTab4",
                "goToTab5",
                "goToTab6",
                "goToTab7",
                "goToTab8",
                "goToTab9",
                "goToTabNext",
                "goToTabPrev",
                "graphView",
                "inbox",
                "lockScreen",
                "mainMenu",
                "move",
                "newFile",
                "outline",
                "recentDocs",
                "replace",
                "riffCard",
                "search",
                "selectOpen1",
                "splitLR",
                "splitMoveB",
                "splitMoveR",
                "splitTB",
                "stickSearch",
                "syncNow",
                "tabToWindow",
                "tag",
                "toggleDock",
                "toggleWin"
            ],
            "properties": {
                "addToDatabase": {
                    "$ref": "#/$defs/key"
                },
                "backlinks": {
                    "$ref": "#/$defs/key"
                },
                "bookmark": {
                    "$ref": "#/$defs/key"
                },
                "closeAll": {
                    "$ref": "#/$defs/key"
                },
                "closeLeft": {
                    "$ref": "#/$defs/key"
                },
                "closeOthers": {
                    "$ref": "#/$defs/key"
                },
                "closeRight": {
                    "$ref": "#/$defs/key"
                },
                "closeTab": {
                    "$ref": "#/$defs/key"
                },
                "closeUnmodified": {
                    "$ref": "#/$defs/key"
                },
                "commandPanel": {
                    "$ref": "#/$defs/key"
                },
                "config": {
                    "$ref": "#/$defs/key"
                },
                "dailyNote": {
                    "$ref": "#/$defs/key"
                },
                "dataHistory": {
                    "$ref": "#/$defs/key"
                },
                "editReadonly": {
                    "$ref": "#/$defs/key"
                },
                "enter": {
                    "$ref": "#/$defs/key"
                },
                "enterBack": {
                    "$ref": "#/$defs/key"
                },
                "fileTree": {
                    "$ref": "#/$defs/key"
                },
                "globalGraph": {
                    "$ref": "#/$defs/key"
                },
                "globalSearch": {
                    "$ref": "#/$defs/key"
                },
                "goBack": {
                    "$ref": "#/$defs/key"
                },
                "goForward": {
                    "$ref": "#/$defs/key"
                },
                "goToEditTabNext": {
                    "$ref": "#/$defs/key"
                },
                "goToEditTabPrev": {
                    "$ref": "#/$defs/key"
                },
                "goToTab1": {
                    "$ref": "#/$defs/key"
                },
                "goToTab2": {
                    "$ref": "#/$defs/key"
                },
                "goToTab3": {
                    "$ref": "#/$defs/key"
                },
                "goToTab4": {
                    "$ref": "#/$defs/key"
                },
                "goToTab5": {
                    "$ref": "#/$defs/key"
                },
                "goToTab6": {
                    "$ref": "#/$defs/key"
                },
                "goToTab7": {
                    "$ref": "#/$defs/key"
                },
                "goToTab8": {
                    "$ref": "#/$defs/key"
                },
                "goToTab9": {
                    "$ref": "#/$defs/key"
                },
                "goToTabNext": {
                    "$ref": "#/$defs/key"
                },
                "goToTabPrev": {
                    "$ref": "#/$defs/key"
                },
                "graphView": {
                    "$ref": "#/$defs/key"
                },
                "inbox": {
                    "$ref": "#/$defs/key"
                },
                "lockScreen": {
                    "$ref": "#/$defs/key"
                },
                "mainMenu": {
                    "$ref": "#/$defs/key"
                },
                "move": {
                    "$ref": "#/$defs/key"
                },
                "newFile": {
                    "$ref": "#/$defs/key"
                },
                "outline": {
                    "$ref": "#/$defs/key"
                },
                "recentDocs": {
                    "$ref": "#/$defs/key"
                },
                "replace": {
                    "$ref": "#/$defs/key"
                },
                "riffCard": {
                    "$ref": "#/$defs/key"
                },
                "search": {
                    "$ref": "#/$defs/key"
                },
                "selectOpen1": {
                    "$ref": "#/$defs/key"
                },
                "splitLR": {
                    "$ref": "#/$defs/key"
                },
                "splitMoveB": {
                    "$ref": "#/$defs/key"
                },
                "splitMoveR": {
                    "$ref": "#/$defs/key"
                },
                "splitTB": {
                    "$ref": "#/$defs/key"
                },
                "stickSearch": {
                    "$ref": "#/$defs/key"
                },
                "syncNow": {
                    "$ref": "#/$defs/key"
                },
                "tabToWindow": {
                    "$ref": "#/$defs/key"
                },
                "tag": {
                    "$ref": "#/$defs/key"
                },
                "toggleDock": {
                    "$ref": "#/$defs/key"
                },
                "toggleWin": {
                    "$ref": "#/$defs/key"
                }
            }
        },
        "keymap_plugin": {
            "title": "IKeymapPlugin",
            "type": "object",
            "description": "SiYuan plugin shortcut keys",
            "propertyNames": {
                "type": "string",
                "description": "SiYuan plugin name",
                "minLength": 1
            },
            "additionalProperties": {
                "$ref": "#/$defs/keys"
            }
        },
        "keys": {
            "title": "IKeys",
            "type": "object",
            "description": "SiYuan shortcut keys",
            "propertyNames": {
                "type": "string",
                "minLength": 1
            },
            "additionalProperties": {
                "$ref": "#/$defs/key"
            }
        },
        "key": {
            "title": "IKey",
            "type": "object",
            "description": "SiYuan shortcut key",
            "additionalProperties": false,
            "required": [
                "custom",
                "default"
            ],
            "properties": {
                "custom": {
                    "type": "string",
                    "description": "Custom shortcut key"
                },
                "default": {
                    "type": "string",
                    "description": "Default shortcut key"
                }
            }
        },
        "lang": {
            "title": "ILang",
            "type": "object",
            "description": "Supported language",
            "additionalProperties": false,
            "required": [
                "label",
                "name"
            ],
            "properties": {
                "label": {
                    "type": "string",
                    "description": "Language name",
                    "examples": [
                        "简体中文",
                        "繁体中文",
                        "English"
                    ]
                },
                "name": {
                    "type": "string",
                    "description": "Language identifier",
                    "pattern": "^[a-z]{2}_[A-Z]{2,}$",
                    "examples": [
                        "zh_CN",
                        "zh_CHT",
                        "en_US"
                    ]
                }
            }
        },
        "publish": {
            "title": "IPublish",
            "type": "object",
            "description": "Publish service related configuration",
            "additionalProperties": false,
            "required": [
                "auth",
                "enable",
                "port"
            ],
            "properties": {
                "auth": {
                    "description": "Publish service basic auth configuration",
                    "$ref": "#/$defs/publish_auth"
                },
                "enable": {
                    "type": "boolean",
                    "description": "Whether to enable the publishing service"
                },
                "port": {
                    "type": "integer",
                    "description": "The port used by the publishing service"
                }
            }
        },
        "publish_auth": {
            "title": "IPublishAuth",
            "type": "object",
            "description": "Publish service basic auth related configuration",
            "additionalProperties": false,
            "required": [
                "accounts",
                "enable"
            ],
            "properties": {
                "accounts": {
                    "type": "array",
                    "description": "Publish service Basic authentication username/password list",
                    "items": {
                        "$ref": "#/$defs/publish_auth_account"
                    }
                },
                "enable": {
                    "type": "boolean",
                    "description": "Whether to enable publishing service basic authentication"
                }
            }
        },
        "publish_auth_account": {
            "title": "IPublishAuthAccount",
            "type": "object",
            "description": "Publish service basic auth account",
            "additionalProperties": false,
            "required": [
                "memo",
                "password",
                "username"
            ],
            "properties": {
                "memo": {
                    "type": "string",
                    "description": "Remarks information"
                },
                "password": {
                    "type": "string",
                    "description": "Basic authentication password"
                },
                "username": {
                    "type": "string",
                    "description": "Basic authentication username"
                }
            }
        },
        "repo": {
            "title": "IRepo",
            "type": "object",
            "description": "Snapshot repository related configuration",
            "additionalProperties": false,
            "required": [
                "key",
                "syncIndexTiming"
            ],
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Snapshot encryption key (base64 encoded 256-bit key)",
                    "pattern": "^[A-Za-z0-9+/]{43}=$"
                },
                "syncIndexTiming": {
                    "type": "integer",
                    "description": "Synchronous index timing, if it exceeds this time, the user is prompted that the index performance is degraded (unit: milliseconds)"
                }
            }
        },
        "search": {
            "title": "ISearch",
            "type": "object",
            "description": "SiYuan search related configuration",
            "additionalProperties": false,
            "required": [
                "alias",
                "audioBlock",
                "backlinkMentionAlias",
                "backlinkMentionAnchor",
                "backlinkMentionDoc",
                "backlinkMentionKeywordsLimit",
                "backlinkMentionName",
                "blockquote",
                "caseSensitive",
                "codeBlock",
                "databaseBlock",
                "document",
                "embedBlock",
                "heading",
                "htmlBlock",
                "ial",
                "iframeBlock",
                "indexAssetPath",
                "limit",
                "list",
                "listItem",
                "mathBlock",
                "memo",
                "name",
                "paragraph",
                "superBlock",
                "table",
                "videoBlock",
                "virtualRefAlias",
                "virtualRefAnchor",
                "virtualRefDoc",
                "virtualRefName",
                "widgetBlock"
            ],
            "properties": {
                "alias": {
                    "type": "boolean",
                    "description": "Whether to search in block aliases"
                },
                "audioBlock": {
                    "type": "boolean",
                    "description": "Whether to search in audio blocks"
                },
                "backlinkMentionAlias": {
                    "type": "boolean",
                    "description": "Extract backlink mention keywords from block aliases"
                },
                "backlinkMentionAnchor": {
                    "type": "boolean",
                    "description": "Extract backlink mention keywords from block reference anchor text"
                },
                "backlinkMentionDoc": {
                    "type": "boolean",
                    "description": "Extract backlink mention keywords from document names"
                },
                "backlinkMentionKeywordsLimit": {
                    "type": "integer",
                    "description": "Maximum number of backlink mention keywords"
                },
                "backlinkMentionName": {
                    "type": "boolean",
                    "description": "Extract backlink mention keywords from block names"
                },
                "blockquote": {
                    "type": "boolean",
                    "description": "Whether to search quote blocks"
                },
                "caseSensitive": {
                    "type": "boolean",
                    "description": "Whether to distinguish between uppercase and lowercase letters when searching"
                },
                "codeBlock": {
                    "type": "boolean",
                    "description": "Whether to search code blocks"
                },
                "databaseBlock": {
                    "type": "boolean",
                    "description": "Whether to search database blocks"
                },
                "document": {
                    "type": "boolean",
                    "description": "Whether to search document blocks"
                },
                "embedBlock": {
                    "type": "boolean",
                    "description": "Whether to search embedded blocks"
                },
                "heading": {
                    "type": "boolean",
                    "description": "Whether to search heading blocks"
                },
                "htmlBlock": {
                    "type": "boolean",
                    "description": "Whether to search HTML blocks"
                },
                "ial": {
                    "type": "boolean",
                    "description": "Whether to search block attributes"
                },
                "iframeBlock": {
                    "type": "boolean",
                    "description": "Whether to search in iframe blocks"
                },
                "indexAssetPath": {
                    "type": "boolean",
                    "description": "Whether to search resource file paths"
                },
                "limit": {
                    "type": "integer",
                    "description": "Number of search results displayed"
                },
                "list": {
                    "type": "boolean",
                    "description": "Whether to search list blocks"
                },
                "listItem": {
                    "type": "boolean",
                    "description": "Whether to search list items"
                },
                "mathBlock": {
                    "type": "boolean",
                    "description": "Whether to search formula blocks"
                },
                "memo": {
                    "type": "boolean",
                    "description": "Whether to search block notes"
                },
                "name": {
                    "type": "boolean",
                    "description": "Whether to search block names"
                },
                "paragraph": {
                    "type": "boolean",
                    "description": "Whether to search paragraph blocks"
                },
                "superBlock": {
                    "type": "boolean",
                    "description": "Whether to search super blocks"
                },
                "table": {
                    "type": "boolean",
                    "description": "Whether to search table blocks"
                },
                "videoBlock": {
                    "type": "boolean",
                    "description": "Whether to search in video blocks"
                },
                "virtualRefAlias": {
                    "type": "boolean",
                    "description": "Whether to get virtual reference keywords from block aliases"
                },
                "virtualRefAnchor": {
                    "type": "boolean",
                    "description": "Whether to get virtual reference keywords from block reference anchor text"
                },
                "virtualRefDoc": {
                    "type": "boolean",
                    "description": "Whether to get virtual reference keywords from document names"
                },
                "virtualRefName": {
                    "type": "boolean",
                    "description": "Whether to get virtual reference keywords from block names"
                },
                "widgetBlock": {
                    "type": "boolean",
                    "description": "Whether to search in widget blocks"
                }
            }
        },
        "snippet": {
            "title": "ISnippet",
            "type": "object",
            "description": "SiYuan code snippets related configuration",
            "additionalProperties": false,
            "required": [
                "enabledCSS",
                "enabledJS"
            ],
            "properties": {
                "enabledCSS": {
                    "type": "boolean",
                    "description": "Whether to enable CSS code snippets"
                },
                "enabledJS": {
                    "type": "boolean",
                    "description": "Whether to enable JavaScript code snippets"
                }
            }
        },
        "stat": {
            "title": "IStat",
            "type": "object",
            "description": "SiYuan workspace content statistics",
            "additionalProperties": false,
            "required": [
                "assetsSize",
                "blockCount",
                "cAssetsSize",
                "cBlockCount",
                "cDataSize",
                "cTreeCount",
                "dataSize",
                "treeCount"
            ],
            "properties": {
                "assetsSize": {
                    "type": "integer",
                    "description": "Asset file size (unit: bytes)"
                },
                "blockCount": {
                    "type": "integer",
                    "description": "Number of content blocks"
                },
                "cAssetsSize": {
                    "type": "integer",
                    "description": "Size of resource files after chunk encryption (unit: bytes)"
                },
                "cBlockCount": {
                    "type": "integer",
                    "description": "Number of content blocks after chunk encryption"
                },
                "cDataSize": {
                    "type": "integer",
                    "description": "Size of the data directory after chunk encryption (unit: bytes)"
                },
                "cTreeCount": {
                    "type": "integer",
                    "description": "Number of content block trees after chunk encryption (number of documents)"
                },
                "dataSize": {
                    "type": "integer",
                    "description": "Data directory size (unit: bytes)"
                },
                "treeCount": {
                    "type": "integer",
                    "description": "Number of content block trees (number of documents)"
                }
            }
        },
        "sync": {
            "title": "ISync",
            "type": "object",
            "description": "SiYuan synchronization related configuration",
            "additionalProperties": false,
            "required": [
                "cloudName",
                "enabled",
                "generateConflictDoc",
                "mode",
                "perception",
                "provider",
                "s3",
                "stat",
                "synced",
                "webdav"
            ],
            "properties": {
                "cloudName": {
                    "type": "string",
                    "description": "Cloud workspace name"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to enable synchronization"
                },
                "generateConflictDoc": {
                    "type": "boolean",
                    "description": "Whether to create a conflict document when a conflict occurs during synchronization"
                },
                "mode": {
                    "type": "integer",
                    "description": "Synchronization mode\n- `0`: Not set\n- `1`: Automatic synchronization\n- `2`: Manual synchronization\n- `3`: Completely manual synchronization",
                    "enum": [
                        0,
                        1,
                        2,
                        3
                    ]
                },
                "perception": {
                    "type": "boolean",
                    "description": "Whether to enable synchronization perception"
                },
                "provider": {
                    "type": "integer",
                    "description": "Cloud storage service provider\n- `0`: SiYuan official cloud storage service\n- `2`: Object storage service compatible with S3 protocol\n- `3`: Network storage service using WebDAV protocol",
                    "enum": [
                        0,
                        2,
                        3
                    ]
                },
                "s3": {
                    "$ref": "#/$defs/sync_s3"
                },
                "stat": {
                    "type": "string",
                    "description": "The prompt information of the last synchronization"
                },
                "synced": {
                    "type": "integer",
                    "description": "The time of the last synchronization (Unix timestamp)",
                    "examples": [
                        1700000000000
                    ]
                },
                "webdav": {
                    "$ref": "#/$defs/sync_webdav"
                }
            }
        },
        "sync_s3": {
            "title": "ISyncS3",
            "type": "object",
            "description": "S3 compatible object storage related configuration",
            "additionalProperties": false,
            "required": [
                "accessKey",
                "bucket",
                "endpoint",
                "pathStyle",
                "region",
                "secretKey",
                "skipTlsVerify",
                "timeout"
            ],
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "Access key"
                },
                "bucket": {
                    "type": "string",
                    "description": "Bucket name"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Service endpoint address"
                },
                "pathStyle": {
                    "type": "boolean",
                    "description": "Whether to use path-style URLs"
                },
                "region": {
                    "type": "string",
                    "description": "Storage region"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Security key"
                },
                "skipTlsVerify": {
                    "type": "boolean",
                    "description": "Whether to skip TLS verification"
                },
                "timeout": {
                    "type": "integer",
                    "description": "Timeout (unit: seconds)"
                }
            }
        },
        "sync_webdav": {
            "title": "ISyncWebDAV",
            "type": "object",
            "description": "WebDAV related configuration",
            "additionalProperties": false,
            "required": [
                "endpoint",
                "username",
                "password",
                "skipTlsVerify",
                "timeout"
            ],
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "Service endpoint",
                    "format": "uri",
                    "examples": [
                        "https://webdav.example.com/siyuan/"
                    ]
                },
                "password": {
                    "type": "string",
                    "description": "Password"
                },
                "skipTlsVerify": {
                    "type": "boolean",
                    "description": "Whether to skip TLS verification"
                },
                "timeout": {
                    "type": "integer",
                    "description": "Timeout (unit: seconds)"
                },
                "username": {
                    "type": "string",
                    "description": "Username"
                }
            }
        },
        "system": {
            "title": "ISystem",
            "type": "object",
            "description": "System related information",
            "additionalProperties": false,
            "required": [
                "appDir",
                "autoLaunch2",
                "confDir",
                "container",
                "dataDir",
                "disableGoogleAnalytics",
                "downloadInstallPkg",
                "homeDir",
                "id",
                "isInsider",
                "isMicrosoftStore",
                "kernelVersion",
                "lockScreenMode",
                "name",
                "networkProxy",
                "networkServe",
                "os",
                "osPlatform",
                "uploadErrLog",
                "workspaceDir"
            ],
            "properties": {
                "appDir": {
                    "type": "string",
                    "description": "The absolute path of the `resources` directory under the SiYuan installation directory"
                },
                "autoLaunch2": {
                    "type": "integer",
                    "description": "Boot automatically mode\n- `0`: Close automatically start\n- `1`: Auto start\n- `2`: Silent auto start",
                    "enum": [
                        0,
                        1,
                        2
                    ]
                },
                "confDir": {
                    "type": "string",
                    "description": "The absolute path of the `conf` directory of the current workspace"
                },
                "container": {
                    "type": "string",
                    "title": "TSystemContainer",
                    "description": "Kernel operating environment\n- `docker`: Docker container\n- `android`: Android device\n- `ios`: iOS device\n- `std`: Desktop Electron environment",
                    "enum": [
                        "docker",
                        "android",
                        "ios",
                        "std"
                    ]
                },
                "dataDir": {
                    "type": "string",
                    "description": "The absolute path of the `data` directory of the current workspace"
                },
                "disableGoogleAnalytics": {
                    "type": "boolean",
                    "description": "Whether to disable Google Analytics"
                },
                "downloadInstallPkg": {
                    "type": "boolean",
                    "description": "Whether to automatically download the installation package for the new version"
                },
                "homeDir": {
                    "type": "string",
                    "description": "The absolute path of the user's home directory for the current operating system user"
                },
                "id": {
                    "type": "string",
                    "description": "The UUID of the current session",
                    "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
                },
                "isInsider": {
                    "type": "boolean",
                    "description": "Whether the current version is an internal test version"
                },
                "isMicrosoftStore": {
                    "type": "boolean",
                    "description": "Whether the current version is a Microsoft Store version"
                },
                "kernelVersion": {
                    "type": "string",
                    "description": "Kernel version number",
                    "pattern": "^\\d+\\.\\d+\\.\\d+$"
                },
                "lockScreenMode": {
                    "type": "integer",
                    "description": "Lock screen mode\n- `0`: Manual\n- `1`: Manual + Follow the operating system",
                    "enum": [
                        0,
                        1
                    ]
                },
                "name": {
                    "type": "string",
                    "description": "The name of the current device"
                },
                "networkProxy": {
                    "$ref": "#/$defs/system_networkProxy"
                },
                "networkServe": {
                    "type": "boolean",
                    "description": "Whether to enable network serve (whether to allow connections from other devices)"
                },
                "os": {
                    "type": "string",
                    "title": "TSystemOS",
                    "description": "The operating system name determined at compile time\n(obtained using the command `go tool dist list`)\n- `android`: Android\n- `darwin`: macOS\n- `ios`: iOS\n- `linux`: Linux\n- `windows`: Windows",
                    "enum": [
                        "android",
                        "darwin",
                        "ios",
                        "linux",
                        "windows"
                    ]
                },
                "osPlatform": {
                    "type": "string",
                    "description": "Operating system platform name"
                },
                "uploadErrLog": {
                    "type": "boolean",
                    "description": "Whether to upload error logs"
                },
                "workspaceDir": {
                    "type": "string",
                    "description": "The absolute path of the workspace directory"
                }
            }
        },
        "system_networkProxy": {
            "title": "INetworkProxy",
            "type": "object",
            "description": "SiYuan Network proxy configuration",
            "additionalProperties": false,
            "required": [
                "host",
                "port",
                "scheme"
            ],
            "properties": {
                "host": {
                    "type": "string",
                    "description": "Host name or host address"
                },
                "port": {
                    "type": "string",
                    "description": "Proxy server port number",
                    "pattern": "^\\d+$"
                },
                "scheme": {
                    "type": "string",
                    "title": "TSystemNetworkProxyScheme",
                    "description": "The protocol used by the proxy server\n- Empty String: Use the system proxy settings\n- `http`: HTTP\n- `https`: HTTPS\n- `socks5`: SOCKS5",
                    "enum": [
                        "",
                        "http",
                        "https",
                        "socks5"
                    ]
                }
            }
        },
        "tag": {
            "title": "ITag",
            "type": "object",
            "description": "SiYuan tag dock related configuration",
            "additionalProperties": false,
            "required": [
                "sort"
            ],
            "properties": {
                "sort": {
                    "type": "integer",
                    "description": "Tag sorting scheme\n- `0`: Name alphabetically ascending\n- `1`: Name alphabetically descending\n- `4`: Name natural ascending\n- `5`: Name natural descending\n- `7`: Reference count ascending\n- `8`: Reference count descending",
                    "default": 4,
                    "enum": [
                        0,
                        1,
                        4,
                        5,
                        7,
                        8
                    ]
                }
            }
        },
        "uiLayout": {
            "title": "IUILayout",
            "type": "object",
            "description": "SiYuan UI layout related configuration",
            "additionalProperties": false,
            "required": [
                "bottom",
                "hideDock",
                "layout",
                "left",
                "right"
            ],
            "properties": {
                "bottom": {
                    "$ref": "#/$defs/uiLayout_dock"
                },
                "hideDock": {
                    "type": "boolean",
                    "description": "Whether to hide the sidebar"
                },
                "layout": {
                    "$ref": "#/$defs/uiLayout_layout"
                },
                "left": {
                    "$ref": "#/$defs/uiLayout_dock"
                },
                "right": {
                    "$ref": "#/$defs/uiLayout_dock"
                }
            }
        },
        "uiLayout_layout": {
            "title": "IUILayoutLayout",
            "type": "object",
            "description": "SiYuan panel layout",
            "additionalProperties": false,
            "required": [
                "children",
                "instance"
            ],
            "properties": {
                "children": {
                    "type": "array",
                    "title": "IUILayoutLayoutChildren",
                    "description": "Internal elements",
                    "items": {
                        "title": "IUILayoutLayoutChild",
                        "oneOf": [
                            {
                                "$ref": "#/$defs/uiLayout_layout"
                            },
                            {
                                "$ref": "#/$defs/uiLayout_wnd"
                            }
                        ]
                    }
                },
                "direction": {
                    "type": "string",
                    "title": "TUiLayoutDirection",
                    "description": "Panel content layout direction\n- `tb`: Top and bottom layout\n- `lr`: Left and right layout",
                    "enum": [
                        "tb",
                        "lr"
                    ]
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutInstanceLayout",
                    "description": "Object name",
                    "const": "Layout"
                },
                "type": {
                    "type": "string",
                    "title": "TUiLayoutType",
                    "description": "Layout type\n- `normal`: Normal panel\n- `center`: Center panel\n- `top`: Top panel\n- `bottom`: Bottom panel\n- `left`: Left panel\n- `right`: Right panel",
                    "enum": [
                        "normal",
                        "center",
                        "top",
                        "bottom",
                        "left",
                        "right"
                    ]
                },
                "size": {
                    "type": "string",
                    "description": "Panel size",
                    "examples": [
                        "auto",
                        "128px"
                    ]
                },
                "resize": {
                    "type": "string",
                    "title": "TUiLayoutDirection",
                    "description": "The direction in which the size can be adjusted\n- `tb`: Can adjust the size up and down\n- `lr`: Can adjust the size left and right",
                    "enum": [
                        "tb",
                        "lr"
                    ]
                }
            }
        },
        "uiLayout_wnd": {
            "title": "IUILayoutWnd",
            "type": "object",
            "description": "SiYuan window layout",
            "additionalProperties": false,
            "required": [
                "children",
                "instance"
            ],
            "properties": {
                "children": {
                    "type": "array",
                    "description": "Internal elements",
                    "items": {
                        "$ref": "#/$defs/uiLayout_tab"
                    }
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutWndInstance",
                    "description": "Object name",
                    "const": "Wnd"
                },
                "height": {
                    "type": "string",
                    "description": "Panel height",
                    "examples": [
                        "128px"
                    ]
                },
                "width": {
                    "type": "string",
                    "description": "Panel width",
                    "examples": [
                        "128px"
                    ]
                },
                "resize": {
                    "type": "string",
                    "title": "TUiLayoutDirection",
                    "description": "The direction in which the size can be adjusted\n- `tb`: Can adjust the size up and down\n- `lr`: Can adjust the size left and right",
                    "enum": [
                        "tb",
                        "lr"
                    ]
                }
            }
        },
        "uiLayout_tab": {
            "title": "IUILayoutTab",
            "type": "object",
            "description": "SiYuan tab",
            "additionalProperties": false,
            "required": [
                "active",
                "children",
                "instance",
                "pin",
                "title"
            ],
            "properties": {
                "active": {
                    "type": "boolean",
                    "description": "Whether the tab is active"
                },
                "children": {
                    "title": "IUILayoutTabContent",
                    "description": "Tab content",
                    "oneOf": [
                        {
                            "$ref": "#/$defs/uiLayout_tab_editor"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_asset"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_custom"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_backlink"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_bookmark"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_files"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_graph"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_outline"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_tag"
                        },
                        {
                            "$ref": "#/$defs/uiLayout_tab_search"
                        }
                    ]
                },
                "docIcon": {
                    "type": "string",
                    "description": "Tab icon",
                    "examples": [
                        "1f4a1",
                        "folder/icon.png",
                        "iconCode"
                    ]
                },
                "icon": {
                    "type": "string",
                    "description": "Icon reference ID",
                    "examples": [
                        "iconCode"
                    ]
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutInstance",
                    "description": "Object name",
                    "const": "Tab"
                },
                "lang": {
                    "type": "string",
                    "description": "Localization field key name"
                },
                "pin": {
                    "type": "boolean",
                    "description": "Whether the tab is pinned"
                },
                "title": {
                    "type": "string",
                    "description": "Tab title"
                }
            }
        },
        "uiLayout_tab_editor": {
            "title": "IUILayoutTabEditor",
            "type": "object",
            "description": "SiYuan editor tab",
            "additionalProperties": false,
            "required": [
                "blockId",
                "instance",
                "mode",
                "notebookId",
                "rootId"
            ],
            "properties": {
                "action": {
                    "type": "string",
                    "description": "(Editor) Actions to be performed after the tab is loaded",
                    "examples": [
                        "cb-get-scroll"
                    ]
                },
                "blockId": {
                    "type": "string",
                    "description": "(Editor) Block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Editor"
                },
                "mode": {
                    "type": "string",
                    "title": "TUiLayoutTabEditorMode",
                    "description": "(Editor) Editor mode\n- `wysiwyg`: WYSIWYG mode\n- `preview`: Export preview mode",
                    "enum": [
                        "wysiwyg",
                        "preview"
                    ]
                },
                "notebookId": {
                    "type": "string",
                    "description": "(Editor) Notebook ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "rootId": {
                    "type": "string",
                    "description": "(Editor) Document block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                }
            }
        },
        "uiLayout_tab_asset": {
            "title": "IUILayoutTabAsset",
            "type": "object",
            "description": "SiYuan asset file tab",
            "additionalProperties": false,
            "required": [
                "instance",
                "path"
            ],
            "properties": {
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Asset"
                },
                "path": {
                    "type": "string",
                    "description": "(Asset) Asset reference path",
                    "examples": [
                        "assets/filename-20210604092205-djd749a.png"
                    ]
                },
                "page": {
                    "type": "integer",
                    "description": "(Asset) PDF file page number"
                }
            }
        },
        "uiLayout_tab_custom": {
            "title": "IUILayoutTabCustom",
            "type": "object",
            "description": "SiYuan custom tab",
            "additionalProperties": false,
            "required": [
                "customModelData",
                "customModelType",
                "instance"
            ],
            "properties": {
                "customModelData": {
                    "description": "(Custom) Data of the custom tab"
                },
                "customModelType": {
                    "type": "string",
                    "description": "(Custom) Type of the custom tab"
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Custom"
                }
            }
        },
        "uiLayout_tab_backlink": {
            "title": "IUILayoutTabBacklink",
            "type": "object",
            "description": "SiYuan back link tab",
            "additionalProperties": false,
            "required": [
                "blockId",
                "instance",
                "rootId",
                "type"
            ],
            "properties": {
                "blockId": {
                    "type": "string",
                    "description": "(Backlink) Block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Backlink"
                },
                "rootId": {
                    "type": "string",
                    "description": "(Backlink) Document block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "type": {
                    "type": "string",
                    "title": "TUILayoutTabBacklinkType",
                    "description": "(Backlink) Tab type\n- `pin`: Pinned backlink panel\n- `local`: The backlink panel of the current editor",
                    "enum": [
                        "pin",
                        "local"
                    ]
                }
            }
        },
        "uiLayout_tab_bookmark": {
            "title": "IUILayoutTabBookmark",
            "type": "object",
            "description": "SiYuan bookmark tab",
            "additionalProperties": false,
            "required": [
                "instance"
            ],
            "properties": {
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Bookmark"
                }
            }
        },
        "uiLayout_tab_files": {
            "title": "IUILayoutTabFiles",
            "type": "object",
            "description": "SiYuan filetree tab",
            "additionalProperties": false,
            "required": [
                "instance"
            ],
            "properties": {
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Files"
                }
            }
        },
        "uiLayout_tab_graph": {
            "title": "IUILayoutTabGraph",
            "type": "object",
            "description": "SiYuan graph tab",
            "additionalProperties": false,
            "required": [
                "blockId",
                "instance",
                "rootId",
                "type"
            ],
            "properties": {
                "blockId": {
                    "type": "string",
                    "description": "(Graph) Block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Graph"
                },
                "rootId": {
                    "type": "string",
                    "description": "(Graph) Document block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "type": {
                    "type": "string",
                    "title": "TUILayoutTabGraphType",
                    "description": "(Graph) Tab type\n- `pin`: Pinned graph\n- `local`: Graph of the current editor\n- `global`: Global graph",
                    "enum": [
                        "pin",
                        "local",
                        "global"
                    ]
                }
            }
        },
        "uiLayout_tab_outline": {
            "title": "IUILayoutTabOutline",
            "type": "object",
            "description": "SiYuan outline tab",
            "additionalProperties": false,
            "required": [
                "blockId",
                "instance",
                "isPreview",
                "type"
            ],
            "properties": {
                "blockId": {
                    "type": "string",
                    "description": "(Outline) Block ID",
                    "pattern": "^\\d{14}-[0-9a-z]{7}$"
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Outline"
                },
                "isPreview": {
                    "type": "boolean",
                    "description": "(Outline) Whether the associated editor is in preview mode"
                },
                "type": {
                    "type": "string",
                    "title": "TUILayoutTabOutlineType",
                    "description": "(Outline) Tab type\n- `pin`: Pinned outline panel\n- `local`: The outline panel of the current editor",
                    "enum": [
                        "pin",
                        "local"
                    ]
                }
            }
        },
        "uiLayout_tab_tag": {
            "title": "IUILayoutTabTag",
            "type": "object",
            "description": "SiYuan tag tab",
            "additionalProperties": false,
            "required": [
                "instance"
            ],
            "properties": {
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Tag"
                }
            }
        },
        "uiLayout_tab_search": {
            "title": "IUILayoutTabSearch",
            "type": "object",
            "description": "SiYuan search tab",
            "additionalProperties": false,
            "required": [
                "config",
                "instance"
            ],
            "properties": {
                "config": {
                    "$ref": "#/$defs/uiLayout_tab_search_config"
                },
                "instance": {
                    "type": "string",
                    "title": "TUiLayoutTabContentInstance",
                    "description": "Object name",
                    "const": "Search"
                }
            }
        },
        "uiLayout_tab_search_config": {
            "title": "IUILayoutTabSearchConfig",
            "type": "object",
            "description": "SiYuan search tab configuration",
            "additionalProperties": false,
            "required": [
                "group",
                "hPath",
                "hasReplace",
                "idPath",
                "k",
                "method",
                "page",
                "r",
                "replaceTypes",
                "sort",
                "types"
            ],
            "properties": {
                "group": {
                    "type": "integer",
                    "description": "Grouping strategy\n- `0`: No grouping\n- `1`: Group by document",
                    "enum": [
                        0,
                        1
                    ]
                },
                "hPath": {
                    "type": "string",
                    "description": "Readable path list"
                },
                "hasReplace": {},
                "idPath": {
                    "type": "array",
                    "description": "Search in the specified paths",
                    "items": {
                        "type": "string",
                        "pattern": "^(\\d{14}-[0-9a-z]{7})((/\\d{14}-[0-9a-z]{7})+(?:\\.sy)?)?$",
                        "examples": [
                            "20210808180117-czj9bvb",
                            "20210808180117-czj9bvb/20200812220555-lj3enxa",
                            "20210808180117-czj9bvb/20200812220555-lj3enxa.sy"
                        ]
                    }
                },
                "k": {
                    "type": "string",
                    "description": "Search content"
                },
                "method": {
                    "type": "integer",
                    "description": "Search scheme\n- `0`: Keyword (default)\n- `1`: Query syntax\n- `2`: SQL\n- `3`: Regular expression\n@defaultValue 0",
                    "enum": [
                        0,
                        1,
                        2,
                        3
                    ],
                    "default": 0
                },
                "name": {
                    "type": "string",
                    "description": "Custom name of the query condition group"
                },
                "page": {
                    "type": "integer",
                    "description": "Current page number"
                },
                "r": {
                    "type": "string",
                    "description": "Replace content"
                },
                "removed": {
                    "type": "boolean",
                    "description": "Whether to clear the search box after removing the currently used query condition group"
                },
                "replaceTypes": {
                    "$ref": "#/$defs/uiLayout_tab_search_config_replaceTypes"
                },
                "sort": {
                    "type": "integer",
                    "description": "Search result sorting scheme\n- `0`: Block type (default)\n- `1`: Ascending by creation time\n- `2`: Descending by creation time\n- `3`: Ascending by update time\n- `4`: Descending by update time\n- `5`: By content order (only valid when grouping by document)\n- `6`: Ascending by relevance\n- `7`: Descending by relevance\n@defaultValue 0",
                    "enum": [
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7
                    ],
                    "default": 0
                },
                "types": {
                    "$ref": "#/$defs/uiLayout_tab_search_config_types"
                }
            }
        },
        "uiLayout_tab_search_config_replaceTypes": {
            "title": "IUILayoutTabSearchConfigReplaceTypes",
            "description": "Replace type filtering",
            "type": "object",
            "additionalProperties": false,
            "required": [],
            "properties": {
                "aHref": {
                    "type": "boolean",
                    "description": "Replace hyperlinks\n@defaultValue false",
                    "default": false
                },
                "aText": {
                    "type": "boolean",
                    "description": "Replace hyperlink anchor text\n@defaultValue true",
                    "default": true
                },
                "aTitle": {
                    "type": "boolean",
                    "description": "Replace hyperlink title\n@defaultValue true",
                    "default": true
                },
                "code": {
                    "type": "boolean",
                    "description": "Replace inline code\n@defaultValue false",
                    "default": false
                },
                "codeBlock": {
                    "type": "boolean",
                    "description": "Replace code blocks\n@defaultValue false",
                    "default": false
                },
                "docTitle": {
                    "type": "boolean",
                    "description": "Replace document title\n@defaultValue true",
                    "default": true
                },
                "em": {
                    "type": "boolean",
                    "description": "Replace italic elements\n@defaultValue true",
                    "default": true
                },
                "htmlBlock": {
                    "type": "boolean",
                    "description": "Replace HTML blocks\n@defaultValue false",
                    "default": false
                },
                "imgSrc": {
                    "type": "boolean",
                    "description": "Replace image addresses\n@defaultValue false",
                    "default": false
                },
                "imgText": {
                    "type": "boolean",
                    "description": "Replace image anchor text\n@defaultValue true",
                    "default": true
                },
                "imgTitle": {
                    "type": "boolean",
                    "description": "Replace image titles\n@defaultValue true",
                    "default": true
                },
                "inlineMath": {
                    "type": "boolean",
                    "description": "Replace inline formulas\n@defaultValue false",
                    "default": false
                },
                "inlineMemo": {
                    "type": "boolean",
                    "description": "Replace inline memos\n@defaultValue true",
                    "default": true
                },
                "kbd": {
                    "type": "boolean",
                    "description": "Replace kdb elements\n@defaultValue true",
                    "default": true
                },
                "mark": {
                    "type": "boolean",
                    "description": "Replace mark elements\n@defaultValue true",
                    "default": true
                },
                "mathBlock": {
                    "type": "boolean",
                    "description": "Replace formula blocks\n@defaultValue false",
                    "default": false
                },
                "s": {
                    "type": "boolean",
                    "description": "Replace delete elements\n@defaultValue true",
                    "default": true
                },
                "strong": {
                    "type": "boolean",
                    "description": "Replace bold elements\n@defaultValue true",
                    "default": true
                },
                "sub": {
                    "type": "boolean",
                    "description": "Replace subscript elements\n@defaultValue true",
                    "default": true
                },
                "sup": {
                    "type": "boolean",
                    "description": "Replace superscript elements\n@defaultValue true",
                    "default": true
                },
                "tag": {
                    "type": "boolean",
                    "description": "Replace tag elements\n@defaultValue true",
                    "default": true
                },
                "text": {
                    "type": "boolean",
                    "description": "Replace rich text elements\n@defaultValue true",
                    "default": true
                },
                "u": {
                    "type": "boolean",
                    "description": "Replace underline elements\n@defaultValue true",
                    "default": true
                }
            }
        },
        "uiLayout_tab_search_config_types": {
            "title": "IUILayoutTabSearchConfigTypes",
            "description": "Search type filtering",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "blockquote",
                "codeBlock",
                "databaseBlock",
                "document",
                "embedBlock",
                "heading",
                "htmlBlock",
                "list",
                "listItem",
                "mathBlock",
                "paragraph",
                "superBlock",
                "table"
            ],
            "properties": {
                "audioBlock": {
                    "type": "boolean",
                    "description": "Search results contain audio blocks\n@defaultValue false",
                    "default": false
                },
                "blockquote": {
                    "type": "boolean",
                    "description": "Search results contain blockquote blocks\n@defaultValue false",
                    "default": false
                },
                "codeBlock": {
                    "type": "boolean",
                    "description": "Search results contain code blocks\n@defaultValue false",
                    "default": false
                },
                "databaseBlock": {
                    "type": "boolean",
                    "description": "Search results contain database blocks\n@defaultValue false",
                    "default": false
                },
                "document": {
                    "type": "boolean",
                    "description": "Search results contain document blocks\n@defaultValue false",
                    "default": false
                },
                "embedBlock": {
                    "type": "boolean",
                    "description": "Search results contain embed blocks\n@defaultValue false",
                    "default": false
                },
                "heading": {
                    "type": "boolean",
                    "description": "Search results contain heading blocks\n@defaultValue false",
                    "default": false
                },
                "htmlBlock": {
                    "type": "boolean",
                    "description": "Search results contain html blocks\n@defaultValue false",
                    "default": false
                },
                "iframeBlock": {
                    "type": "boolean",
                    "description": "Search results contain iframe blocks\n@defaultValue false",
                    "default": false
                },
                "list": {
                    "type": "boolean",
                    "description": "Search results contain list blocks\n@defaultValue false",
                    "default": false
                },
                "listItem": {
                    "type": "boolean",
                    "description": "Search results contain list item blocks\n@defaultValue false",
                    "default": false
                },
                "mathBlock": {
                    "type": "boolean",
                    "description": "Search results contain math blocks\n@defaultValue false",
                    "default": false
                },
                "paragraph": {
                    "type": "boolean",
                    "description": "Search results contain paragraph blocks\n@defaultValue false",
                    "default": false
                },
                "superBlock": {
                    "type": "boolean",
                    "description": "Search results contain super blocks\n@defaultValue false",
                    "default": false
                },
                "table": {
                    "type": "boolean",
                    "description": "Search results contain table blocks\n@defaultValue false",
                    "default": false
                },
                "videoBlock": {
                    "type": "boolean",
                    "description": "Search results contain video blocks\n@defaultValue false",
                    "default": false
                },
                "widgetBlock": {
                    "type": "boolean",
                    "description": "Search results contain widget blocks\n@defaultValue false",
                    "default": false
                }
            }
        },
        "uiLayout_dock": {
            "title": "IUILayoutDock",
            "type": "object",
            "description": "SiYuan dock related configuration",
            "additionalProperties": false,
            "required": [
                "data",
                "pin"
            ],
            "properties": {
                "data": {
                    "type": "array",
                    "description": "Dock area list",
                    "items": {
                        "type": "array",
                        "items": {
                            "$ref": "#/$defs/uiLayout_dock_tab"
                        }
                    }
                },
                "pin": {
                    "type": "boolean",
                    "description": "Whether to pin the dock"
                }
            }
        },
        "uiLayout_dock_tab": {
            "title": "IUILayoutDockTab",
            "type": "object",
            "description": "SiYuan dock tab data",
            "additionalProperties": false,
            "required": [
                "hotkey",
                "icon",
                "show",
                "size",
                "title",
                "type"
            ],
            "properties": {
                "hotkey": {
                    "type": "string",
                    "description": "Dock tab hotkey",
                    "examples": [
                        "",
                        "⌥2"
                    ]
                },
                "hotkeyLangId": {
                    "type": "string",
                    "description": "Hotkey description ID"
                },
                "icon": {
                    "type": "string",
                    "description": "Tab icon ID"
                },
                "show": {
                    "type": "boolean",
                    "description": "Whether to display the tab"
                },
                "size": {
                    "$ref": "#/$defs/uiLayout_dock_tab_size"
                },
                "title": {
                    "type": "string",
                    "description": "Tab title"
                },
                "type": {
                    "type": "string",
                    "description": "Tab type"
                }
            }
        },
        "uiLayout_dock_tab_size": {
            "title": "IUILayoutDockPanelSize",
            "type": "object",
            "description": "SiYuan dock tab size",
            "additionalProperties": false,
            "required": [
                "height",
                "width"
            ],
            "properties": {
                "height": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Tab height (unit: px)"
                },
                "width": {
                    "type": [
                        "integer",
                        "null"
                    ],
                    "description": "Tab width (unit: px)"
                }
            }
        }
    }
}

logoutAuth

  • 🛠 注销登录状态
  • /api/system/logoutAuth

响应

ts
/**
 * Log out of the login status
 */
export interface IResponse {
    /**
     * status code
     */
    readonly code: number;
    readonly data: null;
    /**
     * status message
     */
    readonly msg: string;
}
json5
/**
 * schemas/kernel/api/system/logoutAuth/response.schema.json5
 * 注销登录状态
 * REF: https://github.com/siyuan-note/siyuan/blob/v2.12.6/kernel/model/session.go#L37-L55
 * @pathname: /api/system/logoutAuth
 * @version: 2.12.6
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/logoutAuth/response.schema.json5',
    $comment: 'v2.12.6',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'response body',
            description: 'Log out of the login status',

            type: 'object',
            additionalProperties: false,
            required: [
                'code',
                'msg',
                'data',
            ],
            properties: {
                code: {
                    type: 'integer',
                    description: 'status code',
                },
                msg: {
                    type: 'string',
                    description: 'status message',
                },
                data: {
                    type: 'null',
                },
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/logoutAuth/response.schema.json",
    "$comment": "v2.12.6",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "response body",
            "description": "Log out of the login status",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "code",
                "msg",
                "data"
            ],
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "status code"
                },
                "msg": {
                    "type": "string",
                    "description": "status message"
                },
                "data": {
                    "type": "null"
                }
            }
        }
    }
}

version

  • 🔥 获取内核版本
  • /api/system/version

响应

ts
/**
 * get the version of siyuan kernel
 */
export interface IResponse {
    /**
     * status code
     */
    readonly code: number;
    /**
     * semantic version number of siyuan kernel
     */
    readonly data: string;
    /**
     * status message
     */
    readonly msg: string;
}
json5
/**
 * schemas/siyuan/api/system/version/response.schema.json5
 * 获取思源内核版本号
 * REF: https://github.com/siyuan-note/siyuan/blob/master/API.md#Get-system-version
 * REF: https://github.com/siyuan-note/siyuan/blob/v2.9.2/kernel/api/system.go#L286-L291
 * @pathname: /api/system/version
 * @version: 2.9.2
 */
{
    $schema: 'https://json-schema.org/draft/2020-12/schema',
    $id: 'https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/version/response.schema.json5',
    $comment: 'v2.9.2',
    $ref: '#/$defs/root',
    $defs: {
        root: {
            title: 'response body',
            description: 'get the version of siyuan kernel',

            type: 'object',
            additionalProperties: false,
            required: [
                'code',
                'msg',
                'data',
            ],
            properties: {
                code: {
                    type: 'integer',
                    description: 'status code',
                },
                msg: {
                    type: 'string',
                    description: 'status message',
                },
                data: {
                    type: 'string',
                    description: 'semantic version number of siyuan kernel',
                    // REF https://semver.org/
                    pattern: '^(\\d+)\\.(\\d+)\\.(\\d+)$',
                },
            },
        },
    },
}
json
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://github.com/siyuan-community/siyuan-sdk/raw/main/schemas/kernel/api/system/version/response.schema.json",
    "$comment": "v2.9.2",
    "$ref": "#/$defs/root",
    "$defs": {
        "root": {
            "title": "response body",
            "description": "get the version of siyuan kernel",
            "type": "object",
            "additionalProperties": false,
            "required": [
                "code",
                "msg",
                "data"
            ],
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "status code"
                },
                "msg": {
                    "type": "string",
                    "description": "status message"
                },
                "data": {
                    "type": "string",
                    "description": "semantic version number of siyuan kernel",
                    "pattern": "^(\\d+)\\.(\\d+)\\.(\\d+)$"
                }
            }
        }
    }
}