@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
package/SCHEMAS.md CHANGED
@@ -15,152 +15,243 @@ Hypercerts-specific lexicons for tracking impact work and claims.
15
15
 
16
16
  #### Properties
17
17
 
18
- | Property | Type | Required | Description | Comments |
19
- | ------------------------ | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
20
- | `title` | `string` | ✅ | Title of the hypercert. | maxLength: 256 |
21
- | `shortDescription` | `string` | ✅ | Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`. | maxLength: 3000, maxGraphemes: 300 |
22
- | `shortDescriptionFacets` | `ref` | ❌ | Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc). | |
23
- | `description` | `string` | ❌ | Optional longer description of this activity claim, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`. | maxLength: 30000, maxGraphemes: 3000 |
24
- | `descriptionFacets` | `ref` | ❌ | Rich text annotations for `description` (mentions, URLs, hashtags, etc). | |
25
- | `image` | `union` | ❌ | The hypercert visual representation as a URI or image blob. | |
26
- | `workScope` | `union` | ❌ | Work scope logic expression using boolean operators (all/any/not) and atomic scope references. | |
27
- | `startDate` | `string` | ❌ | When the work began | |
28
- | `endDate` | `string` | ❌ | When the work ended | |
29
- | `contributors` | `ref` | ❌ | An array of contributor objects, each containing contributor information, weight, and contribution details. | |
30
- | `rights` | `ref` | ❌ | A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights. | |
31
- | `locations` | `ref` | | An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location. | |
32
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
18
+ | Property | Type | Required | Description | Comments |
19
+ | ------------------------ | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
20
+ | `title` | `string` | ✅ | Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024') | maxLength: 256 |
21
+ | `shortDescription` | `string` | ✅ | Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`. | maxLength: 3000, maxGraphemes: 300 |
22
+ | `shortDescriptionFacets` | `ref[]` | ❌ | Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc). | |
23
+ | `description` | `union` | ❌ | 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. | |
24
+ | `image` | `union` | ❌ | The hypercert visual representation as a URI or image blob. | |
25
+ | `contributors` | `ref[]` | ❌ | An array of contributor objects, each containing contributor information, weight, and contribution details. | |
26
+ | `workScope` | `union` | ❌ | Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes. | |
27
+ | `startDate` | `string` | ❌ | When the work began | |
28
+ | `endDate` | `string` | ❌ | When the work ended | |
29
+ | `locations` | `ref[]` | ❌ | An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location. | maxLength: 1000 |
30
+ | `rights` | `ref` | ❌ | A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights. | |
31
+ | `createdAt` | `string` | | Client-declared timestamp when this record was originally created | |
33
32
 
34
33
  #### Defs
35
34
 
36
- ##### contributor
35
+ ##### `org.hypercerts.claim.activity#contributor`
37
36
 
38
- | Property | Type | Required | Description |
39
- | --------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
40
- | `contributorIdentity` | `union` | | Contributor identity as a string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record. |
41
- | `contributionWeight` | `string` | | 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. |
42
- | `contributionDetails` | `union` | | Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record. |
37
+ A contributor to the activity, with identity, weight, and contribution details.
38
+
39
+ | Property | Type | Required | Description |
40
+ | --------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | `contributorIdentity` | `union` | | 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. |
42
+ | `contributionWeight` | `string` | ❌ | 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. |
43
+ | `contributionDetails` | `union` | ❌ | 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. |
44
+
45
+ ##### `org.hypercerts.claim.activity#contributorIdentity`
46
+
47
+ Contributor information as a string (DID or identifier).
48
+
49
+ | Property | Type | Required | Description |
50
+ | ---------- | -------- | -------- | ---------------------------------------------------- |
51
+ | `identity` | `string` | ✅ | The contributor identity string (DID or identifier). |
52
+
53
+ ##### `org.hypercerts.claim.activity#contributorRole`
54
+
55
+ Contribution details as a string.
56
+
57
+ | Property | Type | Required | Description |
58
+ | -------- | -------- | -------- | --------------------------------- |
59
+ | `role` | `string` | ✅ | The contribution role or details. |
60
+
61
+ ##### `org.hypercerts.claim.activity#workScopeString`
62
+
63
+ A free-form string describing the work scope for simple or legacy scopes.
64
+
65
+ | Property | Type | Required | Description |
66
+ | -------- | -------- | -------- | ---------------------------------- |
67
+ | `scope` | `string` | ✅ | The work scope description string. |
43
68
 
44
69
  ---
45
70
 
46
- ### `org.hypercerts.claim.evaluation`
71
+ ### `org.hypercerts.claim.contribution`
47
72
 
48
- **Description:** An evaluation of a hypercert record (e.g. an activity and its impact).
73
+ **Description:** Details about a specific contribution including role, description, and timeframe.
74
+
75
+ **Key:** `tid`
76
+
77
+ #### Properties
78
+
79
+ | Property | Type | Required | Description | Comments |
80
+ | ------------------------- | -------- | -------- | ------------------------------------------------------------------------------------- | ------------------------------------ |
81
+ | `role` | `string` | ❌ | Role or title of the contributor. | maxLength: 100 |
82
+ | `contributionDescription` | `string` | ❌ | Description of what the contribution concretely involved. | maxLength: 10000, maxGraphemes: 1000 |
83
+ | `startDate` | `string` | ❌ | When this contribution started. Should fall within the parent hypercert's timeframe. | |
84
+ | `endDate` | `string` | ❌ | When this contribution finished. Should fall within the parent hypercert's timeframe. | |
85
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
86
+
87
+ ---
88
+
89
+ ### `org.hypercerts.claim.contributorInformation`
90
+
91
+ **Description:** Contributor information including identifier, display name, and image.
92
+
93
+ **Key:** `tid`
94
+
95
+ #### Properties
96
+
97
+ | Property | Type | Required | Description | Comments |
98
+ | ------------- | -------- | -------- | ------------------------------------------------------------------ | --------------- |
99
+ | `identifier` | `string` | ❌ | DID (did:plc:...) or URI to a social profile of the contributor. | maxLength: 2048 |
100
+ | `displayName` | `string` | ❌ | Human-readable name for the contributor as it should appear in UI. | maxLength: 100 |
101
+ | `image` | `union` | ❌ | The contributor visual representation as a URI or image blob. | |
102
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
103
+
104
+ ---
105
+
106
+ ### `org.hypercerts.claim.rights`
107
+
108
+ **Description:** Describes the rights that a contributor and/or an owner has, such as whether the hypercert can be sold, transferred, and under what conditions.
49
109
 
50
110
  **Key:** `tid`
51
111
 
52
112
  #### Properties
53
113
 
