Repository navigation
Expand file tree
/
Copy pathplugin.schema.json
More file actions
86 lines (86 loc) · 3.45 KB
/
Copy pathplugin.schema.json
File metadata and controls
86 lines (86 loc) · 3.45 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
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/bludit/plugins/main/.github/rules/plugin.schema.json",
"title": "Bludit plugin submission",
"description": "One file per plugin inside plugins/. The filename is the id, it is the directory Bludit creates inside bl-plugins. Nothing here is read from the zip, this file is the record. Fields derived by CI (id, sha256, size) must not be present.",
"type": "object",
"additionalProperties": false,
"required": ["name", "description", "author", "website", "license", "compatible", "version"],
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "Shown in the plugin directory of the admin panel."
},
"description": {
"type": "object",
"description": "One line per language, the key is a Bludit language code such as en, es or pt_BR. English is required and is the fallback when the admin panel runs in a language the plugin does not provide.",
"required": ["en"],
"additionalProperties": false,
"maxProperties": 40,
"patternProperties": {
"^[a-z]{2,3}(_[A-Z]{2})?$": {
"type": "string",
"minLength": 10,
"maxLength": 300,
"pattern": "^[^\\n\\r]+$"
}
}
},
"author": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"website": {
"type": "string",
"format": "uri",
"pattern": "^https://",
"maxLength": 300,
"description": "Where a user reads about the plugin. Linked from the author name in the admin panel."
},
"license": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "SPDX identifier, for example MIT or GPL-3.0-or-later. Use PROPRIETARY for a closed licence."
},
"compatible": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+(,[0-9]+\\.[0-9]+)*$",
"description": "Comma separated list of major.minor Bludit versions, for example 4.0 or 4.0,4.1. Bludit only offers a plugin that names the version the site is running."
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 20,
"description": "The version this submission lists. Bump it in a new pull request to publish a new release."
},
"download": {
"type": "string",
"format": "uri",
"pattern": "^https://github\\.com/[^/]+/[^/]+/releases/download/[^/]+/[^/]+\\.zip$",
"description": "GitHub release asset. Archives generated by GitHub (/archive/*.zip) are not accepted, their bytes are not stable and the checksum recorded for the plugin would stop matching. Required for a free plugin, and must be absent when price_in_usd is set."
},
"price_in_usd": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000,
"description": "Leave it out for a free plugin. A priced plugin is a listing only: Bludit cannot install an asset it has to pay for, so it is hidden from the plugin directory in the admin panel and its source is never analyzed. Sell it from your website."
},
"type": {
"type": "string",
"enum": ["", "editor", "theme"],
"description": "Leave empty for a regular plugin. Same vocabulary used by the metadata.json of the plugin."
},
"tags": {
"type": "array",
"maxItems": 8,
"items": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{1,24}$"
}
}
}
}