-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.json
More file actions
87 lines (87 loc) · 2.94 KB
/
Copy pathschema.json
File metadata and controls
87 lines (87 loc) · 2.94 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
87
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "contract/schema.json",
"title": "marketplace.json",
"description": "Metadata manifest required in every doc app repo to be included in the docs marketplace.",
"type": "object",
"required": ["marketplaceVersion", "name", "slug", "description", "entryPoint"],
"additionalProperties": false,
"properties": {
"marketplaceVersion": {
"type": "string",
"enum": ["1"],
"description": "Contract version. Must be '1'."
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 64,
"description": "Human-readable app name shown in the marketplace."
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"minLength": 2,
"maxLength": 32,
"description": "URL-safe identifier used as the path prefix: /apps/{slug}/. Must be lowercase alphanumeric with hyphens."
},
"description": {
"type": "string",
"minLength": 10,
"maxLength": 280,
"description": "Short description shown on the marketplace catalog card."
},
"icon": {
"type": "string",
"description": "Icon name from the supported set. See HEADLESS_RULES.md for the full list.",
"default": "book-open",
"enum": [
"book-open", "cube", "chip", "chart-bar", "shield",
"cog", "terminal", "globe", "layers", "lightning-bolt",
"document", "collection", "puzzle", "database"
]
},
"tags": {
"type": "array",
"items": { "type": "string", "maxLength": 32 },
"maxItems": 5,
"description": "Taxonomy tags shown as pills on the catalog card."
},
"entryPoint": {
"type": "string",
"description": "Relative path to the landing page within the built output directory.",
"default": "index.html"
},
"pages": {
"type": "array",
"description": "Optional navigation manifest. When present, the marketplace uses this list as the authoritative source of static routes instead of crawling the dist/ filesystem.",
"items": {
"type": "object",
"required": ["title", "path", "order"],
"additionalProperties": false,
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Human-readable page title used in sidebar navigation."
},
"path": {
"type": "string",
"description": "Relative path to the HTML file within the built dist/ directory."
},
"order": {
"type": "integer",
"minimum": 0,
"description": "Integer sort order within the app's navigation (lower = higher up)."
},
"section": {
"type": "string",
"maxLength": 64,
"description": "Optional section/group heading to display above this page in the sidebar."
}
}
}
}
}
}