Update OOjs UI to v0.8.0
[lhc/web/wiklou.git] / docs / extension.schema.json
1 {
2 "$schema": "http://json-schema.org/schema#",
3 "description": "MediaWiki extension.json schema",
4 "type": "object",
5 "properties": {
6 "name": {
7 "type": "string",
8 "description": "The extension's canonical name."
9 },
10 "type": {
11 "type": "string",
12 "description": "The extension's type, as an index to $wgExtensionCredits.",
13 "default": "other",
14 "enum": [
15 "api",
16 "antispam",
17 "datavalues",
18 "media",
19 "parserhook",
20 "semantic",
21 "skin",
22 "specialpage",
23 "variable",
24 "other"
25 ]
26 },
27 "author": {
28 "type": [
29 "string",
30 "array"
31 ],
32 "description": "Extension's authors.",
33 "items": {
34 "type": "string"
35 },
36 "additionalItems": false
37 },
38 "version": {
39 "type": "string",
40 "description": "The version of this release of the extension."
41 },
42 "url": {
43 "type": "string",
44 "description": "URL to the homepage for the extension.",
45 "format": "uri"
46 },
47 "description": {
48 "type": "string",
49 "description": "Raw description of the extension."
50 },
51 "descriptionmsg": {
52 "type": "string",
53 "description": "Message key for a i18n message describing the extension."
54 },
55 "license-name": {
56 "type": "string",
57 "description": "Short identifier for the license under which the extension is released.",
58 "enum": [
59 "AFL-1.1",
60 "AFL-1.2",
61 "AFL-2.0",
62 "AFL-2.1",
63 "AFL-3.0",
64 "APL-1.0",
65 "Aladdin",
66 "ANTLR-PD",
67 "Apache-1.0",
68 "Apache-1.1",
69 "Apache-2.0",
70 "APSL-1.0",
71 "APSL-1.1",
72 "APSL-1.2",
73 "APSL-2.0",
74 "Artistic-1.0",
75 "Artistic-1.0-cl8",
76 "Artistic-1.0-Perl",
77 "Artistic-2.0",
78 "AAL",
79 "BitTorrent-1.0",
80 "BitTorrent-1.1",
81 "BSL-1.0",
82 "BSD-2-Clause",
83 "BSD-2-Clause-FreeBSD",
84 "BSD-2-Clause-NetBSD",
85 "BSD-3-Clause",
86 "BSD-3-Clause-Clear",
87 "BSD-4-Clause",
88 "BSD-4-Clause-UC",
89 "CECILL-1.0",
90 "CECILL-1.1",
91 "CECILL-2.0",
92 "CECILL-B",
93 "CECILL-C",
94 "ClArtistic",
95 "CNRI-Python",
96 "CNRI-Python-GPL-Compatible",
97 "CPOL-1.02",
98 "CDDL-1.0",
99 "CDDL-1.1",
100 "CPAL-1.0",
101 "CPL-1.0",
102 "CATOSL-1.1",
103 "Condor-1.1",
104 "CC-BY-1.0",
105 "CC-BY-2.0",
106 "CC-BY-2.5",
107 "CC-BY-3.0",
108 "CC-BY-ND-1.0",
109 "CC-BY-ND-2.0",
110 "CC-BY-ND-2.5",
111 "CC-BY-ND-3.0",
112 "CC-BY-NC-1.0",
113 "CC-BY-NC-2.0",
114 "CC-BY-NC-2.5",
115 "CC-BY-NC-3.0",
116 "CC-BY-NC-ND-1.0",
117 "CC-BY-NC-ND-2.0",
118 "CC-BY-NC-ND-2.5",
119 "CC-BY-NC-ND-3.0",
120 "CC-BY-NC-SA-1.0",
121 "CC-BY-NC-SA-2.0",
122 "CC-BY-NC-SA-2.5",
123 "CC-BY-NC-SA-3.0",
124 "CC-BY-SA-1.0",
125 "CC-BY-SA-2.0",
126 "CC-BY-SA-2.5",
127 "CC-BY-SA-3.0",
128 "CC0-1.0",
129 "CUA-OPL-1.0",
130 "D-FSL-1.0",
131 "WTFPL",
132 "EPL-1.0",
133 "eCos-2.0",
134 "ECL-1.0",
135 "ECL-2.0",
136 "EFL-1.0",
137 "EFL-2.0",
138 "Entessa",
139 "ErlPL-1.1",
140 "EUDatagrid",
141 "EUPL-1.0",
142 "EUPL-1.1",
143 "Fair",
144 "Frameworx-1.0",
145 "FTL",
146 "AGPL-1.0",
147 "AGPL-3.0",
148 "GFDL-1.1",
149 "GFDL-1.2",
150 "GFDL-1.3",
151 "GPL-1.0",
152 "GPL-1.0+",
153 "GPL-2.0",
154 "GPL-2.0+",
155 "GPL-2.0-with-autoconf-exception",
156 "GPL-2.0-with-bison-exception",
157 "GPL-2.0-with-classpath-exception",
158 "GPL-2.0-with-font-exception",
159 "GPL-2.0-with-GCC-exception",
160 "GPL-3.0",
161 "GPL-3.0+",
162 "GPL-3.0-with-autoconf-exception",
163 "GPL-3.0-with-GCC-exception",
164 "LGPL-2.1",
165 "LGPL-2.1+",
166 "LGPL-3.0",
167 "LGPL-3.0+",
168 "LGPL-2.0",
169 "LGPL-2.0+",
170 "gSOAP-1.3b",
171 "HPND",
172 "IBM-pibs",
173 "IPL-1.0",
174 "Imlib2",
175 "IJG",
176 "Intel",
177 "IPA",
178 "ISC",
179 "JSON",
180 "LPPL-1.3a",
181 "LPPL-1.0",
182 "LPPL-1.1",
183 "LPPL-1.2",
184 "LPPL-1.3c",
185 "Libpng",
186 "LPL-1.02",
187 "LPL-1.0",
188 "MS-PL",
189 "MS-RL",
190 "MirOS",
191 "MIT",
192 "Motosoto",
193 "MPL-1.0",
194 "MPL-1.1",
195 "MPL-2.0",
196 "MPL-2.0-no-copyleft-exception",
197 "Multics",
198 "NASA-1.3",
199 "Naumen",
200 "NBPL-1.0",
201 "NGPL",
202 "NOSL",
203 "NPL-1.0",
204 "NPL-1.1",
205 "Nokia",
206 "NPOSL-3.0",
207 "NTP",
208 "OCLC-2.0",
209 "ODbL-1.0",
210 "PDDL-1.0",
211 "OGTSL",
212 "OLDAP-2.2.2",
213 "OLDAP-1.1",
214 "OLDAP-1.2",
215 "OLDAP-1.3",
216 "OLDAP-1.4",
217 "OLDAP-2.0",
218 "OLDAP-2.0.1",
219 "OLDAP-2.1",
220 "OLDAP-2.2",
221 "OLDAP-2.2.1",
222 "OLDAP-2.3",
223 "OLDAP-2.4",
224 "OLDAP-2.5",
225 "OLDAP-2.6",
226 "OLDAP-2.7",
227 "OPL-1.0",
228 "OSL-1.0",
229 "OSL-2.0",
230 "OSL-2.1",
231 "OSL-3.0",
232 "OLDAP-2.8",
233 "OpenSSL",
234 "PHP-3.0",
235 "PHP-3.01",
236 "PostgreSQL",
237 "Python-2.0",
238 "QPL-1.0",
239 "RPSL-1.0",
240 "RPL-1.1",
241 "RPL-1.5",
242 "RHeCos-1.1",
243 "RSCPL",
244 "Ruby",
245 "SAX-PD",
246 "SGI-B-1.0",
247 "SGI-B-1.1",
248 "SGI-B-2.0",
249 "OFL-1.0",
250 "OFL-1.1",
251 "SimPL-2.0",
252 "Sleepycat",
253 "SMLNJ",
254 "SugarCRM-1.1.3",
255 "SISSL",
256 "SISSL-1.2",
257 "SPL-1.0",
258 "Watcom-1.0",
259 "NCSA",
260 "VSL-1.0",
261 "W3C",
262 "WXwindows",
263 "Xnet",
264 "X11",
265 "XFree86-1.1",
266 "YPL-1.0",
267 "YPL-1.1",
268 "Zimbra-1.3",
269 "Zlib",
270 "ZPL-1.1",
271 "ZPL-2.0",
272 "ZPL-2.1",
273 "Unlicense"
274 ]
275 },
276 "ResourceFileModulePaths": {
277 "type": "object",
278 "description": "Default paths to use for all ResourceLoader file modules",
279 "additionalProperties": false,
280 "properties": {
281 "localBasePath": {
282 "type": "string",
283 "description": "Base path to prepend to all local paths, relative to current directory"
284 },
285 "remoteExtPath": {
286 "type": "string",
287 "description": "Base path to prepend to all remote paths, relative to $wgExtensionAssetsPath"
288 },
289 "remoteSkinPath": {
290 "type": "string",
291 "description": "Base path to prepend to all remote paths, relative to $wgStylePath"
292 }
293 }
294 },
295 "ResourceLoaderModules": {
296 "type": "object",
297 "description": "ResourceLoader modules to register",
298 "additionalProperties": false,
299 "patternProperties": {
300 "^[a-zA-Z0-9\\.]+$": {
301 "type": "object",
302 "description": "A single ResourceLoader module descriptor",
303 "properties": {
304 "localBasePath": {
305 "type": "string",
306 "description": "Base path to prepend to all local paths in $options. Defaults to $IP"
307 },
308 "remoteBasePath": {
309 "type": "string",
310 "description": "Base path to prepend to all remote paths in $options. Defaults to $wgScriptPath"
311 },
312 "remoteExtPath": {
313 "type": "string",
314 "description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
315 },
316 "scripts": {
317 "type": "array",
318 "description": "Scripts to always include (array of file paths)",
319 "items": {
320 "type": "string"
321 }
322 },
323 "languageScripts": {
324 "type": "object",
325 "description": "Scripts to include in specific language contexts (mapping of language code to file path(s))",
326 "patternProperties": {
327 "^[a-zA-Z0-9-]{2,}$": {
328 "type": [
329 "string",
330 "array"
331 ],
332 "items": {
333 "type": "string"
334 }
335 }
336 }
337 },
338 "skinScripts": {
339 "type": "object",
340 "description": "Scripts to include in specific skin contexts (mapping of skin name to script(s)",
341 "patternProperties": {
342 ".+": {
343 "type": [
344 "string",
345 "array"
346 ],
347 "items": {
348 "type": "string"
349 }
350 }
351 }
352 },
353 "debugScripts": {
354 "type": "array",
355 "description": "Scripts to include in debug contexts",
356 "items": {
357 "type": "string"
358 }
359 },
360 "loaderScripts": {
361 "type": "array",
362 "description": "Scripts to include in the startup module",
363 "items": {
364 "type": "string"
365 }
366 },
367 "dependencies": {
368 "type": "array",
369 "description": "Modules which must be loaded before this module",
370 "items": {
371 "type": "string"
372 }
373 },
374 "styles": {
375 "type": "array",
376 "description": "Styles to always load",
377 "items": {
378 "type": "string"
379 }
380 },
381 "skinStyles": {
382 "type": "object",
383 "description": "Styles to include in specific skin contexts (mapping of skin name to style(s))",
384 "patternProperties": {
385 ".+": {
386 "type": [
387 "string",
388 "array"
389 ],
390 "items": {
391 "type": "string"
392 }
393 }
394 }
395 },
396 "messages": {
397 "type": "array",
398 "description": "Messages to always load",
399 "items": {
400 "type": "string"
401 }
402 },
403 "group": {
404 "type": "string",
405 "description": "Group which this module should be loaded together with"
406 },
407 "position": {
408 "type": "string",
409 "description": "Position on the page to load this module at",
410 "enum": [
411 "bottom",
412 "top"
413 ]
414 }
415 }
416 }
417 }
418 },
419 "ResourceLoaderSources": {
420 "type": "object",
421 "description": "ResourceLoader sources to register"
422 },
423 "ResourceLoaderLESSVars": {
424 "type": "object",
425 "description": "ResourceLoader LESS variables"
426 },
427 "ResourceLoaderLESSFunctions": {
428 "type": "object",
429 "description": "ResourceLoader LESS functions"
430 },
431 "ResourceLoaderLESSImportPaths": {
432 "type": "object",
433 "description": "ResourceLoader import paths"
434 },
435 "ConfigRegistry": {
436 "type": "object",
437 "description": "Registry of factory functions to create Config objects"
438 },
439 "namespaces": {
440 "type": "object",
441 "description": "Method to add extra namespaces",
442 "properties": {
443 "id": {
444 "type": "integer"
445 },
446 "constant": {
447 "type": "string"
448 },
449 "name": {
450 "type": "string"
451 },
452 "gender": {
453 "type": "object",
454 "properties": {
455 "male": {
456 "type": "string"
457 },
458 "female": {
459 "type": "string"
460 }
461 }
462 },
463 "subpages": {
464 "type": "boolean",
465 "default": false
466 },
467 "content": {
468 "type": "boolean",
469 "default": false
470 },
471 "defaultcontentmodel": {
472 "type": "string"
473 }
474 }
475 },
476 "TrackingCategories": {
477 "type": "array",
478 "description": "Tracking category message keys"
479 },
480 "DefaultUserOptions": {
481 "type": "object",
482 "description": "Default values of user options"
483 },
484 "HiddenPrefs": {
485 "type": "array",
486 "description": "Preferences users cannot set"
487 },
488 "GroupPermissions": {
489 "type": "object",
490 "description": "Default permissions to give to user groups"
491 },
492 "RevokePermissions": {
493 "type": "object",
494 "description": "Default permissions to revoke from user groups"
495 },
496 "ImplicitGroups": {
497 "type": "array",
498 "description": "Implicit groups"
499 },
500 "GroupsAddToSelf": {
501 "type": "object",
502 "description": "Groups a user can add to themselves"
503 },
504 "GroupsRemoveFromSelf": {
505 "type": "object",
506 "description": "Groups a user can remove from themselves"
507 },
508 "AddGroups": {
509 "type": "object",
510 "description": "Groups a user can add to users"
511 },
512 "RemoveGroups": {
513 "type": "object",
514 "description": "Groups a user can remove from users"
515 },
516 "AvailableRights": {
517 "type": "array",
518 "description": "User rights added by the extension"
519 },
520 "ContentHandlers": {
521 "type": "object",
522 "description": "Mapping of model ID to class name"
523 },
524 "RateLimits": {
525 "type": "object",
526 "description": "Rate limits"
527 },
528 "ParserTestFiles": {
529 "type": "array",
530 "description": "Parser test files to run"
531 },
532 "RecentChangesFlags": {
533 "type": "object",
534 "description": "Flags (letter symbols) shown on RecentChanges pages"
535 },
536 "ExtensionFunctions": {
537 "type": [
538 "array",
539 "string"
540 ],
541 "description": "Function to call after setup has finished"
542 },
543 "ExtensionMessagesFiles": {
544 "type": "object",
545 "description": "File paths containing PHP internationalization data"
546 },
547 "MessagesDirs": {
548 "type": "object",
549 "description": "Directory paths containing JSON internationalization data"
550 },
551 "ExtensionEntryPointListFiles": {
552 "type": "object"
553 },
554 "SpecialPages": {
555 "type": "object",
556 "description": "SpecialPages implemented in this extension (mapping of page name to class name)"
557 },
558 "SpecialPageGroups": {
559 "type": "object",
560 "description": "Mapping of special page name to group it belongs to"
561 },
562 "AutoloadClasses": {
563 "type": "object"
564 },
565 "Hooks": {
566 "type": "object",
567 "description": "Hooks this extension uses (mapping of hook name to callback)"
568 },
569 "JobClasses": {
570 "type": "object",
571 "description": "Job types this extension implements (mapping of job type to class name)"
572 },
573 "LogTypes": {
574 "type": "array",
575 "description": "List of new log types this extension uses"
576 },
577 "LogRestrictions": {
578 "type": "object"
579 },
580 "FilterLogTypes": {
581 "type": "array"
582 },
583 "LogNames": {
584 "type": "object"
585 },
586 "LogHeaders": {
587 "type": "object"
588 },
589 "LogActions": {
590 "type": "object"
591 },
592 "LogActionsHandlers": {
593 "type": "object"
594 },
595 "Actions": {
596 "type": "object"
597 },
598 "APIModules": {
599 "type": "object"
600 },
601 "APIFormatModules": {
602 "type": "object"
603 },
604 "APIMetaModules": {
605 "type": "object"
606 },
607 "APIPropModules": {
608 "type": "object"
609 },
610 "APIListModules": {
611 "type": "object"
612 },
613 "callback": {
614 "type": [
615 "array",
616 "string"
617 ],
618 "description": "A function to be called right after MediaWiki processes this file"
619 },
620 "config": {
621 "type": "object",
622 "description": "Configuration options for this extension"
623 }
624 }
625 }