54
- | Property | Type | Required | Description | Comments |
55
- | -------------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
56
- | `subject` | `ref` | | A strong reference to what is being evaluated. (e.g activity, measurement, contribution, etc.) | |
57
- | `evaluators` | `ref` | ✅ | DIDs of the evaluators | maxLength: 1000 |
58
- | `content` | `union` | | Evaluation data (URIs or blobs) containing detailed reports or methodology | maxLength: 100 |
59
- | `measurements` | `ref` | ❌ | Optional references to the measurements that contributed to this evaluation. The record(s) referenced must conform with the lexicon org.hypercerts.claim.measurement | maxLength: 100 |
60
- | `summary` | `string` | ✅ | Brief evaluation summary | maxLength: 5000, maxGraphemes: 1000 |
61
- | `score` | `ref` | ❌ | Overall score for an evaluation on a numeric scale. | |
62
- | `location` | `ref` | ❌ | An optional reference for georeferenced evaluations. The record referenced must conform with the lexicon app.certified.location. | |
63
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
114
+ | Property | Type | Required | Description | Comments |
115
+ | ------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------ |
116
+ | `rightsName` | `string` | | Human-readable name for these rights (e.g. 'All Rights Reserved', 'CC BY-SA 4.0') | maxLength: 100 |
117
+ | `rightsType` | `string` | ✅ | Short identifier code for this rights type (e.g. 'ARR', 'CC-BY-SA') to facilitate filtering and search | maxLength: 10 |
118
+ | `rightsDescription` | `string` | | Detailed explanation of the rights holders' permissions, restrictions, and conditions | maxLength: 10000, maxGraphemes: 1000 |
119
+ | `attachment` | `union` | ❌ | An attachment to define the rights further, e.g. a legal document. | |
120
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
121
+
122
+ ---
123
+
124
+ ### `org.hypercerts.collection`
125
+
126
+ **Description:** A collection/group of items (activities and/or other collections). Collections support recursive nesting.
127
+
128
+ **Key:** `tid`
129
+
130
+ #### Properties
131
+
132
+ | Property | Type | Required | Description | Comments |
133
+ | ------------------------ | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
134
+ | `type` | `string` | ❌ | The type of this collection. Values beyond the known set are permitted. | maxLength: 64, Known values: `favorites`, `project`, `portfolio`, `program` |
135
+ | `title` | `string` | ✅ | Display name for this collection (e.g. 'Q1 2025 Impact Projects') | maxLength: 800, maxGraphemes: 80 |
136
+ | `shortDescription` | `string` | ❌ | Short summary of this collection, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`. | maxLength: 3000, maxGraphemes: 300 |
137
+ | `shortDescriptionFacets` | `ref[]` | ❌ | Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc). | |
138
+ | `description` | `union` | ❌ | Long-form description of the collection. 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. | |
139
+ | `avatar` | `union` | ❌ | The collection's avatar/profile image as a URI or image blob. | |
140
+ | `banner` | `union` | ❌ | Larger horizontal image to display behind the collection view. | |
141
+ | `items` | `ref[]` | ❌ | Array of items in this collection with optional weights. | maxLength: 1000 |
142
+ | `location` | `ref` | ❌ | A strong reference to the location where this collection's activities were performed. The record referenced must conform with the lexicon app.certified.location. | |
143
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
64
144
 
65
145
  #### Defs
66
146
 
67
- ##### score
147
+ ##### `org.hypercerts.collection#item`
68
148
 
69
- | Property | Type | Required | Description |
70
- | -------- | --------- | -------- | -------------------------------------------- |
71
- | `min` | `integer` | | Minimum value of the scale, e.g. 0 or 1. |
72
- | `max` | `integer` | | Maximum value of the scale, e.g. 5 or 10. |
73
- | `value` | `integer` | ✅ | Score within the inclusive range [min, max]. |
149
+ An item in a collection, with an identifier and optional weight.
150
+
151
+ | Property | Type | Required | Description |
152
+ | ---------------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
153
+ | `itemIdentifier` | `ref` | ✅ | Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.collection). |
154
+ | `itemWeight` | `string` | ❌ | Optional weight for this item (positive numeric value stored as string). Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed. |
74
155
 
75
156
  ---
76
157
 
77
- ### `org.hypercerts.claim.evidence`
158
+ ### `org.hypercerts.context.acknowledgement`
78
159
 
79
- **Description:** A piece of evidence related to a hypercert record (e.g. an activity, project, claim, or evaluation). Evidence may support, clarify, or challenge the referenced subject.
160
+ **Description:** Acknowledges a record (subject) or its relationship in a context. Created in the acknowledging actor's repo to form a bidirectional link. Examples: a contributor acknowledging inclusion in an activity, an activity owner acknowledging inclusion in a collection, or a record owner acknowledging an evaluation.
80
161
 
81
162
  **Key:** `tid`
82
163
 
83
164
  #### Properties
84
165
 
85
- | Property | Type | Required | Description | Comments |
86
- | ------------------ | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
87
- | `subject` | `ref` | | A strong reference to the record this evidence relates to (e.g. an activity, project, claim, or evaluation). | |
88
- | `content` | `union` | | A piece of evidence (URI or blob) related to the subject record; it may support, clarify, or challenge a hypercert claim. | |
89
- | `title` | `string` | ✅ | Title to describe the nature of the evidence. | maxLength: 256 |
90
- | `shortDescription` | `string` | ❌ | Short description explaining what this evidence shows. | maxLength: 3000, maxGraphemes: 300 |
91
- | `description` | `string` | | Longer description describing the evidence in more detail. | maxLength: 30000, maxGraphemes: 3000 |
92
- | `relationType` | `string` | ❌ | How this evidence relates to the subject. | Known values: `supports`, `challenges`, `clarifies` |
93
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
166
+ | Property | Type | Required | Description | Comments |
167
+ | -------------- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
168
+ | `subject` | `ref` | | The record being acknowledged (e.g. an activity, a contributor information record, an evaluation). | |
169
+ | `context` | `union` | | Context for the acknowledgement (e.g. the collection that includes an activity, or the activity that includes a contributor). A URI for a lightweight reference or a strong reference for content-hash verification. | |
170
+ | `acknowledged` | `boolean` | ✅ | Whether the relationship is acknowledged (true) or rejected (false). | |
171
+ | `comment` | `string` | ❌ | Optional plain-text comment providing additional context or reasoning. | maxLength: 10000, maxGraphemes: 1000 |
172
+ | `createdAt` | `string` | | Client-declared timestamp when this record was originally created. | |
94
173
 
95
174
  ---
96
175
 
97
- ### `org.hypercerts.claim.measurement`
176
+ ### `org.hypercerts.context.attachment`
98
177
 
99
- **Description:** Measurement data related to a hypercert record (e.g. an activity and its impact).
178
+ **Description:** An attachment providing commentary, context, evidence, or documentary material related to a hypercert record (e.g. an activity, project, claim, or evaluation).
100
179
 
101
180
  **Key:** `tid`
102
181
 
103
182
  #### Properties
104
183
 
