-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathextension.schema.json
More file actions
149 lines (149 loc) · 5.12 KB
/
extension.schema.json
File metadata and controls
149 lines (149 loc) · 5.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/microsoft/CmdPal-Extensions/main/.github/schemas/extension.schema.json",
"title": "Command Palette Extension",
"description": "Schema for a Command Palette extension submission.",
"type": "object",
"required": ["id", "title", "shortDescription", "description", "author", "icon", "installSources"],
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string",
"description": "Reference to this schema file."
},
"id": {
"type": "string",
"description": "Unique extension identifier in author.extension-name format. Must match the folder path (author/extension-name).",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*\\.[a-z0-9]+(-[a-z0-9]+)*$",
"examples": ["jiripolasek.media-controls", "microsoft.sample-extension"]
},
"title": {
"type": "string",
"description": "Human-readable display name for the extension.",
"minLength": 1,
"maxLength": 100,
"examples": ["Media Controls", "Quick Notes", "Clipboard Manager"]
},
"shortDescription": {
"type": "string",
"description": "Short one-line description of the extension (max 200 characters).",
"minLength": 1,
"maxLength": 200,
"examples": ["Manage audio or video playback and switch between media apps directly from Command Palette."]
},
"description": {
"type": "string",
"description": "Full description of the extension, typically sourced from the Store listing or README.",
"minLength": 1,
"maxLength": 3000
},
"author": {
"type": "object",
"description": "Extension author information.",
"required": ["name"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Author display name.",
"minLength": 1,
"maxLength": 100,
"examples": ["Jiri Polasek", "Microsoft"]
},
"url": {
"type": "string",
"description": "URL to the author's website or profile.",
"format": "uri",
"examples": ["https://jiripolasek.com", "https://github.com/microsoft"]
}
}
},
"icon": {
"type": "string",
"description": "Filename of the icon in the same folder. Must be a .png or .jpeg file.",
"pattern": "^[\\w.-]+\\.(png|jpe?g)$",
"examples": ["icon.png", "icon.jpeg"]
},
"homepage": {
"type": "string",
"description": "URL to the project homepage or repository.",
"format": "uri",
"examples": ["https://github.com/jiripolasek/MediaControlsExtension"]
},
"listed": {
"type": "boolean",
"description": "Whether this extension should appear in the public gallery. Defaults to true if omitted. Set to false for sample or test extensions.",
"default": true
},
"tags": {
"type": "array",
"description": "Optional freeform tags for filtering. Maximum 5 tags.",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 30
},
"maxItems": 5,
"uniqueItems": true,
"examples": [["media", "playback", "audio"]]
},
"categories": {
"type": "array",
"description": "Optional categories from a fixed list. Maximum 3 categories.",
"items": {
"type": "string",
"enum": [
"developer-tools",
"education",
"entertainment",
"music",
"news-and-weather",
"personalization",
"photo-and-video",
"productivity",
"social",
"utilities-and-tools"
]
},
"maxItems": 3,
"uniqueItems": true,
"examples": [["developer-tools", "productivity"]]
},
"installSources": {
"type": "array",
"description": "One or more installation sources for this extension.",
"minItems": 1,
"items": {
"type": "object",
"description": "An installation source.",
"required": ["type"],
"oneOf": [
{
"properties": {
"type": { "const": "winget" },
"id": { "type": "string", "description": "Winget package identifier.", "minLength": 1, "examples": ["JiriPolasek.MediaControlsforCommandPalette"] }
},
"required": ["type", "id"],
"additionalProperties": false
},
{
"properties": {
"type": { "const": "msstore" },
"id": { "type": "string", "description": "Microsoft Store product ID.", "minLength": 1, "examples": ["9n3bq81g19k7"] }
},
"required": ["type", "id"],
"additionalProperties": false
},
{
"properties": {
"type": { "const": "url" },
"uri": { "type": "string", "description": "Direct download or release page URL.", "format": "uri", "examples": ["https://github.com/jiripolasek/MediaControlsExtension/releases"] }
},
"required": ["type", "uri"],
"additionalProperties": false
}
]
}
}
}
}