@hypercerts-org/lexicon 0.10.0-beta.9 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/CHANGELOG.md +907 -0
  2. package/README.md +420 -168
  3. package/SCHEMAS.md +897 -142
  4. package/dist/exports.d.ts +1876 -453
  5. package/dist/exports.d.ts.map +1 -1
  6. package/dist/generated/exports.d.ts +1876 -453
  7. package/dist/generated/exports.d.ts.map +1 -1
  8. package/dist/generated/lexicons.d.ts +3709 -1113
  9. package/dist/generated/lexicons.d.ts.map +1 -1
  10. package/dist/generated/types/app/bsky/richtext/facet.d.ts +44 -7
  11. package/dist/generated/types/app/bsky/richtext/facet.d.ts.map +1 -1
  12. package/dist/generated/types/app/certified/actor/organization.d.ts +32 -0
  13. package/dist/generated/types/app/certified/actor/organization.d.ts.map +1 -0
  14. package/dist/generated/types/app/certified/actor/profile.d.ts +30 -0
  15. package/dist/generated/types/app/certified/actor/profile.d.ts.map +1 -0
  16. package/dist/generated/types/app/certified/badge/award.d.ts +4 -3
  17. package/dist/generated/types/app/certified/badge/award.d.ts.map +1 -1
  18. package/dist/generated/types/app/certified/badge/definition.d.ts +3 -3
  19. package/dist/generated/types/app/certified/badge/definition.d.ts.map +1 -1
  20. package/dist/generated/types/app/certified/badge/response.d.ts +3 -3
  21. package/dist/generated/types/app/certified/badge/response.d.ts.map +1 -1
  22. package/dist/generated/types/app/certified/defs.d.ts +11 -1
  23. package/dist/generated/types/app/certified/defs.d.ts.map +1 -1
  24. package/dist/generated/types/app/certified/link/evm.d.ts +45 -0
  25. package/dist/generated/types/app/certified/link/evm.d.ts.map +1 -0
  26. package/dist/generated/types/app/certified/location.d.ts +13 -5
  27. package/dist/generated/types/app/certified/location.d.ts.map +1 -1
  28. package/dist/generated/types/org/hyperboards/board.d.ts +75 -0
  29. package/dist/generated/types/org/hyperboards/board.d.ts.map +1 -0
  30. package/dist/generated/types/org/hyperboards/displayProfile.d.ts +31 -0
  31. package/dist/generated/types/org/hyperboards/displayProfile.d.ts.map +1 -0
  32. package/dist/generated/types/org/hypercerts/claim/activity.d.ts +33 -11
  33. package/dist/generated/types/org/hypercerts/claim/activity.d.ts.map +1 -1
  34. package/dist/generated/types/org/hypercerts/claim/{contributionDetails.d.ts → contribution.d.ts} +6 -6
  35. package/dist/generated/types/org/hypercerts/claim/contribution.d.ts.map +1 -0
  36. package/dist/generated/types/org/hypercerts/claim/contributorInformation.d.ts +2 -2
  37. package/dist/generated/types/org/hypercerts/claim/contributorInformation.d.ts.map +1 -1
  38. package/dist/generated/types/org/hypercerts/claim/rights.d.ts +3 -3
  39. package/dist/generated/types/org/hypercerts/claim/rights.d.ts.map +1 -1
  40. package/dist/generated/types/org/hypercerts/collection.d.ts +48 -0
  41. package/dist/generated/types/org/hypercerts/collection.d.ts.map +1 -0
  42. package/dist/generated/types/org/hypercerts/context/acknowledgement.d.ts +25 -0
  43. package/dist/generated/types/org/hypercerts/context/acknowledgement.d.ts.map +1 -0
  44. package/dist/generated/types/org/hypercerts/context/attachment.d.ts +37 -0
  45. package/dist/generated/types/org/hypercerts/context/attachment.d.ts.map +1 -0
  46. package/dist/{types/org/hypercerts/claim → generated/types/org/hypercerts/context}/evaluation.d.ts +15 -15
  47. package/dist/generated/types/org/hypercerts/context/evaluation.d.ts.map +1 -0
  48. package/dist/generated/types/org/hypercerts/context/measurement.d.ts +43 -0
  49. package/dist/generated/types/org/hypercerts/context/measurement.d.ts.map +1 -0
  50. package/dist/generated/types/org/hypercerts/defs.d.ts +19 -44
  51. package/dist/generated/types/org/hypercerts/defs.d.ts.map +1 -1
  52. package/dist/generated/types/org/hypercerts/funding/receipt.d.ts +18 -6
  53. package/dist/generated/types/org/hypercerts/funding/receipt.d.ts.map +1 -1
  54. package/dist/generated/types/org/hypercerts/workscope/cel.d.ts +20 -0
  55. package/dist/generated/types/org/hypercerts/workscope/cel.d.ts.map +1 -0
  56. package/dist/generated/types/org/hypercerts/workscope/tag.d.ts +36 -0
  57. package/dist/generated/types/org/hypercerts/workscope/tag.d.ts.map +1 -0
  58. package/dist/generated/types/pub/leaflet/blocks/blockquote.d.ts +13 -0
  59. package/dist/generated/types/pub/leaflet/blocks/blockquote.d.ts.map +1 -0
  60. package/dist/generated/types/pub/leaflet/blocks/bskyPost.d.ts +13 -0
  61. package/dist/generated/types/pub/leaflet/blocks/bskyPost.d.ts.map +1 -0
  62. package/dist/generated/types/pub/leaflet/blocks/button.d.ts +12 -0
  63. package/dist/generated/types/pub/leaflet/blocks/button.d.ts.map +1 -0
  64. package/dist/generated/types/pub/leaflet/blocks/code.d.ts +13 -0
  65. package/dist/generated/types/pub/leaflet/blocks/code.d.ts.map +1 -0
  66. package/dist/generated/types/pub/leaflet/blocks/header.d.ts +14 -0
  67. package/dist/generated/types/pub/leaflet/blocks/header.d.ts.map +1 -0
  68. package/dist/generated/types/pub/leaflet/blocks/horizontalRule.d.ts +10 -0
  69. package/dist/generated/types/pub/leaflet/blocks/horizontalRule.d.ts.map +1 -0
  70. package/dist/generated/types/pub/leaflet/blocks/iframe.d.ts +12 -0
  71. package/dist/generated/types/pub/leaflet/blocks/iframe.d.ts.map +1 -0
  72. package/dist/generated/types/pub/leaflet/blocks/image.d.ts +21 -0
  73. package/dist/generated/types/pub/leaflet/blocks/image.d.ts.map +1 -0
  74. package/dist/generated/types/pub/leaflet/blocks/math.d.ts +11 -0
  75. package/dist/generated/types/pub/leaflet/blocks/math.d.ts.map +1 -0
  76. package/dist/generated/types/pub/leaflet/blocks/orderedList.d.ts +31 -0
  77. package/dist/generated/types/pub/leaflet/blocks/orderedList.d.ts.map +1 -0
  78. package/dist/generated/types/pub/leaflet/blocks/page.d.ts +11 -0
  79. package/dist/generated/types/pub/leaflet/blocks/page.d.ts.map +1 -0
  80. package/dist/generated/types/pub/leaflet/blocks/poll.d.ts +12 -0
  81. package/dist/generated/types/pub/leaflet/blocks/poll.d.ts.map +1 -0
  82. package/dist/generated/types/pub/leaflet/blocks/text.d.ts +14 -0
  83. package/dist/generated/types/pub/leaflet/blocks/text.d.ts.map +1 -0
  84. package/dist/generated/types/pub/leaflet/blocks/unorderedList.d.ts +29 -0
  85. package/dist/generated/types/pub/leaflet/blocks/unorderedList.d.ts.map +1 -0
  86. package/dist/generated/types/pub/leaflet/blocks/website.d.ts +14 -0
  87. package/dist/generated/types/pub/leaflet/blocks/website.d.ts.map +1 -0
  88. package/dist/generated/types/pub/leaflet/pages/linearDocument.d.ts +54 -1
  89. package/dist/generated/types/pub/leaflet/pages/linearDocument.d.ts.map +1 -1
  90. package/dist/generated/types/pub/leaflet/richtext/facet.d.ts +97 -0
  91. package/dist/generated/types/pub/leaflet/richtext/facet.d.ts.map +1 -0
  92. package/dist/index.cjs +5682 -1668
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.mjs +5554 -1640
  95. package/dist/index.mjs.map +1 -1
  96. package/dist/lexicons.cjs +1846 -419
  97. package/dist/lexicons.cjs.map +1 -1
  98. package/dist/lexicons.d.ts +3709 -1113
  99. package/dist/lexicons.d.ts.map +1 -1
  100. package/dist/lexicons.mjs +1846 -419
  101. package/dist/lexicons.mjs.map +1 -1
  102. package/dist/tests/validate-external-lexicons.test.d.ts +2 -0
  103. package/dist/tests/validate-external-lexicons.test.d.ts.map +1 -0
  104. package/dist/tests/validate-funding-receipt.test.d.ts +2 -0
  105. package/dist/tests/validate-funding-receipt.test.d.ts.map +1 -0
  106. package/dist/tests/validate-link-evm.test.d.ts +2 -0
  107. package/dist/tests/validate-link-evm.test.d.ts.map +1 -0
  108. package/dist/tests/validate-rights.test.d.ts +2 -0
  109. package/dist/tests/validate-rights.test.d.ts.map +1 -0
  110. package/dist/types/app/bsky/richtext/facet.d.ts +44 -7
  111. package/dist/types/app/bsky/richtext/facet.d.ts.map +1 -1
  112. package/dist/types/app/certified/actor/organization.d.ts +32 -0
  113. package/dist/types/app/certified/actor/organization.d.ts.map +1 -0
  114. package/dist/types/app/certified/actor/profile.d.ts +30 -0
  115. package/dist/types/app/certified/actor/profile.d.ts.map +1 -0
  116. package/dist/types/app/certified/badge/award.d.ts +4 -3
  117. package/dist/types/app/certified/badge/award.d.ts.map +1 -1
  118. package/dist/types/app/certified/badge/definition.d.ts +3 -3
  119. package/dist/types/app/certified/badge/definition.d.ts.map +1 -1
  120. package/dist/types/app/certified/badge/response.d.ts +3 -3
  121. package/dist/types/app/certified/badge/response.d.ts.map +1 -1
  122. package/dist/types/app/certified/defs.d.ts +11 -1
  123. package/dist/types/app/certified/defs.d.ts.map +1 -1
  124. package/dist/types/app/certified/link/evm.d.ts +45 -0
  125. package/dist/types/app/certified/link/evm.d.ts.map +1 -0
  126. package/dist/types/app/certified/location.d.ts +13 -5
  127. package/dist/types/app/certified/location.d.ts.map +1 -1
  128. package/dist/types/org/hyperboards/board.d.ts +75 -0
  129. package/dist/types/org/hyperboards/board.d.ts.map +1 -0
  130. package/dist/types/org/hyperboards/displayProfile.d.ts +31 -0
  131. package/dist/types/org/hyperboards/displayProfile.d.ts.map +1 -0
  132. package/dist/types/org/hypercerts/claim/activity.d.ts +33 -11
  133. package/dist/types/org/hypercerts/claim/activity.d.ts.map +1 -1
  134. package/dist/types/org/hypercerts/claim/{contributionDetails.d.ts → contribution.d.ts} +6 -6
  135. package/dist/types/org/hypercerts/claim/contribution.d.ts.map +1 -0
  136. package/dist/types/org/hypercerts/claim/contributorInformation.d.ts +2 -2
  137. package/dist/types/org/hypercerts/claim/contributorInformation.d.ts.map +1 -1
  138. package/dist/types/org/hypercerts/claim/rights.d.ts +3 -3
  139. package/dist/types/org/hypercerts/claim/rights.d.ts.map +1 -1
  140. package/dist/types/org/hypercerts/collection.d.ts +48 -0
  141. package/dist/types/org/hypercerts/collection.d.ts.map +1 -0
  142. package/dist/types/org/hypercerts/context/acknowledgement.d.ts +25 -0
  143. package/dist/types/org/hypercerts/context/acknowledgement.d.ts.map +1 -0
  144. package/dist/types/org/hypercerts/context/attachment.d.ts +37 -0
  145. package/dist/types/org/hypercerts/context/attachment.d.ts.map +1 -0
  146. package/dist/{generated/types/org/hypercerts/claim → types/org/hypercerts/context}/evaluation.d.ts +15 -15
  147. package/dist/types/org/hypercerts/context/evaluation.d.ts.map +1 -0
  148. package/dist/types/org/hypercerts/context/measurement.d.ts +43 -0
  149. package/dist/types/org/hypercerts/context/measurement.d.ts.map +1 -0
  150. package/dist/types/org/hypercerts/defs.d.ts +19 -44
  151. package/dist/types/org/hypercerts/defs.d.ts.map +1 -1
  152. package/dist/types/org/hypercerts/funding/receipt.d.ts +18 -6
  153. package/dist/types/org/hypercerts/funding/receipt.d.ts.map +1 -1
  154. package/dist/types/org/hypercerts/workscope/cel.d.ts +20 -0
  155. package/dist/types/org/hypercerts/workscope/cel.d.ts.map +1 -0
  156. package/dist/types/org/hypercerts/workscope/tag.d.ts +36 -0
  157. package/dist/types/org/hypercerts/workscope/tag.d.ts.map +1 -0
  158. package/dist/types/pub/leaflet/blocks/blockquote.d.ts +13 -0
  159. package/dist/types/pub/leaflet/blocks/blockquote.d.ts.map +1 -0
  160. package/dist/types/pub/leaflet/blocks/bskyPost.d.ts +13 -0
  161. package/dist/types/pub/leaflet/blocks/bskyPost.d.ts.map +1 -0
  162. package/dist/types/pub/leaflet/blocks/button.d.ts +12 -0
  163. package/dist/types/pub/leaflet/blocks/button.d.ts.map +1 -0
  164. package/dist/types/pub/leaflet/blocks/code.d.ts +13 -0
  165. package/dist/types/pub/leaflet/blocks/code.d.ts.map +1 -0
  166. package/dist/types/pub/leaflet/blocks/header.d.ts +14 -0
  167. package/dist/types/pub/leaflet/blocks/header.d.ts.map +1 -0
  168. package/dist/types/pub/leaflet/blocks/horizontalRule.d.ts +10 -0
  169. package/dist/types/pub/leaflet/blocks/horizontalRule.d.ts.map +1 -0
  170. package/dist/types/pub/leaflet/blocks/iframe.d.ts +12 -0
  171. package/dist/types/pub/leaflet/blocks/iframe.d.ts.map +1 -0
  172. package/dist/types/pub/leaflet/blocks/image.d.ts +21 -0
  173. package/dist/types/pub/leaflet/blocks/image.d.ts.map +1 -0
  174. package/dist/types/pub/leaflet/blocks/math.d.ts +11 -0
  175. package/dist/types/pub/leaflet/blocks/math.d.ts.map +1 -0
  176. package/dist/types/pub/leaflet/blocks/orderedList.d.ts +31 -0
  177. package/dist/types/pub/leaflet/blocks/orderedList.d.ts.map +1 -0
  178. package/dist/types/pub/leaflet/blocks/page.d.ts +11 -0
  179. package/dist/types/pub/leaflet/blocks/page.d.ts.map +1 -0
  180. package/dist/types/pub/leaflet/blocks/poll.d.ts +12 -0
  181. package/dist/types/pub/leaflet/blocks/poll.d.ts.map +1 -0
  182. package/dist/types/pub/leaflet/blocks/text.d.ts +14 -0
  183. package/dist/types/pub/leaflet/blocks/text.d.ts.map +1 -0
  184. package/dist/types/pub/leaflet/blocks/unorderedList.d.ts +29 -0
  185. package/dist/types/pub/leaflet/blocks/unorderedList.d.ts.map +1 -0
  186. package/dist/types/pub/leaflet/blocks/website.d.ts +14 -0
  187. package/dist/types/pub/leaflet/blocks/website.d.ts.map +1 -0
  188. package/dist/types/pub/leaflet/pages/linearDocument.d.ts +54 -1
  189. package/dist/types/pub/leaflet/pages/linearDocument.d.ts.map +1 -1
  190. package/dist/types/pub/leaflet/richtext/facet.d.ts +97 -0
  191. package/dist/types/pub/leaflet/richtext/facet.d.ts.map +1 -0
  192. package/lexicons/app/bsky/richtext/facet.json +51 -0
  193. package/lexicons/app/certified/actor/organization.json +70 -0
  194. package/lexicons/app/certified/actor/profile.json +61 -0
  195. package/lexicons/app/certified/badge/award.json +10 -3
  196. package/lexicons/app/certified/badge/definition.json +17 -4
  197. package/lexicons/app/certified/badge/response.json +5 -4
  198. package/lexicons/app/certified/defs.json +11 -3
  199. package/lexicons/app/certified/link/evm.json +88 -0
  200. package/lexicons/app/certified/location.json +29 -6
  201. package/lexicons/org/hyperboards/board.json +152 -0
  202. package/lexicons/org/hyperboards/displayProfile.json +64 -0
  203. package/lexicons/org/hypercerts/claim/activity.json +61 -39
  204. package/lexicons/org/hypercerts/claim/{contributionDetails.json → contribution.json} +4 -4
  205. package/lexicons/org/hypercerts/claim/contributorInformation.json +3 -2
  206. package/lexicons/org/hypercerts/claim/rights.json +5 -3
  207. package/lexicons/org/hypercerts/{claim/collection.json → collection.json} +33 -11
  208. package/lexicons/org/hypercerts/context/acknowledgement.json +42 -0
  209. package/lexicons/org/hypercerts/context/attachment.json +88 -0
  210. package/lexicons/org/hypercerts/{claim → context}/evaluation.json +25 -22
  211. package/lexicons/org/hypercerts/context/measurement.json +107 -0
  212. package/lexicons/org/hypercerts/defs.json +35 -89
  213. package/lexicons/org/hypercerts/funding/receipt.json +40 -14
  214. package/lexicons/org/hypercerts/workscope/cel.json +39 -0
  215. package/lexicons/org/hypercerts/workscope/tag.json +87 -0
  216. package/lexicons/pub/leaflet/blocks/blockquote.json +22 -0
  217. package/lexicons/pub/leaflet/blocks/bskyPost.json +19 -0
  218. package/lexicons/pub/leaflet/blocks/button.json +19 -0
  219. package/lexicons/pub/leaflet/blocks/code.json +21 -0
  220. package/lexicons/pub/leaflet/blocks/header.json +27 -0
  221. package/lexicons/pub/leaflet/blocks/horizontalRule.json +11 -0
  222. package/lexicons/pub/leaflet/blocks/iframe.json +21 -0
  223. package/lexicons/pub/leaflet/blocks/image.json +37 -0
  224. package/lexicons/pub/leaflet/blocks/math.json +15 -0
  225. package/lexicons/pub/leaflet/blocks/orderedList.json +54 -0
  226. package/lexicons/pub/leaflet/blocks/page.json +15 -0
  227. package/lexicons/pub/leaflet/blocks/poll.json +16 -0
  228. package/lexicons/pub/leaflet/blocks/text.json +26 -0
  229. package/lexicons/pub/leaflet/blocks/unorderedList.json +50 -0
  230. package/lexicons/pub/leaflet/blocks/website.json +27 -0
  231. package/lexicons/pub/leaflet/pages/linearDocument.json +98 -0
  232. package/lexicons/pub/leaflet/richtext/facet.json +149 -0
  233. package/package.json +4 -5
  234. package/dist/generated/types/org/hypercerts/claim/collection.d.ts +0 -41
  235. package/dist/generated/types/org/hypercerts/claim/collection.d.ts.map +0 -1
  236. package/dist/generated/types/org/hypercerts/claim/contributionDetails.d.ts.map +0 -1
  237. package/dist/generated/types/org/hypercerts/claim/evaluation.d.ts.map +0 -1
  238. package/dist/generated/types/org/hypercerts/claim/evidence.d.ts +0 -29
  239. package/dist/generated/types/org/hypercerts/claim/evidence.d.ts.map +0 -1
  240. package/dist/generated/types/org/hypercerts/claim/measurement.d.ts +0 -30
  241. package/dist/generated/types/org/hypercerts/claim/measurement.d.ts.map +0 -1
  242. package/dist/generated/types/org/hypercerts/helper/workScopeTag.d.ts +0 -31
  243. package/dist/generated/types/org/hypercerts/helper/workScopeTag.d.ts.map +0 -1
  244. package/dist/types/org/hypercerts/claim/collection.d.ts +0 -41
  245. package/dist/types/org/hypercerts/claim/collection.d.ts.map +0 -1
  246. package/dist/types/org/hypercerts/claim/contributionDetails.d.ts.map +0 -1
  247. package/dist/types/org/hypercerts/claim/evaluation.d.ts.map +0 -1
  248. package/dist/types/org/hypercerts/claim/evidence.d.ts +0 -29
  249. package/dist/types/org/hypercerts/claim/evidence.d.ts.map +0 -1
  250. package/dist/types/org/hypercerts/claim/measurement.d.ts +0 -30
  251. package/dist/types/org/hypercerts/claim/measurement.d.ts.map +0 -1
  252. package/dist/types/org/hypercerts/helper/workScopeTag.d.ts +0 -31
  253. package/dist/types/org/hypercerts/helper/workScopeTag.d.ts.map +0 -1
  254. package/lexicons/org/hypercerts/claim/evidence.json +0 -57
  255. package/lexicons/org/hypercerts/claim/measurement.json +0 -70
  256. package/lexicons/org/hypercerts/helper/workScopeTag.json +0 -65