105
- | Property | Type | Required | Description | Comments |
106
- | ------------- | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
107
- | `subject` | `ref` | ❌ | A strong reference to the record this measurement refers to (e.g. an activity, project, or claim). | |
108
- | `measurers` | `ref` | | DIDs of the entity (or entities) that measured this data | maxLength: 100 |
109
- | `metric` | `string` | | The metric being measured | maxLength: 500 |
110
- | `value` | `string` | ✅ | The measured value | maxLength: 500 |
111
- | `methodType` | `string` | ❌ | Short identifier for the measurement methodology | maxLength: 30 |
112
- | `methodURI` | `string` | ❌ | URI to methodology documentation, standard protocol, or measurement procedure | |
113
- | `evidenceURI` | `string` | ❌ | URIs to related evidence or underlying data (e.g. org.hypercerts.claim.evidence records or raw datasets) | maxLength: 50 |
114
- | `location` | `ref` | ❌ | A strong reference to the location where the measurement was taken. The record referenced must conform with the lexicon app.certified.location | |
115
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
184
+ | Property | Type | Required | Description | Comments |
185
+ | ------------------------ | --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
186
+ | `subjects` | `ref[]` | ❌ | References to the subject(s) the attachment is connected to—this may be an activity claim, outcome claim, measurement, evaluation, or even another attachment. This is optional as the attachment can exist before the claim is recorded. | maxLength: 100 |
187
+ | `contentType` | `string` | | The type of attachment. Values beyond the known set are permitted. | maxLength: 64, Known values: `report`, `audit`, `evidence`, `testimonial`, `methodology` |
188
+ | `content` | `union[]` | | The files, documents, or external references included in this attachment record. | maxLength: 100 |
189
+ | `title` | `string` | ✅ | Display title for this attachment (e.g. 'Impact Assessment Report', 'Audit Findings') | maxLength: 256 |
190
+ | `shortDescription` | `string` | ❌ | Short summary of this attachment, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`. | maxLength: 3000, maxGraphemes: 300 |
191
+ | `shortDescriptionFacets` | `ref[]` | ❌ | Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc). | |
192
+ | `description` | `union` | ❌ | Long-form description of the attachment. 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. | |
193
+ | `location` | `ref` | ❌ | A strong reference to the location where this attachment's subject matter occurred. The record referenced must conform with the lexicon app.certified.location. | |
194
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
116
195
 
117
196
  ---
118
197
 
119
- ### `org.hypercerts.claim.collection`
198
+ ### `org.hypercerts.context.evaluation`
120
199
 
121
- **Description:** A collection/group of items (activities and/or other collections). Collections support recursive nesting. Use app.certified.location as a sidecar (same TID) for location metadata.
200
+ **Description:** An evaluation of a hypercert record (e.g. an activity and its impact).
122
201
 
123
202
  **Key:** `tid`
124
203
 
125
204
  #### Properties
126
205
 
127
- | Property | Type | Required | Description | Comments |
128
- | ------------------ | -------- | -------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
129
- | `type` | `string` | ❌ | The type of this collection. Possible fields can be 'favorites', 'project', or any other type of collection. | |
130
- | `title` | `string` | ✅ | The title of this collection | maxLength: 800, maxGraphemes: 80 |
131
- | `shortDescription` | `string` | ❌ | Short summary of this collection, suitable for previews and list views | maxLength: 3000, maxGraphemes: 300 |
132
- | `description` | `ref` | ❌ | Rich-text description, represented as a Leaflet linear document. | |
133
- | `avatar` | `union` | | The collection's avatar/profile image as a URI or image blob. | |
134
- | `banner` | `union` | ❌ | Larger horizontal image to display behind the collection view. | |
135
- | `items` | `ref` | | Array of items in this collection with optional weights. | |
136
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
206
+ | Property | Type | Required | Description | Comments |
207
+ | -------------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
208
+ | `subject` | `ref` | ❌ | A strong reference to what is being evaluated (e.g. activity, measurement, contribution, etc.) | |
209
+ | `evaluators` | `ref[]` | ✅ | DIDs of the evaluators | maxLength: 1000 |
210
+ | `content` | `union[]` | ❌ | Evaluation data (URIs or blobs) containing detailed reports or methodology | maxLength: 100 |
211
+ | `measurements` | `ref[]` | ❌ | Optional references to the measurements that contributed to this evaluation. The record(s) referenced must conform with the lexicon org.hypercerts.context.measurement | maxLength: 100 |
212
+ | `summary` | `string` | | Brief evaluation summary | maxLength: 5000, maxGraphemes: 1000 |
213
+ | `score` | `ref` | ❌ | Overall score for an evaluation on a numeric scale. | |
214
+ | `location` | `ref` | | An optional reference for georeferenced evaluations. The record referenced must conform with the lexicon app.certified.location. | |
215
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
137
216
 
138
217
  #### Defs
139
218
 
140
- ##### item
219
+ ##### `org.hypercerts.context.evaluation#score`
141
220
 
142
- | Property | Type | Required | Description |
143
- | ---------------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
144
- | `itemIdentifier` | `ref` | | Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.claim.collection). |
145
- | `itemWeight` | `string` | | Optional weight for this item (positive numeric value stored as string). Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed. |
221
+ Overall score for an evaluation on a numeric scale.
222
+
223
+ | Property | Type | Required | Description |
224
+ | -------- | -------- | -------- | ----------------------------------------------------------------------------- |
225
+ | `min` | `string` | ✅ | Minimum value of the scale as a numeric string (e.g. '0', '1'). |
226
+ | `max` | `string` | ✅ | Maximum value of the scale as a numeric string (e.g. '5', '10'). |
227
+ | `value` | `string` | ✅ | Score within the inclusive range [min, max] as a numeric string (e.g. '3.7'). |
146
228
 
147
229
  ---
148
230
 
149
- ### `org.hypercerts.claim.rights`
231
+ ### `org.hypercerts.context.measurement`
150
232
 
151
- **Description:** Describes the rights that a contributor and/or an owner has, such as whether the hypercert can be sold, transferred, and under what conditions.
233
+ **Description:** Measurement data related to one or more records (e.g. activities, projects, etc.).
152
234
 
153
235
  **Key:** `tid`
154
236
 
155
237
  #### Properties
156
238
 
157
- | Property | Type | Required | Description | Comments |
158
- | ------------------- | -------- | -------- | ------------------------------------------------------------------ | -------------- |
159
- | `rightsName` | `string` | | Full name of the rights | maxLength: 100 |
160
- | `rightsType` | `string` | ✅ | Short rights identifier for easier search | maxLength: 10 |
161
- | `rightsDescription` | `string` | ✅ | Description of the rights of this hypercert | |
162
- | `attachment` | `union` | | An attachment to define the rights further, e.g. a legal document. | |
163
- | `createdAt` | `string` | | Client-declared timestamp when this record was originally created | |
239
+ | Property | Type | Required | Description | Comments |
240
+ | --------------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
241
+ | `subjects` | `ref[]` | | Strong references to the records this measurement refers to (e.g. activities, projects, or claims). | maxLength: 100 |
242
+ | `metric` | `string` | ✅ | The metric being measured, e.g. forest area restored, number of users, etc. | maxLength: 500 |
243
+ | `unit` | `string` | ✅ | The unit of the measured value (e.g. kg CO₂e, hectares, %, index score). | maxLength: 50 |
244
+ | `value` | `string` | | The measured value as a numeric string (e.g. '1234.56') | maxLength: 500 |
245
+ | `startDate` | `string` | | The start date and time when the measurement began. | |
246
+ | `endDate` | `string` | ❌ | The end date and time when the measurement ended. For one-time measurements, this should equal the start date. | |
247
+ | `locations` | `ref[]` | ❌ | Optional geographic references related to where the measurement was taken. Each referenced record must conform with the app.certified.location lexicon. | maxLength: 100 |
248
+ | `methodType` | `string` | ❌ | Short identifier for the measurement methodology | maxLength: 30 |
249
+ | `methodURI` | `string` | ❌ | URI to methodology documentation, standard protocol, or measurement procedure | |
250
+ | `evidenceURI` | `string[]` | ❌ | URIs to related evidence or underlying data (e.g. org.hypercerts.claim.evidence records or raw datasets) | maxLength: 50 |
251
+ | `measurers` | `ref[]` | ❌ | DIDs of the entities that performed this measurement | maxLength: 100 |
252
+ | `comment` | `string` | ❌ | Short comment of this measurement, suitable for previews and list views. Rich text annotations may be provided via `commentFacets`. | maxLength: 3000, maxGraphemes: 300 |
253
+ | `commentFacets` | `ref[]` | ❌ | Rich text annotations for `comment` (mentions, URLs, hashtags, etc). | |
254
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
164
255
 
165
256
  ---
166
257
 
@@ -174,44 +265,73 @@ Hypercerts-specific lexicons for tracking impact work and claims.
174
265
 
175
266
  | Property | Type | Required | Description | Comments |
176
267
  | ---------------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
