Update checker JSON schema
A design criteria is that the load on the server should be as low as possible, so most processing should be done client side, or statically.
Therefore, the design of having each version fetch a fixed URL which is a static file on the server is kept. The file fetched will then describe every possible upgrade path from the given version, and the client is responsible for presenting any possible options to the user.
The same HTTP query parameters can be passed for statistics collection.
The JSON schema follows the line-based file format closely.
The structure will be an array of dictionaries, with each dictionary describing one upgrade path. One result of this is that an empty file is no longer valid, the minimum file contains an empty JSON array, [].
An upgrade path dictionary can have the following keys:
type: String. Same as type field in line-based format. Required.
revision: Number. Monotonically increasing revision number for releases. An upgrade path is only acceptable if its revision number is greater than the running version. Required.
tags_required: Array of strings. Each string is a (case-sensitive) tag that the client must be compiled with for the upgrade path to be acceptable. Optional, if left out no tags are required.
tags_excluded: Array of string. Each string is a (case-sensitve) tag that the client must not be compiled with. If the client has any tag in the list, the upgrade path is not acceptable. Optional, if left out no tags are excluding. (This is a new field.)
url_info: String. An URL the user can visit for more information on the release and to get a download. Required.
url_auto: String. An URL the client can fetch for an auto-update package. Optional.
friendly_name: String. A display name for the upgrade path. Required.
friendly_name_i18n: Dictionary. Each key is an RFC 4646 language tag, the values are strings. If the user interface language matched a key in this dictionary, the string value is a translation of the friendly name into that language. Optional.
description: String. A textual description of the upgrade path for display to the user. Required.
description_i18n: Dictionary. Same mechanics as friendly_name_i18n but for the description text. Optional.
