Extension:TemplateData

The TemplateData extension introduces a  tag and an API which together allow editors to specify how templates should be invoked. This information is available as a nicely-formatted table for end-users, and as a JSON API, which enables other systems (e.g. VisualEditor) to build interfaces for working with templates and their parameters.

Defining a TemplateData block
The TemplateData extension works through having a  tag defined in the wikitext of a template page (optionally it can be transcluded into the template page as well). This is designed to be compatible with the common layout many wikis have of transcluding template documentation from a separate page (but is not required). This content of the  tag is parsed as JSON using the format described below; note that all descriptions must be in plain text (no wikitext is accepted inside the JSON).

The below is a visualised version of the actual JSON data delivered from the API. It is a superset of the formal specification in the TemplateData repository. Please refer to spec.templatedata.json for the latest version. The data delivered by the API has the TemplateData contained within two objects representing the page from which the data was requested.

Example use
{	"description": "Label unsigned comments in a conversation.", "params": { "user": { "label": "Username", "type": "wiki-user-name", "required": true, "description": "User name of person who forgot to sign their comment.", "aliases": ["1"] },		"date": { "label": "Date", "description": { "en": "Timestamp of when the comment was posted, in YYYY-MM-DD format." },			"aliases": ["2"] },		"year": { "label": "Year", "type": "number" },		"month": { "label": "Month", "inherits": "year" },		"day": { "label": "Day", "inherits": "year" },		"comment": { "required": false }	},	"sets": [ {			"label": "Date", "params": ["year", "month", "day"] }	] }

Using the TemplateData API
More to come.

See the automatically formatted help at https://en.wikipedia.org/w/api.php?action=help&modules=templatedata. An example of a working call is https://en.wikipedia.org/w/api.php?action=templatedata&titles=Template:Cite%20web (for Template:Cite web). You can also see a formatted version to better understand the structure.