-
Notifications
You must be signed in to change notification settings - Fork 146
Expand file tree
/
Copy pathproject-metadata.schema.json
More file actions
137 lines (137 loc) · 4.23 KB
/
Copy pathproject-metadata.schema.json
File metadata and controls
137 lines (137 loc) · 4.23 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://dongle.example/schemas/project-metadata.schema.json",
"title": "Dongle Project Metadata",
"description": "Off-chain JSON document referenced by a project's metadata_cid on the Dongle contract. Documents using only legacy fields (for example security_contact) remain valid.",
"type": "object",
"required": ["version", "projectName"],
"properties": {
"version": {
"type": "string",
"description": "Schema version of this document (semver recommended).",
"pattern": "^\\d+\\.\\d+\\.\\d+$",
"examples": ["1.0.0"]
},
"projectName": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Human-readable project display name."
},
"description": {
"type": "string",
"maxLength": 4096,
"description": "Extended markdown or plain-text description beyond the on-chain summary."
},
"website": {
"type": "string",
"format": "uri",
"description": "Canonical project website URL."
},
"repository": {
"type": "string",
"format": "uri",
"description": "Source repository URL (GitHub, GitLab, etc.)."
},
"documentation": {
"type": "string",
"format": "uri",
"description": "Primary documentation site URL."
},
"logo": {
"type": "string",
"minLength": 46,
"maxLength": 128,
"description": "IPFS CID for the project logo asset."
},
"banner": {
"type": "string",
"minLength": 46,
"maxLength": 128,
"description": "IPFS CID for a wide banner or cover image."
},
"categories": {
"type": "array",
"items": { "type": "string", "minLength": 1, "maxLength": 64 },
"maxItems": 10,
"description": "Discovery categories beyond the on-chain category field."
},
"tags": {
"type": "array",
"items": { "type": "string", "minLength": 1, "maxLength": 32 },
"maxItems": 20,
"description": "Free-form discovery tags."
},
"socials": {
"type": "object",
"description": "Named social or community links.",
"additionalProperties": {
"type": "string",
"format": "uri"
}
},
"licenses": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string", "minLength": 1, "maxLength": 64 },
"url": { "type": "string", "format": "uri" }
},
"additionalProperties": false
},
"maxItems": 5
},
"maintainers": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string", "minLength": 1, "maxLength": 128 },
"email": { "type": "string", "format": "email" },
"url": { "type": "string", "format": "uri" },
"role": { "type": "string", "maxLength": 64 }
},
"additionalProperties": false
},
"maxItems": 20
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "ISO-8601 timestamp when this metadata document was first published."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "ISO-8601 timestamp of the latest metadata revision."
},
"security_contact": {
"type": "object",
"description": "Legacy field preserved for backward compatibility with earlier metadata documents.",
"properties": {
"contact": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Email address, security.txt URL, or other published contact route."
},
"proof_cid": {
"type": "string",
"minLength": 46,
"maxLength": 128,
"description": "IPFS CID containing evidence that the contact is controlled by the project."
},
"verified": {
"type": "boolean",
"description": "Whether the on-chain project record has accepted a proof CID for the current contact."
}
},
"required": ["contact"],
"additionalProperties": false
}
},
"additionalProperties": false
}