@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/dist/lexicons.mjs CHANGED
@@ -28,6 +28,214 @@ function maybe$typed(v, id, hash) {
28
28
  * GENERATED CODE - DO NOT MODIFY
29
29
  */
30
30
  const schemaDict = {
31
+ AppBskyRichtextFacet: {
32
+ lexicon: 1,
33
+ id: 'app.bsky.richtext.facet',
34
+ defs: {
35
+ main: {
36
+ type: 'object',
37
+ description: 'Annotation of a sub-string within rich text.',
38
+ required: ['index', 'features'],
39
+ properties: {
40
+ index: {
41
+ type: 'ref',
42
+ ref: 'lex:app.bsky.richtext.facet#byteSlice',
43
+ },
44
+ features: {
45
+ type: 'array',
46
+ items: {
47
+ type: 'union',
48
+ refs: [
49
+ 'lex:app.bsky.richtext.facet#mention',
50
+ 'lex:app.bsky.richtext.facet#link',
51
+ 'lex:app.bsky.richtext.facet#tag',
52
+ ],
53
+ },
54
+ },
55
+ },
56
+ },
57
+ mention: {
58
+ type: 'object',
59
+ description: "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.",
60
+ required: ['did'],
61
+ properties: {
62
+ did: {
63
+ type: 'string',
64
+ format: 'did',
65
+ },
66
+ },
67
+ },
68
+ link: {
69
+ type: 'object',
70
+ description: 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.',
71
+ required: ['uri'],
72
+ properties: {
73
+ uri: {
74
+ type: 'string',
75
+ format: 'uri',
76
+ },
77
+ },
78
+ },
79
+ tag: {
80
+ type: 'object',
81
+ description: "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').",
82
+ required: ['tag'],
83
+ properties: {
84
+ tag: {
85
+ type: 'string',
86
+ maxLength: 640,
87
+ maxGraphemes: 64,
88
+ },
89
+ },
90
+ },
91
+ byteSlice: {
92
+ type: 'object',
93
+ description: '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.',
94
+ required: ['byteStart', 'byteEnd'],
95
+ properties: {
96
+ byteStart: {
97
+ type: 'integer',
98
+ minimum: 0,
99
+ },
100
+ byteEnd: {
101
+ type: 'integer',
102
+ minimum: 0,
103
+ },
104
+ },
105
+ },
106
+ },
107
+ },
108
+ AppCertifiedActorOrganization: {
109
+ lexicon: 1,
110
+ id: 'app.certified.actor.organization',
111
+ defs: {
112
+ main: {
113
+ type: 'record',
114
+ description: 'Extended metadata for an organization actor. Complements the base actor profile with organization-specific fields like legal structure and reference links.',
115
+ key: 'literal:self',
116
+ record: {
117
+ type: 'object',
118
+ required: ['createdAt'],
119
+ properties: {
120
+ organizationType: {
121
+ type: 'array',
122
+ description: "Legal or operational structures of the organization (e.g. 'nonprofit', 'ngo', 'government', 'social-enterprise', 'cooperative').",
123
+ items: {
124
+ type: 'string',
125
+ maxLength: 128,
126
+ maxGraphemes: 100,
127
+ },
128
+ maxLength: 10,
129
+ },
130
+ urls: {
131
+ type: 'array',
132
+ description: 'Additional reference URLs (social media profiles, contact pages, donation links, etc.) with a display label for each URL.',
133
+ items: {
134
+ type: 'ref',
135
+ ref: 'lex:app.certified.actor.organization#urlItem',
136
+ },
137
+ },
138
+ location: {
139
+ type: 'ref',
140
+ ref: 'lex:com.atproto.repo.strongRef',
141
+ description: 'A strong reference to the location where the organization is based. The record referenced must conform with the lexicon app.certified.location.',
142
+ },
143
+ foundedDate: {
144
+ type: 'string',
145
+ format: 'datetime',
146
+ description: "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.",
147
+ },
148
+ createdAt: {
149
+ type: 'string',
150
+ format: 'datetime',
151
+ description: 'Client-declared timestamp when this record was originally created.',
152
+ },
153
+ },
154
+ },
155
+ },
156
+ urlItem: {
157
+ type: 'object',
158
+ description: 'A labeled URL reference.',
159
+ required: ['url'],
160
+ properties: {
161
+ url: {
162
+ type: 'string',
163
+ format: 'uri',
164
+ description: 'The URL.',
165
+ maxLength: 10000,
166
+ maxGraphemes: 2048,
167
+ },
168
+ label: {
169
+ type: 'string',
170
+ description: "Optional human-readable label for this URL (e.g. 'Support page', 'Donation page').",
171
+ maxLength: 640,
172
+ maxGraphemes: 64,
173
+ },
174
+ },
175
+ },
176
+ },
177
+ },
178
+ AppCertifiedActorProfile: {
179
+ lexicon: 1,
180
+ id: 'app.certified.actor.profile',
181
+ defs: {
182
+ main: {
183
+ type: 'record',
184
+ description: 'A declaration of a Certified account profile.',
185
+ key: 'literal:self',
186
+ record: {
187
+ type: 'object',
188
+ required: ['createdAt'],
189
+ properties: {
190
+ displayName: {
191
+ type: 'string',
192
+ description: 'Display name for the account',
193
+ maxGraphemes: 64,
194
+ maxLength: 640,
195
+ },
196
+ description: {
197
+ type: 'string',
198
+ description: 'Free-form profile description text.',
199
+ maxGraphemes: 256,
200
+ maxLength: 2560,
201
+ },
202
+ pronouns: {
203
+ type: 'string',
204
+ description: 'Free-form pronouns text.',
205
+ maxGraphemes: 20,
206
+ maxLength: 200,
207
+ },
208
+ website: {
209
+ type: 'string',
210
+ format: 'uri',
211
+ description: 'Account website URL',
212
+ },
213
+ avatar: {
214
+ type: 'union',
215
+ refs: [
216
+ 'lex:org.hypercerts.defs#uri',
217
+ 'lex:org.hypercerts.defs#smallImage',
218
+ ],
219
+ description: "Small image to be displayed next to posts from account. AKA, 'profile picture'",
220
+ },
221
+ banner: {
222
+ type: 'union',
223
+ refs: [
224
+ 'lex:org.hypercerts.defs#uri',
225
+ 'lex:org.hypercerts.defs#largeImage',
226
+ ],
227
+ description: 'Larger horizontal image to display behind profile view.',
228
+ },
229
+ createdAt: {
230
+ type: 'string',
231
+ format: 'datetime',
232
+ description: 'Client-declared timestamp when this record was originally created',
233
+ },
234
+ },
235
+ },
236
+ },
237
+ },
238
+ },
31
239
  AppCertifiedBadgeAward: {
32
240
  lexicon: 1,
33
241
  id: 'app.certified.badge.award',
@@ -42,8 +250,8 @@ const schemaDict = {
42
250
  properties: {
43
251
  badge: {
44
252
  type: 'ref',
45
- ref: 'lex:app.certified.badge.definition',
46
- description: 'Reference to the badge definition for this award.',
253
+ ref: 'lex:com.atproto.repo.strongRef',
254
+ description: 'Strong reference to the badge definition at the time of award. The record referenced must conform with the lexicon app.certified.badge.definition.',
47
255
  },
48
256
  subject: {
49
257
  type: 'union',
@@ -56,6 +264,13 @@ const schemaDict = {
56
264
  note: {
57
265
  type: 'string',
58
266
  description: 'Optional statement explaining the reason for this badge award.',
267
+ maxLength: 500,
268
+ },
269
+ url: {
270
+ type: 'string',
271
+ format: 'uri',
272
+ description: 'Optional URL the badge award links to.',
273
+ maxLength: 2048,
59
274
  },
60
275
  createdAt: {
61
276
  type: 'string',
@@ -77,15 +292,25 @@ const schemaDict = {
77
292
  key: 'tid',
78
293
  record: {
79
294
  type: 'object',
80
- required: ['title', 'badgeType', 'icon', 'createdAt'],
295
+ required: ['title', 'badgeType', 'createdAt'],
81
296
  properties: {
82
297
  badgeType: {
83
298
  type: 'string',
84
- description: 'Category of the badge (e.g. endorsement, participation, affiliation).',
299
+ description: 'Category of the badge. Values beyond the known set are permitted.',
300
+ knownValues: [
301
+ 'endorsement',
302
+ 'verification',
303
+ 'participation',
304
+ 'certification',
305
+ 'affiliation',
306
+ 'recognition',
307
+ ],
308
+ maxLength: 100,
85
309
  },
86
310
  title: {
87
311
  type: 'string',
88
312
  description: 'Human-readable title of the badge.',
313
+ maxLength: 256,
89
314
  },
90
315
  icon: {
91
316
  type: 'blob',
@@ -101,10 +326,13 @@ const schemaDict = {
101
326
  description: {
102
327
  type: 'string',
103
328
  description: 'Optional short statement describing what the badge represents.',
329
+ maxLength: 5000,
330
+ maxGraphemes: 500,
104
331
  },
105
332
  allowedIssuers: {
106
333
  type: 'array',
107
334
  description: 'Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it.',
335
+ maxLength: 100,
108
336
  items: {
109
337
  type: 'ref',
110
338
  ref: 'lex:app.certified.defs#did',
@@ -134,17 +362,18 @@ const schemaDict = {
134
362
  properties: {
135
363
  badgeAward: {
136
364
  type: 'ref',
137
- ref: 'lex:app.certified.badge.award',
138
- description: 'Reference to the badge award.',
365
+ ref: 'lex:com.atproto.repo.strongRef',
366
+ description: 'Strong reference to the badge award being responded to. The record referenced must conform with the lexicon app.certified.badge.award.',
139
367
  },
140
368
  response: {
141
369
  type: 'string',
142
- enum: ['accepted', 'rejected'],
370
+ knownValues: ['accepted', 'rejected'],
143
371
  description: 'The recipient’s response for the badge (accepted or rejected).',
144
372
  },
145
373
  weight: {
146
374
  type: 'string',
147
375
  description: 'Optional relative weight for accepted badges, assigned by the recipient.',
376
+ maxLength: 50,
148
377
  },
149
378
  createdAt: {
150
379
  type: 'string',
@@ -162,9 +391,105 @@ const schemaDict = {
162
391
  description: 'Common type definitions used across certified protocols.',
163
392
  defs: {
164
393
  did: {
165
- type: 'string',
166
- format: 'did',
394
+ type: 'object',
167
395
  description: 'A Decentralized Identifier (DID) string.',
396
+ required: ['did'],
397
+ properties: {
398
+ did: {
399
+ type: 'string',
400
+ format: 'did',
401
+ description: 'The DID string value.',
402
+ maxLength: 256,
403
+ },
404
+ },
405
+ },
406
+ },
407
+ },
408
+ AppCertifiedLinkEvm: {
409
+ lexicon: 1,
410
+ id: 'app.certified.link.evm',
411
+ defs: {
412
+ main: {
413
+ type: 'record',
414
+ 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.',
415
+ key: 'any',
416
+ record: {
417
+ type: 'object',
418
+ required: ['address', 'proof', 'createdAt'],
419
+ properties: {
420
+ address: {
421
+ type: 'string',
422
+ description: 'EVM wallet address (0x-prefixed, with EIP-55 checksum recommended).',
423
+ minLength: 42,
424
+ maxLength: 42,
425
+ },
426
+ proof: {
427
+ type: 'union',
428
+ refs: ['lex:app.certified.link.evm#eip712Proof'],
429
+ description: 'Cryptographic proof of wallet ownership. The union is open to allow future proof methods (e.g. ERC-1271, ERC-6492). Each variant bundles its signature with the corresponding message format.',
430
+ },
431
+ createdAt: {
432
+ type: 'string',
433
+ format: 'datetime',
434
+ description: 'Client-declared timestamp when this record was originally created.',
435
+ },
436
+ },
437
+ },
438
+ },
439
+ eip712Proof: {
440
+ type: 'object',
441
+ description: 'EOA wallet ownership proof via EIP-712 typed data signature. Contains both the structured message that was signed and the resulting signature.',
442
+ required: ['signature', 'message'],
443
+ properties: {
444
+ signature: {
445
+ type: 'string',
446
+ description: 'ECDSA signature over the EIP-712 hash (hex-encoded with 0x prefix, 64 or 65 bytes).',
447
+ minLength: 130,
448
+ maxLength: 132,
449
+ },
450
+ message: {
451
+ type: 'ref',
452
+ ref: 'lex:app.certified.link.evm#eip712Message',
453
+ description: 'The EIP-712 structured message fields that were signed.',
454
+ },
455
+ },
456
+ },
457
+ eip712Message: {
458
+ type: 'object',
459
+ description: 'The EIP-712 typed data message that was signed by the wallet. Contains the fields binding an ATProto DID to an EVM address on a specific chain.',
460
+ required: ['did', 'evmAddress', 'chainId', 'timestamp', 'nonce'],
461
+ properties: {
462
+ did: {
463
+ type: 'string',
464
+ format: 'did',
465
+ description: 'The ATProto DID being linked to the EVM address.',
466
+ maxLength: 256,
467
+ },
468
+ evmAddress: {
469
+ type: 'string',
470
+ description: 'The EVM wallet address (must match the top-level address field).',
471
+ minLength: 42,
472
+ maxLength: 42,
473
+ },
474
+ chainId: {
475
+ type: 'string',
476
+ description: 'EVM chain ID as string (bigint serialized). Identifies which chain was used for signing; for EOA wallets the identity link applies across all EVM-compatible chains.',
477
+ minLength: 1,
478
+ maxLength: 78,
479
+ },
480
+ timestamp: {
481
+ type: 'string',
482
+ description: 'Unix timestamp when the attestation was created (bigint serialized).',
483
+ minLength: 1,
484
+ maxLength: 78,
485
+ },
486
+ nonce: {
487
+ type: 'string',
488
+ description: 'Replay-protection nonce (bigint serialized).',
489
+ minLength: 1,
490
+ maxLength: 78,
491
+ },
492
+ },
168
493
  },
169
494
  },
170
495
  },
@@ -199,8 +524,17 @@ const schemaDict = {
199
524
  },
200
525
  locationType: {
201
526
  type: 'string',
202
- description: 'An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point)',
203
- knownValues: ['coordinate-decimal', 'geojson-point'],
527
+ description: 'An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point). See the Location Protocol spec for the full registry: https://spec.decentralizedgeo.org/specification/location-types/#location-type-registry',
528
+ knownValues: [
529
+ 'coordinate-decimal',
530
+ 'geojson-point',
531
+ 'geojson',
532
+ 'h3',
533
+ 'geohash',
534
+ 'wkt',
535
+ 'address',
536
+ 'scaledCoordinates',
537
+ ],
204
538
  maxLength: 20,
205
539
  },
206
540
  location: {
@@ -208,18 +542,19 @@ const schemaDict = {
208
542
  refs: [
209
543
  'lex:org.hypercerts.defs#uri',
210
544
  'lex:org.hypercerts.defs#smallBlob',
545
+ 'lex:app.certified.location#string',
211
546
  ],
212
- description: 'The location of where the work was performed as a URI or blob.',
547
+ description: 'The location of where the work was performed as a URI, blob, or inline string.',
213
548
  },
214
549
  name: {
215
550
  type: 'string',
216
- description: 'Optional name for this location',
551
+ description: "Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area')",
217
552
  maxLength: 1000,
218
553
  maxGraphemes: 100,
219
554
  },
220
555
  description: {
221
556
  type: 'string',
222
- description: 'Optional description for this location',
557
+ description: 'Additional context about this location, such as its significance to the work or specific boundaries',
223
558
  maxLength: 2000,
224
559
  maxGraphemes: 500,
225
560
  },
@@ -231,6 +566,19 @@ const schemaDict = {
231
566
  },
232
567
  },
233
568
  },
569
+ string: {
570
+ type: 'object',
571
+ required: ['string'],
572
+ description: 'A location represented as a string, e.g. coordinates or a small GeoJSON string.',
573
+ properties: {
574
+ string: {
575
+ type: 'string',
576
+ description: 'The location string value',
577
+ maxLength: 10000,
578
+ maxGraphemes: 1000,
579
+ },
580
+ },
581
+ },
234
582
  },
235
583
  },
236
584
  ComAtprotoRepoStrongRef: {
@@ -254,203 +602,322 @@ const schemaDict = {
254
602
  },
255
603
  },
256
604
  },
257
- OrgHypercertsClaimActivity: {
605
+ OrgHyperboardsBoard: {
258
606
  lexicon: 1,
259
- id: 'org.hypercerts.claim.activity',
607
+ id: 'org.hyperboards.board',
260
608
  defs: {
261
609
  main: {
262
610
  type: 'record',
263
- description: 'A hypercert record tracking impact work.',
264
- key: 'any',
611
+ description: "Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS.",
612
+ key: 'tid',
265
613
  record: {
266
614
  type: 'object',
267
- required: ['title', 'shortDescription', 'createdAt'],
615
+ required: ['subject', 'createdAt'],
268
616
  properties: {
269
- title: {
270
- type: 'string',
271
- description: 'Title of the hypercert.',
272
- maxLength: 256,
273
- },
274
- shortDescription: {
275
- type: 'string',
276
- description: 'Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
277
- maxLength: 3000,
278
- maxGraphemes: 300,
279
- },
280
- shortDescriptionFacets: {
281
- type: 'array',
282
- description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
283
- items: {
284
- type: 'ref',
285
- ref: 'lex:app.bsky.richtext.facet',
286
- },
617
+ subject: {
618
+ type: 'ref',
619
+ ref: 'lex:com.atproto.repo.strongRef',
620
+ description: 'Reference to the org.hypercerts.claim.activity or org.hypercerts.claim.collection this board visualizes.',
287
621
  },
288
- description: {
289
- type: 'string',
290
- description: 'Optional longer description of this activity claim, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`.',
291
- maxLength: 30000,
292
- maxGraphemes: 3000,
622
+ config: {
623
+ type: 'ref',
624
+ ref: 'lex:org.hyperboards.board#boardConfig',
625
+ description: 'Board-level visual configuration (background, colors, aspect ratio).',
293
626
  },
294
- descriptionFacets: {
627
+ contributorConfigs: {
295
628
  type: 'array',
296
- description: 'Rich text annotations for `description` (mentions, URLs, hashtags, etc).',
629
+ description: 'Per-contributor configuration entries for this board.',
630
+ maxLength: 1000,
297
631
  items: {
298
632
  type: 'ref',
299
- ref: 'lex:app.bsky.richtext.facet',
633
+ ref: 'lex:org.hyperboards.board#contributorConfig',
300
634
  },
301
635
  },
302
- image: {
303
- type: 'union',
304
- refs: [
305
- 'lex:org.hypercerts.defs#uri',
306
- 'lex:org.hypercerts.defs#smallImage',
307
- ],
308
- description: 'The hypercert visual representation as a URI or image blob.',
309
- },
310
- workScope: {
311
- type: 'union',
312
- refs: [
313
- 'lex:org.hypercerts.defs#workScopeAll',
314
- 'lex:org.hypercerts.defs#workScopeAny',
315
- 'lex:org.hypercerts.defs#workScopeNot',
316
- 'lex:org.hypercerts.defs#workScopeAtom',
317
- ],
318
- description: 'Work scope logic expression using boolean operators (all/any/not) and atomic scope references.',
319
- },
320
- startDate: {
636
+ createdAt: {
321
637
  type: 'string',
322
638
  format: 'datetime',
323
- description: 'When the work began',
324
- },
325
- endDate: {
326
- type: 'string',
327
- format: 'datetime',
328
- description: 'When the work ended',
329
- },
330
- contributors: {
331
- type: 'array',
332
- description: 'An array of contributor objects, each containing contributor information, weight, and contribution details.',
333
- items: {
334
- type: 'ref',
335
- ref: 'lex:org.hypercerts.claim.activity#contributor',
336
- },
337
- },
338
- rights: {
339
- type: 'ref',
340
- ref: 'lex:com.atproto.repo.strongRef',
341
- description: 'A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights.',
342
- },
343
- locations: {
344
- type: 'array',
345
- description: 'An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.',
346
- items: {
347
- type: 'ref',
348
- ref: 'lex:com.atproto.repo.strongRef',
349
- },
350
- },
351
- createdAt: {
352
- type: 'string',
353
- format: 'datetime',
354
- description: 'Client-declared timestamp when this record was originally created',
639
+ description: 'Client-declared timestamp when this record was originally created.',
355
640
  },
356
641
  },
357
642
  },
358
643
  },
359
- contributor: {
644
+ boardConfig: {
360
645
  type: 'object',
361
- required: ['contributorIdentity'],
646
+ description: "Visual configuration for a hyperboard's background, colors, and layout.",
362
647
  properties: {
363
- contributorIdentity: {
648
+ backgroundType: {
649
+ type: 'string',
650
+ description: 'Type of background content.',
651
+ knownValues: ['image', 'iframe'],
652
+ maxLength: 10,
653
+ },
654
+ backgroundImage: {
364
655
  type: 'union',
365
656
  refs: [
366
- 'lex:org.hypercerts.claim.activity#contributorIdentity',
367
- 'lex:com.atproto.repo.strongRef',
657
+ 'lex:org.hypercerts.defs#uri',
658
+ 'lex:org.hypercerts.defs#smallImage',
368
659
  ],
369
- description: 'Contributor identity as a string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record.',
660
+ description: 'Background image as a URI or image blob.',
370
661
  },
371
- contributionWeight: {
662
+ backgroundIframeUrl: {
372
663
  type: 'string',
373
- description: 'The relative weight/importance of this contribution (stored as a string to avoid float precision issues). Must be a positive numeric value. Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed.',
664
+ format: 'uri',
665
+ description: 'URI of the background iframe.',
666
+ maxLength: 2048,
374
667
  },
375
- contributionDetails: {
668
+ backgroundGrayscale: {
669
+ type: 'boolean',
670
+ description: 'Whether the background is rendered in grayscale. Default: true.',
671
+ },
672
+ backgroundOpacity: {
673
+ type: 'integer',
674
+ description: 'Background opacity as a percentage (0–100).',
675
+ minimum: 0,
676
+ maximum: 100,
677
+ },
678
+ backgroundColor: {
679
+ type: 'string',
680
+ description: "Background color as a hex string (e.g. '#ffffff').",
681
+ maxLength: 20,
682
+ },
683
+ borderColor: {
684
+ type: 'string',
685
+ description: "Border color as a hex string (e.g. '#000000').",
686
+ maxLength: 20,
687
+ },
688
+ grayscaleImages: {
689
+ type: 'boolean',
690
+ description: 'Whether contributor images are rendered in grayscale. Default: false.',
691
+ },
692
+ imageShape: {
693
+ type: 'string',
694
+ description: 'Shape used to crop contributor images on this board.',
695
+ knownValues: ['circular', 'square'],
696
+ maxLength: 20,
697
+ },
698
+ aspectRatio: {
699
+ type: 'string',
700
+ description: 'Display aspect ratio of the board.',
701
+ knownValues: ['16:9', '4:3', '1:1'],
702
+ maxLength: 10,
703
+ },
704
+ },
705
+ },
706
+ contributorConfig: {
707
+ type: 'object',
708
+ description: 'Configuration for a specific contributor within a board. Values serve as fallbacks when the contributor has not defined them on their profile. It can also be used to override contributor settings on this board without changing their global profile.',
709
+ required: ['contributor'],
710
+ properties: {
711
+ contributor: {
376
712
  type: 'union',
377
713
  refs: [
378
- 'lex:org.hypercerts.claim.activity#contributorRole',
379
714
  'lex:com.atproto.repo.strongRef',
715
+ 'lex:org.hypercerts.claim.activity#contributorIdentity',
716
+ ],
717
+ description: 'Identifies the contributor being styled. A strong reference to an org.hypercerts.claim.contributorInformation record, or a contributorIdentity (DID or identifier string) for contributors without a dedicated record.',
718
+ },
719
+ override: {
720
+ type: 'boolean',
721
+ description: "When true, these values take precedence over the contributor's own profile and display settings. When false or omitted, they are only used as fallbacks if the contributor has not set their own settings.",
722
+ },
723
+ displayName: {
724
+ type: 'string',
725
+ description: 'Display name for this contributor on this board.',
726
+ maxLength: 640,
727
+ maxGraphemes: 64,
728
+ },
729
+ image: {
730
+ type: 'union',
731
+ refs: [
732
+ 'lex:org.hypercerts.defs#uri',
733
+ 'lex:org.hypercerts.defs#smallImage',
734
+ ],
735
+ description: 'Avatar or face image for this contributor on this board, as a URI or image blob.',
736
+ },
737
+ video: {
738
+ type: 'union',
739
+ refs: [
740
+ 'lex:org.hypercerts.defs#uri',
741
+ 'lex:org.hypercerts.defs#smallVideo',
380
742
  ],
381
- description: 'Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record.',
743
+ description: 'Video for this contributor, as a URI (embed/direct link) or uploaded video blob.',
744
+ },
745
+ hoverImage: {
746
+ type: 'union',
747
+ refs: [
748
+ 'lex:org.hypercerts.defs#uri',
749
+ 'lex:org.hypercerts.defs#smallImage',
750
+ ],
751
+ description: 'Image overlay shown when hovering over this contributor, as a URI or image blob.',
752
+ },
753
+ hoverIframeUrl: {
754
+ type: 'string',
755
+ format: 'uri',
756
+ description: 'Iframe overlay shown when hovering over this contributor.',
757
+ maxLength: 2048,
758
+ },
759
+ url: {
760
+ type: 'string',
761
+ format: 'uri',
762
+ description: 'Click-through link URL for this contributor.',
763
+ maxLength: 2048,
382
764
  },
383
765
  },
384
766
  },
385
- contributorIdentity: {
386
- type: 'string',
387
- description: 'Contributor information as a string (DID or identifier).',
388
- },
389
- contributorRole: {
390
- type: 'string',
391
- description: 'Contribution details as a string.',
392
- maxLength: 10000,
393
- maxGraphemes: 1000,
394
- },
395
767
  },
396
768
  },
397
- OrgHypercertsClaimCollection: {
769
+ OrgHyperboardsDisplayProfile: {
398
770
  lexicon: 1,
399
- id: 'org.hypercerts.claim.collection',
771
+ id: 'org.hyperboards.displayProfile',
400
772
  defs: {
401
773
  main: {
402
774
  type: 'record',
403
- 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.',
404
- key: 'tid',
775
+ 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.",
776
+ key: 'literal:self',
405
777
  record: {
406
778
  type: 'object',
407
- required: ['title', 'items', 'createdAt'],
779
+ required: ['createdAt'],
408
780
  properties: {
409
- type: {
781
+ displayName: {
782
+ type: 'string',
783
+ description: 'Display name override for this user on hyperboards.',
784
+ maxLength: 640,
785
+ maxGraphemes: 64,
786
+ },
787
+ image: {
788
+ type: 'union',
789
+ refs: [
790
+ 'lex:org.hypercerts.defs#uri',
791
+ 'lex:org.hypercerts.defs#smallImage',
792
+ ],
793
+ description: 'Avatar or face image override for this user on hyperboards, as a URI or image blob.',
794
+ },
795
+ video: {
796
+ type: 'union',
797
+ refs: [
798
+ 'lex:org.hypercerts.defs#uri',
799
+ 'lex:org.hypercerts.defs#smallVideo',
800
+ ],
801
+ description: 'Default video for this user across boards, as a URI (embed/direct link) or uploaded video blob.',
802
+ },
803
+ hoverImage: {
804
+ type: 'union',
805
+ refs: [
806
+ 'lex:org.hypercerts.defs#uri',
807
+ 'lex:org.hypercerts.defs#smallImage',
808
+ ],
809
+ description: 'Default hover image for this user across boards, as a URI or image blob.',
810
+ },
811
+ hoverIframeUrl: {
410
812
  type: 'string',
411
- description: "The type of this collection. Possible fields can be 'favorites', 'project', or any other type of collection.",
813
+ format: 'uri',
814
+ description: 'Default hover iframe URL for this user across boards.',
815
+ maxLength: 2048,
816
+ },
817
+ url: {
818
+ type: 'string',
819
+ format: 'uri',
820
+ description: 'Default click-through link URL for this user across boards.',
821
+ maxLength: 2048,
822
+ },
823
+ createdAt: {
824
+ type: 'string',
825
+ format: 'datetime',
826
+ description: 'Client-declared timestamp when this record was originally created.',
412
827
  },
828
+ },
829
+ },
830
+ },
831
+ },
832
+ },
833
+ OrgHypercertsClaimActivity: {
834
+ lexicon: 1,
835
+ id: 'org.hypercerts.claim.activity',
836
+ defs: {
837
+ main: {
838
+ type: 'record',
839
+ description: 'A hypercert record tracking impact work.',
840
+ key: 'any',
841
+ record: {
842
+ type: 'object',
843
+ required: ['title', 'shortDescription', 'createdAt'],
844
+ properties: {
413
845
  title: {
414
846
  type: 'string',
415
- description: 'The title of this collection',
416
- maxLength: 800,
417
- maxGraphemes: 80,
847
+ description: "Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024')",
848
+ maxLength: 256,
418
849
  },
419
850
  shortDescription: {
420
851
  type: 'string',
852
+ description: 'Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
421
853
  maxLength: 3000,
422
854
  maxGraphemes: 300,
423
- description: 'Short summary of this collection, suitable for previews and list views',
855
+ },
856
+ shortDescriptionFacets: {
857
+ type: 'array',
858
+ description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
859
+ items: {
860
+ type: 'ref',
861
+ ref: 'lex:app.bsky.richtext.facet',
862
+ },
424
863
  },
425
864
  description: {
426
- type: 'ref',
427
- ref: 'lex:pub.leaflet.pages.linearDocument#main',
428
- description: 'Rich-text description, represented as a Leaflet linear document.',
865
+ type: 'union',
866
+ refs: [
867
+ 'lex:org.hypercerts.defs#descriptionString',
868
+ 'lex:pub.leaflet.pages.linearDocument',
869
+ 'lex:com.atproto.repo.strongRef',
870
+ ],
871
+ description: 'Long-form description of the activity. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record.',
429
872
  },
430
- avatar: {
873
+ image: {
431
874
  type: 'union',
432
875
  refs: [
433
876
  'lex:org.hypercerts.defs#uri',
434
877
  'lex:org.hypercerts.defs#smallImage',
435
878
  ],
436
- description: "The collection's avatar/profile image as a URI or image blob.",
879
+ description: 'The hypercert visual representation as a URI or image blob.',
437
880
  },
438
- banner: {
881
+ contributors: {
882
+ type: 'array',
883
+ description: 'An array of contributor objects, each containing contributor information, weight, and contribution details.',
884
+ items: {
885
+ type: 'ref',
886
+ ref: 'lex:org.hypercerts.claim.activity#contributor',
887
+ },
888
+ },
889
+ workScope: {
439
890
  type: 'union',
440
891
  refs: [
441
- 'lex:org.hypercerts.defs#uri',
442
- 'lex:org.hypercerts.defs#largeImage',
892
+ 'lex:org.hypercerts.workscope.cel',
893
+ 'lex:org.hypercerts.claim.activity#workScopeString',
443
894
  ],
444
- description: 'Larger horizontal image to display behind the collection view.',
895
+ description: 'Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes.',
445
896
  },
446
- items: {
897
+ startDate: {
898
+ type: 'string',
899
+ format: 'datetime',
900
+ description: 'When the work began',
901
+ },
902
+ endDate: {
903
+ type: 'string',
904
+ format: 'datetime',
905
+ description: 'When the work ended',
906
+ },
907
+ locations: {
447
908
  type: 'array',
448
- description: 'Array of items in this collection with optional weights.',
909
+ description: 'An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.',
910
+ maxLength: 1000,
449
911
  items: {
450
912
  type: 'ref',
451
- ref: 'lex:org.hypercerts.claim.collection#item',
913
+ ref: 'lex:com.atproto.repo.strongRef',
452
914
  },
453
915
  },
916
+ rights: {
917
+ type: 'ref',
918
+ ref: 'lex:com.atproto.repo.strongRef',
919
+ description: 'A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights.',
920
+ },
454
921
  createdAt: {
455
922
  type: 'string',
456
923
  format: 'datetime',
@@ -459,26 +926,78 @@ const schemaDict = {
459
926
  },
460
927
  },
461
928
  },
462
- item: {
929
+ contributor: {
463
930
  type: 'object',
464
- required: ['itemIdentifier'],
931
+ description: 'A contributor to the activity, with identity, weight, and contribution details.',
932
+ required: ['contributorIdentity'],
465
933
  properties: {
466
- itemIdentifier: {
467
- type: 'ref',
468
- ref: 'lex:com.atproto.repo.strongRef',
469
- description: 'Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.claim.collection).',
934
+ contributorIdentity: {
935
+ type: 'union',
936
+ refs: [
937
+ 'lex:org.hypercerts.claim.activity#contributorIdentity',
938
+ 'lex:com.atproto.repo.strongRef',
939
+ ],
940
+ description: 'Inline contributor identity object with an identity string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record. The record referenced must conform with the lexicon org.hypercerts.claim.contributorInformation.',
470
941
  },
471
- itemWeight: {
942
+ contributionWeight: {
472
943
  type: 'string',
473
- description: '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.',
944
+ description: 'The relative weight/importance of this contribution (stored as a string to avoid float precision issues). Must be a positive numeric value. Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed.',
945
+ maxLength: 100,
946
+ },
947
+ contributionDetails: {
948
+ type: 'union',
949
+ refs: [
950
+ 'lex:org.hypercerts.claim.activity#contributorRole',
951
+ 'lex:com.atproto.repo.strongRef',
952
+ ],
953
+ description: 'Inline contribution role object with a role string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record. The record referenced must conform with the lexicon org.hypercerts.claim.contribution.',
954
+ },
955
+ },
956
+ },
957
+ contributorIdentity: {
958
+ type: 'object',
959
+ description: 'Contributor information as a string (DID or identifier).',
960
+ required: ['identity'],
961
+ properties: {
962
+ identity: {
963
+ type: 'string',
964
+ description: 'The contributor identity string (DID or identifier).',
965
+ maxLength: 1000,
966
+ maxGraphemes: 100,
967
+ },
968
+ },
969
+ },
970
+ contributorRole: {
971
+ type: 'object',
972
+ description: 'Contribution details as a string.',
973
+ required: ['role'],
974
+ properties: {
975
+ role: {
976
+ type: 'string',
977
+ description: 'The contribution role or details.',
978
+ maxLength: 1000,
979
+ maxGraphemes: 100,
980
+ },
981
+ },
982
+ },
983
+ workScopeString: {
984
+ type: 'object',
985
+ description: 'A free-form string describing the work scope for simple or legacy scopes.',
986
+ required: ['scope'],
987
+ properties: {
988
+ scope: {
989
+ type: 'string',
990
+ description: 'The work scope description string.',
991
+ maxLength: 1000,
992
+ maxGraphemes: 100,
474
993
  },
475
994
  },
476
995
  },
477
996
  },
478
997
  },
479
- OrgHypercertsClaimContributionDetails: {
998
+ OrgHypercertsClaimContribution: {
480
999
  lexicon: 1,
481
- id: 'org.hypercerts.claim.contributionDetails',
1000
+ id: 'org.hypercerts.claim.contribution',
482
1001
  defs: {
483
1002
  main: {
484
1003
  type: 'record',
@@ -495,19 +1014,19 @@ const schemaDict = {
495
1014
  },
496
1015
  contributionDescription: {
497
1016
  type: 'string',
498
- description: 'What the contribution concretely was.',
1017
+ description: 'Description of what the contribution concretely involved.',
499
1018
  maxLength: 10000,
500
1019
  maxGraphemes: 1000,
501
1020
  },
502
1021
  startDate: {
503
1022
  type: 'string',
504
1023
  format: 'datetime',
505
- description: 'When this contribution started. This should be a subset of the hypercert timeframe.',
1024
+ description: "When this contribution started. Should fall within the parent hypercert's timeframe.",
506
1025
  },
507
1026
  endDate: {
508
1027
  type: 'string',
509
1028
  format: 'datetime',
510
- description: 'When this contribution finished. This should be a subset of the hypercert timeframe.',
1029
+ description: "When this contribution finished. Should fall within the parent hypercert's timeframe.",
511
1030
  },
512
1031
  createdAt: {
513
1032
  type: 'string',
@@ -533,11 +1052,12 @@ const schemaDict = {
533
1052
  properties: {
534
1053
  identifier: {
535
1054
  type: 'string',
536
- description: 'DID or a URI to a social profile of the contributor.',
1055
+ description: 'DID (did:plc:...) or URI to a social profile of the contributor.',
1056
+ maxLength: 2048,
537
1057
  },
538
1058
  displayName: {
539
1059
  type: 'string',
540
- description: 'Display name of the contributor.',
1060
+ description: 'Human-readable name for the contributor as it should appear in UI.',
541
1061
  maxLength: 100,
542
1062
  },
543
1063
  image: {
@@ -558,87 +1078,133 @@ const schemaDict = {
558
1078
  },
559
1079
  },
560
1080
  },
561
- OrgHypercertsClaimEvaluation: {
1081
+ OrgHypercertsClaimRights: {
562
1082
  lexicon: 1,
563
- id: 'org.hypercerts.claim.evaluation',
1083
+ id: 'org.hypercerts.claim.rights',
564
1084
  defs: {
565
- score: {
566
- type: 'object',
567
- description: 'Overall score for an evaluation on a numeric scale.',
568
- required: ['min', 'max', 'value'],
569
- properties: {
570
- min: {
571
- type: 'integer',
572
- description: 'Minimum value of the scale, e.g. 0 or 1.',
573
- },
574
- max: {
575
- type: 'integer',
576
- description: 'Maximum value of the scale, e.g. 5 or 10.',
577
- },
578
- value: {
579
- type: 'integer',
580
- description: 'Score within the inclusive range [min, max].',
581
- },
1085
+ main: {
1086
+ type: 'record',
1087
+ 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.',
1088
+ key: 'tid',
1089
+ record: {
1090
+ type: 'object',
1091
+ required: [
1092
+ 'rightsName',
1093
+ 'rightsType',
1094
+ 'rightsDescription',
1095
+ 'createdAt',
1096
+ ],
1097
+ properties: {
1098
+ rightsName: {
1099
+ type: 'string',
1100
+ description: "Human-readable name for these rights (e.g. 'All Rights Reserved', 'CC BY-SA 4.0')",
1101
+ maxLength: 100,
1102
+ },
1103
+ rightsType: {
1104
+ type: 'string',
1105
+ description: "Short identifier code for this rights type (e.g. 'ARR', 'CC-BY-SA') to facilitate filtering and search",
1106
+ maxLength: 10,
1107
+ },
1108
+ rightsDescription: {
1109
+ type: 'string',
1110
+ description: "Detailed explanation of the rights holders' permissions, restrictions, and conditions",
1111
+ maxLength: 10000,
1112
+ maxGraphemes: 1000,
1113
+ },
1114
+ attachment: {
1115
+ type: 'union',
1116
+ refs: [
1117
+ 'lex:org.hypercerts.defs#uri',
1118
+ 'lex:org.hypercerts.defs#smallBlob',
1119
+ ],
1120
+ description: 'An attachment to define the rights further, e.g. a legal document.',
1121
+ },
1122
+ createdAt: {
1123
+ type: 'string',
1124
+ format: 'datetime',
1125
+ description: 'Client-declared timestamp when this record was originally created',
1126
+ },
1127
+ },
582
1128
  },
583
1129
  },
1130
+ },
1131
+ },
1132
+ OrgHypercertsCollection: {
1133
+ lexicon: 1,
1134
+ id: 'org.hypercerts.collection',
1135
+ defs: {
584
1136
  main: {
585
1137
  type: 'record',
586
- description: 'An evaluation of a hypercert record (e.g. an activity and its impact).',
1138
+ description: 'A collection/group of items (activities and/or other collections). Collections support recursive nesting.',
587
1139
  key: 'tid',
588
1140
  record: {
589
1141
  type: 'object',
590
- required: ['evaluators', 'summary', 'createdAt'],
1142
+ required: ['title', 'createdAt'],
591
1143
  properties: {
592
- subject: {
593
- type: 'ref',
594
- ref: 'lex:com.atproto.repo.strongRef',
595
- description: 'A strong reference to what is being evaluated. (e.g activity, measurement, contribution, etc.)',
1144
+ type: {
1145
+ type: 'string',
1146
+ description: 'The type of this collection. Values beyond the known set are permitted.',
1147
+ knownValues: ['favorites', 'project', 'portfolio', 'program'],
1148
+ maxLength: 64,
596
1149
  },
597
- evaluators: {
1150
+ title: {
1151
+ type: 'string',
1152
+ description: "Display name for this collection (e.g. 'Q1 2025 Impact Projects')",
1153
+ maxLength: 800,
1154
+ maxGraphemes: 80,
1155
+ },
1156
+ shortDescription: {
1157
+ type: 'string',
1158
+ maxLength: 3000,
1159
+ maxGraphemes: 300,
1160
+ description: 'Short summary of this collection, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
1161
+ },
1162
+ shortDescriptionFacets: {
598
1163
  type: 'array',
599
- description: 'DIDs of the evaluators',
1164
+ description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
600
1165
  items: {
601
1166
  type: 'ref',
602
- ref: 'lex:app.certified.defs#did',
1167
+ ref: 'lex:app.bsky.richtext.facet',
603
1168
  },
604
- maxLength: 1000,
605
1169
  },
606
- content: {
607
- type: 'array',
608
- description: 'Evaluation data (URIs or blobs) containing detailed reports or methodology',
609
- items: {
610
- type: 'union',
611
- refs: [
612
- 'lex:org.hypercerts.defs#uri',
613
- 'lex:org.hypercerts.defs#smallBlob',
614
- ],
615
- },
616
- maxLength: 100,
1170
+ description: {
1171
+ type: 'union',
1172
+ refs: [
1173
+ 'lex:org.hypercerts.defs#descriptionString',
1174
+ 'lex:pub.leaflet.pages.linearDocument',
1175
+ 'lex:com.atproto.repo.strongRef',
1176
+ ],
1177
+ description: '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.',
617
1178
  },
618
- measurements: {
1179
+ avatar: {
1180
+ type: 'union',
1181
+ refs: [
1182
+ 'lex:org.hypercerts.defs#uri',
1183
+ 'lex:org.hypercerts.defs#smallImage',
1184
+ ],
1185
+ description: "The collection's avatar/profile image as a URI or image blob.",
1186
+ },
1187
+ banner: {
1188
+ type: 'union',
1189
+ refs: [
1190
+ 'lex:org.hypercerts.defs#uri',
1191
+ 'lex:org.hypercerts.defs#largeImage',
1192
+ ],
1193
+ description: 'Larger horizontal image to display behind the collection view.',
1194
+ },
1195
+ items: {
619
1196
  type: 'array',
620
- description: 'Optional references to the measurements that contributed to this evaluation. The record(s) referenced must conform with the lexicon org.hypercerts.claim.measurement',
1197
+ description: 'Array of items in this collection with optional weights.',
1198
+ maxLength: 1000,
621
1199
  items: {
622
1200
  type: 'ref',
623
- ref: 'lex:com.atproto.repo.strongRef',
1201
+ ref: 'lex:org.hypercerts.collection#item',
624
1202
  },
625
- maxLength: 100,
626
- },
627
- summary: {
628
- type: 'string',
629
- description: 'Brief evaluation summary',
630
- maxLength: 5000,
631
- maxGraphemes: 1000,
632
- },
633
- score: {
634
- type: 'ref',
635
- ref: 'lex:org.hypercerts.claim.evaluation#score',
636
- description: 'Optional overall score for this evaluation on a numeric scale.',
637
1203
  },
638
1204
  location: {
639
1205
  type: 'ref',
640
1206
  ref: 'lex:com.atproto.repo.strongRef',
641
- description: 'An optional reference for georeferenced evaluations. The record referenced must conform with the lexicon app.certified.location.',
1207
+ description: "A strong reference to the location where this collection's activities were performed. The record referenced must conform with the lexicon app.certified.location.",
642
1208
  },
643
1209
  createdAt: {
644
1210
  type: 'string',
@@ -648,173 +1214,349 @@ const schemaDict = {
648
1214
  },
649
1215
  },
650
1216
  },
1217
+ item: {
1218
+ type: 'object',
1219
+ description: 'An item in a collection, with an identifier and optional weight.',
1220
+ required: ['itemIdentifier'],
1221
+ properties: {
1222
+ itemIdentifier: {
1223
+ type: 'ref',
1224
+ ref: 'lex:com.atproto.repo.strongRef',
1225
+ description: 'Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.collection).',
1226
+ },
1227
+ itemWeight: {
1228
+ type: 'string',
1229
+ description: '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.',
1230
+ maxLength: 100,
1231
+ },
1232
+ },
1233
+ },
651
1234
  },
652
1235
  },
653
- OrgHypercertsClaimEvidence: {
1236
+ OrgHypercertsContextAcknowledgement: {
654
1237
  lexicon: 1,
655
- id: 'org.hypercerts.claim.evidence',
1238
+ id: 'org.hypercerts.context.acknowledgement',
656
1239
  defs: {
657
1240
  main: {
658
1241
  type: 'record',
659
- 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.',
1242
+ 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.",
660
1243
  key: 'tid',
661
1244
  record: {
662
1245
  type: 'object',
663
- required: ['content', 'title', 'createdAt'],
1246
+ required: ['subject', 'acknowledged', 'createdAt'],
664
1247
  properties: {
665
1248
  subject: {
666
1249
  type: 'ref',
667
1250
  ref: 'lex:com.atproto.repo.strongRef',
668
- description: 'A strong reference to the record this evidence relates to (e.g. an activity, project, claim, or evaluation).',
1251
+ description: 'The record being acknowledged (e.g. an activity, a contributor information record, an evaluation).',
669
1252
  },
670
- content: {
1253
+ context: {
671
1254
  type: 'union',
672
1255
  refs: [
673
1256
  'lex:org.hypercerts.defs#uri',
674
- 'lex:org.hypercerts.defs#smallBlob',
1257
+ 'lex:com.atproto.repo.strongRef',
675
1258
  ],
676
- description: 'A piece of evidence (URI or blob) related to the subject record; it may support, clarify, or challenge a hypercert claim.',
677
- },
678
- title: {
679
- type: 'string',
680
- maxLength: 256,
681
- description: 'Title to describe the nature of the evidence.',
682
- },
683
- shortDescription: {
684
- type: 'string',
685
- maxLength: 3000,
686
- maxGraphemes: 300,
687
- description: 'Short description explaining what this evidence shows.',
1259
+ description: '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.',
688
1260
  },
689
- description: {
690
- type: 'string',
691
- description: 'Longer description describing the evidence in more detail.',
692
- maxLength: 30000,
693
- maxGraphemes: 3000,
1261
+ acknowledged: {
1262
+ type: 'boolean',
1263
+ description: 'Whether the relationship is acknowledged (true) or rejected (false).',
694
1264
  },
695
- relationType: {
1265
+ comment: {
696
1266
  type: 'string',
697
- description: 'How this evidence relates to the subject.',
698
- knownValues: ['supports', 'challenges', 'clarifies'],
1267
+ description: 'Optional plain-text comment providing additional context or reasoning.',
1268
+ maxLength: 10000,
1269
+ maxGraphemes: 1000,
699
1270
  },
700
1271
  createdAt: {
701
1272
  type: 'string',
702
1273
  format: 'datetime',
703
- description: 'Client-declared timestamp when this record was originally created',
1274
+ description: 'Client-declared timestamp when this record was originally created.',
704
1275
  },
705
1276
  },
706
1277
  },
707
1278
  },
708
1279
  },
709
1280
  },
710
- OrgHypercertsClaimMeasurement: {
1281
+ OrgHypercertsContextAttachment: {
711
1282
  lexicon: 1,
712
- id: 'org.hypercerts.claim.measurement',
1283
+ id: 'org.hypercerts.context.attachment',
713
1284
  defs: {
714
1285
  main: {
715
1286
  type: 'record',
716
- description: 'Measurement data related to a hypercert record (e.g. an activity and its impact).',
1287
+ description: 'An attachment providing commentary, context, evidence, or documentary material related to a hypercert record (e.g. an activity, project, claim, or evaluation).',
717
1288
  key: 'tid',
718
1289
  record: {
719
1290
  type: 'object',
720
- required: ['measurers', 'metric', 'value', 'createdAt'],
1291
+ required: ['title', 'createdAt'],
721
1292
  properties: {
722
- subject: {
723
- type: 'ref',
724
- ref: 'lex:com.atproto.repo.strongRef',
725
- description: 'A strong reference to the record this measurement refers to (e.g. an activity, project, or claim).',
726
- },
727
- measurers: {
1293
+ subjects: {
728
1294
  type: 'array',
729
- description: 'DIDs of the entity (or entities) that measured this data',
1295
+ description: '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.',
730
1296
  items: {
731
1297
  type: 'ref',
732
- ref: 'lex:app.certified.defs#did',
1298
+ ref: 'lex:com.atproto.repo.strongRef',
733
1299
  },
734
1300
  maxLength: 100,
735
1301
  },
736
- metric: {
1302
+ contentType: {
737
1303
  type: 'string',
738
- description: 'The metric being measured',
739
- maxLength: 500,
1304
+ description: 'The type of attachment. Values beyond the known set are permitted.',
1305
+ knownValues: [
1306
+ 'report',
1307
+ 'audit',
1308
+ 'evidence',
1309
+ 'testimonial',
1310
+ 'methodology',
1311
+ ],
1312
+ maxLength: 64,
740
1313
  },
741
- value: {
742
- type: 'string',
743
- description: 'The measured value',
744
- maxLength: 500,
1314
+ content: {
1315
+ type: 'array',
1316
+ description: 'The files, documents, or external references included in this attachment record.',
1317
+ items: {
1318
+ type: 'union',
1319
+ refs: [
1320
+ 'lex:org.hypercerts.defs#uri',
1321
+ 'lex:org.hypercerts.defs#smallBlob',
1322
+ ],
1323
+ },
1324
+ maxLength: 100,
745
1325
  },
746
- methodType: {
1326
+ title: {
747
1327
  type: 'string',
748
- description: 'Short identifier for the measurement methodology',
749
- maxLength: 30,
1328
+ maxLength: 256,
1329
+ description: "Display title for this attachment (e.g. 'Impact Assessment Report', 'Audit Findings')",
750
1330
  },
751
- methodURI: {
1331
+ shortDescription: {
752
1332
  type: 'string',
753
- format: 'uri',
754
- description: 'URI to methodology documentation, standard protocol, or measurement procedure',
1333
+ description: 'Short summary of this attachment, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
1334
+ maxLength: 3000,
1335
+ maxGraphemes: 300,
755
1336
  },
756
- evidenceURI: {
1337
+ shortDescriptionFacets: {
757
1338
  type: 'array',
758
- description: 'URIs to related evidence or underlying data (e.g. org.hypercerts.claim.evidence records or raw datasets)',
1339
+ description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
759
1340
  items: {
760
- type: 'string',
761
- format: 'uri',
1341
+ type: 'ref',
1342
+ ref: 'lex:app.bsky.richtext.facet',
762
1343
  },
763
- maxLength: 50,
1344
+ },
1345
+ description: {
1346
+ type: 'union',
1347
+ refs: [
1348
+ 'lex:org.hypercerts.defs#descriptionString',
1349
+ 'lex:pub.leaflet.pages.linearDocument',
1350
+ 'lex:com.atproto.repo.strongRef',
1351
+ ],
1352
+ description: '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.',
764
1353
  },
765
1354
  location: {
766
1355
  type: 'ref',
767
1356
  ref: 'lex:com.atproto.repo.strongRef',
768
- description: 'A strong reference to the location where the measurement was taken. The record referenced must conform with the lexicon app.certified.location',
1357
+ description: "A strong reference to the location where this attachment's subject matter occurred. The record referenced must conform with the lexicon app.certified.location.",
769
1358
  },
770
1359
  createdAt: {
771
1360
  type: 'string',
772
1361
  format: 'datetime',
773
- description: 'Client-declared timestamp when this record was originally created',
1362
+ description: 'Client-declared timestamp when this record was originally created.',
774
1363
  },
775
1364
  },
776
1365
  },
777
1366
  },
778
1367
  },
779
1368
  },
780
- OrgHypercertsClaimRights: {
1369
+ OrgHypercertsContextEvaluation: {
781
1370
  lexicon: 1,
782
- id: 'org.hypercerts.claim.rights',
1371
+ id: 'org.hypercerts.context.evaluation',
783
1372
  defs: {
784
1373
  main: {
785
1374
  type: 'record',
786
- 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.',
1375
+ description: 'An evaluation of a hypercert record (e.g. an activity and its impact).',
787
1376
  key: 'tid',
788
1377
  record: {
789
1378
  type: 'object',
790
- required: [
791
- 'rightsName',
792
- 'rightsType',
793
- 'rightsDescription',
794
- 'createdAt',
795
- ],
1379
+ required: ['evaluators', 'summary', 'createdAt'],
796
1380
  properties: {
797
- rightsName: {
798
- type: 'string',
799
- description: 'Full name of the rights',
1381
+ subject: {
1382
+ type: 'ref',
1383
+ ref: 'lex:com.atproto.repo.strongRef',
1384
+ description: 'A strong reference to what is being evaluated (e.g. activity, measurement, contribution, etc.)',
1385
+ },
1386
+ evaluators: {
1387
+ type: 'array',
1388
+ description: 'DIDs of the evaluators',
1389
+ items: {
1390
+ type: 'ref',
1391
+ ref: 'lex:app.certified.defs#did',
1392
+ },
1393
+ maxLength: 1000,
1394
+ },
1395
+ content: {
1396
+ type: 'array',
1397
+ description: 'Evaluation data (URIs or blobs) containing detailed reports or methodology',
1398
+ items: {
1399
+ type: 'union',
1400
+ refs: [
1401
+ 'lex:org.hypercerts.defs#uri',
1402
+ 'lex:org.hypercerts.defs#smallBlob',
1403
+ ],
1404
+ },
800
1405
  maxLength: 100,
801
1406
  },
802
- rightsType: {
803
- type: 'string',
804
- description: 'Short rights identifier for easier search',
805
- maxLength: 10,
1407
+ measurements: {
1408
+ type: 'array',
1409
+ description: 'Optional references to the measurements that contributed to this evaluation. The record(s) referenced must conform with the lexicon org.hypercerts.context.measurement',
1410
+ items: {
1411
+ type: 'ref',
1412
+ ref: 'lex:com.atproto.repo.strongRef',
1413
+ },
1414
+ maxLength: 100,
806
1415
  },
807
- rightsDescription: {
1416
+ summary: {
808
1417
  type: 'string',
809
- description: 'Description of the rights of this hypercert',
1418
+ description: 'Brief evaluation summary',
1419
+ maxLength: 5000,
1420
+ maxGraphemes: 1000,
810
1421
  },
811
- attachment: {
812
- type: 'union',
813
- refs: [
814
- 'lex:org.hypercerts.defs#uri',
815
- 'lex:org.hypercerts.defs#smallBlob',
816
- ],
817
- description: 'An attachment to define the rights further, e.g. a legal document.',
1422
+ score: {
1423
+ type: 'ref',
1424
+ ref: 'lex:org.hypercerts.context.evaluation#score',
1425
+ description: 'Optional overall score for this evaluation on a numeric scale.',
1426
+ },
1427
+ location: {
1428
+ type: 'ref',
1429
+ ref: 'lex:com.atproto.repo.strongRef',
1430
+ description: 'An optional reference for georeferenced evaluations. The record referenced must conform with the lexicon app.certified.location.',
1431
+ },
1432
+ createdAt: {
1433
+ type: 'string',
1434
+ format: 'datetime',
1435
+ description: 'Client-declared timestamp when this record was originally created',
1436
+ },
1437
+ },
1438
+ },
1439
+ },
1440
+ score: {
1441
+ type: 'object',
1442
+ description: 'Overall score for an evaluation on a numeric scale.',
1443
+ required: ['min', 'max', 'value'],
1444
+ properties: {
1445
+ min: {
1446
+ type: 'string',
1447
+ description: "Minimum value of the scale as a numeric string (e.g. '0', '1').",
1448
+ maxLength: 50,
1449
+ },
1450
+ max: {
1451
+ type: 'string',
1452
+ description: "Maximum value of the scale as a numeric string (e.g. '5', '10').",
1453
+ maxLength: 50,
1454
+ },
1455
+ value: {
1456
+ type: 'string',
1457
+ description: "Score within the inclusive range [min, max] as a numeric string (e.g. '3.7').",
1458
+ maxLength: 50,
1459
+ },
1460
+ },
1461
+ },
1462
+ },
1463
+ },
1464
+ OrgHypercertsContextMeasurement: {
1465
+ lexicon: 1,
1466
+ id: 'org.hypercerts.context.measurement',
1467
+ defs: {
1468
+ main: {
1469
+ type: 'record',
1470
+ description: 'Measurement data related to one or more records (e.g. activities, projects, etc.).',
1471
+ key: 'tid',
1472
+ record: {
1473
+ type: 'object',
1474
+ required: ['metric', 'unit', 'value', 'createdAt'],
1475
+ properties: {
1476
+ subjects: {
1477
+ type: 'array',
1478
+ description: 'Strong references to the records this measurement refers to (e.g. activities, projects, or claims).',
1479
+ items: {
1480
+ type: 'ref',
1481
+ ref: 'lex:com.atproto.repo.strongRef',
1482
+ },
1483
+ maxLength: 100,
1484
+ },
1485
+ metric: {
1486
+ type: 'string',
1487
+ description: 'The metric being measured, e.g. forest area restored, number of users, etc.',
1488
+ maxLength: 500,
1489
+ },
1490
+ unit: {
1491
+ type: 'string',
1492
+ description: 'The unit of the measured value (e.g. kg CO₂e, hectares, %, index score).',
1493
+ maxLength: 50,
1494
+ },
1495
+ value: {
1496
+ type: 'string',
1497
+ description: "The measured value as a numeric string (e.g. '1234.56')",
1498
+ maxLength: 500,
1499
+ },
1500
+ startDate: {
1501
+ type: 'string',
1502
+ format: 'datetime',
1503
+ description: 'The start date and time when the measurement began.',
1504
+ },
1505
+ endDate: {
1506
+ type: 'string',
1507
+ format: 'datetime',
1508
+ description: 'The end date and time when the measurement ended. For one-time measurements, this should equal the start date.',
1509
+ },
1510
+ locations: {
1511
+ type: 'array',
1512
+ description: 'Optional geographic references related to where the measurement was taken. Each referenced record must conform with the app.certified.location lexicon.',
1513
+ items: {
1514
+ type: 'ref',
1515
+ ref: 'lex:com.atproto.repo.strongRef',
1516
+ },
1517
+ maxLength: 100,
1518
+ },
1519
+ methodType: {
1520
+ type: 'string',
1521
+ description: 'Short identifier for the measurement methodology',
1522
+ maxLength: 30,
1523
+ },
1524
+ methodURI: {
1525
+ type: 'string',
1526
+ format: 'uri',
1527
+ description: 'URI to methodology documentation, standard protocol, or measurement procedure',
1528
+ },
1529
+ evidenceURI: {
1530
+ type: 'array',
1531
+ description: 'URIs to related evidence or underlying data (e.g. org.hypercerts.claim.evidence records or raw datasets)',
1532
+ items: {
1533
+ type: 'string',
1534
+ format: 'uri',
1535
+ },
1536
+ maxLength: 50,
1537
+ },
1538
+ measurers: {
1539
+ type: 'array',
1540
+ description: 'DIDs of the entities that performed this measurement',
1541
+ items: {
1542
+ type: 'ref',
1543
+ ref: 'lex:app.certified.defs#did',
1544
+ },
1545
+ maxLength: 100,
1546
+ },
1547
+ comment: {
1548
+ type: 'string',
1549
+ description: 'Short comment of this measurement, suitable for previews and list views. Rich text annotations may be provided via `commentFacets`.',
1550
+ maxLength: 3000,
1551
+ maxGraphemes: 300,
1552
+ },
1553
+ commentFacets: {
1554
+ type: 'array',
1555
+ description: 'Rich text annotations for `comment` (mentions, URLs, hashtags, etc).',
1556
+ items: {
1557
+ type: 'ref',
1558
+ ref: 'lex:app.bsky.richtext.facet',
1559
+ },
818
1560
  },
819
1561
  createdAt: {
820
1562
  type: 'string',
@@ -829,7 +1571,29 @@ const schemaDict = {
829
1571
  OrgHypercertsDefs: {
830
1572
  lexicon: 1,
831
1573
  id: 'org.hypercerts.defs',
1574
+ description: 'Common type definitions used across all Hypercerts protocols.',
832
1575
  defs: {
1576
+ descriptionString: {
1577
+ type: 'object',
1578
+ description: 'An inline long-form description as plain text or markdown, with optional rich-text annotations.',
1579
+ required: ['value'],
1580
+ properties: {
1581
+ value: {
1582
+ type: 'string',
1583
+ description: 'The description text (plain text or markdown).',
1584
+ maxLength: 250000,
1585
+ maxGraphemes: 25000,
1586
+ },
1587
+ facets: {
1588
+ type: 'array',
1589
+ description: 'Rich text annotations for the description (mentions, URLs, hashtags, etc).',
1590
+ items: {
1591
+ type: 'ref',
1592
+ ref: 'lex:app.bsky.richtext.facet',
1593
+ },
1594
+ },
1595
+ },
1596
+ },
833
1597
  uri: {
834
1598
  type: 'object',
835
1599
  required: ['uri'],
@@ -838,7 +1602,6 @@ const schemaDict = {
838
1602
  uri: {
839
1603
  type: 'string',
840
1604
  format: 'uri',
841
- maxGraphemes: 1024,
842
1605
  description: 'URI to external data',
843
1606
  },
844
1607
  },
@@ -882,6 +1645,19 @@ const schemaDict = {
882
1645
  },
883
1646
  },
884
1647
  },
1648
+ smallVideo: {
1649
+ type: 'object',
1650
+ required: ['video'],
1651
+ description: 'Object containing a small video',
1652
+ properties: {
1653
+ video: {
1654
+ type: 'blob',
1655
+ accept: ['video/mp4', 'video/webm'],
1656
+ maxSize: 20971520,
1657
+ description: 'Video (up to 20MB)',
1658
+ },
1659
+ },
1660
+ },
885
1661
  largeImage: {
886
1662
  type: 'object',
887
1663
  required: ['image'],
@@ -895,94 +1671,6 @@ const schemaDict = {
895
1671
  },
896
1672
  },
897
1673
  },
898
- workScopeAll: {
899
- type: 'object',
900
- required: ['op', 'args'],
901
- description: 'Logical AND operation: all arguments must be satisfied.',
902
- properties: {
903
- op: {
904
- type: 'string',
905
- const: 'all',
906
- description: "Operator type: 'all' (logical AND)",
907
- },
908
- args: {
909
- type: 'array',
910
- items: {
911
- type: 'union',
912
- refs: [
913
- 'lex:org.hypercerts.defs#workScopeAll',
914
- 'lex:org.hypercerts.defs#workScopeAny',
915
- 'lex:org.hypercerts.defs#workScopeNot',
916
- 'lex:org.hypercerts.defs#workScopeAtom',
917
- ],
918
- },
919
- minLength: 1,
920
- maxLength: 100,
921
- description: 'Array of work scope expressions that must all be satisfied',
922
- },
923
- },
924
- },
925
- workScopeAny: {
926
- type: 'object',
927
- required: ['op', 'args'],
928
- description: 'Logical OR operation: at least one argument must be satisfied.',
929
- properties: {
930
- op: {
931
- type: 'string',
932
- const: 'any',
933
- description: "Operator type: 'any' (logical OR)",
934
- },
935
- args: {
936
- type: 'array',
937
- items: {
938
- type: 'union',
939
- refs: [
940
- 'lex:org.hypercerts.defs#workScopeAll',
941
- 'lex:org.hypercerts.defs#workScopeAny',
942
- 'lex:org.hypercerts.defs#workScopeNot',
943
- 'lex:org.hypercerts.defs#workScopeAtom',
944
- ],
945
- },
946
- minLength: 1,
947
- maxLength: 100,
948
- description: 'Array of work scope expressions, at least one of which must be satisfied',
949
- },
950
- },
951
- },
952
- workScopeNot: {
953
- type: 'object',
954
- required: ['op', 'arg'],
955
- description: 'Logical NOT operation: the argument must not be satisfied.',
956
- properties: {
957
- op: {
958
- type: 'string',
959
- const: 'not',
960
- description: "Operator type: 'not' (logical NOT)",
961
- },
962
- arg: {
963
- type: 'union',
964
- refs: [
965
- 'lex:org.hypercerts.defs#workScopeAll',
966
- 'lex:org.hypercerts.defs#workScopeAny',
967
- 'lex:org.hypercerts.defs#workScopeNot',
968
- 'lex:org.hypercerts.defs#workScopeAtom',
969
- ],
970
- description: 'Work scope expression that must not be satisfied',
971
- },
972
- },
973
- },
974
- workScopeAtom: {
975
- type: 'object',
976
- required: ['atom'],
977
- description: 'Atomic scope reference: a strong reference to a scope record.',
978
- properties: {
979
- atom: {
980
- type: 'ref',
981
- ref: 'lex:com.atproto.repo.strongRef',
982
- description: 'Strong reference to an org.hypercerts.helper.workScopeTag record',
983
- },
984
- },
985
- },
986
1674
  },
987
1675
  },
988
1676
  OrgHypercertsFundingReceipt: {
@@ -995,41 +1683,55 @@ const schemaDict = {
995
1683
  key: 'tid',
996
1684
  record: {
997
1685
  type: 'object',
998
- required: ['from', 'to', 'amount', 'currency', 'createdAt'],
1686
+ required: ['to', 'amount', 'currency', 'createdAt'],
999
1687
  properties: {
1000
1688
  from: {
1001
- type: 'ref',
1002
- ref: 'lex:app.certified.defs#did',
1003
- description: 'DID of the sender who transferred the funds. Leave empty if sender wants to stay anonymous.',
1689
+ type: 'union',
1690
+ description: 'The sender of the funds (a free-text string, an account DID, or a strong reference to a record). Optional — omit to represent anonymity.',
1691
+ refs: [
1692
+ 'lex:org.hypercerts.funding.receipt#text',
1693
+ 'lex:app.certified.defs#did',
1694
+ 'lex:com.atproto.repo.strongRef',
1695
+ ],
1004
1696
  },
1005
1697
  to: {
1006
- type: 'string',
1007
- description: 'The recipient of the funds. Can be identified by DID or a clear-text name.',
1698
+ type: 'union',
1699
+ description: 'The recipient of the funds (a free-text string, an account DID, or a strong reference to a record).',
1700
+ refs: [
1701
+ 'lex:org.hypercerts.funding.receipt#text',
1702
+ 'lex:app.certified.defs#did',
1703
+ 'lex:com.atproto.repo.strongRef',
1704
+ ],
1008
1705
  },
1009
1706
  amount: {
1010
1707
  type: 'string',
1011
- description: 'Amount of funding received.',
1708
+ description: "Amount of funding received as a numeric string (e.g. '1000.50').",
1709
+ maxLength: 50,
1012
1710
  },
1013
1711
  currency: {
1014
1712
  type: 'string',
1015
1713
  description: 'Currency of the payment (e.g. EUR, USD, ETH).',
1714
+ maxLength: 10,
1016
1715
  },
1017
1716
  paymentRail: {
1018
1717
  type: 'string',
1019
1718
  description: 'How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor).',
1719
+ maxLength: 50,
1020
1720
  },
1021
1721
  paymentNetwork: {
1022
1722
  type: 'string',
1023
1723
  description: 'Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal).',
1724
+ maxLength: 50,
1024
1725
  },
1025
1726
  transactionId: {
1026
1727
  type: 'string',
1027
1728
  description: '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.',
1729
+ maxLength: 256,
1028
1730
  },
1029
1731
  for: {
1030
- type: 'string',
1031
- format: 'at-uri',
1032
- description: 'Optional reference to the activity, project, or organization this funding relates to.',
1732
+ type: 'ref',
1733
+ ref: 'lex:com.atproto.repo.strongRef',
1734
+ description: 'Optional strong reference to the activity, project, or organization this funding relates to.',
1033
1735
  },
1034
1736
  notes: {
1035
1737
  type: 'string',
@@ -1049,38 +1751,85 @@ const schemaDict = {
1049
1751
  },
1050
1752
  },
1051
1753
  },
1754
+ text: {
1755
+ type: 'object',
1756
+ description: 'A free-text string value (e.g. a display name, wallet address, or other identifier).',
1757
+ required: ['value'],
1758
+ properties: {
1759
+ value: {
1760
+ type: 'string',
1761
+ description: 'The string value.',
1762
+ maxLength: 2048,
1763
+ },
1764
+ },
1765
+ },
1766
+ },
1767
+ },
1768
+ OrgHypercertsWorkscopeCel: {
1769
+ lexicon: 1,
1770
+ id: 'org.hypercerts.workscope.cel',
1771
+ defs: {
1772
+ main: {
1773
+ type: 'object',
1774
+ 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.",
1775
+ required: ['expression', 'usedTags', 'version', 'createdAt'],
1776
+ properties: {
1777
+ expression: {
1778
+ type: 'string',
1779
+ maxLength: 10000,
1780
+ maxGraphemes: 5000,
1781
+ description: "A CEL expression encoding the work scope conditions. Example: scope.hasAll(['mangrove_restoration', 'environmental_education']) && location.country == 'KE'",
1782
+ },
1783
+ usedTags: {
1784
+ type: 'array',
1785
+ items: {
1786
+ type: 'ref',
1787
+ ref: 'lex:com.atproto.repo.strongRef',
1788
+ },
1789
+ maxLength: 100,
1790
+ description: '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.',
1791
+ },
1792
+ version: {
1793
+ type: 'string',
1794
+ maxLength: 16,
1795
+ knownValues: ['v1'],
1796
+ description: 'CEL context schema version.',
1797
+ },
1798
+ createdAt: {
1799
+ type: 'string',
1800
+ format: 'datetime',
1801
+ description: 'Client-declared timestamp when this expression was originally created.',
1802
+ },
1803
+ },
1804
+ },
1052
1805
  },
1053
1806
  },
1054
- OrgHypercertsHelperWorkScopeTag: {
1807
+ OrgHypercertsWorkscopeTag: {
1055
1808
  lexicon: 1,
1056
- id: 'org.hypercerts.helper.workScopeTag',
1809
+ id: 'org.hypercerts.workscope.tag',
1057
1810
  defs: {
1058
1811
  main: {
1059
1812
  type: 'record',
1060
- description: 'A reusable scope atom for work scope logic expressions. Scopes can represent topics, languages, domains, deliverables, methods, regions, tags, or other categorical labels.',
1813
+ 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.',
1061
1814
  key: 'tid',
1062
1815
  record: {
1063
1816
  type: 'object',
1064
- required: ['createdAt', 'key', 'label'],
1817
+ required: ['key', 'name', 'createdAt'],
1065
1818
  properties: {
1066
- createdAt: {
1067
- type: 'string',
1068
- format: 'datetime',
1069
- description: 'Client-declared timestamp when this record was originally created',
1070
- },
1071
1819
  key: {
1072
1820
  type: 'string',
1073
- description: "Lowercase, hyphenated machine-readable key for this scope (e.g., 'ipfs', 'go-lang', 'filecoin').",
1821
+ description: "Lowercase, underscore-separated machine-readable key for this scope (e.g., 'mangrove_restoration', 'biodiversity_monitoring'). Used as the canonical identifier in CEL expressions.",
1074
1822
  maxLength: 120,
1075
1823
  },
1076
- label: {
1824
+ name: {
1077
1825
  type: 'string',
1078
- description: 'Human-readable label for this scope.',
1826
+ description: 'Human-readable name for this scope.',
1079
1827
  maxLength: 200,
1080
1828
  },
1081
- kind: {
1829
+ category: {
1082
1830
  type: 'string',
1083
- description: 'Category type of this scope. Recommended values: topic, language, domain, method, tag.',
1831
+ description: 'Category type of this scope.',
1832
+ knownValues: ['topic', 'language', 'domain', 'method'],
1084
1833
  maxLength: 50,
1085
1834
  },
1086
1835
  description: {
@@ -1092,7 +1841,18 @@ const schemaDict = {
1092
1841
  parent: {
1093
1842
  type: 'ref',
1094
1843
  ref: 'lex:com.atproto.repo.strongRef',
1095
- description: 'Optional strong reference to a parent scope record for taxonomy/hierarchy support.',
1844
+ description: '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.',
1845
+ },
1846
+ status: {
1847
+ type: 'string',
1848
+ description: 'Lifecycle status of this tag. Communities propose tags, curators accept them, deprecated tags point to replacements via supersededBy.',
1849
+ knownValues: ['proposed', 'accepted', 'deprecated'],
1850
+ maxLength: 20,
1851
+ },
1852
+ supersededBy: {
1853
+ type: 'ref',
1854
+ ref: 'lex:com.atproto.repo.strongRef',
1855
+ description: "When status is 'deprecated', points to the replacement work scope tag record. The record referenced must conform with the lexicon org.hypercerts.workscope.tag.",
1096
1856
  },
1097
1857
  aliases: {
1098
1858
  type: 'array',
@@ -1101,15 +1861,657 @@ const schemaDict = {
1101
1861
  maxLength: 200,
1102
1862
  },
1103
1863
  maxLength: 50,
1104
- description: 'Optional array of alternative names or identifiers for this scope.',
1864
+ description: '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.',
1865
+ },
1866
+ sameAs: {
1867
+ type: 'array',
1868
+ items: {
1869
+ type: 'string',
1870
+ format: 'uri',
1871
+ maxLength: 2048,
1872
+ },
1873
+ maxLength: 20,
1874
+ description: 'URIs to semantically equivalent concepts in external ontologies or taxonomies (e.g., Wikidata QIDs, ENVO terms, SDG targets). Used for interoperability, not as documentation.',
1105
1875
  },
1106
- externalReference: {
1876
+ referenceDocument: {
1107
1877
  type: 'union',
1108
1878
  refs: [
1109
1879
  'lex:org.hypercerts.defs#uri',
1110
1880
  'lex:org.hypercerts.defs#smallBlob',
1111
1881
  ],
1112
- description: 'Optional external reference for this scope as a URI or blob.',
1882
+ description: 'Link to a governance or reference document where this work scope tag is defined and further explained.',
1883
+ },
1884
+ createdAt: {
1885
+ type: 'string',
1886
+ format: 'datetime',
1887
+ description: 'Client-declared timestamp when this record was originally created.',
1888
+ },
1889
+ },
1890
+ },
1891
+ },
1892
+ },
1893
+ },
1894
+ PubLeafletBlocksBlockquote: {
1895
+ lexicon: 1,
1896
+ id: 'pub.leaflet.blocks.blockquote',
1897
+ defs: {
1898
+ main: {
1899
+ type: 'object',
1900
+ required: ['plaintext'],
1901
+ properties: {
1902
+ plaintext: {
1903
+ type: 'string',
1904
+ },
1905
+ facets: {
1906
+ type: 'array',
1907
+ items: {
1908
+ type: 'ref',
1909
+ ref: 'lex:pub.leaflet.richtext.facet',
1910
+ },
1911
+ },
1912
+ },
1913
+ },
1914
+ },
1915
+ },
1916
+ PubLeafletBlocksBskyPost: {
1917
+ lexicon: 1,
1918
+ id: 'pub.leaflet.blocks.bskyPost',
1919
+ defs: {
1920
+ main: {
1921
+ type: 'object',
1922
+ required: ['postRef'],
1923
+ properties: {
1924
+ postRef: {
1925
+ type: 'ref',
1926
+ ref: 'lex:com.atproto.repo.strongRef',
1927
+ },
1928
+ clientHost: {
1929
+ type: 'string',
1930
+ },
1931
+ },
1932
+ },
1933
+ },
1934
+ },
1935
+ PubLeafletBlocksButton: {
1936
+ lexicon: 1,
1937
+ id: 'pub.leaflet.blocks.button',
1938
+ defs: {
1939
+ main: {
1940
+ type: 'object',
1941
+ required: ['text', 'url'],
1942
+ properties: {
1943
+ text: {
1944
+ type: 'string',
1945
+ },
1946
+ url: {
1947
+ type: 'string',
1948
+ format: 'uri',
1949
+ },
1950
+ },
1951
+ },
1952
+ },
1953
+ },
1954
+ PubLeafletBlocksCode: {
1955
+ lexicon: 1,
1956
+ id: 'pub.leaflet.blocks.code',
1957
+ defs: {
1958
+ main: {
1959
+ type: 'object',
1960
+ required: ['plaintext'],
1961
+ properties: {
1962
+ plaintext: {
1963
+ type: 'string',
1964
+ },
1965
+ language: {
1966
+ type: 'string',
1967
+ },
1968
+ syntaxHighlightingTheme: {
1969
+ type: 'string',
1970
+ },
1971
+ },
1972
+ },
1973
+ },
1974
+ },
1975
+ PubLeafletBlocksHeader: {
1976
+ lexicon: 1,
1977
+ id: 'pub.leaflet.blocks.header',
1978
+ defs: {
1979
+ main: {
1980
+ type: 'object',
1981
+ required: ['plaintext'],
1982
+ properties: {
1983
+ level: {
1984
+ type: 'integer',
1985
+ minimum: 1,
1986
+ maximum: 6,
1987
+ },
1988
+ plaintext: {
1989
+ type: 'string',
1990
+ },
1991
+ facets: {
1992
+ type: 'array',
1993
+ items: {
1994
+ type: 'ref',
1995
+ ref: 'lex:pub.leaflet.richtext.facet',
1996
+ },
1997
+ },
1998
+ },
1999
+ },
2000
+ },
2001
+ },
2002
+ PubLeafletBlocksHorizontalRule: {
2003
+ lexicon: 1,
2004
+ id: 'pub.leaflet.blocks.horizontalRule',
2005
+ defs: {
2006
+ main: {
2007
+ type: 'object',
2008
+ required: [],
2009
+ properties: {},
2010
+ },
2011
+ },
2012
+ },
2013
+ PubLeafletBlocksIframe: {
2014
+ lexicon: 1,
2015
+ id: 'pub.leaflet.blocks.iframe',
2016
+ defs: {
2017
+ main: {
2018
+ type: 'object',
2019
+ required: ['url'],
2020
+ properties: {
2021
+ url: {
2022
+ type: 'string',
2023
+ format: 'uri',
2024
+ },
2025
+ height: {
2026
+ type: 'integer',
2027
+ minimum: 16,
2028
+ maximum: 1600,
2029
+ },
2030
+ },
2031
+ },
2032
+ },
2033
+ },
2034
+ PubLeafletBlocksImage: {
2035
+ lexicon: 1,
2036
+ id: 'pub.leaflet.blocks.image',
2037
+ defs: {
2038
+ main: {
2039
+ type: 'object',
2040
+ required: ['image', 'aspectRatio'],
2041
+ properties: {
2042
+ image: {
2043
+ type: 'blob',
2044
+ accept: ['image/*'],
2045
+ maxSize: 1000000,
2046
+ },
2047
+ alt: {
2048
+ type: 'string',
2049
+ description: 'Alt text description of the image, for accessibility.',
2050
+ },
2051
+ aspectRatio: {
2052
+ type: 'ref',
2053
+ ref: 'lex:pub.leaflet.blocks.image#aspectRatio',
2054
+ },
2055
+ },
2056
+ },
2057
+ aspectRatio: {
2058
+ type: 'object',
2059
+ required: ['width', 'height'],
2060
+ properties: {
2061
+ width: {
2062
+ type: 'integer',
2063
+ },
2064
+ height: {
2065
+ type: 'integer',
2066
+ },
2067
+ },
2068
+ },
2069
+ },
2070
+ },
2071
+ PubLeafletBlocksMath: {
2072
+ lexicon: 1,
2073
+ id: 'pub.leaflet.blocks.math',
2074
+ defs: {
2075
+ main: {
2076
+ type: 'object',
2077
+ required: ['tex'],
2078
+ properties: {
2079
+ tex: {
2080
+ type: 'string',
2081
+ },
2082
+ },
2083
+ },
2084
+ },
2085
+ },
2086
+ PubLeafletBlocksOrderedList: {
2087
+ lexicon: 1,
2088
+ id: 'pub.leaflet.blocks.orderedList',
2089
+ defs: {
2090
+ main: {
2091
+ type: 'object',
2092
+ required: ['children'],
2093
+ properties: {
2094
+ startIndex: {
2095
+ type: 'integer',
2096
+ description: 'The starting number for this ordered list. Defaults to 1 if not specified.',
2097
+ },
2098
+ children: {
2099
+ type: 'array',
2100
+ items: {
2101
+ type: 'ref',
2102
+ ref: 'lex:pub.leaflet.blocks.orderedList#listItem',
2103
+ },
2104
+ },
2105
+ },
2106
+ },
2107
+ listItem: {
2108
+ type: 'object',
2109
+ required: ['content'],
2110
+ properties: {
2111
+ checked: {
2112
+ type: 'boolean',
2113
+ description: 'If present, this item is a checklist item. true = checked, false = unchecked. If absent, this is a normal list item.',
2114
+ },
2115
+ content: {
2116
+ type: 'union',
2117
+ refs: [
2118
+ 'lex:pub.leaflet.blocks.text',
2119
+ 'lex:pub.leaflet.blocks.header',
2120
+ 'lex:pub.leaflet.blocks.image',
2121
+ ],
2122
+ },
2123
+ children: {
2124
+ type: 'array',
2125
+ description: 'Nested ordered list items. Mutually exclusive with unorderedListChildren; if both are present, children takes precedence.',
2126
+ items: {
2127
+ type: 'ref',
2128
+ ref: 'lex:pub.leaflet.blocks.orderedList#listItem',
2129
+ },
2130
+ },
2131
+ unorderedListChildren: {
2132
+ type: 'ref',
2133
+ description: 'A nested unordered list. Mutually exclusive with children; if both are present, children takes precedence.',
2134
+ ref: 'lex:pub.leaflet.blocks.unorderedList',
2135
+ },
2136
+ },
2137
+ },
2138
+ },
2139
+ },
2140
+ PubLeafletBlocksPage: {
2141
+ lexicon: 1,
2142
+ id: 'pub.leaflet.blocks.page',
2143
+ defs: {
2144
+ main: {
2145
+ type: 'object',
2146
+ required: ['id'],
2147
+ properties: {
2148
+ id: {
2149
+ type: 'string',
2150
+ },
2151
+ },
2152
+ },
2153
+ },
2154
+ },
2155
+ PubLeafletBlocksPoll: {
2156
+ lexicon: 1,
2157
+ id: 'pub.leaflet.blocks.poll',
2158
+ defs: {
2159
+ main: {
2160
+ type: 'object',
2161
+ required: ['pollRef'],
2162
+ properties: {
2163
+ pollRef: {
2164
+ type: 'ref',
2165
+ ref: 'lex:com.atproto.repo.strongRef',
2166
+ },
2167
+ },
2168
+ },
2169
+ },
2170
+ },
2171
+ PubLeafletBlocksText: {
2172
+ lexicon: 1,
2173
+ id: 'pub.leaflet.blocks.text',
2174
+ defs: {
2175
+ main: {
2176
+ type: 'object',
2177
+ required: ['plaintext'],
2178
+ properties: {
2179
+ plaintext: {
2180
+ type: 'string',
2181
+ },
2182
+ textSize: {
2183
+ type: 'string',
2184
+ enum: ['default', 'small', 'large'],
2185
+ },
2186
+ facets: {
2187
+ type: 'array',
2188
+ items: {
2189
+ type: 'ref',
2190
+ ref: 'lex:pub.leaflet.richtext.facet',
2191
+ },
2192
+ },
2193
+ },
2194
+ },
2195
+ },
2196
+ },
2197
+ PubLeafletBlocksUnorderedList: {
2198
+ lexicon: 1,
2199
+ id: 'pub.leaflet.blocks.unorderedList',
2200
+ defs: {
2201
+ main: {
2202
+ type: 'object',
2203
+ required: ['children'],
2204
+ properties: {
2205
+ children: {
2206
+ type: 'array',
2207
+ items: {
2208
+ type: 'ref',
2209
+ ref: 'lex:pub.leaflet.blocks.unorderedList#listItem',
2210
+ },
2211
+ },
2212
+ },
2213
+ },
2214
+ listItem: {
2215
+ type: 'object',
2216
+ required: ['content'],
2217
+ properties: {
2218
+ checked: {
2219
+ type: 'boolean',
2220
+ description: 'If present, this item is a checklist item. true = checked, false = unchecked. If absent, this is a normal list item.',
2221
+ },
2222
+ content: {
2223
+ type: 'union',
2224
+ refs: [
2225
+ 'lex:pub.leaflet.blocks.text',
2226
+ 'lex:pub.leaflet.blocks.header',
2227
+ 'lex:pub.leaflet.blocks.image',
2228
+ ],
2229
+ },
2230
+ children: {
2231
+ type: 'array',
2232
+ description: 'Nested unordered list items. Mutually exclusive with orderedListChildren; if both are present, children takes precedence.',
2233
+ items: {
2234
+ type: 'ref',
2235
+ ref: 'lex:pub.leaflet.blocks.unorderedList#listItem',
2236
+ },
2237
+ },
2238
+ orderedListChildren: {
2239
+ type: 'ref',
2240
+ description: 'Nested ordered list items. Mutually exclusive with children; if both are present, children takes precedence.',
2241
+ ref: 'lex:pub.leaflet.blocks.orderedList',
2242
+ },
2243
+ },
2244
+ },
2245
+ },
2246
+ },
2247
+ PubLeafletBlocksWebsite: {
2248
+ lexicon: 1,
2249
+ id: 'pub.leaflet.blocks.website',
2250
+ defs: {
2251
+ main: {
2252
+ type: 'object',
2253
+ required: ['src'],
2254
+ properties: {
2255
+ previewImage: {
2256
+ type: 'blob',
2257
+ accept: ['image/*'],
2258
+ maxSize: 1000000,
2259
+ },
2260
+ title: {
2261
+ type: 'string',
2262
+ },
2263
+ description: {
2264
+ type: 'string',
2265
+ },
2266
+ src: {
2267
+ type: 'string',
2268
+ format: 'uri',
2269
+ },
2270
+ },
2271
+ },
2272
+ },
2273
+ },
2274
+ PubLeafletPagesLinearDocument: {
2275
+ lexicon: 1,
2276
+ id: 'pub.leaflet.pages.linearDocument',
2277
+ defs: {
2278
+ main: {
2279
+ type: 'object',
2280
+ required: ['blocks'],
2281
+ properties: {
2282
+ id: {
2283
+ type: 'string',
2284
+ },
2285
+ blocks: {
2286
+ type: 'array',
2287
+ items: {
2288
+ type: 'ref',
2289
+ ref: 'lex:pub.leaflet.pages.linearDocument#block',
2290
+ },
2291
+ },
2292
+ },
2293
+ },
2294
+ block: {
2295
+ type: 'object',
2296
+ required: ['block'],
2297
+ properties: {
2298
+ block: {
2299
+ type: 'union',
2300
+ refs: [
2301
+ 'lex:pub.leaflet.blocks.iframe',
2302
+ 'lex:pub.leaflet.blocks.text',
2303
+ 'lex:pub.leaflet.blocks.blockquote',
2304
+ 'lex:pub.leaflet.blocks.header',
2305
+ 'lex:pub.leaflet.blocks.image',
2306
+ 'lex:pub.leaflet.blocks.unorderedList',
2307
+ 'lex:pub.leaflet.blocks.orderedList',
2308
+ 'lex:pub.leaflet.blocks.website',
2309
+ 'lex:pub.leaflet.blocks.math',
2310
+ 'lex:pub.leaflet.blocks.code',
2311
+ 'lex:pub.leaflet.blocks.horizontalRule',
2312
+ 'lex:pub.leaflet.blocks.bskyPost',
2313
+ 'lex:pub.leaflet.blocks.page',
2314
+ 'lex:pub.leaflet.blocks.poll',
2315
+ 'lex:pub.leaflet.blocks.button',
2316
+ ],
2317
+ },
2318
+ alignment: {
2319
+ type: 'string',
2320
+ knownValues: [
2321
+ 'lex:pub.leaflet.pages.linearDocument#textAlignLeft',
2322
+ 'lex:pub.leaflet.pages.linearDocument#textAlignCenter',
2323
+ 'lex:pub.leaflet.pages.linearDocument#textAlignRight',
2324
+ 'lex:pub.leaflet.pages.linearDocument#textAlignJustify',
2325
+ ],
2326
+ },
2327
+ },
2328
+ },
2329
+ textAlignLeft: {
2330
+ type: 'token',
2331
+ },
2332
+ textAlignCenter: {
2333
+ type: 'token',
2334
+ },
2335
+ textAlignRight: {
2336
+ type: 'token',
2337
+ },
2338
+ textAlignJustify: {
2339
+ type: 'token',
2340
+ },
2341
+ quote: {
2342
+ type: 'object',
2343
+ required: ['start', 'end'],
2344
+ properties: {
2345
+ start: {
2346
+ type: 'ref',
2347
+ ref: 'lex:pub.leaflet.pages.linearDocument#position',
2348
+ },
2349
+ end: {
2350
+ type: 'ref',
2351
+ ref: 'lex:pub.leaflet.pages.linearDocument#position',
2352
+ },
2353
+ },
2354
+ },
2355
+ position: {
2356
+ type: 'object',
2357
+ required: ['block', 'offset'],
2358
+ properties: {
2359
+ block: {
2360
+ type: 'array',
2361
+ items: {
2362
+ type: 'integer',
2363
+ },
2364
+ },
2365
+ offset: {
2366
+ type: 'integer',
2367
+ },
2368
+ },
2369
+ },
2370
+ },
2371
+ },
2372
+ PubLeafletRichtextFacet: {
2373
+ lexicon: 1,
2374
+ id: 'pub.leaflet.richtext.facet',
2375
+ defs: {
2376
+ main: {
2377
+ type: 'object',
2378
+ description: 'Annotation of a sub-string within rich text.',
2379
+ required: ['index', 'features'],
2380
+ properties: {
2381
+ index: {
2382
+ type: 'ref',
2383
+ ref: 'lex:pub.leaflet.richtext.facet#byteSlice',
2384
+ },
2385
+ features: {
2386
+ type: 'array',
2387
+ items: {
2388
+ type: 'union',
2389
+ refs: [
2390
+ 'lex:pub.leaflet.richtext.facet#link',
2391
+ 'lex:pub.leaflet.richtext.facet#didMention',
2392
+ 'lex:pub.leaflet.richtext.facet#atMention',
2393
+ 'lex:pub.leaflet.richtext.facet#code',
2394
+ 'lex:pub.leaflet.richtext.facet#highlight',
2395
+ 'lex:pub.leaflet.richtext.facet#underline',
2396
+ 'lex:pub.leaflet.richtext.facet#strikethrough',
2397
+ 'lex:pub.leaflet.richtext.facet#id',
2398
+ 'lex:pub.leaflet.richtext.facet#bold',
2399
+ 'lex:pub.leaflet.richtext.facet#italic',
2400
+ 'lex:pub.leaflet.richtext.facet#footnote',
2401
+ ],
2402
+ },
2403
+ },
2404
+ },
2405
+ },
2406
+ byteSlice: {
2407
+ type: 'object',
2408
+ description: '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.',
2409
+ required: ['byteStart', 'byteEnd'],
2410
+ properties: {
2411
+ byteStart: {
2412
+ type: 'integer',
2413
+ minimum: 0,
2414
+ },
2415
+ byteEnd: {
2416
+ type: 'integer',
2417
+ minimum: 0,
2418
+ },
2419
+ },
2420
+ },
2421
+ link: {
2422
+ type: 'object',
2423
+ description: 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.',
2424
+ required: ['uri'],
2425
+ properties: {
2426
+ uri: {
2427
+ type: 'string',
2428
+ },
2429
+ },
2430
+ },
2431
+ didMention: {
2432
+ type: 'object',
2433
+ description: 'Facet feature for mentioning a did.',
2434
+ required: ['did'],
2435
+ properties: {
2436
+ did: {
2437
+ type: 'string',
2438
+ format: 'did',
2439
+ },
2440
+ },
2441
+ },
2442
+ atMention: {
2443
+ type: 'object',
2444
+ description: 'Facet feature for mentioning an AT URI.',
2445
+ required: ['atURI'],
2446
+ properties: {
2447
+ atURI: {
2448
+ type: 'string',
2449
+ format: 'uri',
2450
+ },
2451
+ },
2452
+ },
2453
+ code: {
2454
+ type: 'object',
2455
+ description: 'Facet feature for inline code.',
2456
+ required: [],
2457
+ properties: {},
2458
+ },
2459
+ highlight: {
2460
+ type: 'object',
2461
+ description: 'Facet feature for highlighted text.',
2462
+ required: [],
2463
+ properties: {},
2464
+ },
2465
+ underline: {
2466
+ type: 'object',
2467
+ description: 'Facet feature for underline markup',
2468
+ required: [],
2469
+ properties: {},
2470
+ },
2471
+ strikethrough: {
2472
+ type: 'object',
2473
+ description: 'Facet feature for strikethrough markup',
2474
+ required: [],
2475
+ properties: {},
2476
+ },
2477
+ id: {
2478
+ type: 'object',
2479
+ description: 'Facet feature for an identifier. Used for linking to a segment',
2480
+ required: [],
2481
+ properties: {
2482
+ id: {
2483
+ type: 'string',
2484
+ },
2485
+ },
2486
+ },
2487
+ bold: {
2488
+ type: 'object',
2489
+ description: 'Facet feature for bold text',
2490
+ required: [],
2491
+ properties: {},
2492
+ },
2493
+ italic: {
2494
+ type: 'object',
2495
+ description: 'Facet feature for italic text',
2496
+ required: [],
2497
+ properties: {},
2498
+ },
2499
+ footnote: {
2500
+ type: 'object',
2501
+ description: 'Facet feature for a footnote reference',
2502
+ required: ['footnoteId', 'contentPlaintext'],
2503
+ properties: {
2504
+ footnoteId: {
2505
+ type: 'string',
2506
+ },
2507
+ contentPlaintext: {
2508
+ type: 'string',
2509
+ },
2510
+ contentFacets: {
2511
+ type: 'array',
2512
+ items: {
2513
+ type: 'ref',
2514
+ ref: 'lex:pub.leaflet.richtext.facet#main',
1113
2515
  },
1114
2516
  },
1115
2517
  },
@@ -1128,23 +2530,48 @@ function validate(v, id, hash, requiredType) {
1128
2530
  };
1129
2531
  }
1130
2532
  const ids = {
2533
+ AppBskyRichtextFacet: 'app.bsky.richtext.facet',
2534
+ AppCertifiedActorOrganization: 'app.certified.actor.organization',
2535
+ AppCertifiedActorProfile: 'app.certified.actor.profile',
1131
2536
  AppCertifiedBadgeAward: 'app.certified.badge.award',
1132
2537
  AppCertifiedBadgeDefinition: 'app.certified.badge.definition',
1133
2538
  AppCertifiedBadgeResponse: 'app.certified.badge.response',
1134
2539
  AppCertifiedDefs: 'app.certified.defs',
2540
+ AppCertifiedLinkEvm: 'app.certified.link.evm',
1135
2541
  AppCertifiedLocation: 'app.certified.location',
1136
2542
  ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef',
2543
+ OrgHyperboardsBoard: 'org.hyperboards.board',
2544
+ OrgHyperboardsDisplayProfile: 'org.hyperboards.displayProfile',
1137
2545
  OrgHypercertsClaimActivity: 'org.hypercerts.claim.activity',
1138
- OrgHypercertsClaimCollection: 'org.hypercerts.claim.collection',
1139
- OrgHypercertsClaimContributionDetails: 'org.hypercerts.claim.contributionDetails',
2546
+ OrgHypercertsClaimContribution: 'org.hypercerts.claim.contribution',
1140
2547
  OrgHypercertsClaimContributorInformation: 'org.hypercerts.claim.contributorInformation',
1141
- OrgHypercertsClaimEvaluation: 'org.hypercerts.claim.evaluation',
1142
- OrgHypercertsClaimEvidence: 'org.hypercerts.claim.evidence',
1143
- OrgHypercertsClaimMeasurement: 'org.hypercerts.claim.measurement',
1144
2548
  OrgHypercertsClaimRights: 'org.hypercerts.claim.rights',
2549
+ OrgHypercertsCollection: 'org.hypercerts.collection',
2550
+ OrgHypercertsContextAcknowledgement: 'org.hypercerts.context.acknowledgement',
2551
+ OrgHypercertsContextAttachment: 'org.hypercerts.context.attachment',
2552
+ OrgHypercertsContextEvaluation: 'org.hypercerts.context.evaluation',
2553
+ OrgHypercertsContextMeasurement: 'org.hypercerts.context.measurement',
1145
2554
  OrgHypercertsDefs: 'org.hypercerts.defs',
1146
2555
  OrgHypercertsFundingReceipt: 'org.hypercerts.funding.receipt',
1147
- OrgHypercertsHelperWorkScopeTag: 'org.hypercerts.helper.workScopeTag',
2556
+ OrgHypercertsWorkscopeCel: 'org.hypercerts.workscope.cel',
2557
+ OrgHypercertsWorkscopeTag: 'org.hypercerts.workscope.tag',
2558
+ PubLeafletBlocksBlockquote: 'pub.leaflet.blocks.blockquote',
2559
+ PubLeafletBlocksBskyPost: 'pub.leaflet.blocks.bskyPost',
2560
+ PubLeafletBlocksButton: 'pub.leaflet.blocks.button',
2561
+ PubLeafletBlocksCode: 'pub.leaflet.blocks.code',
2562
+ PubLeafletBlocksHeader: 'pub.leaflet.blocks.header',
2563
+ PubLeafletBlocksHorizontalRule: 'pub.leaflet.blocks.horizontalRule',
2564
+ PubLeafletBlocksIframe: 'pub.leaflet.blocks.iframe',
2565
+ PubLeafletBlocksImage: 'pub.leaflet.blocks.image',
2566
+ PubLeafletBlocksMath: 'pub.leaflet.blocks.math',
2567
+ PubLeafletBlocksOrderedList: 'pub.leaflet.blocks.orderedList',
2568
+ PubLeafletBlocksPage: 'pub.leaflet.blocks.page',
2569
+ PubLeafletBlocksPoll: 'pub.leaflet.blocks.poll',
2570
+ PubLeafletBlocksText: 'pub.leaflet.blocks.text',
2571
+ PubLeafletBlocksUnorderedList: 'pub.leaflet.blocks.unorderedList',
2572
+ PubLeafletBlocksWebsite: 'pub.leaflet.blocks.website',
2573
+ PubLeafletPagesLinearDocument: 'pub.leaflet.pages.linearDocument',
2574
+ PubLeafletRichtextFacet: 'pub.leaflet.richtext.facet',
1148
2575
  };
1149
2576
 
1150
2577
  export { ids, lexicons, schemaDict, schemas, validate };