177
- | `from` | `ref` | | DID of the sender who transferred the funds. Leave empty if sender wants to stay anonymous. | |
178
- | `to` | `string` | ✅ | The recipient of the funds. Can be identified by DID or a clear-text name. | |
179
- | `amount` | `string` | ✅ | Amount of funding received. | |
180
- | `currency` | `string` | ✅ | Currency of the payment (e.g. EUR, USD, ETH). | |
181
- | `paymentRail` | `string` | ❌ | How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor). | |
182
- | `paymentNetwork` | `string` | ❌ | Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal). | |
183
- | `transactionId` | `string` | ❌ | Identifier of the underlying payment transaction (e.g. bank reference, onchain transaction hash, or processor-specific ID). Use paymentNetwork to specify the network where applicable. | |
184
- | `for` | `string` | ❌ | Optional reference to the activity, project, or organization this funding relates to. | |
268
+ | `from` | `union` | | The sender of the funds (a free-text string, an account DID, or a strong reference to a record). Optional — omit to represent anonymity. | |
269
+ | `to` | `union` | ✅ | The recipient of the funds (a free-text string, an account DID, or a strong reference to a record). | |
270
+ | `amount` | `string` | ✅ | Amount of funding received as a numeric string (e.g. '1000.50'). | maxLength: 50 |
271
+ | `currency` | `string` | ✅ | Currency of the payment (e.g. EUR, USD, ETH). | maxLength: 10 |
272
+ | `paymentRail` | `string` | ❌ | How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor). | maxLength: 50 |
273
+ | `paymentNetwork` | `string` | ❌ | Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal). | maxLength: 50 |
274
+ | `transactionId` | `string` | ❌ | Identifier of the underlying payment transaction (e.g. bank reference, onchain transaction hash, or processor-specific ID). Use paymentNetwork to specify the network where applicable. | maxLength: 256 |
275
+ | `for` | `ref` | ❌ | Optional strong reference to the activity, project, or organization this funding relates to. | |
185
276
  | `notes` | `string` | ❌ | Optional notes or additional context for this funding receipt. | maxLength: 500 |
186
277
  | `occurredAt` | `string` | ❌ | Timestamp when the payment occurred. | |
187
278
  | `createdAt` | `string` | ✅ | Client-declared timestamp when this receipt record was created. | |
188
279
 
280
+ #### Defs
281
+
282
+ ##### `org.hypercerts.funding.receipt#text`
283
+
284
+ A free-text string value (e.g. a display name, wallet address, or other identifier).
285
+
286
+ | Property | Type | Required | Description |
287
+ | -------- | -------- | -------- | ----------------- |
288
+ | `value` | `string` | ✅ | The string value. |
289
+
189
290
  ---
190
291
 
191
- ## Certified Lexicons
292
+ ### `org.hypercerts.workscope.cel`
192
293
 
193
- Certified lexicons are common/shared lexicons that can be used across multiple protocols.
294
+ **Description:** A structured, machine-evaluable work scope definition using CEL (Common Expression Language). Tags referenced in the expression correspond to org.hypercerts.workscope.tag keys. See https://github.com/google/cel-spec. Note: this is intentionally type 'object' (not 'record') so it can be directly embedded inline in union types (e.g., activity.workScope) without requiring a separate collection or strongRef indirection.
194
295
 
195
- ### `org.hypercerts.defs`
296
+ #### Properties
196
297
 
197
- **Description:** Common type definitions used across all certified protocols.
298
+ | Property | Type | Required | Description | Comments |
299
+ | ------------ | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
300
+ | `expression` | `string` | ✅ | A CEL expression encoding the work scope conditions. Example: scope.hasAll(['mangrove_restoration', 'environmental_education']) && location.country == 'KE' | maxLength: 10000, maxGraphemes: 5000 |
301
+ | `usedTags` | `ref[]` | ✅ | Strong references to org.hypercerts.workscope.tag records used in the expression. Enables fast indexing by AT-URI and provides referential integrity to the underlying tag records. | maxLength: 100 |
302
+ | `version` | `string` | ✅ | CEL context schema version. | maxLength: 16, Known values: `v1` |
303
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this expression was originally created. | |
198
304
 
199
- #### Defs
305
+ ---
306
+
307
+ ### `org.hypercerts.workscope.tag`
200
308
 
201
- | Def | Type | Description | Comments |
202
- | --------------- | -------- | -------------------------------------------------------------- | --------------------------------------- |
203
- | `uri` | `object` | Object containing a URI to external data | Has `uri` property (string, format uri) |
204
- | `smallBlob` | `object` | Object containing a blob to external data | Has `blob` property (blob, up to 10MB) |
205
- | `largeBlob` | `object` | Object containing a blob to external data | Has `blob` property (blob, up to 100MB) |
206
- | `smallImage` | `object` | Object containing a small image | Has `image` property (blob, up to 5MB) |
207
- | `largeImage` | `object` | Object containing a large image | Has `image` property (blob, up to 10MB) |
208
- | `workScopeAll` | `object` | Logical AND operation: all arguments must be satisfied. | |
209
- | `workScopeAny` | `object` | Logical OR operation: at least one argument must be satisfied. | |
210
- | `workScopeNot` | `object` | Logical NOT operation: the argument must not be satisfied. | |
211
- | `workScopeAtom` | `object` | Atomic scope reference: a strong reference to a scope record. | |
309
+ **Description:** A reusable scope atom for work scope logic expressions. Scopes can represent topics, languages, domains, deliverables, methods, regions, tags, or other categorical labels. Tags are composed into structured expressions via CEL (Common Expression Language) on activity records.
310
+
311
+ **Key:** `tid`
312
+
313
+ #### Properties
314
+
315
+ | Property | Type | Required | Description | Comments |
316
+ | ------------------- | ---------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
317
+ | `key` | `string` | | Lowercase, underscore-separated machine-readable key for this scope (e.g., 'mangrove_restoration', 'biodiversity_monitoring'). Used as the canonical identifier in CEL expressions. | maxLength: 120 |
318
+ | `name` | `string` | | Human-readable name for this scope. | maxLength: 200 |
319
+ | `category` | `string` | | Category type of this scope. | maxLength: 50, Known values: `topic`, `language`, `domain`, `method` |
320
+ | `description` | `string` | ❌ | Optional longer description of this scope. | maxLength: 10000, maxGraphemes: 1000 |
321
+ | `parent` | `ref` | ❌ | Optional strong reference to a parent work scope tag record for taxonomy/hierarchy support. The record referenced must conform with the lexicon org.hypercerts.workscope.tag. | |
322
+ | `status` | `string` | ❌ | Lifecycle status of this tag. Communities propose tags, curators accept them, deprecated tags point to replacements via supersededBy. | maxLength: 20, Known values: `proposed`, `accepted`, `deprecated` |
323
+ | `supersededBy` | `ref` | ❌ | When status is 'deprecated', points to the replacement work scope tag record. The record referenced must conform with the lexicon org.hypercerts.workscope.tag. | |
324
+ | `aliases` | `string[]` | ❌ | Alternative human-readable names for this scope (e.g., translations, abbreviations, or common synonyms). Unlike sameAs, these are plain-text labels, not links to external ontologies. | maxLength: 50 |
325
+ | `sameAs` | `string[]` | ❌ | URIs to semantically equivalent concepts in external ontologies or taxonomies (e.g., Wikidata QIDs, ENVO terms, SDG targets). Used for interoperability, not as documentation. | maxLength: 20 |
326
+ | `referenceDocument` | `union` | ❌ | Link to a governance or reference document where this work scope tag is defined and further explained. | |
327
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
212
328
 
213
329
  ---
214
330
 
331
+ ## Certified Lexicons
332
+
333
+ Certified lexicons are common/shared lexicons that can be used across multiple protocols.
334
+
215
335
  ### `app.certified.location`
216
336
 
217
337
  **Description:** A location reference
@@ -220,15 +340,25 @@ Certified lexicons are common/shared lexicons that can be used across multiple p
220
340
 
221
341
  #### Properties
222
342
 
