AuthManager: Break AuthPlugin::addUser more explicitly
[mediawiki.git] / docs / extension.schema.json
blob3235c95146bca3d3f3214d02326fb1d116a089c0
2         "$schema": "http://json-schema.org/schema#",
3         "description": "MediaWiki extension.json schema",
4         "type": "object",
5         "properties": {
6                 "manifest_version": {
7                         "type": "integer",
8                         "description": "Version of the extension.json schema the extension.json file is in.",
9                         "required": true
10                 },
11                 "name": {
12                         "type": "string",
13                         "description": "The extension's canonical name.",
14                         "required": true
15                 },
16                 "namemsg": {
17                         "type": "string",
18                         "description": "i18n message key of the extension's name."
19                 },
20                 "type": {
21                         "type": "string",
22                         "description": "The extension's type, as an index to $wgExtensionCredits.",
23                         "default": "other"
24                 },
25                 "author": {
26                         "type": [
27                                 "string",
28                                 "array"
29                         ],
30                         "description": "Extension's authors.",
31                         "items": {
32                                 "type": "string"
33                         }
34                 },
35                 "version": {
36                         "type": "string",
37                         "description": "The version of this release of the extension."
38                 },
39                 "url": {
40                         "type": "string",
41                         "description": "URL to the homepage for the extension.",
42                         "format": "uri"
43                 },
44                 "description": {
45                         "type": "string",
46                         "description": "Raw description of the extension."
47                 },
48                 "descriptionmsg": {
49                         "type": "string",
50                         "description": "Message key for a i18n message describing the extension."
51                 },
52                 "license-name": {
53                         "type": "string",
54                         "description": "Short identifier for the license under which the extension is released.",
55                         "enum": [
56                                 "AFL-1.1",
57                                 "AFL-1.2",
58                                 "AFL-2.0",
59                                 "AFL-2.1",
60                                 "AFL-3.0",
61                                 "APL-1.0",
62                                 "Aladdin",
63                                 "ANTLR-PD",
64                                 "Apache-1.0",
65                                 "Apache-1.1",
66                                 "Apache-2.0",
67                                 "APSL-1.0",
68                                 "APSL-1.1",
69                                 "APSL-1.2",
70                                 "APSL-2.0",
71                                 "Artistic-1.0",
72                                 "Artistic-1.0-cl8",
73                                 "Artistic-1.0-Perl",
74                                 "Artistic-2.0",
75                                 "AAL",
76                                 "BitTorrent-1.0",
77                                 "BitTorrent-1.1",
78                                 "BSL-1.0",
79                                 "BSD-2-Clause",
80                                 "BSD-2-Clause-FreeBSD",
81                                 "BSD-2-Clause-NetBSD",
82                                 "BSD-3-Clause",
83                                 "BSD-3-Clause-Clear",
84                                 "BSD-4-Clause",
85                                 "BSD-4-Clause-UC",
86                                 "CECILL-1.0",
87                                 "CECILL-1.1",
88                                 "CECILL-2.0",
89                                 "CECILL-B",
90                                 "CECILL-C",
91                                 "ClArtistic",
92                                 "CNRI-Python",
93                                 "CNRI-Python-GPL-Compatible",
94                                 "CPOL-1.02",
95                                 "CDDL-1.0",
96                                 "CDDL-1.1",
97                                 "CPAL-1.0",
98                                 "CPL-1.0",
99                                 "CATOSL-1.1",
100                                 "Condor-1.1",
101                                 "CC-BY-1.0",
102                                 "CC-BY-2.0",
103                                 "CC-BY-2.5",
104                                 "CC-BY-3.0",
105                                 "CC-BY-ND-1.0",
106                                 "CC-BY-ND-2.0",
107                                 "CC-BY-ND-2.5",
108                                 "CC-BY-ND-3.0",
109                                 "CC-BY-NC-1.0",
110                                 "CC-BY-NC-2.0",
111                                 "CC-BY-NC-2.5",
112                                 "CC-BY-NC-3.0",
113                                 "CC-BY-NC-ND-1.0",
114                                 "CC-BY-NC-ND-2.0",
115                                 "CC-BY-NC-ND-2.5",
116                                 "CC-BY-NC-ND-3.0",
117                                 "CC-BY-NC-SA-1.0",
118                                 "CC-BY-NC-SA-2.0",
119                                 "CC-BY-NC-SA-2.5",
120                                 "CC-BY-NC-SA-3.0",
121                                 "CC-BY-SA-1.0",
122                                 "CC-BY-SA-2.0",
123                                 "CC-BY-SA-2.5",
124                                 "CC-BY-SA-3.0",
125                                 "CC0-1.0",
126                                 "CUA-OPL-1.0",
127                                 "D-FSL-1.0",
128                                 "WTFPL",
129                                 "EPL-1.0",
130                                 "eCos-2.0",
131                                 "ECL-1.0",
132                                 "ECL-2.0",
133                                 "EFL-1.0",
134                                 "EFL-2.0",
135                                 "Entessa",
136                                 "ErlPL-1.1",
137                                 "EUDatagrid",
138                                 "EUPL-1.0",
139                                 "EUPL-1.1",
140                                 "Fair",
141                                 "Frameworx-1.0",
142                                 "FTL",
143                                 "AGPL-1.0",
144                                 "AGPL-3.0",
145                                 "GFDL-1.1",
146                                 "GFDL-1.2",
147                                 "GFDL-1.3",
148                                 "GPL-1.0",
149                                 "GPL-1.0+",
150                                 "GPL-2.0",
151                                 "GPL-2.0+",
152                                 "GPL-2.0-with-autoconf-exception",
153                                 "GPL-2.0-with-bison-exception",
154                                 "GPL-2.0-with-classpath-exception",
155                                 "GPL-2.0-with-font-exception",
156                                 "GPL-2.0-with-GCC-exception",
157                                 "GPL-3.0",
158                                 "GPL-3.0+",
159                                 "GPL-3.0-with-autoconf-exception",
160                                 "GPL-3.0-with-GCC-exception",
161                                 "LGPL-2.1",
162                                 "LGPL-2.1+",
163                                 "LGPL-3.0",
164                                 "LGPL-3.0+",
165                                 "LGPL-2.0",
166                                 "LGPL-2.0+",
167                                 "gSOAP-1.3b",
168                                 "HPND",
169                                 "IBM-pibs",
170                                 "IPL-1.0",
171                                 "Imlib2",
172                                 "IJG",
173                                 "Intel",
174                                 "IPA",
175                                 "ISC",
176                                 "JSON",
177                                 "LPPL-1.3a",
178                                 "LPPL-1.0",
179                                 "LPPL-1.1",
180                                 "LPPL-1.2",
181                                 "LPPL-1.3c",
182                                 "Libpng",
183                                 "LPL-1.02",
184                                 "LPL-1.0",
185                                 "MS-PL",
186                                 "MS-RL",
187                                 "MirOS",
188                                 "MIT",
189                                 "Motosoto",
190                                 "MPL-1.0",
191                                 "MPL-1.1",
192                                 "MPL-2.0",
193                                 "MPL-2.0-no-copyleft-exception",
194                                 "Multics",
195                                 "NASA-1.3",
196                                 "Naumen",
197                                 "NBPL-1.0",
198                                 "NGPL",
199                                 "NOSL",
200                                 "NPL-1.0",
201                                 "NPL-1.1",
202                                 "Nokia",
203                                 "NPOSL-3.0",
204                                 "NTP",
205                                 "OCLC-2.0",
206                                 "ODbL-1.0",
207                                 "PDDL-1.0",
208                                 "OGTSL",
209                                 "OLDAP-2.2.2",
210                                 "OLDAP-1.1",
211                                 "OLDAP-1.2",
212                                 "OLDAP-1.3",
213                                 "OLDAP-1.4",
214                                 "OLDAP-2.0",
215                                 "OLDAP-2.0.1",
216                                 "OLDAP-2.1",
217                                 "OLDAP-2.2",
218                                 "OLDAP-2.2.1",
219                                 "OLDAP-2.3",
220                                 "OLDAP-2.4",
221                                 "OLDAP-2.5",
222                                 "OLDAP-2.6",
223                                 "OLDAP-2.7",
224                                 "OPL-1.0",
225                                 "OSL-1.0",
226                                 "OSL-2.0",
227                                 "OSL-2.1",
228                                 "OSL-3.0",
229                                 "OLDAP-2.8",
230                                 "OpenSSL",
231                                 "PHP-3.0",
232                                 "PHP-3.01",
233                                 "PostgreSQL",
234                                 "Python-2.0",
235                                 "QPL-1.0",
236                                 "RPSL-1.0",
237                                 "RPL-1.1",
238                                 "RPL-1.5",
239                                 "RHeCos-1.1",
240                                 "RSCPL",
241                                 "Ruby",
242                                 "SAX-PD",
243                                 "SGI-B-1.0",
244                                 "SGI-B-1.1",
245                                 "SGI-B-2.0",
246                                 "OFL-1.0",
247                                 "OFL-1.1",
248                                 "SimPL-2.0",
249                                 "Sleepycat",
250                                 "SMLNJ",
251                                 "SugarCRM-1.1.3",
252                                 "SISSL",
253                                 "SISSL-1.2",
254                                 "SPL-1.0",
255                                 "Watcom-1.0",
256                                 "NCSA",
257                                 "VSL-1.0",
258                                 "W3C",
259                                 "WXwindows",
260                                 "Xnet",
261                                 "X11",
262                                 "XFree86-1.1",
263                                 "YPL-1.0",
264                                 "YPL-1.1",
265                                 "Zimbra-1.3",
266                                 "Zlib",
267                                 "ZPL-1.1",
268                                 "ZPL-2.0",
269                                 "ZPL-2.1",
270                                 "Unlicense"
271                         ]
272                 },
273                 "requires": {
274                         "type": "object",
275                         "description": "Indicates what versions of MediaWiki core are required. This syntax may be extended in the future, for example to check dependencies between other extensions.",
276                         "properties": {
277                                 "MediaWiki": {
278                                         "type": "string",
279                                         "description": "Version constraint string against MediaWiki core."
280                                 }
281                         }
282                 },
283                 "ResourceFileModulePaths": {
284                         "type": "object",
285                         "description": "Default paths to use for all ResourceLoader file modules",
286                         "additionalProperties": false,
287                         "properties": {
288                                 "localBasePath": {
289                                         "type": "string",
290                                         "description": "Base path to prepend to all local paths, relative to current directory"
291                                 },
292                                 "remoteExtPath": {
293                                         "type": "string",
294                                         "description": "Base path to prepend to all remote paths, relative to $wgExtensionAssetsPath"
295                                 },
296                                 "remoteSkinPath": {
297                                         "type": "string",
298                                         "description": "Base path to prepend to all remote paths, relative to $wgStylePath"
299                                 }
300                         }
301                 },
302                 "ResourceModules": {
303                         "type": "object",
304                         "description": "ResourceLoader modules to register",
305                         "patternProperties": {
306                                 "^[a-zA-Z0-9-\\.]+$": {
307                                         "type": "object",
308                                         "anyOf": [
309                                                 {
310                                                         "description": "A ResourceLoaderFileModule definition",
311                                                         "additionalProperties": false,
312                                                         "properties": {
313                                                                 "localBasePath": {
314                                                                         "type": "string",
315                                                                         "description": "Base path to prepend to all local paths in $options. Defaults to $IP"
316                                                                 },
317                                                                 "remoteBasePath": {
318                                                                         "type": "string",
319                                                                         "description": "Base path to prepend to all remote paths in $options. Defaults to $wgScriptPath"
320                                                                 },
321                                                                 "remoteExtPath": {
322                                                                         "type": "string",
323                                                                         "description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
324                                                                 },
325                                                                 "skipFunction": {
326                                                                         "type": "string",
327                                                                         "description": "Path to a file containing a JavaScript \"skip function\", if desired."
328                                                                 },
329                                                                 "scripts": {
330                                                                         "type": ["string", "array"],
331                                                                         "description": "Scripts to always include (array of file paths)",
332                                                                         "items": {
333                                                                                 "type": "string"
334                                                                         }
335                                                                 },
336                                                                 "languageScripts": {
337                                                                         "type": "object",
338                                                                         "description": "Scripts to include in specific language contexts (mapping of language code to file path(s))",
339                                                                         "patternProperties": {
340                                                                                 "^[a-zA-Z0-9-]{2,}$": {
341                                                                                         "type": [
342                                                                                                 "string",
343                                                                                                 "array"
344                                                                                         ],
345                                                                                         "items": {
346                                                                                                 "type": "string"
347                                                                                         }
348                                                                                 }
349                                                                         }
350                                                                 },
351                                                                 "skinScripts": {
352                                                                         "type": "object",
353                                                                         "description": "Scripts to include in specific skin contexts (mapping of skin name to script(s)",
354                                                                         "patternProperties": {
355                                                                                 ".+": {
356                                                                                         "type": [
357                                                                                                 "string",
358                                                                                                 "array"
359                                                                                         ],
360                                                                                         "items": {
361                                                                                                 "type": "string"
362                                                                                         }
363                                                                                 }
364                                                                         }
365                                                                 },
366                                                                 "debugScripts": {
367                                                                         "type": ["string", "array"],
368                                                                         "description": "Scripts to include in debug contexts",
369                                                                         "items": {
370                                                                                 "type": "string"
371                                                                         }
372                                                                 },
373                                                                 "loaderScripts": {
374                                                                         "type": ["string", "array"],
375                                                                         "description": "Scripts to include in the startup module",
376                                                                         "items": {
377                                                                                 "type": "string"
378                                                                         }
379                                                                 },
380                                                                 "dependencies": {
381                                                                         "type": ["string", "array"],
382                                                                         "description": "Modules which must be loaded before this module",
383                                                                         "items": {
384                                                                                 "type": "string"
385                                                                         }
386                                                                 },
387                                                                 "styles": {
388                                                                         "type": ["string", "array", "object"],
389                                                                         "description": "Styles to always load",
390                                                                         "items": {
391                                                                                 "type": "string"
392                                                                         }
393                                                                 },
394                                                                 "skinStyles": {
395                                                                         "type": "object",
396                                                                         "description": "Styles to include in specific skin contexts (mapping of skin name to style(s))",
397                                                                         "patternProperties": {
398                                                                                 ".+": {
399                                                                                         "type": [
400                                                                                                 "string",
401                                                                                                 "array"
402                                                                                         ],
403                                                                                         "items": {
404                                                                                                 "type": "string"
405                                                                                         }
406                                                                                 }
407                                                                         }
408                                                                 },
409                                                                 "messages": {
410                                                                         "type": ["string", "array"],
411                                                                         "description": "Messages to always load",
412                                                                         "items": {
413                                                                                 "type": "string"
414                                                                         }
415                                                                 },
416                                                                 "group": {
417                                                                         "type": "string",
418                                                                         "description": "Group with which this module should be loaded"
419                                                                 },
420                                                                 "position": {
421                                                                         "type": "string",
422                                                                         "description": "Position on the page to load this module at",
423                                                                         "enum": [
424                                                                                 "bottom",
425                                                                                 "top"
426                                                                         ]
427                                                                 },
428                                                                 "templates": {
429                                                                         "type": ["object", "array"],
430                                                                         "description": "Templates to be loaded for client-side usage"
431                                                                 },
432                                                                 "targets": {
433                                                                         "type": ["string", "array"],
434                                                                         "description": "ResourceLoader target the module can run on",
435                                                                         "items": {
436                                                                                 "type": "string"
437                                                                         }
438                                                                 }
439                                                         }
440                                                 },
441                                                 {
442                                                         "description": "A ResourceLoaderWikiModule definition",
443                                                         "additionalProperties": false,
444                                                         "properties": {
445                                                                 "class": {
446                                                                         "enum": ["ResourceLoaderWikiModule"]
447                                                                 },
448                                                                 "group": {
449                                                                         "type": "string",
450                                                                         "description": "Group with which this module should be loaded"
451                                                                 },
452                                                                 "position": {
453                                                                         "type": "string",
454                                                                         "description": "Position on the page to load this module at",
455                                                                         "enum": [
456                                                                                 "bottom",
457                                                                                 "top"
458                                                                         ]
459                                                                 },
460                                                                 "targets": {
461                                                                         "type": ["string", "array"],
462                                                                         "description": "ResourceLoader target the module can run on",
463                                                                         "items": {
464                                                                                 "type": "string"
465                                                                         }
466                                                                 },
467                                                                 "scripts": {
468                                                                         "type": "array",
469                                                                         "description": "A list of on-wiki pages containing JavaScript that should be loaded",
470                                                                         "items": {
471                                                                                 "type": "string"
472                                                                         }
473                                                                 },
474                                                                 "styles": {
475                                                                         "type": "array",
476                                                                         "description": "A list of on-wiki pages containing CSS that should be loaded",
477                                                                         "items": {
478                                                                                 "type": "string"
479                                                                         }
480                                                                 }
481                                                         }
482                                                 },
483                                                 {
484                                                         "description": "A ResourceLoaderImageModule definition",
485                                                         "additionalProperties": false,
486                                                         "properties": {
487                                                                 "class": {
488                                                                         "enum": ["ResourceLoaderImageModule"]
489                                                                 },
490                                                                 "data": {
491                                                                         "type": "string"
492                                                                 },
493                                                                 "prefix": {
494                                                                         "type": "string"
495                                                                 },
496                                                                 "selector": {
497                                                                         "type": "string"
498                                                                 },
499                                                                 "selectorWithoutVariant": {
500                                                                         "type": "string"
501                                                                 },
502                                                                 "selectorWithVariant": {
503                                                                         "type": "string"
504                                                                 },
505                                                                 "variants": {
506                                                                         "type": "object"
507                                                                 },
508                                                                 "images": {
509                                                                         "type": "object"
510                                                                 },
511                                                                 "position": {
512                                                                         "enum": [
513                                                                                 "top",
514                                                                                 "bottom"
515                                                                         ]
516                                                                 }
517                                                         }
518                                                 },
519                                                 {
520                                                         "description": "An arbitrary ResourceLoaderModule definition",
521                                                         "properties": {
522                                                                 "class": {
523                                                                         "type": "string",
524                                                                         "pattern": "^((?!ResourceLoader(File|Image)Module).)*$"
525                                                                 }
526                                                         },
527                                                         "required": ["class"]
528                                                 }
529                                         ]
530                                 }
531                         }
532                 },
533                 "ResourceModuleSkinStyles": {
534                         "type": "object",
535                         "description": "ResourceLoader modules for custom skin styles"
536                 },
537                 "ResourceLoaderSources": {
538                         "type": "object",
539                         "description": "ResourceLoader sources to register"
540                 },
541                 "ResourceLoaderLESSVars": {
542                         "type": "object",
543                         "description": "ResourceLoader LESS variables"
544                 },
545                 "ConfigRegistry": {
546                         "type": "object",
547                         "description": "Registry of factory functions to create Config objects"
548                 },
549                 "SessionProviders": {
550                         "type": "object",
551                         "description": "Session providers"
552                 },
553                 "AuthManagerAutoConfig": {
554                         "type": "object",
555                         "description": "AuthManager auto-configuration",
556                         "additionalProperties": false,
557                         "properties": {
558                                 "preauth": {
559                                         "type": "object",
560                                         "description": "Pre-authentication providers"
561                                 },
562                                 "primaryauth": {
563                                         "type": "object",
564                                         "description": "Primary authentication providers"
565                                 },
566                                 "secondaryauth": {
567                                         "type": "object",
568                                         "description": "Secondary authentication providers"
569                                 }
570                         }
571                 },
572                 "CentralIdLookupProviders": {
573                         "type": "object",
574                         "description": "Central ID lookup providers"
575                 },
576                 "ChangeCredentialsBlacklist": {
577                         "type": "object",
578                         "description": "AuthenticationRequest classes which can only be used internally for credentials change"
579                 },
580                 "RemoveCredentialsBlacklist": {
581                         "type": "object",
582                         "description": "AuthenticationRequest classes which can only be used internally for credentials removal"
583                 },
584                 "namespaces": {
585                         "type": "array",
586                         "description": "Method to add extra namespaces",
587                         "items": {
588                                 "type": "object",
589                                 "properties": {
590                                         "id": {
591                                                 "type": "integer"
592                                         },
593                                         "constant": {
594                                                 "type": "string"
595                                         },
596                                         "name": {
597                                                 "type": "string"
598                                         },
599                                         "gender": {
600                                                 "type": "object",
601                                                 "properties": {
602                                                         "male": {
603                                                                 "type": "string"
604                                                         },
605                                                         "female": {
606                                                                 "type": "string"
607                                                         }
608                                                 }
609                                         },
610                                         "subpages": {
611                                                 "type": "boolean",
612                                                 "default": false
613                                         },
614                                         "content": {
615                                                 "type": "boolean",
616                                                 "default": false
617                                         },
618                                         "defaultcontentmodel": {
619                                                 "type": "string"
620                                         },
621                                         "protection": {
622                                                 "type": ["string", "array"],
623                                                 "description": "Userright(s) required to edit in this namespace"
624                                         },
625                                         "capitallinkoverride": {
626                                                 "type": "boolean",
627                                                 "description": "Set $wgCapitalLinks on a per-namespace basis"
628                                         }
629                                 },
630                                 "required": ["id", "constant", "name"]
631                         }
632                 },
633                 "TrackingCategories": {
634                         "type": "array",
635                         "description": "Tracking category message keys",
636                         "items": {
637                                 "type": "string"
638                         }
639                 },
640                 "DefaultUserOptions": {
641                         "type": "object",
642                         "description": "Default values of user options"
643                 },
644                 "HiddenPrefs": {
645                         "type": "array",
646                         "description": "Preferences users cannot set",
647                         "items": {
648                                 "type": "string"
649                         }
650                 },
651                 "GroupPermissions": {
652                         "type": "object",
653                         "description": "Default permissions to give to user groups",
654                         "patternProperties": {
655                                 "^[a-z]+$": {
656                                         "type": "object",
657                                         "patternProperties": {
658                                                 "^[a-z]+$": {
659                                                         "type": "boolean"
660                                                 }
661                                         }
662                                 }
663                         }
664                 },
665                 "RevokePermissions": {
666                         "type": "object",
667                         "description": "Default permissions to revoke from user groups",
668                         "patternProperties": {
669                                 "^[a-z]+$": {
670                                         "type": "object",
671                                         "patternProperties": {
672                                                 "^[a-z]+$": {
673                                                         "type": "boolean"
674                                                 }
675                                         }
676                                 }
677                         }
678                 },
679                 "GrantPermissions": {
680                         "type": "object",
681                         "description": "Map of permissions granted to authorized consumers to their bundles, called 'grants'",
682                         "patternProperties": {
683                                 "^[a-z]+$": {
684                                         "type": "object",
685                                         "patternProperties": {
686                                                 "^[a-z]+$": {
687                                                         "type": "boolean"
688                                                 }
689                                         }
690                                 }
691                         }
692                 },
693                 "GrantPermissionGroups": {
694                         "type": "object",
695                         "description": "Map of grants to their UI grouping",
696                         "patternProperties": {
697                                 "^[a-z]+$": {
698                                         "type": "string"
699                                 }
700                         }
701                 },
702                 "ImplicitGroups": {
703                         "type": "array",
704                         "description": "Implicit groups"
705                 },
706                 "GroupsAddToSelf": {
707                         "type": "object",
708                         "description": "Groups a user can add to themselves"
709                 },
710                 "GroupsRemoveFromSelf": {
711                         "type": "object",
712                         "description": "Groups a user can remove from themselves"
713                 },
714                 "AddGroups": {
715                         "type": "object",
716                         "description": "Groups a user can add to users"
717                 },
718                 "RemoveGroups": {
719                         "type": "object",
720                         "description": "Groups a user can remove from users"
721                 },
722                 "AvailableRights": {
723                         "type": "array",
724                         "description": "User rights added by the extension",
725                         "items": {
726                                 "type": "string"
727                         }
728                 },
729                 "ContentHandlers": {
730                         "type": "object",
731                         "description": "Mapping of model ID to class name",
732                         "patternProperties": {
733                                 "^[A-Za-z]+$": {
734                                         "type": "string"
735                                 }
736                         }
737                 },
738                 "RateLimits": {
739                         "type": "object",
740                         "description": "Rate limits"
741                 },
742                 "RecentChangesFlags": {
743                         "type": "object",
744                         "description": "Flags (letter symbols) shown on RecentChanges pages"
745                 },
746                 "MediaHandlers": {
747                         "type": "object",
748                         "description": "Plugins for media file type handling. Each entry in the array maps a MIME type to a PHP class name."
749                 },
750                 "ExtensionFunctions": {
751                         "type": [
752                                 "array",
753                                 "string"
754                         ],
755                         "description": "Function to call after setup has finished",
756                         "items": {
757                                 "type": "string"
758                         }
759                 },
760                 "ExtensionMessagesFiles": {
761                         "type": "object",
762                         "description": "File paths containing PHP internationalization data"
763                 },
764                 "MessagesDirs": {
765                         "type": "object",
766                         "description": "Directory paths containing JSON internationalization data"
767                 },
768                 "ExtensionEntryPointListFiles": {
769                         "type": "object"
770                 },
771                 "SpecialPages": {
772                         "type": "object",
773                         "description": "SpecialPages implemented in this extension (mapping of page name to class name)"
774                 },
775                 "AutoloadClasses": {
776                         "type": "object"
777                 },
778                 "Hooks": {
779                         "type": [ "string", "object" ],
780                         "description": "Hooks this extension uses (mapping of hook name to callback)"
781                 },
782                 "JobClasses": {
783                         "type": "object",
784                         "description": "Job types this extension implements (mapping of job type to class name)"
785                 },
786                 "LogTypes": {
787                         "type": "array",
788                         "description": "List of new log types this extension uses"
789                 },
790                 "LogRestrictions": {
791                         "type": "object"
792                 },
793                 "FilterLogTypes": {
794                         "type": "object"
795                 },
796                 "ActionFilteredLogs": {
797                         "type": "object",
798                         "description": "List of log types which can be filtered by log actions",
799                         "patternProperties": {
800                                 "^[a-z-]+$": {
801                                         "type": "object",
802                                         "patternProperties": {
803                                                 "^[a-z-]+$": {
804                                                         "type": "array",
805                                                         "items": {
806                                                                 "type": "string"
807                                                         }
808                                                 }
809                                         }
810                                 }
811                         }
812                 },
813                 "LogNames": {
814                         "type": "object"
815                 },
816                 "LogHeaders": {
817                         "type": "object"
818                 },
819                 "LogActions": {
820                         "type": "object"
821                 },
822                 "LogActionsHandlers": {
823                         "type": "object"
824                 },
825                 "Actions": {
826                         "type": "object"
827                 },
828                 "APIModules": {
829                         "type": "object"
830                 },
831                 "APIFormatModules": {
832                         "type": "object"
833                 },
834                 "APIMetaModules": {
835                         "type": "object"
836                 },
837                 "APIPropModules": {
838                         "type": "object"
839                 },
840                 "APIListModules": {
841                         "type": "object"
842                 },
843                 "ValidSkinNames": {
844                         "type": "object"
845                 },
846                 "FeedClasses": {
847                         "type": "object",
848                         "description": "Available feeds objects"
849                 },
850                 "SkinOOUIThemes": {
851                         "type": "object"
852                 },
853                 "callback": {
854                         "type": [
855                                 "array",
856                                 "string"
857                         ],
858                         "description": "A function to be called right after MediaWiki processes this file"
859                 },
860                 "config": {
861                         "type": "object",
862                         "description": "Configuration options for this extension",
863                         "properties": {
864                                 "_prefix": {
865                                         "type": "string",
866                                         "default": "wg",
867                                         "description": "Prefix to put in front of configuration settings when exporting them to $GLOBALS"
868                                 }
869                         },
870                         "patternProperties": {
871                                 "^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
872                                         "properties": {
873                                                 "_merge_strategy": {
874                                                         "type": "string",
875                                                         "enum": [
876                                                                 "array_merge_recursive",
877                                                                 "array_plus_2d",
878                                                                 "array_plus",
879                                                                 "array_merge"
880                                                         ],
881                                                         "default": "array_merge"
882                                                 }
883                                         }
884                                 }
885                         }
886                 },
887                 "ParserTestFiles": {
888                         "type": "array",
889                         "description": "Parser test suite files to be run by parserTests.php when no specific filename is passed to it"
890                 },
891                 "load_composer_autoloader": {
892                         "type": "boolean",
893                         "description": "Load the composer autoloader for this extension, if one is present"
894                 }
895         }