@hypercerts-org/lexicon 0.10.0-beta.14 → 0.10.0-beta.16

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 (136) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +117 -12
  3. package/SCHEMAS.md +300 -158
  4. package/dist/exports.d.ts +604 -171
  5. package/dist/exports.d.ts.map +1 -1
  6. package/dist/generated/exports.d.ts +604 -171
  7. package/dist/generated/exports.d.ts.map +1 -1
  8. package/dist/generated/lexicons.d.ts +1256 -440
  9. package/dist/generated/lexicons.d.ts.map +1 -1
  10. package/dist/generated/types/app/certified/actor/organization.d.ts +32 -0
  11. package/dist/generated/types/app/certified/actor/organization.d.ts.map +1 -0
  12. package/dist/generated/types/app/certified/actor/profile.d.ts +4 -1
  13. package/dist/generated/types/app/certified/actor/profile.d.ts.map +1 -1
  14. package/dist/generated/types/app/certified/badge/award.d.ts +2 -0
  15. package/dist/generated/types/app/certified/badge/award.d.ts.map +1 -1
  16. package/dist/generated/types/app/certified/badge/response.d.ts +1 -1
  17. package/dist/generated/types/app/certified/badge/response.d.ts.map +1 -1
  18. package/dist/generated/types/app/certified/location.d.ts +4 -4
  19. package/dist/generated/types/app/certified/location.d.ts.map +1 -1
  20. package/dist/generated/types/org/hyperboards/board.d.ts +75 -0
  21. package/dist/generated/types/org/hyperboards/board.d.ts.map +1 -0
  22. package/dist/generated/types/org/hyperboards/displayProfile.d.ts +31 -0
  23. package/dist/generated/types/org/hyperboards/displayProfile.d.ts.map +1 -0
  24. package/dist/generated/types/org/hypercerts/claim/activity.d.ts +8 -9
  25. package/dist/generated/types/org/hypercerts/claim/activity.d.ts.map +1 -1
  26. package/dist/generated/types/org/hypercerts/claim/{contributionDetails.d.ts → contribution.d.ts} +6 -6
  27. package/dist/generated/types/org/hypercerts/claim/contribution.d.ts.map +1 -0
  28. package/dist/generated/types/org/hypercerts/claim/contributorInformation.d.ts +2 -2
  29. package/dist/generated/types/org/hypercerts/claim/contributorInformation.d.ts.map +1 -1
  30. package/dist/generated/types/org/hypercerts/claim/rights.d.ts +3 -3
  31. package/dist/generated/types/org/hypercerts/claim/rights.d.ts.map +1 -1
  32. package/dist/{types/org/hypercerts/claim → generated/types/org/hypercerts}/collection.d.ts +10 -10
  33. package/dist/generated/types/org/hypercerts/collection.d.ts.map +1 -0
  34. package/dist/generated/types/org/hypercerts/context/acknowledgement.d.ts +25 -0
  35. package/dist/generated/types/org/hypercerts/context/acknowledgement.d.ts.map +1 -0
  36. package/dist/generated/types/org/hypercerts/{claim → context}/attachment.d.ts +6 -8
  37. package/dist/generated/types/org/hypercerts/context/attachment.d.ts.map +1 -0
  38. package/dist/generated/types/org/hypercerts/{claim → context}/evaluation.d.ts +15 -15
  39. package/dist/generated/types/org/hypercerts/context/evaluation.d.ts.map +1 -0
  40. package/dist/{types/org/hypercerts/claim → generated/types/org/hypercerts/context}/measurement.d.ts +7 -6
  41. package/dist/generated/types/org/hypercerts/context/measurement.d.ts.map +1 -0
  42. package/dist/generated/types/org/hypercerts/defs.d.ts +8 -0
  43. package/dist/generated/types/org/hypercerts/defs.d.ts.map +1 -1
  44. package/dist/generated/types/org/hypercerts/funding/receipt.d.ts +1 -1
  45. package/dist/generated/types/org/hypercerts/funding/receipt.d.ts.map +1 -1
  46. package/dist/generated/types/org/hypercerts/workscope/cel.d.ts +20 -0
  47. package/dist/generated/types/org/hypercerts/workscope/cel.d.ts.map +1 -0
  48. package/dist/generated/types/org/hypercerts/workscope/tag.d.ts +36 -0
  49. package/dist/generated/types/org/hypercerts/workscope/tag.d.ts.map +1 -0
  50. package/dist/index.cjs +1931 -805
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.mjs +1883 -777
  53. package/dist/index.mjs.map +1 -1
  54. package/dist/lexicons.cjs +689 -240
  55. package/dist/lexicons.cjs.map +1 -1
  56. package/dist/lexicons.d.ts +1256 -440
  57. package/dist/lexicons.d.ts.map +1 -1
  58. package/dist/lexicons.mjs +689 -240
  59. package/dist/lexicons.mjs.map +1 -1
  60. package/dist/types/app/certified/actor/organization.d.ts +32 -0
  61. package/dist/types/app/certified/actor/organization.d.ts.map +1 -0
  62. package/dist/types/app/certified/actor/profile.d.ts +4 -1
  63. package/dist/types/app/certified/actor/profile.d.ts.map +1 -1
  64. package/dist/types/app/certified/badge/award.d.ts +2 -0
  65. package/dist/types/app/certified/badge/award.d.ts.map +1 -1
  66. package/dist/types/app/certified/badge/response.d.ts +1 -1
  67. package/dist/types/app/certified/badge/response.d.ts.map +1 -1
  68. package/dist/types/app/certified/location.d.ts +4 -4
  69. package/dist/types/app/certified/location.d.ts.map +1 -1
  70. package/dist/types/org/hyperboards/board.d.ts +75 -0
  71. package/dist/types/org/hyperboards/board.d.ts.map +1 -0
  72. package/dist/types/org/hyperboards/displayProfile.d.ts +31 -0
  73. package/dist/types/org/hyperboards/displayProfile.d.ts.map +1 -0
  74. package/dist/types/org/hypercerts/claim/activity.d.ts +8 -9
  75. package/dist/types/org/hypercerts/claim/activity.d.ts.map +1 -1
  76. package/dist/types/org/hypercerts/claim/{contributionDetails.d.ts → contribution.d.ts} +6 -6
  77. package/dist/types/org/hypercerts/claim/contribution.d.ts.map +1 -0
  78. package/dist/types/org/hypercerts/claim/contributorInformation.d.ts +2 -2
  79. package/dist/types/org/hypercerts/claim/contributorInformation.d.ts.map +1 -1
  80. package/dist/types/org/hypercerts/claim/rights.d.ts +3 -3
  81. package/dist/types/org/hypercerts/claim/rights.d.ts.map +1 -1
  82. package/dist/{generated/types/org/hypercerts/claim → types/org/hypercerts}/collection.d.ts +10 -10
  83. package/dist/types/org/hypercerts/collection.d.ts.map +1 -0
  84. package/dist/types/org/hypercerts/context/acknowledgement.d.ts +25 -0
  85. package/dist/types/org/hypercerts/context/acknowledgement.d.ts.map +1 -0
  86. package/dist/types/org/hypercerts/{claim → context}/attachment.d.ts +6 -8
  87. package/dist/types/org/hypercerts/context/attachment.d.ts.map +1 -0
  88. package/dist/types/org/hypercerts/{claim → context}/evaluation.d.ts +15 -15
  89. package/dist/types/org/hypercerts/context/evaluation.d.ts.map +1 -0
  90. package/dist/{generated/types/org/hypercerts/claim → types/org/hypercerts/context}/measurement.d.ts +7 -6
  91. package/dist/types/org/hypercerts/context/measurement.d.ts.map +1 -0
  92. package/dist/types/org/hypercerts/defs.d.ts +8 -0
  93. package/dist/types/org/hypercerts/defs.d.ts.map +1 -1
  94. package/dist/types/org/hypercerts/funding/receipt.d.ts +1 -1
  95. package/dist/types/org/hypercerts/funding/receipt.d.ts.map +1 -1
  96. package/dist/types/org/hypercerts/workscope/cel.d.ts +20 -0
  97. package/dist/types/org/hypercerts/workscope/cel.d.ts.map +1 -0
  98. package/dist/types/org/hypercerts/workscope/tag.d.ts +36 -0
  99. package/dist/types/org/hypercerts/workscope/tag.d.ts.map +1 -0
  100. package/lexicons/app/certified/actor/organization.json +70 -0
  101. package/lexicons/app/certified/actor/profile.json +13 -3
  102. package/lexicons/app/certified/badge/award.json +8 -1
  103. package/lexicons/app/certified/badge/definition.json +8 -3
  104. package/lexicons/app/certified/badge/response.json +3 -2
  105. package/lexicons/app/certified/location.json +13 -4
  106. package/lexicons/org/hyperboards/board.json +152 -0
  107. package/lexicons/org/hyperboards/displayProfile.json +64 -0
  108. package/lexicons/org/hypercerts/claim/activity.json +23 -29
  109. package/lexicons/org/hypercerts/claim/{contributionDetails.json → contribution.json} +4 -4
  110. package/lexicons/org/hypercerts/claim/contributorInformation.json +3 -2
  111. package/lexicons/org/hypercerts/claim/rights.json +5 -3
  112. package/lexicons/org/hypercerts/{claim/collection.json → collection.json} +9 -6
  113. package/lexicons/org/hypercerts/context/acknowledgement.json +42 -0
  114. package/lexicons/org/hypercerts/{claim → context}/attachment.json +6 -15
  115. package/lexicons/org/hypercerts/{claim → context}/evaluation.json +22 -22
  116. package/lexicons/org/hypercerts/{claim → context}/measurement.json +13 -9
  117. package/lexicons/org/hypercerts/defs.json +14 -1
  118. package/lexicons/org/hypercerts/funding/receipt.json +12 -6
  119. package/lexicons/org/hypercerts/workscope/cel.json +39 -0
  120. package/lexicons/org/hypercerts/workscope/tag.json +87 -0
  121. package/package.json +1 -1
  122. package/dist/generated/types/org/hypercerts/claim/attachment.d.ts.map +0 -1
  123. package/dist/generated/types/org/hypercerts/claim/collection.d.ts.map +0 -1
  124. package/dist/generated/types/org/hypercerts/claim/contributionDetails.d.ts.map +0 -1
  125. package/dist/generated/types/org/hypercerts/claim/evaluation.d.ts.map +0 -1
  126. package/dist/generated/types/org/hypercerts/claim/measurement.d.ts.map +0 -1
  127. package/dist/generated/types/org/hypercerts/helper/workScopeTag.d.ts +0 -31
  128. package/dist/generated/types/org/hypercerts/helper/workScopeTag.d.ts.map +0 -1
  129. package/dist/types/org/hypercerts/claim/attachment.d.ts.map +0 -1
  130. package/dist/types/org/hypercerts/claim/collection.d.ts.map +0 -1
  131. package/dist/types/org/hypercerts/claim/contributionDetails.d.ts.map +0 -1
  132. package/dist/types/org/hypercerts/claim/evaluation.d.ts.map +0 -1
  133. package/dist/types/org/hypercerts/claim/measurement.d.ts.map +0 -1
  134. package/dist/types/org/hypercerts/helper/workScopeTag.d.ts +0 -31
  135. package/dist/types/org/hypercerts/helper/workScopeTag.d.ts.map +0 -1
  136. package/lexicons/org/hypercerts/helper/workScopeTag.json +0 -65
