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