223
- | Property | Type | Required | Description | Comments |
224
- | -------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
225
- | `lpVersion` | `string` | ✅ | The version of the Location Protocol | maxLength: 10 |
226
- | `srs` | `string` | ✅ | The Spatial Reference System URI (e.g., http://www.opengis.net/def/crs/OGC/1.3/CRS84) that defines the coordinate system. | maxLength: 100 |
227
- | `locationType` | `string` | ✅ | An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point) | maxLength: 20, Known values: `coordinate-decimal`, `geojson-point` |
228
- | `location` | `union` | ✅ | The location of where the work was performed as a URI or blob. | |
229
- | `name` | `string` | ❌ | Optional name for this location | maxLength: 1000, maxGraphemes: 100 |
230
- | `description` | `string` | ❌ | Optional description for this location | maxLength: 2000, maxGraphemes: 500 |
231
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
343
+ | Property | Type | Required | Description | Comments |
344
+ | -------------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
345
+ | `lpVersion` | `string` | ✅ | The version of the Location Protocol | maxLength: 10 |
346
+ | `srs` | `string` | ✅ | The Spatial Reference System URI (e.g., http://www.opengis.net/def/crs/OGC/1.3/CRS84) that defines the coordinate system. | maxLength: 100 |
347
+ | `locationType` | `string` | ✅ | 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 | maxLength: 20, Known values: `coordinate-decimal`, `geojson-point`, `geojson`, `h3`, `geohash`, `wkt`, `address`, `scaledCoordinates` |
348
+ | `location` | `union` | ✅ | The location of where the work was performed as a URI, blob, or inline string. | |
349
+ | `name` | `string` | ❌ | Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area') | maxLength: 1000, maxGraphemes: 100 |
350
+ | `description` | `string` | ❌ | Additional context about this location, such as its significance to the work or specific boundaries | maxLength: 2000, maxGraphemes: 500 |
351
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
352
+
353
+ #### Defs
354
+
355
+ ##### `app.certified.location#string`
356
+
357
+ A location represented as a string, e.g. coordinates or a small GeoJSON string.
358
+
359
+ | Property | Type | Required | Description |
360
+ | -------- | -------- | -------- | ------------------------- |
361
+ | `string` | `string` | ✅ | The location string value |
232
362
 
233
363
  ---
234
364
 
@@ -240,14 +370,14 @@ Certified lexicons are common/shared lexicons that can be used across multiple p
240
370
 
241
371
  #### Properties
242
372
 
243
- | Property | Type | Required | Description | Comments |
244
- | ---------------- | -------- | -------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
245
- | `badgeType` | `string` | ✅ | Category of the badge (e.g. endorsement, participation, affiliation). | |
246
- | `title` | `string` | ✅ | Human-readable title of the badge. | |
247
- | `icon` | `blob` | | Icon representing the badge, stored as a blob for compact visual display. | maxSize: 1048576, accepts: image/png, image/jpeg, image/webp, image/svg+xml |
248
- | `description` | `string` | ❌ | Optional short statement describing what the badge represents. | |
249
- | `allowedIssuers` | `ref` | ❌ | Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it. | |
250
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
373
+ | Property | Type | Required | Description | Comments |
374
+ | ---------------- | -------- | -------- | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
375
+ | `badgeType` | `string` | ✅ | Category of the badge. Values beyond the known set are permitted. | maxLength: 100, Known values: `endorsement`, `verification`, `participation`, `certification`, `affiliation`, `recognition` |
376
+ | `title` | `string` | ✅ | Human-readable title of the badge. | maxLength: 256 |
377
+ | `icon` | `blob` | | Icon representing the badge, stored as a blob for compact visual display. | maxSize: 1048576, accepts: `image/png`, `image/jpeg`, `image/webp`, `image/svg+xml` |
378
+ | `description` | `string` | ❌ | Optional short statement describing what the badge represents. | maxLength: 5000, maxGraphemes: 500 |
379
+ | `allowedIssuers` | `ref[]` | ❌ | Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it. | maxLength: 100 |
380
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
251
381
 
252
382
  ---
253
383
 
@@ -259,12 +389,13 @@ Certified lexicons are common/shared lexicons that can be used across multiple p
259
389
 
260
390
  #### Properties
261
391
 
262
- | Property | Type | Required | Description |
263
- | ----------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
264
- | `badge` | `ref` | ✅ | Reference to the badge definition for this award. |
265
- | `subject` | `union` | ✅ | Entity the badge award is for (either an account DID or any specific AT Protocol record), e.g. a user, a project, or a specific activity claim. |
266
- | `note` | `string` | ❌ | Optional statement explaining the reason for this badge award. |
267
- | `createdAt` | `string` | | Client-declared timestamp when this record was originally created |
392
+ | Property | Type | Required | Description | Comments |
393
+ | ----------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
394
+ | `badge` | `ref` | ✅ | Strong reference to the badge definition at the time of award. The record referenced must conform with the lexicon app.certified.badge.definition. | |
395
+ | `subject` | `union` | ✅ | Entity the badge award is for (either an account DID or any specific AT Protocol record), e.g. a user, a project, or a specific activity claim. | |
396
+ | `note` | `string` | ❌ | Optional statement explaining the reason for this badge award. | maxLength: 500 |
397
+ | `url` | `string` | | Optional URL the badge award links to. | maxLength: 2048 |
398
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
268
399
 
269
400
  ---
270
401
 
@@ -276,12 +407,636 @@ Certified lexicons are common/shared lexicons that can be used across multiple p
276
407
 
277
408
  #### Properties
278
409
 
279
- | Property | Type | Required | Description |
280
- | ------------ | -------- | -------- | ------------------------------------------------------------------------ |
281
- | `badgeAward` | `ref` | ✅ | Reference to the badge award. |
282
- | `response` | `string` | ✅ | The recipient’s response for the badge (accepted or rejected). |
283
- | `weight` | `string` | ❌ | Optional relative weight for accepted badges, assigned by the recipient. |
284
- | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created |
410
+ | Property | Type | Required | Description | Comments |
411
+ | ------------ | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
412
+ | `badgeAward` | `ref` | ✅ | Strong reference to the badge award being responded to. The record referenced must conform with the lexicon app.certified.badge.award. | |
413
+ | `response` | `string` | ✅ | The recipient’s response for the badge (accepted or rejected). | Known values: `accepted`, `rejected` |
414
+ | `weight` | `string` | ❌ | Optional relative weight for accepted badges, assigned by the recipient. | maxLength: 50 |
415
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
416
+
417
+ ---
418
+
419
+ ### `app.certified.actor.organization`
420
+
421
+ **Description:** Extended metadata for an organization actor. Complements the base actor profile with organization-specific fields like legal structure and reference links.
422
+
423
+ **Key:** `literal:self`
424
+
425
+ #### Properties
426
+
427
+ | Property | Type | Required | Description | Comments |
428
+ | ------------------ | ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
429
+ | `organizationType` | `string[]` | ❌ | Legal or operational structures of the organization (e.g. 'nonprofit', 'ngo', 'government', 'social-enterprise', 'cooperative'). | maxLength: 10 |
430
+ | `urls` | `ref[]` | ❌ | Additional reference URLs (social media profiles, contact pages, donation links, etc.) with a display label for each URL. | |
431
+ | `location` | `ref` | ❌ | A strong reference to the location where the organization is based. The record referenced must conform with the lexicon app.certified.location. | |
432
+ | `foundedDate` | `string` | ❌ | When the organization was established. Stored as datetime per ATProto conventions (no date-only format exists). Clients should use midnight UTC (e.g., '2005-01-01T00:00:00.000Z'); consumers should treat only the date portion as canonical. | |
433
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
434
+
435
+ #### Defs
436
+
437
+ ##### `app.certified.actor.organization#urlItem`
438
+
439
+ A labeled URL reference.
440
+
441
+ | Property | Type | Required | Description |
442
+ | -------- | -------- | -------- | ---------------------------------------------------------------------------------- |
443
+ | `url` | `string` | ✅ | The URL. |
444
+ | `label` | `string` | ❌ | Optional human-readable label for this URL (e.g. 'Support page', 'Donation page'). |
445
+
446
+ ---
447
+
448
+ ### `app.certified.actor.profile`
449
+
450
+ **Description:** A declaration of a Certified account profile.
451
+
452
+ **Key:** `literal:self`
453
+
454
+ #### Properties
455
+
456
+ | Property | Type | Required | Description | Comments |
457
+ | ------------- | -------- | -------- | ------------------------------------------------------------------------------ | ---------------------------------- |
458
+ | `displayName` | `string` | ❌ | Display name for the account | maxLength: 640, maxGraphemes: 64 |
459
+ | `description` | `string` | ❌ | Free-form profile description text. | maxLength: 2560, maxGraphemes: 256 |
460
+ | `pronouns` | `string` | ❌ | Free-form pronouns text. | maxLength: 200, maxGraphemes: 20 |
461
+ | `website` | `string` | ❌ | Account website URL | |
462
+ | `avatar` | `union` | ❌ | Small image to be displayed next to posts from account. AKA, 'profile picture' | |
463
+ | `banner` | `union` | ❌ | Larger horizontal image to display behind profile view. | |
464
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created | |
465
+
466
+ ---
467
+
468
+ ### `app.certified.link.evm`
469
+
470
+ **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.
471
+
472
+ **Key:** `any`
473
+
474
+ #### Properties
475
+
476
+ | Property | Type | Required | Description | Comments |
477
+ | ----------- | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
478
+ | `address` | `string` | ✅ | EVM wallet address (0x-prefixed, with EIP-55 checksum recommended). | maxLength: 42 |
479
+ | `proof` | `union` | ✅ | 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. | |
480
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
481
+
482
+ #### Defs
483
+
484
+ ##### `app.certified.link.evm#eip712Proof`
485
+
486
+ EOA wallet ownership proof via EIP-712 typed data signature. Contains both the structured message that was signed and the resulting signature.
487
+
488
+ | Property | Type | Required | Description |
489
+ | ----------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
490
+ | `signature` | `string` | ✅ | ECDSA signature over the EIP-712 hash (hex-encoded with 0x prefix, 64 or 65 bytes). |
491
+ | `message` | `ref` | ✅ | 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. |
492
+
493
+ ##### `app.certified.link.evm#eip712Message`
494
+
495
+ 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.
496
+
497
+ | Property | Type | Required | Description |
498
+ | ------------ | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
499
+ | `did` | `string` | ✅ | The ATProto DID being linked to the EVM address. |
500
+ | `evmAddress` | `string` | ✅ | The EVM wallet address (must match the top-level address field). |
501
+ | `chainId` | `string` | ✅ | 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. |
502
+ | `timestamp` | `string` | ✅ | Unix timestamp when the attestation was created (bigint serialized). |
503
+ | `nonce` | `string` | ✅ | Replay-protection nonce (bigint serialized). |
504
+
505
+ ---
506
+
507
+ ## Type Definitions
508
+
509
+ Common type definitions used across all protocols.
510
+
511
+ ### `app.certified.defs`
512
+
513
+ **Description:** Common type definitions used across certified protocols.
514
+
515
+ #### Defs
516
+
517
+ ##### `app.certified.defs#did`
518
+
519
+ A Decentralized Identifier (DID) string.
520
+
521
+ | Property | Type | Required | Description |
522
+ | -------- | -------- | -------- | --------------------- |
523
+ | `did` | `string` | ✅ | The DID string value. |
524
+
525
+ ---
526
+
527
+ ### `org.hypercerts.defs`
528
+
529
+ **Description:** Common type definitions used across all Hypercerts protocols.
530
+
531
+ #### Defs
532
+
533
+ ##### `org.hypercerts.defs#descriptionString`
534
+
535
+ An inline long-form description as plain text or markdown, with optional rich-text annotations.
536
+
537
+ | Property | Type | Required | Description |
538
+ | -------- | -------- | -------- | -------------------------------------------------------------------------- |
539
+ | `value` | `string` | ✅ | The description text (plain text or markdown). |
540
+ | `facets` | `ref[]` | ❌ | Rich text annotations for the description (mentions, URLs, hashtags, etc). |
541
+
542
+ ##### `org.hypercerts.defs#uri`
543
+
544
+ Object containing a URI to external data
545
+
546
+ | Property | Type | Required | Description |
547
+ | -------- | -------- | -------- | -------------------- |
548
+ | `uri` | `string` | ✅ | URI to external data |
549
+
550
+ ##### `org.hypercerts.defs#smallBlob`
551
+
552
+ Object containing a blob to external data
553
+
554
+ | Property | Type | Required | Description |
555
+ | -------- | ------ | -------- | ---------------------------------- |
556
+ | `blob` | `blob` | ✅ | Blob to external data (up to 10MB) |
557
+
558
+ ##### `org.hypercerts.defs#largeBlob`
559
+
560
+ Object containing a blob to external data
561
+
562
+ | Property | Type | Required | Description |
563
+ | -------- | ------ | -------- | ----------------------------------- |
564
+ | `blob` | `blob` | ✅ | Blob to external data (up to 100MB) |
565
+
566
+ ##### `org.hypercerts.defs#smallImage`
567
+
568
+ Object containing a small image
569
+
570
+ | Property | Type | Required | Description |
571
+ | -------- | ------ | -------- | ----------------- |
572
+ | `image` | `blob` | ✅ | Image (up to 5MB) |
573
+
574
+ ##### `org.hypercerts.defs#smallVideo`
575
+
576
+ Object containing a small video
577
+
578
+ | Property | Type | Required | Description |
579
+ | -------- | ------ | -------- | ------------------ |
580
+ | `video` | `blob` | ✅ | Video (up to 20MB) |
581
+
582
+ ##### `org.hypercerts.defs#largeImage`
583
+
584
+ Object containing a large image
585
+
586
+ | Property | Type | Required | Description |
587
+ | -------- | ------ | -------- | ------------------ |
588
+ | `image` | `blob` | ✅ | Image (up to 10MB) |
589
+
590
+ ---
591
+
592
+ ## External Lexicons
593
+
594
+ External lexicons from other protocols and systems.
595
+
596
+ ### `app.bsky.richtext.facet`
597
+
598
+ **Description:** Annotation of a sub-string within rich text.
599
+
600
+ #### Properties
601
+
602
+ | Property | Type | Required | Description |
603
+ | ---------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
604
+ | `index` | `ref` | ✅ | Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets. |
605
+ | `features` | `union[]` | ✅ | |
606
+
607
+ #### Defs
608
+
609
+ ##### `app.bsky.richtext.facet#mention`
610
+
611
+ Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.
612
+
613
+ | Property | Type | Required | Description |
614
+ | -------- | -------- | -------- | ----------- |
615
+ | `did` | `string` | ✅ | |
616
+
617
+ ##### `app.bsky.richtext.facet#link`
618
+
619
+ Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.
620
+
621
+ | Property | Type | Required | Description |
622
+ | -------- | -------- | -------- | ----------- |
623
+ | `uri` | `string` | ✅ | |
624
+
625
+ ##### `app.bsky.richtext.facet#tag`
626
+
627
+ Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').
628
+
629
+ | Property | Type | Required | Description |
630
+ | -------- | -------- | -------- | ----------- |
631
+ | `tag` | `string` | ✅ | |
632
+
633
+ ##### `app.bsky.richtext.facet#byteSlice`
634
+
635
+ Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.
636
+
637
+ | Property | Type | Required | Description |
638
+ | ----------- | --------- | -------- | ----------- |
639
+ | `byteStart` | `integer` | ✅ | |
640
+ | `byteEnd` | `integer` | ✅ | |
641
+
642
+ ---
643
+
644
+ ### `com.atproto.repo.strongRef`
645
+
646
+ #### Properties
647
+
648
+ | Property | Type | Required | Description |
649
+ | -------- | -------- | -------- | ----------- |
650
+ | `uri` | `string` | ✅ | |
651
+ | `cid` | `string` | ✅ | |
652
+
653
+ ---
654
+
655
+ ### `org.hyperboards.board`
656
+
657
+ **Description:** Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS.
658
+
659
+ **Key:** `tid`
660
+
661
+ #### Properties
662
+
663
+ | Property | Type | Required | Description | Comments |
664
+ | -------------------- | -------- | -------- | -------------------------------------------------------------------------------------------------------- | --------------- |
665
+ | `subject` | `ref` | ✅ | Reference to the org.hypercerts.claim.activity or org.hypercerts.claim.collection this board visualizes. | |
666
+ | `config` | `ref` | ❌ | Visual configuration for a hyperboard's background, colors, and layout. | |
667
+ | `contributorConfigs` | `ref[]` | ❌ | Per-contributor configuration entries for this board. | maxLength: 1000 |
668
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
669
+
670
+ #### Defs
671
+
672
+ ##### `org.hyperboards.board#boardConfig`
673
+
674
+ Visual configuration for a hyperboard's background, colors, and layout.
675
+
676
+ | Property | Type | Required | Description |
677
+ | --------------------- | --------- | -------- | --------------------------------------------------------------------- |
678
+ | `backgroundType` | `string` | ❌ | Type of background content. |
679
+ | `backgroundImage` | `union` | ❌ | Background image as a URI or image blob. |
680
+ | `backgroundIframeUrl` | `string` | ❌ | URI of the background iframe. |
681
+ | `backgroundGrayscale` | `boolean` | ❌ | Whether the background is rendered in grayscale. Default: true. |
682
+ | `backgroundOpacity` | `integer` | ❌ | Background opacity as a percentage (0–100). |
683
+ | `backgroundColor` | `string` | ❌ | Background color as a hex string (e.g. '#ffffff'). |
684
+ | `borderColor` | `string` | ❌ | Border color as a hex string (e.g. '#000000'). |
685
+ | `grayscaleImages` | `boolean` | ❌ | Whether contributor images are rendered in grayscale. Default: false. |
686
+ | `imageShape` | `string` | ❌ | Shape used to crop contributor images on this board. |
687
+ | `aspectRatio` | `string` | ❌ | Display aspect ratio of the board. |
688
+
689
+ ##### `org.hyperboards.board#contributorConfig`
690
+
691
+ 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.
692
+
693
+ | Property | Type | Required | Description |
694
+ | ---------------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
695
+ | `contributor` | `union` | ✅ | 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. |
696
+ | `override` | `boolean` | ❌ | 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. |
697
+ | `displayName` | `string` | ❌ | Display name for this contributor on this board. |
698
+ | `image` | `union` | ❌ | Avatar or face image for this contributor on this board, as a URI or image blob. |
699
+ | `video` | `union` | ❌ | Video for this contributor, as a URI (embed/direct link) or uploaded video blob. |
700
+ | `hoverImage` | `union` | ❌ | Image overlay shown when hovering over this contributor, as a URI or image blob. |
701
+ | `hoverIframeUrl` | `string` | ❌ | Iframe overlay shown when hovering over this contributor. |
702
+ | `url` | `string` | ❌ | Click-through link URL for this contributor. |
703
+
704
+ ---
705
+
706
+ ### `org.hyperboards.displayProfile`
707
+
708
+ **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.
709
+
710
+ **Key:** `literal:self`
711
+
712
+ #### Properties
713
+
714
+ | Property | Type | Required | Description | Comments |
715
+ | ---------------- | -------- | -------- | ----------------------------------------------------------------------------------------------- | -------------------------------- |
716
+ | `displayName` | `string` | ❌ | Display name override for this user on hyperboards. | maxLength: 640, maxGraphemes: 64 |
717
+ | `image` | `union` | ❌ | Avatar or face image override for this user on hyperboards, as a URI or image blob. | |
718
+ | `video` | `union` | ❌ | Default video for this user across boards, as a URI (embed/direct link) or uploaded video blob. | |
719
+ | `hoverImage` | `union` | ❌ | Default hover image for this user across boards, as a URI or image blob. | |
720
+ | `hoverIframeUrl` | `string` | ❌ | Default hover iframe URL for this user across boards. | maxLength: 2048 |
721
+ | `url` | `string` | ❌ | Default click-through link URL for this user across boards. | maxLength: 2048 |
722
+ | `createdAt` | `string` | ✅ | Client-declared timestamp when this record was originally created. | |
723
+
724
+ ---
725
+
726
+ ### `pub.leaflet.blocks.blockquote`
727
+
728
+ #### Properties
729
+
730
+ | Property | Type | Required | Description |
731
+ | ----------- | -------- | -------- | ----------- |
732
+ | `plaintext` | `string` | ✅ | |
733
+ | `facets` | `ref[]` | ❌ | |
734
+
735
+ ---
736
+
737
+ ### `pub.leaflet.blocks.bskyPost`
738
+
739
+ #### Properties
740
+
741
+ | Property | Type | Required | Description |
742
+ | ------------ | -------- | -------- | ----------- |
743
+ | `postRef` | `ref` | ✅ | |
744
+ | `clientHost` | `string` | ❌ | |
745
+
746
+ ---
747
+
748
+ ### `pub.leaflet.blocks.button`
749
+
750
+ #### Properties
751
+
752
+ | Property | Type | Required | Description |
753
+ | -------- | -------- | -------- | ----------- |
754
+ | `text` | `string` | ✅ | |
755
+ | `url` | `string` | ✅ | |
756
+
757
+ ---
758
+
759
+ ### `pub.leaflet.blocks.code`
760
+
761
+ #### Properties
762
+
763
+ | Property | Type | Required | Description |
764
+ | ------------------------- | -------- | -------- | ----------- |
765
+ | `plaintext` | `string` | ✅ | |
766
+ | `language` | `string` | ❌ | |
767
+ | `syntaxHighlightingTheme` | `string` | ❌ | |
768
+
769
+ ---
770
+
771
+ ### `pub.leaflet.blocks.header`
772
+
773
+ #### Properties
774
+
775
+ | Property | Type | Required | Description |
776
+ | ----------- | --------- | -------- | ----------- |
777
+ | `level` | `integer` | ❌ | |
778
+ | `plaintext` | `string` | ✅ | |
779
+ | `facets` | `ref[]` | ❌ | |
780
+
781
+ ---
782
+
783
+ ### `pub.leaflet.blocks.horizontalRule`
784
+
785
+ #### Properties
786
+
787
+ ---
788
+
789
+ ### `pub.leaflet.blocks.iframe`
790
+
791
+ #### Properties
792
+
793
+ | Property | Type | Required | Description |
794
+ | -------- | --------- | -------- | ----------- |
795
+ | `url` | `string` | ✅ | |
796
+ | `height` | `integer` | ❌ | |
797
+
798
+ ---
799
+
800
+ ### `pub.leaflet.blocks.image`
801
+
802
+ #### Properties
803
+
804
+ | Property | Type | Required | Description | Comments |
805
+ | ------------- | -------- | -------- | ----------------------------------------------------- | ------------------------------------ |
806
+ | `image` | `blob` | ✅ | | maxSize: 1000000, accepts: `image/*` |
807
+ | `alt` | `string` | ❌ | Alt text description of the image, for accessibility. | |
808
+ | `aspectRatio` | `ref` | ✅ | | |
809
+
810
+ #### Defs
811
+
812
+ ##### `pub.leaflet.blocks.image#aspectRatio`
813
+
814
+ | Property | Type | Required | Description |
815
+ | -------- | --------- | -------- | ----------- |
816
+ | `width` | `integer` | ✅ | |
817
+ | `height` | `integer` | ✅ | |
818
+
819
+ ---
820
+
821
+ ### `pub.leaflet.blocks.math`
822
+
823
+ #### Properties
824
+
825
+ | Property | Type | Required | Description |
826
+ | -------- | -------- | -------- | ----------- |
827
+ | `tex` | `string` | ✅ | |
828
+
829
+ ---
830
+
831
+ ### `pub.leaflet.blocks.orderedList`
832
+
833
+ #### Properties
834
+
835
+ | Property | Type | Required | Description |
836
+ | ------------ | --------- | -------- | -------------------------------------------------------------------------- |
837
+ | `startIndex` | `integer` | ❌ | The starting number for this ordered list. Defaults to 1 if not specified. |
838
+ | `children` | `ref[]` | ✅ | |
839
+
840
+ #### Defs
841
+
842
+ ##### `pub.leaflet.blocks.orderedList#listItem`
843
+
844
+ | Property | Type | Required | Description |
845
+ | ----------------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
846
+ | `checked` | `boolean` | ❌ | If present, this item is a checklist item. true = checked, false = unchecked. If absent, this is a normal list item. |
847
+ | `content` | `union` | ✅ | |
848
+ | `children` | `ref[]` | ❌ | Nested ordered list items. Mutually exclusive with unorderedListChildren; if both are present, children takes precedence. |
849
+ | `unorderedListChildren` | `ref` | ❌ | A nested unordered list. Mutually exclusive with children; if both are present, children takes precedence. |
850
+
851
+ ---
852
+
853
+ ### `pub.leaflet.blocks.page`
854
+
855
+ #### Properties
856
+
857
+ | Property | Type | Required | Description |
858
+ | -------- | -------- | -------- | ----------- |
859
+ | `id` | `string` | ✅ | |
860
+
861
+ ---
862
+
863
+ ### `pub.leaflet.blocks.poll`
864
+
865
+ #### Properties
866
+
867
+ | Property | Type | Required | Description |
868
+ | --------- | ----- | -------- | ----------- |
869
+ | `pollRef` | `ref` | ✅ | |
870
+
871
+ ---
872
+
873
+ ### `pub.leaflet.blocks.text`
874
+
875
+ #### Properties
876
+
877
+ | Property | Type | Required | Description |
878
+ | ----------- | -------- | -------- | ----------- |
879
+ | `plaintext` | `string` | ✅ | |
880
+ | `textSize` | `string` | ❌ | |
881
+ | `facets` | `ref[]` | ❌ | |
882
+
883
+ ---
884
+
885
+ ### `pub.leaflet.blocks.unorderedList`
886
+
887
+ #### Properties
888
+
889
+ | Property | Type | Required | Description |
890
+ | ---------- | ------- | -------- | ----------- |
891
+ | `children` | `ref[]` | ✅ | |
892
+
893
+ #### Defs
894
+
895
+ ##### `pub.leaflet.blocks.unorderedList#listItem`
896
+
897
+ | Property | Type | Required | Description |
898
+ | --------------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
899
+ | `checked` | `boolean` | ❌ | If present, this item is a checklist item. true = checked, false = unchecked. If absent, this is a normal list item. |
900
+ | `content` | `union` | ✅ | |
901
+ | `children` | `ref[]` | ❌ | Nested unordered list items. Mutually exclusive with orderedListChildren; if both are present, children takes precedence. |
902
+ | `orderedListChildren` | `ref` | ❌ | Nested ordered list items. Mutually exclusive with children; if both are present, children takes precedence. |
903
+
904
+ ---
905
+
906
+ ### `pub.leaflet.blocks.website`
907
+
908
+ #### Properties
909
+
910
+ | Property | Type | Required | Description | Comments |
911
+ | -------------- | -------- | -------- | ----------- | ------------------------------------ |
912
+ | `previewImage` | `blob` | ❌ | | maxSize: 1000000, accepts: `image/*` |
913
+ | `title` | `string` | ❌ | | |
914
+ | `description` | `string` | ❌ | | |
915
+ | `src` | `string` | ✅ | | |
916
+
917
+ ---
918
+
919
+ ### `pub.leaflet.pages.linearDocument`
920
+
921
+ #### Properties
922
+
923
+ | Property | Type | Required | Description |
924
+ | -------- | -------- | -------- | ----------- |
925
+ | `id` | `string` | ❌ | |
926
+ | `blocks` | `ref[]` | ✅ | |
927
+
928
+ #### Defs
929
+
930
+ ##### `pub.leaflet.pages.linearDocument#block`
931
+
932
+ | Property | Type | Required | Description |
933
+ | ----------- | -------- | -------- | ----------- |
934
+ | `block` | `union` | ✅ | |
935
+ | `alignment` | `string` | ❌ | |
936
+
937
+ ##### `pub.leaflet.pages.linearDocument#quote`
938
+
939
+ | Property | Type | Required | Description |
940
+ | -------- | ----- | -------- | ----------- |
941
+ | `start` | `ref` | ✅ | |
942
+ | `end` | `ref` | ✅ | |
943
+
944
+ ##### `pub.leaflet.pages.linearDocument#position`
945
+
946
+ | Property | Type | Required | Description |
947
+ | -------- | ----------- | -------- | ----------- |
948
+ | `block` | `integer[]` | ✅ | |
949
+ | `offset` | `integer` | ✅ | |
950
+
951
+ ---
952
+
953
+ ### `pub.leaflet.richtext.facet`
954
+
955
+ **Description:** Annotation of a sub-string within rich text.
956
+
957
+ #### Properties
958
+
959
+ | Property | Type | Required | Description |
960
+ | ---------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
961
+ | `index` | `ref` | ✅ | Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets. |
962
+ | `features` | `union[]` | ✅ | |
963
+
964
+ #### Defs
965
+
966
+ ##### `pub.leaflet.richtext.facet#byteSlice`
967
+
968
+ Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.
969
+
970
+ | Property | Type | Required | Description |
971
+ | ----------- | --------- | -------- | ----------- |
972
+ | `byteStart` | `integer` | ✅ | |
973
+ | `byteEnd` | `integer` | ✅ | |
974
+
975
+ ##### `pub.leaflet.richtext.facet#link`
976
+
977
+ Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.
978
+
979
+ | Property | Type | Required | Description |
980
+ | -------- | -------- | -------- | ----------- |
981
+ | `uri` | `string` | ✅ | |
982
+
983
+ ##### `pub.leaflet.richtext.facet#didMention`
984
+
985
+ Facet feature for mentioning a did.
986
+
987
+ | Property | Type | Required | Description |
988
+ | -------- | -------- | -------- | ----------- |
989
+ | `did` | `string` | ✅ | |
990
+
991
+ ##### `pub.leaflet.richtext.facet#atMention`
992
+
993
+ Facet feature for mentioning an AT URI.
994
+
995
+ | Property | Type | Required | Description |
996
+ | -------- | -------- | -------- | ----------- |
997
+ | `atURI` | `string` | ✅ | |
998
+
999
+ ##### `pub.leaflet.richtext.facet#code`
1000
+
1001
+ Facet feature for inline code.
1002
+
1003
+ ##### `pub.leaflet.richtext.facet#highlight`
1004
+
1005
+ Facet feature for highlighted text.
1006
+
1007
+ ##### `pub.leaflet.richtext.facet#underline`
1008
+
1009
+ Facet feature for underline markup
1010
+
1011
+ ##### `pub.leaflet.richtext.facet#strikethrough`
1012
+
1013
+ Facet feature for strikethrough markup
1014
+
1015
+ ##### `pub.leaflet.richtext.facet#id`
1016
+
1017
+ Facet feature for an identifier. Used for linking to a segment
1018
+
1019
+ | Property | Type | Required | Description |
1020
+ | -------- | -------- | -------- | ----------- |
1021
+ | `id` | `string` | ❌ | |
1022
+
1023
+ ##### `pub.leaflet.richtext.facet#bold`
1024
+
1025
+ Facet feature for bold text
1026
+
1027
+ ##### `pub.leaflet.richtext.facet#italic`
1028
+
1029
+ Facet feature for italic text
1030
+
1031
+ ##### `pub.leaflet.richtext.facet#footnote`
1032
+
1033
+ Facet feature for a footnote reference
1034
+
1035
+ | Property | Type | Required | Description |
1036
+ | ------------------ | -------- | -------- | ----------- |
1037
+ | `footnoteId` | `string` | ✅ | |
1038
+ | `contentPlaintext` | `string` | ✅ | |
1039
+ | `contentFacets` | `ref[]` | ❌ | |
285
1040
 
286
1041
  ---
287
1042