package/dist/lexicons.mjs CHANGED
@@ -28,19 +28,91 @@ function maybe$typed(v, id, hash) {
28
28
  * GENERATED CODE - DO NOT MODIFY
29
29
  */
30
30
  const schemaDict = {
31
+ AppCertifiedActorOrganization: {
32
+ lexicon: 1,
33
+ id: 'app.certified.actor.organization',
34
+ defs: {
35
+ main: {
36
+ type: 'record',
37
+ description: 'Extended metadata for an organization actor. Complements the base actor profile with organization-specific fields like legal structure and reference links.',
38
+ key: 'literal:self',
39
+ record: {
40
+ type: 'object',
41
+ required: ['createdAt'],
42
+ properties: {
43
+ organizationType: {
44
+ type: 'array',
45
+ description: "Legal or operational structures of the organization (e.g. 'nonprofit', 'ngo', 'government', 'social-enterprise', 'cooperative').",
46
+ items: {
47
+ type: 'string',
48
+ maxLength: 128,
49
+ maxGraphemes: 100,
50
+ },
51
+ maxLength: 10,
52
+ },
53
+ urls: {
54
+ type: 'array',
55
+ description: 'Additional reference URLs (social media profiles, contact pages, donation links, etc.) with a display label for each URL.',
56
+ items: {
57
+ type: 'ref',
58
+ ref: 'lex:app.certified.actor.organization#urlItem',
59
+ },
60
+ },
61
+ location: {
62
+ type: 'ref',
63
+ ref: 'lex:com.atproto.repo.strongRef',
64
+ description: 'A strong reference to the location where the organization is based. The record referenced must conform with the lexicon app.certified.location.',
65
+ },
66
+ foundedDate: {
67
+ type: 'string',
68
+ format: 'datetime',
69
+ 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.",
70
+ },
71
+ createdAt: {
72
+ type: 'string',
73
+ format: 'datetime',
74
+ description: 'Client-declared timestamp when this record was originally created.',
75
+ },
76
+ },
77
+ },
78
+ },
79
+ urlItem: {
80
+ type: 'object',
81
+ description: 'A labeled URL reference.',
82
+ required: ['url'],
83
+ properties: {
84
+ url: {
85
+ type: 'string',
86
+ format: 'uri',
87
+ description: 'The URL.',
88
+ maxLength: 10000,
89
+ maxGraphemes: 2048,
90
+ },
91
+ label: {
92
+ type: 'string',
93
+ description: "Optional human-readable label for this URL (e.g. 'Support page', 'Donation page').",
94
+ maxLength: 640,
95
+ maxGraphemes: 64,
96
+ },
97
+ },
98
+ },
99
+ },
100
+ },
31
101
  AppCertifiedActorProfile: {
32
102
  lexicon: 1,
33
103
  id: 'app.certified.actor.profile',
34
104
  defs: {
35
105
  main: {
36
106
  type: 'record',
37
- description: 'A declaration of a Hypercert account profile.',
107
+ description: 'A declaration of a Certified account profile.',
38
108
  key: 'literal:self',
39
109
  record: {
40
110
  type: 'object',
111
+ required: ['createdAt'],
41
112
  properties: {
42
113
  displayName: {
43
114
  type: 'string',
115
+ description: 'Display name for the account',
44
116
  maxGraphemes: 64,
45
117
  maxLength: 640,
46
118
  },
@@ -59,6 +131,7 @@ const schemaDict = {
59
131
  website: {
60
132
  type: 'string',
61
133
  format: 'uri',
134
+ description: 'Account website URL',
62
135
  },
63
136
  avatar: {
64
137
  type: 'union',
@@ -79,6 +152,7 @@ const schemaDict = {
79
152
  createdAt: {
80
153
  type: 'string',
81
154
  format: 'datetime',
155
+ description: 'Client-declared timestamp when this record was originally created',
82
156
  },
83
157
  },
84
158
  },
@@ -113,6 +187,13 @@ const schemaDict = {
113
187
  note: {
114
188
  type: 'string',
115
189
  description: 'Optional statement explaining the reason for this badge award.',
190
+ maxLength: 500,
191
+ },
192
+ url: {
193
+ type: 'string',
194
+ format: 'uri',
195
+ description: 'Optional URL the badge award links to.',
196
+ maxLength: 2048,
116
197
  },
117
198
  createdAt: {
118
199
  type: 'string',
@@ -139,10 +220,12 @@ const schemaDict = {
139
220
  badgeType: {
140
221
  type: 'string',
141
222
  description: 'Category of the badge (e.g. endorsement, participation, affiliation).',
223
+ maxLength: 100,
142
224
  },
143
225
  title: {
144
226
  type: 'string',
145
227
  description: 'Human-readable title of the badge.',
228
+ maxLength: 256,
146
229
  },
147
230
  icon: {
148
231
  type: 'blob',
@@ -158,10 +241,13 @@ const schemaDict = {
158
241
  description: {
159
242
  type: 'string',
160
243
  description: 'Optional short statement describing what the badge represents.',
244
+ maxLength: 5000,
245
+ maxGraphemes: 500,
161
246
  },
162
247
  allowedIssuers: {
163
248
  type: 'array',
164
249
  description: 'Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it.',
250
+ maxLength: 100,
165
251
  items: {
166
252
  type: 'ref',
167
253
  ref: 'lex:app.certified.defs#did',
@@ -196,12 +282,13 @@ const schemaDict = {
196
282
  },
197
283
  response: {
198
284
  type: 'string',
199
- enum: ['accepted', 'rejected'],
285
+ knownValues: ['accepted', 'rejected'],
200
286
  description: 'The recipient’s response for the badge (accepted or rejected).',
201
287
  },
202
288
  weight: {
203
289
  type: 'string',
204
290
  description: 'Optional relative weight for accepted badges, assigned by the recipient.',
291
+ maxLength: 50,
205
292
  },
206
293
  createdAt: {
207
294
  type: 'string',
@@ -264,8 +351,17 @@ const schemaDict = {
264
351
  },
265
352
  locationType: {
266
353
  type: 'string',
267
- description: 'An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point)',
268
- knownValues: ['coordinate-decimal', 'geojson-point'],
354
+ 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',
355
+ knownValues: [
356
+ 'coordinate-decimal',
357
+ 'geojson-point',
358
+ 'geojson',
359
+ 'h3',
360
+ 'geohash',
361
+ 'wkt',
362
+ 'address',
363
+ 'scaledCoordinates',
364
+ ],
269
365
  maxLength: 20,
270
366
  },
271
367
  location: {
@@ -279,13 +375,13 @@ const schemaDict = {
279
375
  },
280
376
  name: {
281
377
  type: 'string',
282
- description: 'Optional name for this location',
378
+ description: "Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area')",
283
379
  maxLength: 1000,
284
380
  maxGraphemes: 100,
285
381
  },
286
382
  description: {
287
383
  type: 'string',
288
- description: 'Optional description for this location',
384
+ description: 'Additional context about this location, such as its significance to the work or specific boundaries',
289
385
  maxLength: 2000,
290
386
  maxGraphemes: 500,
291
387
  },
@@ -333,6 +429,234 @@ const schemaDict = {
333
429
  },
334
430
  },
335
431
  },
432
+ OrgHyperboardsBoard: {
433
+ lexicon: 1,
434
+ id: 'org.hyperboards.board',
435
+ defs: {
436
+ main: {
437
+ type: 'record',
438
+ description: "Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS.",
439
+ key: 'tid',
440
+ record: {
441
+ type: 'object',
442
+ required: ['subject', 'createdAt'],
443
+ properties: {
444
+ subject: {
445
+ type: 'ref',
446
+ ref: 'lex:com.atproto.repo.strongRef',
447
+ description: 'Reference to the org.hypercerts.claim.activity or org.hypercerts.claim.collection this board visualizes.',
448
+ },
449
+ config: {
450
+ type: 'ref',
451
+ ref: 'lex:org.hyperboards.board#boardConfig',
452
+ description: 'Board-level visual configuration (background, colors, aspect ratio).',
453
+ },
454
+ contributorConfigs: {
455
+ type: 'array',
456
+ description: 'Per-contributor configuration entries for this board.',
457
+ maxLength: 1000,
458
+ items: {
459
+ type: 'ref',
460
+ ref: 'lex:org.hyperboards.board#contributorConfig',
461
+ },
462
+ },
463
+ createdAt: {
464
+ type: 'string',
465
+ format: 'datetime',
466
+ description: 'Client-declared timestamp when this record was originally created.',
467
+ },
468
+ },
469
+ },
470
+ },
471
+ boardConfig: {
472
+ type: 'object',
473
+ description: "Visual configuration for a hyperboard's background, colors, and layout.",
474
+ properties: {
475
+ backgroundType: {
476
+ type: 'string',
477
+ description: 'Type of background content.',
478
+ knownValues: ['image', 'iframe'],
479
+ maxLength: 10,
480
+ },
481
+ backgroundImage: {
482
+ type: 'union',
483
+ refs: [
484
+ 'lex:org.hypercerts.defs#uri',
485
+ 'lex:org.hypercerts.defs#smallImage',
486
+ ],
487
+ description: 'Background image as a URI or image blob.',
488
+ },
489
+ backgroundIframeUrl: {
490
+ type: 'string',
491
+ format: 'uri',
492
+ description: 'URI of the background iframe.',
493
+ maxLength: 2048,
494
+ },
495
+ backgroundGrayscale: {
496
+ type: 'boolean',
497
+ description: 'Whether the background is rendered in grayscale. Default: true.',
498
+ },
499
+ backgroundOpacity: {
500
+ type: 'integer',
501
+ description: 'Background opacity as a percentage (0–100).',
502
+ minimum: 0,
503
+ maximum: 100,
504
+ },
505
+ backgroundColor: {
506
+ type: 'string',
507
+ description: "Background color as a hex string (e.g. '#ffffff').",
508
+ maxLength: 20,
509
+ },
510
+ borderColor: {
511
+ type: 'string',
512
+ description: "Border color as a hex string (e.g. '#000000').",
513
+ maxLength: 20,
514
+ },
515
+ grayscaleImages: {
516
+ type: 'boolean',
517
+ description: 'Whether contributor images are rendered in grayscale. Default: false.',
518
+ },
519
+ imageShape: {
520
+ type: 'string',
521
+ description: 'Shape used to crop contributor images on this board.',
522
+ knownValues: ['circular', 'square'],
523
+ maxLength: 20,
524
+ },
525
+ aspectRatio: {
526
+ type: 'string',
527
+ description: 'Display aspect ratio of the board.',
528
+ knownValues: ['16:9', '4:3', '1:1'],
529
+ maxLength: 10,
530
+ },
531
+ },
532
+ },
533
+ contributorConfig: {
534
+ type: 'object',
535
+ 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.',
536
+ required: ['contributor'],
537
+ properties: {
538
+ contributor: {
539
+ type: 'union',
540
+ refs: [
541
+ 'lex:com.atproto.repo.strongRef',
542
+ 'lex:org.hypercerts.claim.activity#contributorIdentity',
543
+ ],
544
+ 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.',
545
+ },
546
+ override: {
547
+ type: 'boolean',
548
+ 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.",
549
+ },
550
+ displayName: {
551
+ type: 'string',
552
+ description: 'Display name for this contributor on this board.',
553
+ maxLength: 640,
554
+ maxGraphemes: 64,
555
+ },
556
+ image: {
557
+ type: 'union',
558
+ refs: [
559
+ 'lex:org.hypercerts.defs#uri',
560
+ 'lex:org.hypercerts.defs#smallImage',
561
+ ],
562
+ description: 'Avatar or face image for this contributor on this board, as a URI or image blob.',
563
+ },
564
+ video: {
565
+ type: 'union',
566
+ refs: [
567
+ 'lex:org.hypercerts.defs#uri',
568
+ 'lex:org.hypercerts.defs#smallVideo',
569
+ ],
570
+ description: 'Video for this contributor, as a URI (embed/direct link) or uploaded video blob.',
571
+ },
572
+ hoverImage: {
573
+ type: 'union',
574
+ refs: [
575
+ 'lex:org.hypercerts.defs#uri',
576
+ 'lex:org.hypercerts.defs#smallImage',
577
+ ],
578
+ description: 'Image overlay shown when hovering over this contributor, as a URI or image blob.',
579
+ },
580
+ hoverIframeUrl: {
581
+ type: 'string',
582
+ format: 'uri',
583
+ description: 'Iframe overlay shown when hovering over this contributor.',
584
+ maxLength: 2048,
585
+ },
586
+ url: {
587
+ type: 'string',
588
+ format: 'uri',
589
+ description: 'Click-through link URL for this contributor.',
590
+ maxLength: 2048,
591
+ },
592
+ },
593
+ },
594
+ },
595
+ },
596
+ OrgHyperboardsDisplayProfile: {
597
+ lexicon: 1,
598
+ id: 'org.hyperboards.displayProfile',
599
+ defs: {
600
+ main: {
601
+ type: 'record',
602
+ 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.",
603
+ key: 'literal:self',
604
+ record: {
605
+ type: 'object',
606
+ required: ['createdAt'],
607
+ properties: {
608
+ displayName: {
609
+ type: 'string',
610
+ description: 'Display name override for this user on hyperboards.',
611
+ maxLength: 640,
612
+ maxGraphemes: 64,
613
+ },
614
+ image: {
615
+ type: 'union',
616
+ refs: [
617
+ 'lex:org.hypercerts.defs#uri',
618
+ 'lex:org.hypercerts.defs#smallImage',
619
+ ],
620
+ description: 'Avatar or face image override for this user on hyperboards, as a URI or image blob.',
621
+ },
622
+ video: {
623
+ type: 'union',
624
+ refs: [
625
+ 'lex:org.hypercerts.defs#uri',
626
+ 'lex:org.hypercerts.defs#smallVideo',
627
+ ],
628
+ description: 'Default video for this user across boards, as a URI (embed/direct link) or uploaded video blob.',
629
+ },
630
+ hoverImage: {
631
+ type: 'union',
632
+ refs: [
633
+ 'lex:org.hypercerts.defs#uri',
634
+ 'lex:org.hypercerts.defs#smallImage',
635
+ ],
636
+ description: 'Default hover image for this user across boards, as a URI or image blob.',
637
+ },
638
+ hoverIframeUrl: {
639
+ type: 'string',
640
+ format: 'uri',
641
+ description: 'Default hover iframe URL for this user across boards.',
642
+ maxLength: 2048,
643
+ },
644
+ url: {
645
+ type: 'string',
646
+ format: 'uri',
647
+ description: 'Default click-through link URL for this user across boards.',
648
+ maxLength: 2048,
649
+ },
650
+ createdAt: {
651
+ type: 'string',
652
+ format: 'datetime',
653
+ description: 'Client-declared timestamp when this record was originally created.',
654
+ },
655
+ },
656
+ },
657
+ },
658
+ },
659
+ },
336
660
  OrgHypercertsClaimActivity: {
337
661
  lexicon: 1,
338
662
  id: 'org.hypercerts.claim.activity',
@@ -347,7 +671,7 @@ const schemaDict = {
347
671
  properties: {
348
672
  title: {
349
673
  type: 'string',
350
- description: 'Title of the hypercert.',
674
+ description: "Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024')",
351
675
  maxLength: 256,
352
676
  },
353
677
  shortDescription: {
@@ -365,18 +689,9 @@ const schemaDict = {
365
689
  },
366
690
  },
367
691
  description: {
368
- type: 'string',
369
- description: 'Optional longer description of this activity claim, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`.',
370
- maxLength: 30000,
371
- maxGraphemes: 3000,
372
- },
373
- descriptionFacets: {
374
- type: 'array',
375
- description: 'Rich text annotations for `description` (mentions, URLs, hashtags, etc).',
376
- items: {
377
- type: 'ref',
378
- ref: 'lex:app.bsky.richtext.facet',
379
- },
692
+ type: 'ref',
693
+ ref: 'lex:pub.leaflet.pages.linearDocument#main',
694
+ description: 'Rich-text description, represented as a Leaflet linear document.',
380
695
  },
381
696
  image: {
382
697
  type: 'union',
@@ -386,13 +701,22 @@ const schemaDict = {
386
701
  ],
387
702
  description: 'The hypercert visual representation as a URI or image blob.',
388
703
  },
704
+ contributors: {
705
+ type: 'array',
706
+ description: 'An array of contributor objects, each containing contributor information, weight, and contribution details.',
707
+ maxLength: 1000,
708
+ items: {
709
+ type: 'ref',
710
+ ref: 'lex:org.hypercerts.claim.activity#contributor',
711
+ },
712
+ },
389
713
  workScope: {
390
714
  type: 'union',
391
715
  refs: [
392
- 'lex:com.atproto.repo.strongRef',
716
+ 'lex:org.hypercerts.workscope.cel',
393
717
  'lex:org.hypercerts.claim.activity#workScopeString',
394
718
  ],
395
- description: 'Work scope definition. Either a strongRef to a work-scope logic record (structured, nested logic), or a free-form string for simple or legacy scopes. The work scope record should conform to the org.hypercerts.helper.workScopeTag lexicon.',
719
+ description: 'Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes.',
396
720
  },
397
721
  startDate: {
398
722
  type: 'string',
@@ -404,12 +728,13 @@ const schemaDict = {
404
728
  format: 'datetime',
405
729
  description: 'When the work ended',
406
730
  },
407
- contributors: {
731
+ locations: {
408
732
  type: 'array',
409
- description: 'An array of contributor objects, each containing contributor information, weight, and contribution details.',
733
+ description: 'An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.',
734
+ maxLength: 1000,
410
735
  items: {
411
736
  type: 'ref',
412
- ref: 'lex:org.hypercerts.claim.activity#contributor',
737
+ ref: 'lex:com.atproto.repo.strongRef',
413
738
  },
414
739
  },
415
740
  rights: {
@@ -417,14 +742,6 @@ const schemaDict = {
417
742
  ref: 'lex:com.atproto.repo.strongRef',
418
743
  description: 'A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights.',
419
744
  },
420
- locations: {
421
- type: 'array',
422
- description: 'An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.',
423
- items: {
424
- type: 'ref',
425
- ref: 'lex:com.atproto.repo.strongRef',
426
- },
427
- },
428
745
  createdAt: {
429
746
  type: 'string',
430
747
  format: 'datetime',
@@ -443,11 +760,12 @@ const schemaDict = {
443
760
  'lex:org.hypercerts.claim.activity#contributorIdentity',
444
761
  'lex:com.atproto.repo.strongRef',
445
762
  ],
446
- description: 'Contributor identity as a string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record.',
763
+ 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.',
447
764
  },
448
765
  contributionWeight: {
449
766
  type: 'string',
450
767
  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.',
768
+ maxLength: 100,
451
769
  },
452
770
  contributionDetails: {
453
771
  type: 'union',
@@ -455,7 +773,7 @@ const schemaDict = {
455
773
  'lex:org.hypercerts.claim.activity#contributorRole',
456
774
  'lex:com.atproto.repo.strongRef',
457
775
  ],
458
- description: 'Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record.',
776
+ 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.',
459
777
  },
460
778
  },
461
779
  },
@@ -500,95 +818,143 @@ const schemaDict = {
500
818
  },
501
819
  },
502
820
  },
503
- OrgHypercertsClaimAttachment: {
821
+ OrgHypercertsClaimContribution: {
504
822
  lexicon: 1,
505
- id: 'org.hypercerts.claim.attachment',
823
+ id: 'org.hypercerts.claim.contribution',
506
824
  defs: {
507
825
  main: {
508
826
  type: 'record',
509
- description: 'An attachment providing commentary, context, evidence, or documentary material related to a hypercert record (e.g. an activity, project, claim, or evaluation).',
827
+ description: 'Details about a specific contribution including role, description, and timeframe.',
510
828
  key: 'tid',
511
829
  record: {
512
830
  type: 'object',
513
- required: ['title', 'content', 'createdAt'],
831
+ required: ['createdAt'],
514
832
  properties: {
515
- subjects: {
516
- type: 'array',
517
- 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.',
518
- items: {
519
- type: 'ref',
520
- ref: 'lex:com.atproto.repo.strongRef',
521
- },
833
+ role: {
834
+ type: 'string',
835
+ description: 'Role or title of the contributor.',
522
836
  maxLength: 100,
523
837
  },
524
- contentType: {
838
+ contributionDescription: {
525
839
  type: 'string',
526
- maxLength: 64,
527
- description: 'The type of attachment, e.g. report, audit, evidence, testimonial, methodology, etc.',
840
+ description: 'Description of what the contribution concretely involved.',
841
+ maxLength: 10000,
842
+ maxGraphemes: 1000,
528
843
  },
529
- content: {
530
- type: 'array',
531
- description: 'The files, documents, or external references included in this attachment record.',
532
- items: {
533
- type: 'union',
534
- refs: [
535
- 'lex:org.hypercerts.defs#uri',
536
- 'lex:org.hypercerts.defs#smallBlob',
537
- ],
538
- },
539
- maxLength: 100,
844
+ startDate: {
845
+ type: 'string',
846
+ format: 'datetime',
847
+ description: "When this contribution started. Should fall within the parent hypercert's timeframe.",
540
848
  },
541
- title: {
849
+ endDate: {
542
850
  type: 'string',
543
- maxLength: 256,
544
- description: 'Title of this attachment.',
851
+ format: 'datetime',
852
+ description: "When this contribution finished. Should fall within the parent hypercert's timeframe.",
545
853
  },
546
- shortDescription: {
854
+ createdAt: {
547
855
  type: 'string',
548
- description: 'Short summary of this attachment, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
549
- maxLength: 3000,
550
- maxGraphemes: 300,
856
+ format: 'datetime',
857
+ description: 'Client-declared timestamp when this record was originally created.',
551
858
  },
552
- shortDescriptionFacets: {
553
- type: 'array',
554
- description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
555
- items: {
556
- type: 'ref',
557
- ref: 'lex:app.bsky.richtext.facet',
558
- },
859
+ },
860
+ },
861
+ },
862
+ },
863
+ },
864
+ OrgHypercertsClaimContributorInformation: {
865
+ lexicon: 1,
866
+ id: 'org.hypercerts.claim.contributorInformation',
867
+ defs: {
868
+ main: {
869
+ type: 'record',
870
+ description: 'Contributor information including identifier, display name, and image.',
871
+ key: 'tid',
872
+ record: {
873
+ type: 'object',
874
+ required: ['createdAt'],
875
+ properties: {
876
+ identifier: {
877
+ type: 'string',
878
+ description: 'DID (did:plc:...) or URI to a social profile of the contributor.',
879
+ maxLength: 2048,
559
880
  },
560
- description: {
881
+ displayName: {
561
882
  type: 'string',
562
- description: 'Optional longer description of this attachment, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`.',
563
- maxLength: 30000,
564
- maxGraphemes: 3000,
883
+ description: 'Human-readable name for the contributor as it should appear in UI.',
884
+ maxLength: 100,
565
885
  },
566
- descriptionFacets: {
567
- type: 'array',
568
- description: 'Rich text annotations for `description` (mentions, URLs, hashtags, etc).',
569
- items: {
570
- type: 'ref',
571
- ref: 'lex:app.bsky.richtext.facet',
572
- },
886
+ image: {
887
+ type: 'union',
888
+ refs: [
889
+ 'lex:org.hypercerts.defs#uri',
890
+ 'lex:org.hypercerts.defs#smallImage',
891
+ ],
892
+ description: 'The contributor visual representation as a URI or image blob.',
893
+ },
894
+ createdAt: {
895
+ type: 'string',
896
+ format: 'datetime',
897
+ description: 'Client-declared timestamp when this record was originally created.',
898
+ },
899
+ },
900
+ },
901
+ },
902
+ },
903
+ },
904
+ OrgHypercertsClaimRights: {
905
+ lexicon: 1,
906
+ id: 'org.hypercerts.claim.rights',
907
+ defs: {
908
+ main: {
909
+ type: 'record',
910
+ 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.',
911
+ key: 'tid',
912
+ record: {
913
+ type: 'object',
914
+ required: [
915
+ 'rightsName',
916
+ 'rightsType',
917
+ 'rightsDescription',
918
+ 'createdAt',
919
+ ],
920
+ properties: {
921
+ rightsName: {
922
+ type: 'string',
923
+ description: "Human-readable name for these rights (e.g. 'All Rights Reserved', 'CC BY-SA 4.0')",
924
+ maxLength: 100,
925
+ },
926
+ rightsType: {
927
+ type: 'string',
928
+ description: "Short identifier code for this rights type (e.g. 'ARR', 'CC-BY-SA') to facilitate filtering and search",
929
+ maxLength: 10,
930
+ },
931
+ rightsDescription: {
932
+ type: 'string',
933
+ description: "Detailed explanation of the rights holders' permissions, restrictions, and conditions",
934
+ maxLength: 10000,
935
+ maxGraphemes: 1000,
573
936
  },
574
- location: {
575
- type: 'ref',
576
- ref: 'lex:com.atproto.repo.strongRef',
577
- 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.",
937
+ attachment: {
938
+ type: 'union',
939
+ refs: [
940
+ 'lex:org.hypercerts.defs#uri',
941
+ 'lex:org.hypercerts.defs#smallBlob',
942
+ ],
943
+ description: 'An attachment to define the rights further, e.g. a legal document.',
578
944
  },
579
945
  createdAt: {
580
946
  type: 'string',
581
947
  format: 'datetime',
582
- description: 'Client-declared timestamp when this record was originally created.',
948
+ description: 'Client-declared timestamp when this record was originally created',
583
949
  },
584
950
  },
585
951
  },
586
952
  },
587
953
  },
588
954
  },
589
- OrgHypercertsClaimCollection: {
955
+ OrgHypercertsCollection: {
590
956
  lexicon: 1,
591
- id: 'org.hypercerts.claim.collection',
957
+ id: 'org.hypercerts.collection',
592
958
  defs: {
593
959
  main: {
594
960
  type: 'record',
@@ -596,15 +962,16 @@ const schemaDict = {
596
962
  key: 'tid',
597
963
  record: {
598
964
  type: 'object',
599
- required: ['title', 'items', 'createdAt'],
965
+ required: ['title', 'createdAt'],
600
966
  properties: {
601
967
  type: {
602
968
  type: 'string',
603
969
  description: "The type of this collection. Possible fields can be 'favorites', 'project', or any other type of collection.",
970
+ maxLength: 64,
604
971
  },
605
972
  title: {
606
973
  type: 'string',
607
- description: 'The title of this collection',
974
+ description: "Display name for this collection (e.g. 'Q1 2025 Impact Projects')",
608
975
  maxLength: 800,
609
976
  maxGraphemes: 80,
610
977
  },
@@ -638,9 +1005,10 @@ const schemaDict = {
638
1005
  items: {
639
1006
  type: 'array',
640
1007
  description: 'Array of items in this collection with optional weights.',
1008
+ maxLength: 1000,
641
1009
  items: {
642
1010
  type: 'ref',
643
- ref: 'lex:org.hypercerts.claim.collection#item',
1011
+ ref: 'lex:org.hypercerts.collection#item',
644
1012
  },
645
1013
  },
646
1014
  location: {
@@ -663,48 +1031,51 @@ const schemaDict = {
663
1031
  itemIdentifier: {
664
1032
  type: 'ref',
665
1033
  ref: 'lex:com.atproto.repo.strongRef',
666
- 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).',
1034
+ description: 'Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.collection).',
667
1035
  },
668
1036
  itemWeight: {
669
1037
  type: 'string',
670
1038
  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.',
1039
+ maxLength: 100,
671
1040
  },
672
1041
  },
673
1042
  },
674
1043
  },
675
1044
  },
676
- OrgHypercertsClaimContributionDetails: {
1045
+ OrgHypercertsContextAcknowledgement: {
677
1046
  lexicon: 1,
678
- id: 'org.hypercerts.claim.contributionDetails',
1047
+ id: 'org.hypercerts.context.acknowledgement',
679
1048
  defs: {
680
1049
  main: {
681
1050
  type: 'record',
682
- description: 'Details about a specific contribution including role, description, and timeframe.',
1051
+ 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.",
683
1052
  key: 'tid',
684
1053
  record: {
685
1054
  type: 'object',
686
- required: ['createdAt'],
1055
+ required: ['subject', 'acknowledged', 'createdAt'],
687
1056
  properties: {
688
- role: {
689
- type: 'string',
690
- description: 'Role or title of the contributor.',
691
- maxLength: 100,
1057
+ subject: {
1058
+ type: 'ref',
1059
+ ref: 'lex:com.atproto.repo.strongRef',
1060
+ description: 'The record being acknowledged (e.g. an activity, a contributor information record, an evaluation).',
692
1061
  },
693
- contributionDescription: {
694
- type: 'string',
695
- description: 'What the contribution concretely was.',
696
- maxLength: 10000,
697
- maxGraphemes: 1000,
1062
+ context: {
1063
+ type: 'union',
1064
+ refs: [
1065
+ 'lex:org.hypercerts.defs#uri',
1066
+ 'lex:com.atproto.repo.strongRef',
1067
+ ],
1068
+ 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.',
698
1069
  },
699
- startDate: {
700
- type: 'string',
701
- format: 'datetime',
702
- description: 'When this contribution started. This should be a subset of the hypercert timeframe.',
1070
+ acknowledged: {
1071
+ type: 'boolean',
1072
+ description: 'Whether the relationship is acknowledged (true) or rejected (false).',
703
1073
  },
704
- endDate: {
1074
+ comment: {
705
1075
  type: 'string',
706
- format: 'datetime',
707
- description: 'When this contribution finished. This should be a subset of the hypercert timeframe.',
1076
+ description: 'Optional plain-text comment providing additional context or reasoning.',
1077
+ maxLength: 10000,
1078
+ maxGraphemes: 1000,
708
1079
  },
709
1080
  createdAt: {
710
1081
  type: 'string',
@@ -716,34 +1087,72 @@ const schemaDict = {
716
1087
  },
717
1088
  },
718
1089
  },
719
- OrgHypercertsClaimContributorInformation: {
1090
+ OrgHypercertsContextAttachment: {
720
1091
  lexicon: 1,
721
- id: 'org.hypercerts.claim.contributorInformation',
1092
+ id: 'org.hypercerts.context.attachment',
722
1093
  defs: {
723
1094
  main: {
724
1095
  type: 'record',
725
- description: 'Contributor information including identifier, display name, and image.',
1096
+ description: 'An attachment providing commentary, context, evidence, or documentary material related to a hypercert record (e.g. an activity, project, claim, or evaluation).',
726
1097
  key: 'tid',
727
1098
  record: {
728
1099
  type: 'object',
729
- required: ['createdAt'],
1100
+ required: ['title', 'createdAt'],
730
1101
  properties: {
731
- identifier: {
732
- type: 'string',
733
- description: 'DID or a URI to a social profile of the contributor.',
1102
+ subjects: {
1103
+ type: 'array',
1104
+ 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.',
1105
+ items: {
1106
+ type: 'ref',
1107
+ ref: 'lex:com.atproto.repo.strongRef',
1108
+ },
1109
+ maxLength: 100,
734
1110
  },
735
- displayName: {
1111
+ contentType: {
736
1112
  type: 'string',
737
- description: 'Display name of the contributor.',
1113
+ maxLength: 64,
1114
+ description: 'The type of attachment, e.g. report, audit, evidence, testimonial, methodology, etc.',
1115
+ },
1116
+ content: {
1117
+ type: 'array',
1118
+ description: 'The files, documents, or external references included in this attachment record.',
1119
+ items: {
1120
+ type: 'union',
1121
+ refs: [
1122
+ 'lex:org.hypercerts.defs#uri',
1123
+ 'lex:org.hypercerts.defs#smallBlob',
1124
+ ],
1125
+ },
738
1126
  maxLength: 100,
739
1127
  },
740
- image: {
741
- type: 'union',
742
- refs: [
743
- 'lex:org.hypercerts.defs#uri',
744
- 'lex:org.hypercerts.defs#smallImage',
745
- ],
746
- description: 'The contributor visual representation as a URI or image blob.',
1128
+ title: {
1129
+ type: 'string',
1130
+ maxLength: 256,
1131
+ description: "Display title for this attachment (e.g. 'Impact Assessment Report', 'Audit Findings')",
1132
+ },
1133
+ shortDescription: {
1134
+ type: 'string',
1135
+ description: 'Short summary of this attachment, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
1136
+ maxLength: 3000,
1137
+ maxGraphemes: 300,
1138
+ },
1139
+ shortDescriptionFacets: {
1140
+ type: 'array',
1141
+ description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
1142
+ items: {
1143
+ type: 'ref',
1144
+ ref: 'lex:app.bsky.richtext.facet',
1145
+ },
1146
+ },
1147
+ description: {
1148
+ type: 'ref',
1149
+ ref: 'lex:pub.leaflet.pages.linearDocument#main',
1150
+ description: 'Rich-text description, represented as a Leaflet linear document.',
1151
+ },
1152
+ location: {
1153
+ type: 'ref',
1154
+ ref: 'lex:com.atproto.repo.strongRef',
1155
+ 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.",
747
1156
  },
748
1157
  createdAt: {
749
1158
  type: 'string',
@@ -755,29 +1164,10 @@ const schemaDict = {
755
1164
  },
756
1165
  },
757
1166
  },
758
- OrgHypercertsClaimEvaluation: {
1167
+ OrgHypercertsContextEvaluation: {
759
1168
  lexicon: 1,
760
- id: 'org.hypercerts.claim.evaluation',
1169
+ id: 'org.hypercerts.context.evaluation',
761
1170
  defs: {
762
- score: {
763
- type: 'object',
764
- description: 'Overall score for an evaluation on a numeric scale.',
765
- required: ['min', 'max', 'value'],
766
- properties: {
767
- min: {
768
- type: 'integer',
769
- description: 'Minimum value of the scale, e.g. 0 or 1.',
770
- },
771
- max: {
772
- type: 'integer',
773
- description: 'Maximum value of the scale, e.g. 5 or 10.',
774
- },
775
- value: {
776
- type: 'integer',
777
- description: 'Score within the inclusive range [min, max].',
778
- },
779
- },
780
- },
781
1171
  main: {
782
1172
  type: 'record',
783
1173
  description: 'An evaluation of a hypercert record (e.g. an activity and its impact).',
@@ -789,7 +1179,7 @@ const schemaDict = {
789
1179
  subject: {
790
1180
  type: 'ref',
791
1181
  ref: 'lex:com.atproto.repo.strongRef',
792
- description: 'A strong reference to what is being evaluated. (e.g activity, measurement, contribution, etc.)',
1182
+ description: 'A strong reference to what is being evaluated (e.g. activity, measurement, contribution, etc.)',
793
1183
  },
794
1184
  evaluators: {
795
1185
  type: 'array',
@@ -814,7 +1204,7 @@ const schemaDict = {
814
1204
  },
815
1205
  measurements: {
816
1206
  type: 'array',
817
- description: 'Optional references to the measurements that contributed to this evaluation. The record(s) referenced must conform with the lexicon org.hypercerts.claim.measurement',
1207
+ description: 'Optional references to the measurements that contributed to this evaluation. The record(s) referenced must conform with the lexicon org.hypercerts.context.measurement',
818
1208
  items: {
819
1209
  type: 'ref',
820
1210
  ref: 'lex:com.atproto.repo.strongRef',
@@ -829,7 +1219,7 @@ const schemaDict = {
829
1219
  },
830
1220
  score: {
831
1221
  type: 'ref',
832
- ref: 'lex:org.hypercerts.claim.evaluation#score',
1222
+ ref: 'lex:org.hypercerts.context.evaluation#score',
833
1223
  description: 'Optional overall score for this evaluation on a numeric scale.',
834
1224
  },
835
1225
  location: {
@@ -845,24 +1235,47 @@ const schemaDict = {
845
1235
  },
846
1236
  },
847
1237
  },
1238
+ score: {
1239
+ type: 'object',
1240
+ description: 'Overall score for an evaluation on a numeric scale.',
1241
+ required: ['min', 'max', 'value'],
1242
+ properties: {
1243
+ min: {
1244
+ type: 'integer',
1245
+ description: 'Minimum value of the scale, e.g. 0 or 1.',
1246
+ },
1247
+ max: {
1248
+ type: 'integer',
1249
+ description: 'Maximum value of the scale, e.g. 5 or 10.',
1250
+ },
1251
+ value: {
1252
+ type: 'integer',
1253
+ description: 'Score within the inclusive range [min, max].',
1254
+ },
1255
+ },
1256
+ },
848
1257
  },
849
1258
  },
850
- OrgHypercertsClaimMeasurement: {
1259
+ OrgHypercertsContextMeasurement: {
851
1260
  lexicon: 1,
852
- id: 'org.hypercerts.claim.measurement',
1261
+ id: 'org.hypercerts.context.measurement',
853
1262
  defs: {
854
1263
  main: {
855
1264
  type: 'record',
856
- description: 'Measurement data related to a hypercert record (e.g. an activity and its impact).',
1265
+ description: 'Measurement data related to one or more records (e.g. activities, projects, etc.).',
857
1266
  key: 'tid',
858
1267
  record: {
859
1268
  type: 'object',
860
1269
  required: ['metric', 'unit', 'value', 'createdAt'],
861
1270
  properties: {
862
- subject: {
863
- type: 'ref',
864
- ref: 'lex:com.atproto.repo.strongRef',
865
- description: 'A strong reference to the record this measurement refers to (e.g. an activity, project, or claim).',
1271
+ subjects: {
1272
+ type: 'array',
1273
+ description: 'Strong references to the records this measurement refers to (e.g. activities, projects, or claims).',
1274
+ items: {
1275
+ type: 'ref',
1276
+ ref: 'lex:com.atproto.repo.strongRef',
1277
+ },
1278
+ maxLength: 100,
866
1279
  },
867
1280
  metric: {
868
1281
  type: 'string',
@@ -876,7 +1289,7 @@ const schemaDict = {
876
1289
  },
877
1290
  value: {
878
1291
  type: 'string',
879
- description: 'The measured numeric value.',
1292
+ description: "The measured value as a numeric string (e.g. '1234.56')",
880
1293
  maxLength: 500,
881
1294
  },
882
1295
  startDate: {
@@ -887,7 +1300,7 @@ const schemaDict = {
887
1300
  endDate: {
888
1301
  type: 'string',
889
1302
  format: 'datetime',
890
- description: 'The end date and time when the measurement ended. If it was a one time measurement, the endDate should be equal to the startDate.',
1303
+ description: 'The end date and time when the measurement ended. For one-time measurements, this should equal the start date.',
891
1304
  },
892
1305
  locations: {
893
1306
  type: 'array',
@@ -919,7 +1332,7 @@ const schemaDict = {
919
1332
  },
920
1333
  measurers: {
921
1334
  type: 'array',
922
- description: 'DIDs of the entity (or entities) that measured this data',
1335
+ description: 'DIDs of the entities that performed this measurement',
923
1336
  items: {
924
1337
  type: 'ref',
925
1338
  ref: 'lex:app.certified.defs#did',
@@ -950,58 +1363,10 @@ const schemaDict = {
950
1363
  },
951
1364
  },
952
1365
  },
953
- OrgHypercertsClaimRights: {
954
- lexicon: 1,
955
- id: 'org.hypercerts.claim.rights',
956
- defs: {
957
- main: {
958
- type: 'record',
959
- 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.',
960
- key: 'tid',
961
- record: {
962
- type: 'object',
963
- required: [
964
- 'rightsName',
965
- 'rightsType',
966
- 'rightsDescription',
967
- 'createdAt',
968
- ],
969
- properties: {
970
- rightsName: {
971
- type: 'string',
972
- description: 'Full name of the rights',
973
- maxLength: 100,
974
- },
975
- rightsType: {
976
- type: 'string',
977
- description: 'Short rights identifier for easier search',
978
- maxLength: 10,
979
- },
980
- rightsDescription: {
981
- type: 'string',
982
- description: 'Description of the rights of this hypercert',
983
- },
984
- attachment: {
985
- type: 'union',
986
- refs: [
987
- 'lex:org.hypercerts.defs#uri',
988
- 'lex:org.hypercerts.defs#smallBlob',
989
- ],
990
- description: 'An attachment to define the rights further, e.g. a legal document.',
991
- },
992
- createdAt: {
993
- type: 'string',
994
- format: 'datetime',
995
- description: 'Client-declared timestamp when this record was originally created',
996
- },
997
- },
998
- },
999
- },
1000
- },
1001
- },
1002
1366
  OrgHypercertsDefs: {
1003
1367
  lexicon: 1,
1004
1368
  id: 'org.hypercerts.defs',
1369
+ description: 'Common type definitions used across all Hypercerts protocols.',
1005
1370
  defs: {
1006
1371
  uri: {
1007
1372
  type: 'object',
@@ -1011,7 +1376,6 @@ const schemaDict = {
1011
1376
  uri: {
1012
1377
  type: 'string',
1013
1378
  format: 'uri',
1014
- maxGraphemes: 1024,
1015
1379
  description: 'URI to external data',
1016
1380
  },
1017
1381
  },
@@ -1055,6 +1419,19 @@ const schemaDict = {
1055
1419
  },
1056
1420
  },
1057
1421
  },
1422
+ smallVideo: {
1423
+ type: 'object',
1424
+ required: ['video'],
1425
+ description: 'Object containing a small video',
1426
+ properties: {
1427
+ video: {
1428
+ type: 'blob',
1429
+ accept: ['video/mp4', 'video/webm'],
1430
+ maxSize: 20971520,
1431
+ description: 'Video (up to 20MB)',
1432
+ },
1433
+ },
1434
+ },
1058
1435
  largeImage: {
1059
1436
  type: 'object',
1060
1437
  required: ['image'],
@@ -1090,26 +1467,32 @@ const schemaDict = {
1090
1467
  to: {
1091
1468
  type: 'string',
1092
1469
  description: 'The recipient of the funds. Can be identified by DID or a clear-text name.',
1470
+ maxLength: 2048,
1093
1471
  },
1094
1472
  amount: {
1095
1473
  type: 'string',
1096
- description: 'Amount of funding received.',
1474
+ description: "Amount of funding received as a numeric string (e.g. '1000.50').",
1475
+ maxLength: 50,
1097
1476
  },
1098
1477
  currency: {
1099
1478
  type: 'string',
1100
1479
  description: 'Currency of the payment (e.g. EUR, USD, ETH).',
1480
+ maxLength: 10,
1101
1481
  },
1102
1482
  paymentRail: {
1103
1483
  type: 'string',
1104
1484
  description: 'How the funds were transferred (e.g. bank_transfer, credit_card, onchain, cash, check, payment_processor).',
1485
+ maxLength: 50,
1105
1486
  },
1106
1487
  paymentNetwork: {
1107
1488
  type: 'string',
1108
1489
  description: 'Optional network within the payment rail (e.g. arbitrum, ethereum, sepa, visa, paypal).',
1490
+ maxLength: 50,
1109
1491
  },
1110
1492
  transactionId: {
1111
1493
  type: 'string',
1112
1494
  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.',
1495
+ maxLength: 256,
1113
1496
  },
1114
1497
  for: {
1115
1498
  type: 'string',
@@ -1136,36 +1519,71 @@ const schemaDict = {
1136
1519
  },
1137
1520
  },
1138
1521
  },
1139
- OrgHypercertsHelperWorkScopeTag: {
1522
+ OrgHypercertsWorkscopeCel: {
1523
+ lexicon: 1,
1524
+ id: 'org.hypercerts.workscope.cel',
1525
+ defs: {
1526
+ main: {
1527
+ type: 'object',
1528
+ 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.",
1529
+ required: ['expression', 'usedTags', 'version', 'createdAt'],
1530
+ properties: {
1531
+ expression: {
1532
+ type: 'string',
1533
+ maxLength: 10000,
1534
+ maxGraphemes: 5000,
1535
+ description: "A CEL expression encoding the work scope conditions. Example: scope.hasAll(['mangrove_restoration', 'environmental_education']) && location.country == 'KE'",
1536
+ },
1537
+ usedTags: {
1538
+ type: 'array',
1539
+ items: {
1540
+ type: 'ref',
1541
+ ref: 'lex:com.atproto.repo.strongRef',
1542
+ },
1543
+ maxLength: 100,
1544
+ 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.',
1545
+ },
1546
+ version: {
1547
+ type: 'string',
1548
+ maxLength: 16,
1549
+ knownValues: ['v1'],
1550
+ description: 'CEL context schema version.',
1551
+ },
1552
+ createdAt: {
1553
+ type: 'string',
1554
+ format: 'datetime',
1555
+ description: 'Client-declared timestamp when this expression was originally created.',
1556
+ },
1557
+ },
1558
+ },
1559
+ },
1560
+ },
1561
+ OrgHypercertsWorkscopeTag: {
1140
1562
  lexicon: 1,
1141
- id: 'org.hypercerts.helper.workScopeTag',
1563
+ id: 'org.hypercerts.workscope.tag',
1142
1564
  defs: {
1143
1565
  main: {
1144
1566
  type: 'record',
1145
- description: 'A reusable scope atom for work scope logic expressions. Scopes can represent topics, languages, domains, deliverables, methods, regions, tags, or other categorical labels.',
1567
+ 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.',
1146
1568
  key: 'tid',
1147
1569
  record: {
1148
1570
  type: 'object',
1149
- required: ['createdAt', 'key', 'label'],
1571
+ required: ['key', 'name', 'createdAt'],
1150
1572
  properties: {
1151
- createdAt: {
1152
- type: 'string',
1153
- format: 'datetime',
1154
- description: 'Client-declared timestamp when this record was originally created',
1155
- },
1156
1573
  key: {
1157
1574
  type: 'string',
1158
- description: "Lowercase, hyphenated machine-readable key for this scope (e.g., 'ipfs', 'go-lang', 'filecoin').",
1575
+ description: "Lowercase, underscore-separated machine-readable key for this scope (e.g., 'mangrove_restoration', 'biodiversity_monitoring'). Used as the canonical identifier in CEL expressions.",
1159
1576
  maxLength: 120,
1160
1577
  },
1161
- label: {
1578
+ name: {
1162
1579
  type: 'string',
1163
- description: 'Human-readable label for this scope.',
1580
+ description: 'Human-readable name for this scope.',
1164
1581
  maxLength: 200,
1165
1582
  },
1166
- kind: {
1583
+ category: {
1167
1584
  type: 'string',
1168
- description: 'Category type of this scope. Recommended values: topic, language, domain, method, tag.',
1585
+ description: 'Category type of this scope.',
1586
+ knownValues: ['topic', 'language', 'domain', 'method'],
1169
1587
  maxLength: 50,
1170
1588
  },
1171
1589
  description: {
@@ -1177,7 +1595,18 @@ const schemaDict = {
1177
1595
  parent: {
1178
1596
  type: 'ref',
1179
1597
  ref: 'lex:com.atproto.repo.strongRef',
1180
- description: 'Optional strong reference to a parent scope record for taxonomy/hierarchy support.',
1598
+ 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.',
1599
+ },
1600
+ status: {
1601
+ type: 'string',
1602
+ description: 'Lifecycle status of this tag. Communities propose tags, curators accept them, deprecated tags point to replacements via supersededBy.',
1603
+ knownValues: ['proposed', 'accepted', 'deprecated'],
1604
+ maxLength: 20,
1605
+ },
1606
+ supersededBy: {
1607
+ type: 'ref',
1608
+ ref: 'lex:com.atproto.repo.strongRef',
1609
+ 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.",
1181
1610
  },
1182
1611
  aliases: {
1183
1612
  type: 'array',
@@ -1186,15 +1615,30 @@ const schemaDict = {
1186
1615
  maxLength: 200,
1187
1616
  },
1188
1617
  maxLength: 50,
1189
- description: 'Optional array of alternative names or identifiers for this scope.',
1618
+ 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.',
1619
+ },
1620
+ sameAs: {
1621
+ type: 'array',
1622
+ items: {
1623
+ type: 'string',
1624
+ format: 'uri',
1625
+ maxLength: 2048,
1626
+ },
1627
+ maxLength: 20,
1628
+ 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.',
1190
1629
  },
1191
- externalReference: {
1630
+ referenceDocument: {
1192
1631
  type: 'union',
1193
1632
  refs: [
1194
1633
  'lex:org.hypercerts.defs#uri',
1195
1634
  'lex:org.hypercerts.defs#smallBlob',
1196
1635
  ],
1197
- description: 'Optional external reference for this scope as a URI or blob.',
1636
+ description: 'Link to a governance or reference document where this work scope tag is defined and further explained.',
1637
+ },
1638
+ createdAt: {
1639
+ type: 'string',
1640
+ format: 'datetime',
1641
+ description: 'Client-declared timestamp when this record was originally created.',
1198
1642
  },
1199
1643
  },
1200
1644
  },
@@ -1213,6 +1657,7 @@ function validate(v, id, hash, requiredType) {
1213
1657
  };
1214
1658
  }
1215
1659
  const ids = {
1660
+ AppCertifiedActorOrganization: 'app.certified.actor.organization',
1216
1661
  AppCertifiedActorProfile: 'app.certified.actor.profile',
1217
1662
  AppCertifiedBadgeAward: 'app.certified.badge.award',
1218
1663
  AppCertifiedBadgeDefinition: 'app.certified.badge.definition',
@@ -1220,17 +1665,21 @@ const ids = {
1220
1665
  AppCertifiedDefs: 'app.certified.defs',
1221
1666
  AppCertifiedLocation: 'app.certified.location',
1222
1667
  ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef',
1668
+ OrgHyperboardsBoard: 'org.hyperboards.board',
1669
+ OrgHyperboardsDisplayProfile: 'org.hyperboards.displayProfile',
1223
1670
  OrgHypercertsClaimActivity: 'org.hypercerts.claim.activity',
1224
- OrgHypercertsClaimAttachment: 'org.hypercerts.claim.attachment',
1225
- OrgHypercertsClaimCollection: 'org.hypercerts.claim.collection',
1226
- OrgHypercertsClaimContributionDetails: 'org.hypercerts.claim.contributionDetails',
1671
+ OrgHypercertsClaimContribution: 'org.hypercerts.claim.contribution',
1227
1672
  OrgHypercertsClaimContributorInformation: 'org.hypercerts.claim.contributorInformation',
1228
- OrgHypercertsClaimEvaluation: 'org.hypercerts.claim.evaluation',
1229
- OrgHypercertsClaimMeasurement: 'org.hypercerts.claim.measurement',
1230
1673
  OrgHypercertsClaimRights: 'org.hypercerts.claim.rights',
1674
+ OrgHypercertsCollection: 'org.hypercerts.collection',
1675
+ OrgHypercertsContextAcknowledgement: 'org.hypercerts.context.acknowledgement',
1676
+ OrgHypercertsContextAttachment: 'org.hypercerts.context.attachment',
1677
+ OrgHypercertsContextEvaluation: 'org.hypercerts.context.evaluation',
1678
+ OrgHypercertsContextMeasurement: 'org.hypercerts.context.measurement',
1231
1679
  OrgHypercertsDefs: 'org.hypercerts.defs',
1232
1680
  OrgHypercertsFundingReceipt: 'org.hypercerts.funding.receipt',
1233
- OrgHypercertsHelperWorkScopeTag: 'org.hypercerts.helper.workScopeTag',
1681
+ OrgHypercertsWorkscopeCel: 'org.hypercerts.workscope.cel',
1682
+ OrgHypercertsWorkscopeTag: 'org.hypercerts.workscope.tag',
1234
1683
  };
1235
1684
 
1236
1685
  export { ids, lexicons, schemaDict, schemas, validate };