@@ -8,15 +8,25 @@
8
8
  "key": "tid",
9
9
  "record": {
10
10
  "type": "object",
11
- "required": ["title", "badgeType", "icon", "createdAt"],
11
+ "required": ["title", "badgeType", "createdAt"],
12
12
  "properties": {
13
13
  "badgeType": {
14
14
  "type": "string",
15
- "description": "Category of the badge (e.g. endorsement, participation, affiliation)."
15
+ "description": "Category of the badge. Values beyond the known set are permitted.",
16
+ "knownValues": [
17
+ "endorsement",
18
+ "verification",
19
+ "participation",
20
+ "certification",
21
+ "affiliation",
22
+ "recognition"
23
+ ],
24
+ "maxLength": 100
16
25
  },
17
26
  "title": {
18
27
  "type": "string",
19
- "description": "Human-readable title of the badge."
28
+ "description": "Human-readable title of the badge.",
29
+ "maxLength": 256
20
30
  },
21
31
  "icon": {
22
32
  "type": "blob",
@@ -31,11 +41,14 @@
31
41
  },
32
42
  "description": {
33
43
  "type": "string",
34
- "description": "Optional short statement describing what the badge represents."
44
+ "description": "Optional short statement describing what the badge represents.",
45
+ "maxLength": 5000,
46
+ "maxGraphemes": 500
35
47
  },
36
48
  "allowedIssuers": {
37
49
  "type": "array",
38
50
  "description": "Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it.",
51
+ "maxLength": 100,
39
52
  "items": {
40
53
  "type": "ref",
41
54
  "ref": "app.certified.defs#did"
@@ -12,17 +12,18 @@
12
12
  "properties": {
13
13
  "badgeAward": {
14
14
  "type": "ref",
15
- "ref": "app.certified.badge.award",
16
- "description": "Reference to the badge award."
15
+ "ref": "com.atproto.repo.strongRef",
16
+ "description": "Strong reference to the badge award being responded to. The record referenced must conform with the lexicon app.certified.badge.award."
17
17
  },
18
18
  "response": {
19
19
  "type": "string",
20
- "enum": ["accepted", "rejected"],
20
+ "knownValues": ["accepted", "rejected"],
21
21
  "description": "The recipient’s response for the badge (accepted or rejected)."
22
22
  },
23
23
  "weight": {
24
24
  "type": "string",
25
- "description": "Optional relative weight for accepted badges, assigned by the recipient."
25
+ "description": "Optional relative weight for accepted badges, assigned by the recipient.",
26
+ "maxLength": 50
26
27
  },
27
28
  "createdAt": {
28
29
  "type": "string",
@@ -4,9 +4,17 @@
4
4
  "description": "Common type definitions used across certified protocols.",
5
5
  "defs": {
6
6
  "did": {
7
- "type": "string",
8
- "format": "did",
9
- "description": "A Decentralized Identifier (DID) string."
7
+ "type": "object",
8
+ "description": "A Decentralized Identifier (DID) string.",
9
+ "required": ["did"],
10
+ "properties": {
11
+ "did": {
12
+ "type": "string",
13
+ "format": "did",
14
+ "description": "The DID string value.",
15
+ "maxLength": 256
16
+ }
17
+ }
10
18
  }
11
19
  }
12
20
  }
@@ -0,0 +1,88 @@
1
+ {
2
+ "lexicon": 1,
3
+ "id": "app.certified.link.evm",
4
+ "defs": {
5
+ "main": {
6
+ "type": "record",
7
+ "description": "A verifiable link between an ATProto DID and an EVM wallet address, proven via a cryptographic signature. Currently supports EOA wallets via EIP-712 typed data signatures; the proof field is an open union to allow future signature methods.",
8
+ "key": "any",
9
+ "record": {
10
+ "type": "object",
11
+ "required": ["address", "proof", "createdAt"],
12
+ "properties": {
13
+ "address": {
14
+ "type": "string",
15
+ "description": "EVM wallet address (0x-prefixed, with EIP-55 checksum recommended).",
16
+ "minLength": 42,
17
+ "maxLength": 42
18
+ },
19
+ "proof": {
20
+ "type": "union",
21
+ "refs": ["#eip712Proof"],
22
+ "description": "Cryptographic proof of wallet ownership. The union is open to allow future proof methods (e.g. ERC-1271, ERC-6492). Each variant bundles its signature with the corresponding message format."
23
+ },
24
+ "createdAt": {
25
+ "type": "string",
26
+ "format": "datetime",
27
+ "description": "Client-declared timestamp when this record was originally created."
28
+ }
29
+ }
30
+ }
31
+ },
32
+ "eip712Proof": {
33
+ "type": "object",
34
+ "description": "EOA wallet ownership proof via EIP-712 typed data signature. Contains both the structured message that was signed and the resulting signature.",
35
+ "required": ["signature", "message"],
36
+ "properties": {
37
+ "signature": {
38
+ "type": "string",
39
+ "description": "ECDSA signature over the EIP-712 hash (hex-encoded with 0x prefix, 64 or 65 bytes).",
40
+ "minLength": 130,
41
+ "maxLength": 132
42
+ },
43
+ "message": {
44
+ "type": "ref",
45
+ "ref": "#eip712Message",
46
+ "description": "The EIP-712 structured message fields that were signed."
47
+ }
48
+ }
49
+ },
50
+ "eip712Message": {
51
+ "type": "object",
52
+ "description": "The EIP-712 typed data message that was signed by the wallet. Contains the fields binding an ATProto DID to an EVM address on a specific chain.",
53
+ "required": ["did", "evmAddress", "chainId", "timestamp", "nonce"],
54
+ "properties": {
55
+ "did": {
56
+ "type": "string",
57
+ "format": "did",
58
+ "description": "The ATProto DID being linked to the EVM address.",
59
+ "maxLength": 256
60
+ },
61
+ "evmAddress": {
62
+ "type": "string",
63
+ "description": "The EVM wallet address (must match the top-level address field).",
64
+ "minLength": 42,
65
+ "maxLength": 42
66
+ },
67
+ "chainId": {
68
+ "type": "string",
69
+ "description": "EVM chain ID as string (bigint serialized). Identifies which chain was used for signing; for EOA wallets the identity link applies across all EVM-compatible chains.",
70
+ "minLength": 1,
71
+ "maxLength": 78
72
+ },
73
+ "timestamp": {
74
+ "type": "string",
75
+ "description": "Unix timestamp when the attestation was created (bigint serialized).",
76
+ "minLength": 1,
77
+ "maxLength": 78
78
+ },
79
+ "nonce": {
80
+ "type": "string",
81
+ "description": "Replay-protection nonce (bigint serialized).",
82
+ "minLength": 1,
83
+ "maxLength": 78
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
@@ -29,27 +29,37 @@
29
29
  },
30
30
  "locationType": {
31
31
  "type": "string",
32
- "description": "An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point)",
33
- "knownValues": ["coordinate-decimal", "geojson-point"],
32
+ "description": "An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point). See the Location Protocol spec for the full registry: https://spec.decentralizedgeo.org/specification/location-types/#location-type-registry",
33
+ "knownValues": [
34
+ "coordinate-decimal",
35
+ "geojson-point",
36
+ "geojson",
37
+ "h3",
38
+ "geohash",
39
+ "wkt",
40
+ "address",
41
+ "scaledCoordinates"
42
+ ],
34
43
  "maxLength": 20
35
44
  },
36
45
  "location": {
37
46
  "type": "union",
38
47
  "refs": [
39
48
  "org.hypercerts.defs#uri",
40
- "org.hypercerts.defs#smallBlob"
49
+ "org.hypercerts.defs#smallBlob",
50
+ "#string"
41
51
  ],
42
- "description": "The location of where the work was performed as a URI or blob."
52
+ "description": "The location of where the work was performed as a URI, blob, or inline string."
43
53
  },
44
54
  "name": {
45
55
  "type": "string",
46
- "description": "Optional name for this location",
56
+ "description": "Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area')",
47
57
  "maxLength": 1000,
48
58
  "maxGraphemes": 100
49
59
  },
50
60
  "description": {
51
61
  "type": "string",
52
- "description": "Optional description for this location",
62
+ "description": "Additional context about this location, such as its significance to the work or specific boundaries",
53
63
  "maxLength": 2000,
54
64
  "maxGraphemes": 500
55
65
  },
@@ -60,6 +70,19 @@
60
70
  }
61
71
  }
62
72
  }
73
+ },
74
+ "string": {
75
+ "type": "object",
76
+ "required": ["string"],
77
+ "description": "A location represented as a string, e.g. coordinates or a small GeoJSON string.",
78
+ "properties": {
79
+ "string": {
80
+ "type": "string",
81
+ "description": "The location string value",
82
+ "maxLength": 10000,
83
+ "maxGraphemes": 1000
84
+ }
85
+ }
63
86
  }
64
87
  }
65
88
  }
@@ -0,0 +1,152 @@
1
+ {
2
+ "lexicon": 1,
3
+ "id": "org.hyperboards.board",
4
+ "defs": {
5
+ "main": {
6
+ "type": "record",
7
+ "description": "Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS.",
8
+ "key": "tid",
9
+ "record": {
10
+ "type": "object",
11
+ "required": ["subject", "createdAt"],
12
+ "properties": {
13
+ "subject": {
14
+ "type": "ref",
15
+ "ref": "com.atproto.repo.strongRef",
16
+ "description": "Reference to the org.hypercerts.claim.activity or org.hypercerts.claim.collection this board visualizes."
17
+ },
18
+ "config": {
19
+ "type": "ref",
20
+ "ref": "#boardConfig",
21
+ "description": "Board-level visual configuration (background, colors, aspect ratio)."
22
+ },
23
+ "contributorConfigs": {
24
+ "type": "array",
25
+ "description": "Per-contributor configuration entries for this board.",
26
+ "maxLength": 1000,
27
+ "items": {
28
+ "type": "ref",
29
+ "ref": "#contributorConfig"
30
+ }
31
+ },
32
+ "createdAt": {
33
+ "type": "string",
34
+ "format": "datetime",
35
+ "description": "Client-declared timestamp when this record was originally created."
36
+ }
37
+ }
38
+ }
39
+ },
40
+ "boardConfig": {
41
+ "type": "object",
42
+ "description": "Visual configuration for a hyperboard's background, colors, and layout.",
43
+ "properties": {
44
+ "backgroundType": {
45
+ "type": "string",
46
+ "description": "Type of background content.",
47
+ "knownValues": ["image", "iframe"],
48
+ "maxLength": 10
49
+ },
50
+ "backgroundImage": {
51
+ "type": "union",
52
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallImage"],
53
+ "description": "Background image as a URI or image blob."
54
+ },
55
+ "backgroundIframeUrl": {
56
+ "type": "string",
57
+ "format": "uri",
58
+ "description": "URI of the background iframe.",
59
+ "maxLength": 2048
60
+ },
61
+ "backgroundGrayscale": {
62
+ "type": "boolean",
63
+ "description": "Whether the background is rendered in grayscale. Default: true."
64
+ },
65
+ "backgroundOpacity": {
66
+ "type": "integer",
67
+ "description": "Background opacity as a percentage (0–100).",
68
+ "minimum": 0,
69
+ "maximum": 100
70
+ },
71
+ "backgroundColor": {
72
+ "type": "string",
73
+ "description": "Background color as a hex string (e.g. '#ffffff').",
74
+ "maxLength": 20
75
+ },
76
+ "borderColor": {
77
+ "type": "string",
78
+ "description": "Border color as a hex string (e.g. '#000000').",
79
+ "maxLength": 20
80
+ },
81
+ "grayscaleImages": {
82
+ "type": "boolean",
83
+ "description": "Whether contributor images are rendered in grayscale. Default: false."
84
+ },
85
+ "imageShape": {
86
+ "type": "string",
87
+ "description": "Shape used to crop contributor images on this board.",
88
+ "knownValues": ["circular", "square"],
89
+ "maxLength": 20
90
+ },
91
+ "aspectRatio": {
92
+ "type": "string",
93
+ "description": "Display aspect ratio of the board.",
94
+ "knownValues": ["16:9", "4:3", "1:1"],
95
+ "maxLength": 10
96
+ }
97
+ }
98
+ },
99
+ "contributorConfig": {
100
+ "type": "object",
101
+ "description": "Configuration for a specific contributor within a board. Values serve as fallbacks when the contributor has not defined them on their profile. It can also be used to override contributor settings on this board without changing their global profile.",
102
+ "required": ["contributor"],
103
+ "properties": {
104
+ "contributor": {
105
+ "type": "union",
106
+ "refs": [
107
+ "com.atproto.repo.strongRef",
108
+ "org.hypercerts.claim.activity#contributorIdentity"
109
+ ],
110
+ "description": "Identifies the contributor being styled. A strong reference to an org.hypercerts.claim.contributorInformation record, or a contributorIdentity (DID or identifier string) for contributors without a dedicated record."
111
+ },
112
+ "override": {
113
+ "type": "boolean",
114
+ "description": "When true, these values take precedence over the contributor's own profile and display settings. When false or omitted, they are only used as fallbacks if the contributor has not set their own settings."
115
+ },
116
+ "displayName": {
117
+ "type": "string",
118
+ "description": "Display name for this contributor on this board.",
119
+ "maxLength": 640,
120
+ "maxGraphemes": 64
121
+ },
122
+ "image": {
123
+ "type": "union",
124
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallImage"],
125
+ "description": "Avatar or face image for this contributor on this board, as a URI or image blob."
126
+ },
127
+ "video": {
128
+ "type": "union",
129
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallVideo"],
130
+ "description": "Video for this contributor, as a URI (embed/direct link) or uploaded video blob."
131
+ },
132
+ "hoverImage": {
133
+ "type": "union",
134
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallImage"],
135
+ "description": "Image overlay shown when hovering over this contributor, as a URI or image blob."
136
+ },
137
+ "hoverIframeUrl": {
138
+ "type": "string",
139
+ "format": "uri",
140
+ "description": "Iframe overlay shown when hovering over this contributor.",
141
+ "maxLength": 2048
142
+ },
143
+ "url": {
144
+ "type": "string",
145
+ "format": "uri",
146
+ "description": "Click-through link URL for this contributor.",
147
+ "maxLength": 2048
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "lexicon": 1,
3
+ "id": "org.hyperboards.displayProfile",
4
+ "defs": {
5
+ "main": {
6
+ "type": "record",
7
+ "description": "User-declared visual presentation defaults for how a contributor appears on hyperboards. Stored in the contributor's own PDS and reusable across multiple boards.",
8
+ "key": "literal:self",
9
+ "record": {
10
+ "type": "object",
11
+ "required": ["createdAt"],
12
+ "properties": {
13
+ "displayName": {
14
+ "type": "string",
15
+ "description": "Display name override for this user on hyperboards.",
16
+ "maxLength": 640,
17
+ "maxGraphemes": 64
18
+ },
19
+ "image": {
20
+ "type": "union",
21
+ "refs": [
22
+ "org.hypercerts.defs#uri",
23
+ "org.hypercerts.defs#smallImage"
24
+ ],
25
+ "description": "Avatar or face image override for this user on hyperboards, as a URI or image blob."
26
+ },
27
+ "video": {
28
+ "type": "union",
29
+ "refs": [
30
+ "org.hypercerts.defs#uri",
31
+ "org.hypercerts.defs#smallVideo"
32
+ ],
33
+ "description": "Default video for this user across boards, as a URI (embed/direct link) or uploaded video blob."
34
+ },
35
+ "hoverImage": {
36
+ "type": "union",
37
+ "refs": [
38
+ "org.hypercerts.defs#uri",
39
+ "org.hypercerts.defs#smallImage"
40
+ ],
41
+ "description": "Default hover image for this user across boards, as a URI or image blob."
42
+ },
43
+ "hoverIframeUrl": {
44
+ "type": "string",
45
+ "format": "uri",
46
+ "description": "Default hover iframe URL for this user across boards.",
47
+ "maxLength": 2048
48
+ },
49
+ "url": {
50
+ "type": "string",
51
+ "format": "uri",
52
+ "description": "Default click-through link URL for this user across boards.",
53
+ "maxLength": 2048
54
+ },
55
+ "createdAt": {
56
+ "type": "string",
57
+ "format": "datetime",
58
+ "description": "Client-declared timestamp when this record was originally created."
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
@@ -12,7 +12,7 @@
12
12
  "properties": {
13
13
  "title": {
14
14
  "type": "string",
15
- "description": "Title of the hypercert.",
15
+ "description": "Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024')",
16
16
  "maxLength": 256
17
17
  },
18
18
  "shortDescription": {
@@ -30,18 +30,13 @@
30
30
  }
31
31
  },
32
32
  "description": {
33
- "type": "string",
34
- "description": "Optional longer description of this activity claim, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`.",
35
- "maxLength": 30000,
36
- "maxGraphemes": 3000
37
- },
38
- "descriptionFacets": {
39
- "type": "array",
40
- "description": "Rich text annotations for `description` (mentions, URLs, hashtags, etc).",
41
- "items": {
42
- "type": "ref",
43
- "ref": "app.bsky.richtext.facet"
44
- }
33
+ "type": "union",
34
+ "refs": [
35
+ "org.hypercerts.defs#descriptionString",
36
+ "pub.leaflet.pages.linearDocument",
37
+ "com.atproto.repo.strongRef"
38
+ ],
39
+ "description": "Long-form description of the activity. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record."
45
40
  },
46
41
  "image": {
47
42
  "type": "union",
@@ -51,15 +46,18 @@
51
46
  ],
52
47
  "description": "The hypercert visual representation as a URI or image blob."
53
48
  },
49
+ "contributors": {
50
+ "type": "array",
51
+ "description": "An array of contributor objects, each containing contributor information, weight, and contribution details.",
52
+ "items": {
53
+ "type": "ref",
54
+ "ref": "#contributor"
55
+ }
56
+ },
54
57
  "workScope": {
55
58
  "type": "union",
56
- "refs": [
57
- "org.hypercerts.defs#workScopeAll",
58
- "org.hypercerts.defs#workScopeAny",
59
- "org.hypercerts.defs#workScopeNot",
60
- "org.hypercerts.defs#workScopeAtom"
61
- ],
62
- "description": "Work scope logic expression using boolean operators (all/any/not) and atomic scope references."
59
+ "refs": ["org.hypercerts.workscope.cel", "#workScopeString"],
60
+ "description": "Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes."
63
61
  },
64
62
  "startDate": {
65
63
  "type": "string",
@@ -71,12 +69,13 @@
71
69
  "format": "datetime",
72
70
  "description": "When the work ended"
73
71
  },
74
- "contributors": {
72
+ "locations": {
75
73
  "type": "array",
76
- "description": "An array of contributor objects, each containing contributor information, weight, and contribution details.",
74
+ "description": "An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.",
75
+ "maxLength": 1000,
77
76
  "items": {
78
77
  "type": "ref",
79
- "ref": "#contributor"
78
+ "ref": "com.atproto.repo.strongRef"
80
79
  }
81
80
  },
82
81
  "rights": {
@@ -84,14 +83,6 @@
84
83
  "ref": "com.atproto.repo.strongRef",
85
84
  "description": "A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights."
86
85
  },
87
- "locations": {
88
- "type": "array",
89
- "description": "An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.",
90
- "items": {
91
- "type": "ref",
92
- "ref": "com.atproto.repo.strongRef"
93
- }
94
- },
95
86
  "createdAt": {
96
87
  "type": "string",
97
88
  "format": "datetime",
@@ -102,33 +93,64 @@
102
93
  },
103
94
  "contributor": {
104
95
  "type": "object",
96
+ "description": "A contributor to the activity, with identity, weight, and contribution details.",
105
97
  "required": ["contributorIdentity"],
106
98
  "properties": {
107
99
  "contributorIdentity": {
108
100
  "type": "union",
109
101
  "refs": ["#contributorIdentity", "com.atproto.repo.strongRef"],
110
- "description": "Contributor identity as a string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record."
102
+ "description": "Inline contributor identity object with an identity string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record. The record referenced must conform with the lexicon org.hypercerts.claim.contributorInformation."
111
103
  },
112
104
  "contributionWeight": {
113
105
  "type": "string",
114
- "description": "The relative weight/importance of this contribution (stored as a string to avoid float precision issues). Must be a positive numeric value. Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed."
106
+ "description": "The relative weight/importance of this contribution (stored as a string to avoid float precision issues). Must be a positive numeric value. Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed.",
107
+ "maxLength": 100
115
108
  },
116
109
  "contributionDetails": {
117
110
  "type": "union",
118
111
  "refs": ["#contributorRole", "com.atproto.repo.strongRef"],
119
- "description": "Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record."
112
+ "description": "Inline contribution role object with a role string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record. The record referenced must conform with the lexicon org.hypercerts.claim.contribution."
120
113
  }
121
114
  }
122
115
  },
123
116
  "contributorIdentity": {
124
- "type": "string",
125
- "description": "Contributor information as a string (DID or identifier)."
117
+ "type": "object",
118
+ "description": "Contributor information as a string (DID or identifier).",
119
+ "required": ["identity"],
120
+ "properties": {
121
+ "identity": {
122
+ "type": "string",
123
+ "description": "The contributor identity string (DID or identifier).",
124
+ "maxLength": 1000,
125
+ "maxGraphemes": 100
126
+ }
127
+ }
126
128
  },
127
129
  "contributorRole": {
128
- "type": "string",
130
+ "type": "object",
129
131
  "description": "Contribution details as a string.",
130
- "maxLength": 10000,
131
- "maxGraphemes": 1000
132
+ "required": ["role"],
133
+ "properties": {
134
+ "role": {
135
+ "type": "string",
136
+ "description": "The contribution role or details.",
137
+ "maxLength": 1000,
138
+ "maxGraphemes": 100
139
+ }
140
+ }
141
+ },
142
+ "workScopeString": {
143
+ "type": "object",
144
+ "description": "A free-form string describing the work scope for simple or legacy scopes.",
145
+ "required": ["scope"],
146
+ "properties": {
147
+ "scope": {
148
+ "type": "string",
149
+ "description": "The work scope description string.",
150
+ "maxLength": 1000,
151
+ "maxGraphemes": 100
152
+ }
153
+ }
132
154
  }
133
155
  }
134
156
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "lexicon": 1,
3
- "id": "org.hypercerts.claim.contributionDetails",
3
+ "id": "org.hypercerts.claim.contribution",
4
4
  "defs": {
5
5
  "main": {
6
6
  "type": "record",
@@ -17,19 +17,19 @@
17
17
  },
18
18
  "contributionDescription": {
19
19
  "type": "string",
20
- "description": "What the contribution concretely was.",
20
+ "description": "Description of what the contribution concretely involved.",
21
21
  "maxLength": 10000,
22
22
  "maxGraphemes": 1000
23
23
  },
24
24
  "startDate": {
25
25
  "type": "string",
26
26
  "format": "datetime",
27
- "description": "When this contribution started. This should be a subset of the hypercert timeframe."
27
+ "description": "When this contribution started. Should fall within the parent hypercert's timeframe."
28
28
  },
29
29
  "endDate": {
30
30
  "type": "string",
31
31
  "format": "datetime",
32
- "description": "When this contribution finished. This should be a subset of the hypercert timeframe."
32
+ "description": "When this contribution finished. Should fall within the parent hypercert's timeframe."
33
33
  },
34
34
  "createdAt": {
35
35
  "type": "string",