-
Notifications
You must be signed in to change notification settings - Fork 142
Open
Description
I created json-schema definitions following the Obsidian Docs - Manifest page.
Schema Defintions
Obsidian Plugin Manifest Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Obsidian Theme Manifest",
"description": "Schema for Obsidian theme manifest.json files",
"type": "object",
"required": ["name", "version", "minAppVersion", "author"],
"properties": {
"name": {
"type": "string",
"description": "Display name of the theme as shown in the UI",
"minLength": 1
},
"version": {
"type": "string",
"description": "Current version of the theme following semantic versioning",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"minAppVersion": {
"type": "string",
"description": "Minimum Obsidian version required for this theme",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"author": {
"type": "string",
"description": "Name of the theme author or organization",
"minLength": 1
},
"authorUrl": {
"type": "string",
"description": "URL to the author's website or profile",
"format": "uri"
},
"fundingUrl": {
"oneOf": [
{
"type": "string",
"description": "Single funding URL",
"format": "uri"
},
{
"type": "object",
"description": "Multiple funding options with display names",
"patternProperties": {
"^.+$": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
}
]
},
"modes": {
"type": "array",
"description": "Supported color modes for the theme",
"items": {
"type": "string",
"enum": ["light", "dark"]
},
"uniqueItems": true,
"minItems": 1
}
},
"additionalProperties": falseObsidian Theme Manifest Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Obsidian Plugin Manifest",
"description": "Schema for Obsidian plugin manifest.json files",
"type": "object",
"required": [
"id",
"name",
"version",
"minAppVersion",
"description",
"author"
],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the plugin. Must be unique across all plugins.",
"pattern": "^[a-z0-9-]+$"
},
"name": {
"type": "string",
"description": "Display name of the plugin as shown in the UI",
"minLength": 1
},
"version": {
"type": "string",
"description": "Current version of the plugin following semantic versioning",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"minAppVersion": {
"type": "string",
"description": "Minimum Obsidian version required to run this plugin",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"description": {
"type": "string",
"description": "Brief description of what the plugin does",
"minLength": 1
},
"author": {
"type": "string",
"description": "Name of the plugin author or organization",
"minLength": 1
},
"authorUrl": {
"type": "string",
"description": "URL to the author's website or profile",
"format": "uri"
},
"fundingUrl": {
"oneOf": [
{
"type": "string",
"description": "Single funding URL",
"format": "uri"
},
{
"type": "object",
"description": "Multiple funding options with display names",
"patternProperties": {
"^.+$": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
}
]
},
"isDesktopOnly": {
"type": "boolean",
"description": "Whether the plugin only works on desktop (not mobile)",
"default": false
}
},
"additionalProperties": false
}Preview
If configured properly in your code editor, you can get validation and definitions to show:
Next Steps
- Would you like me to submit them to a project like JSON Schema Store
- Do you want them uploaded here to the obsidian-developer-docs repo?
Metadata
Metadata
Assignees
Labels
No labels
