@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
@@ -0,0 +1,36 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import { type ValidationResult } from '@atproto/lexicon';
5
+ import { type $Typed } from '../../../../util';
6
+ import type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.js';
7
+ import type * as OrgHypercertsDefs from '../defs.js';
8
+ export interface Main {
9
+ $type: 'org.hypercerts.workscope.tag';
10
+ /** Lowercase, underscore-separated machine-readable key for this scope (e.g., 'mangrove_restoration', 'biodiversity_monitoring'). Used as the canonical identifier in CEL expressions. */
11
+ key: string;
12
+ /** Human-readable name for this scope. */
13
+ name: string;
14
+ /** Category type of this scope. */
15
+ category?: 'topic' | 'language' | 'domain' | 'method' | (string & {});
16
+ /** Optional longer description of this scope. */
17
+ description?: string;
18
+ parent?: ComAtprotoRepoStrongRef.Main;
19
+ /** Lifecycle status of this tag. Communities propose tags, curators accept them, deprecated tags point to replacements via supersededBy. */
20
+ status?: 'proposed' | 'accepted' | 'deprecated' | (string & {});
21
+ supersededBy?: ComAtprotoRepoStrongRef.Main;
22
+ /** 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. */
23
+ aliases?: string[];
24
+ /** URIs to semantically equivalent concepts in external ontologies or taxonomies (e.g., Wikidata QIDs, ENVO terms, SDG targets). Used for interoperability, not as documentation. */
25
+ sameAs?: string[];
26
+ referenceDocument?: $Typed<OrgHypercertsDefs.Uri> | $Typed<OrgHypercertsDefs.SmallBlob> | {
27
+ $type: string;
28
+ };
29
+ /** Client-declared timestamp when this record was originally created. */
30
+ createdAt: string;
31
+ [k: string]: unknown;
32
+ }
33
+ export declare function isMain<V>(v: V): v is import("../../../../util").$TypedObject<V, "org.hypercerts.workscope.tag", "main">;
34
+ export declare function validateMain<V>(v: V): ValidationResult<Main & V>;
35
+ export { type Main as Record, isMain as isRecord, validateMain as validateRecord, };
36
+ //# sourceMappingURL=tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../../generated/types/org/hypercerts/workscope/tag.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAGjE,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,KAAK,uBAAuB,MAAM,wCAAwC,CAAA;AACtF,OAAO,KAAK,KAAK,iBAAiB,MAAM,YAAY,CAAA;AAMpD,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,8BAA8B,CAAA;IACrC,0LAA0L;IAC1L,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACrE,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,uBAAuB,CAAC,IAAI,CAAA;IACrC,4IAA4I;IAC5I,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAC/D,YAAY,CAAC,EAAE,uBAAuB,CAAC,IAAI,CAAA;IAC3C,6LAA6L;IAC7L,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,qLAAqL;IACrL,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,iBAAiB,CAAC,EACd,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAC7B,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,GACnC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACrB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAA;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,2FAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC;AAED,OAAO,EACL,KAAK,IAAI,IAAI,MAAM,EACnB,MAAM,IAAI,QAAQ,EAClB,YAAY,IAAI,cAAc,GAC/B,CAAA"}
@@ -0,0 +1,70 @@
1
+ {
2
+ "lexicon": 1,
3
+ "id": "app.certified.actor.organization",
4
+ "defs": {
5
+ "main": {
6
+ "type": "record",
7
+ "description": "Extended metadata for an organization actor. Complements the base actor profile with organization-specific fields like legal structure and reference links.",
8
+ "key": "literal:self",
9
+ "record": {
10
+ "type": "object",
11
+ "required": ["createdAt"],
12
+ "properties": {
13
+ "organizationType": {
14
+ "type": "array",
15
+ "description": "Legal or operational structures of the organization (e.g. 'nonprofit', 'ngo', 'government', 'social-enterprise', 'cooperative').",
16
+ "items": {
17
+ "type": "string",
18
+ "maxLength": 128,
19
+ "maxGraphemes": 100
20
+ },
21
+ "maxLength": 10
22
+ },
23
+ "urls": {
24
+ "type": "array",
25
+ "description": "Additional reference URLs (social media profiles, contact pages, donation links, etc.) with a display label for each URL.",
26
+ "items": {
27
+ "type": "ref",
28
+ "ref": "#urlItem"
29
+ }
30
+ },
31
+ "location": {
32
+ "type": "ref",
33
+ "ref": "com.atproto.repo.strongRef",
34
+ "description": "A strong reference to the location where the organization is based. The record referenced must conform with the lexicon app.certified.location."
35
+ },
36
+ "foundedDate": {
37
+ "type": "string",
38
+ "format": "datetime",
39
+ "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."
40
+ },
41
+ "createdAt": {
42
+ "type": "string",
43
+ "format": "datetime",
44
+ "description": "Client-declared timestamp when this record was originally created."
45
+ }
46
+ }
47
+ }
48
+ },
49
+ "urlItem": {
50
+ "type": "object",
51
+ "description": "A labeled URL reference.",
52
+ "required": ["url"],
53
+ "properties": {
54
+ "url": {
55
+ "type": "string",
56
+ "format": "uri",
57
+ "description": "The URL.",
58
+ "maxLength": 10000,
59
+ "maxGraphemes": 2048
60
+ },
61
+ "label": {
62
+ "type": "string",
63
+ "description": "Optional human-readable label for this URL (e.g. 'Support page', 'Donation page').",
64
+ "maxLength": 640,
65
+ "maxGraphemes": 64
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
@@ -4,13 +4,15 @@
4
4
  "defs": {
5
5
  "main": {
6
6
  "type": "record",
7
- "description": "A declaration of a Hypercert account profile.",
7
+ "description": "A declaration of a Certified account profile.",
8
8
  "key": "literal:self",
9
9
  "record": {
10
10
  "type": "object",
11
+ "required": ["createdAt"],
11
12
  "properties": {
12
13
  "displayName": {
13
14
  "type": "string",
15
+ "description": "Display name for the account",
14
16
  "maxGraphemes": 64,
15
17
  "maxLength": 640
16
18
  },
@@ -26,7 +28,11 @@
26
28
  "maxGraphemes": 20,
27
29
  "maxLength": 200
28
30
  },
29
- "website": { "type": "string", "format": "uri" },
31
+ "website": {
32
+ "type": "string",
33
+ "format": "uri",
34
+ "description": "Account website URL"
35
+ },
30
36
  "avatar": {
31
37
  "type": "union",
32
38
  "refs": [
@@ -43,7 +49,11 @@
43
49
  ],
44
50
  "description": "Larger horizontal image to display behind profile view."
45
51
  },
46
- "createdAt": { "type": "string", "format": "datetime" }
52
+ "createdAt": {
53
+ "type": "string",
54
+ "format": "datetime",
55
+ "description": "Client-declared timestamp when this record was originally created"
56
+ }
47
57
  }
48
58
  }
49
59
  }
@@ -22,7 +22,14 @@
22
22
  },
23
23
  "note": {
24
24
  "type": "string",
25
- "description": "Optional statement explaining the reason for this badge award."
25
+ "description": "Optional statement explaining the reason for this badge award.",
26
+ "maxLength": 500
27
+ },
28
+ "url": {
29
+ "type": "string",
30
+ "format": "uri",
31
+ "description": "Optional URL the badge award links to.",
32
+ "maxLength": 2048
26
33
  },
27
34
  "createdAt": {
28
35
  "type": "string",
@@ -12,11 +12,13 @@
12
12
  "properties": {
13
13
  "badgeType": {
14
14
  "type": "string",
15
- "description": "Category of the badge (e.g. endorsement, participation, affiliation)."
15
+ "description": "Category of the badge (e.g. endorsement, participation, affiliation).",
16
+ "maxLength": 100
16
17
  },
17
18
  "title": {
18
19
  "type": "string",
19
- "description": "Human-readable title of the badge."
20
+ "description": "Human-readable title of the badge.",
21
+ "maxLength": 256
20
22
  },
21
23
  "icon": {
22
24
  "type": "blob",
@@ -31,11 +33,14 @@
31
33
  },
32
34
  "description": {
33
35
  "type": "string",
34
- "description": "Optional short statement describing what the badge represents."
36
+ "description": "Optional short statement describing what the badge represents.",
37
+ "maxLength": 5000,
38
+ "maxGraphemes": 500
35
39
  },
36
40
  "allowedIssuers": {
37
41
  "type": "array",
38
42
  "description": "Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it.",
43
+ "maxLength": 100,
39
44
  "items": {
40
45
  "type": "ref",
41
46
  "ref": "app.certified.defs#did"
@@ -17,12 +17,13 @@
17
17
  },
18
18
  "response": {
19
19
  "type": "string",
20
- "enum": ["accepted", "rejected"],
20
+ "knownValues": ["accepted", "rejected"],
21
21
  "description": "The recipient’s response for the badge (accepted or rejected)."
22
22
  },
23
23
  "weight": {
24
24
  "type": "string",
25
- "description": "Optional relative weight for accepted badges, assigned by the recipient."
25
+ "description": "Optional relative weight for accepted badges, assigned by the recipient.",
26
+ "maxLength": 50
26
27
  },
27
28
  "createdAt": {
28
29
  "type": "string",
@@ -29,8 +29,17 @@
29
29
  },
30
30
  "locationType": {
31
31
  "type": "string",
32
- "description": "An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point)",
33
- "knownValues": ["coordinate-decimal", "geojson-point"],
32
+ "description": "An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point). See the Location Protocol spec for the full registry: https://spec.decentralizedgeo.org/specification/location-types/#location-type-registry",
33
+ "knownValues": [
34
+ "coordinate-decimal",
35
+ "geojson-point",
36
+ "geojson",
37
+ "h3",
38
+ "geohash",
39
+ "wkt",
40
+ "address",
41
+ "scaledCoordinates"
42
+ ],
34
43
  "maxLength": 20
35
44
  },
36
45
  "location": {
@@ -44,13 +53,13 @@
44
53
  },
45
54
  "name": {
46
55
  "type": "string",
47
- "description": "Optional name for this location",
56
+ "description": "Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area')",
48
57
  "maxLength": 1000,
49
58
  "maxGraphemes": 100
50
59
  },
51
60
  "description": {
52
61
  "type": "string",
53
- "description": "Optional description for this location",
62
+ "description": "Additional context about this location, such as its significance to the work or specific boundaries",
54
63
  "maxLength": 2000,
55
64
  "maxGraphemes": 500
56
65
  },
@@ -0,0 +1,152 @@
1
+ {
2
+ "lexicon": 1,
3
+ "id": "org.hyperboards.board",
4
+ "defs": {
5
+ "main": {
6
+ "type": "record",
7
+ "description": "Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS.",
8
+ "key": "tid",
9
+ "record": {
10
+ "type": "object",
11
+ "required": ["subject", "createdAt"],
12
+ "properties": {
13
+ "subject": {
14
+ "type": "ref",
15
+ "ref": "com.atproto.repo.strongRef",
16
+ "description": "Reference to the org.hypercerts.claim.activity or org.hypercerts.claim.collection this board visualizes."
17
+ },
18
+ "config": {
19
+ "type": "ref",
20
+ "ref": "#boardConfig",
21
+ "description": "Board-level visual configuration (background, colors, aspect ratio)."
22
+ },
23
+ "contributorConfigs": {
24
+ "type": "array",
25
+ "description": "Per-contributor configuration entries for this board.",
26
+ "maxLength": 1000,
27
+ "items": {
28
+ "type": "ref",
29
+ "ref": "#contributorConfig"
30
+ }
31
+ },
32
+ "createdAt": {
33
+ "type": "string",
34
+ "format": "datetime",
35
+ "description": "Client-declared timestamp when this record was originally created."
36
+ }
37
+ }
38
+ }
39
+ },
40
+ "boardConfig": {
41
+ "type": "object",
42
+ "description": "Visual configuration for a hyperboard's background, colors, and layout.",
43
+ "properties": {
44
+ "backgroundType": {
45
+ "type": "string",
46
+ "description": "Type of background content.",
47
+ "knownValues": ["image", "iframe"],
48
+ "maxLength": 10
49
+ },
50
+ "backgroundImage": {
51
+ "type": "union",
52
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallImage"],
53
+ "description": "Background image as a URI or image blob."
54
+ },
55
+ "backgroundIframeUrl": {
56
+ "type": "string",
57
+ "format": "uri",
58
+ "description": "URI of the background iframe.",
59
+ "maxLength": 2048
60
+ },
61
+ "backgroundGrayscale": {
62
+ "type": "boolean",
63
+ "description": "Whether the background is rendered in grayscale. Default: true."
64
+ },
65
+ "backgroundOpacity": {
66
+ "type": "integer",
67
+ "description": "Background opacity as a percentage (0–100).",
68
+ "minimum": 0,
69
+ "maximum": 100
70
+ },
71
+ "backgroundColor": {
72
+ "type": "string",
73
+ "description": "Background color as a hex string (e.g. '#ffffff').",
74
+ "maxLength": 20
75
+ },
76
+ "borderColor": {
77
+ "type": "string",
78
+ "description": "Border color as a hex string (e.g. '#000000').",
79
+ "maxLength": 20
80
+ },
81
+ "grayscaleImages": {
82
+ "type": "boolean",
83
+ "description": "Whether contributor images are rendered in grayscale. Default: false."
84
+ },
85
+ "imageShape": {
86
+ "type": "string",
87
+ "description": "Shape used to crop contributor images on this board.",
88
+ "knownValues": ["circular", "square"],
89
+ "maxLength": 20
90
+ },
91
+ "aspectRatio": {
92
+ "type": "string",
93
+ "description": "Display aspect ratio of the board.",
94
+ "knownValues": ["16:9", "4:3", "1:1"],
95
+ "maxLength": 10
96
+ }
97
+ }
98
+ },
99
+ "contributorConfig": {
100
+ "type": "object",
101
+ "description": "Configuration for a specific contributor within a board. Values serve as fallbacks when the contributor has not defined them on their profile. It can also be used to override contributor settings on this board without changing their global profile.",
102
+ "required": ["contributor"],
103
+ "properties": {
104
+ "contributor": {
105
+ "type": "union",
106
+ "refs": [
107
+ "com.atproto.repo.strongRef",
108
+ "org.hypercerts.claim.activity#contributorIdentity"
109
+ ],
110
+ "description": "Identifies the contributor being styled. A strong reference to an org.hypercerts.claim.contributorInformation record, or a contributorIdentity (DID or identifier string) for contributors without a dedicated record."
111
+ },
112
+ "override": {
113
+ "type": "boolean",
114
+ "description": "When true, these values take precedence over the contributor's own profile and display settings. When false or omitted, they are only used as fallbacks if the contributor has not set their own settings."
115
+ },
116
+ "displayName": {
117
+ "type": "string",
118
+ "description": "Display name for this contributor on this board.",
119
+ "maxLength": 640,
120
+ "maxGraphemes": 64
121
+ },
122
+ "image": {
123
+ "type": "union",
124
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallImage"],
125
+ "description": "Avatar or face image for this contributor on this board, as a URI or image blob."
126
+ },
127
+ "video": {
128
+ "type": "union",
129
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallVideo"],
130
+ "description": "Video for this contributor, as a URI (embed/direct link) or uploaded video blob."
131
+ },
132
+ "hoverImage": {
133
+ "type": "union",
134
+ "refs": ["org.hypercerts.defs#uri", "org.hypercerts.defs#smallImage"],
135
+ "description": "Image overlay shown when hovering over this contributor, as a URI or image blob."
136
+ },
137
+ "hoverIframeUrl": {
138
+ "type": "string",
139
+ "format": "uri",
140
+ "description": "Iframe overlay shown when hovering over this contributor.",
141
+ "maxLength": 2048
142
+ },
143
+ "url": {
144
+ "type": "string",
145
+ "format": "uri",
146
+ "description": "Click-through link URL for this contributor.",
147
+ "maxLength": 2048
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "lexicon": 1,
3
+ "id": "org.hyperboards.displayProfile",
4
+ "defs": {
5
+ "main": {
6
+ "type": "record",
7
+ "description": "User-declared visual presentation defaults for how a contributor appears on hyperboards. Stored in the contributor's own PDS and reusable across multiple boards.",
8
+ "key": "literal:self",
9
+ "record": {
10
+ "type": "object",
11
+ "required": ["createdAt"],
12
+ "properties": {
13
+ "displayName": {
14
+ "type": "string",
15
+ "description": "Display name override for this user on hyperboards.",
16
+ "maxLength": 640,
17
+ "maxGraphemes": 64
18
+ },
19
+ "image": {
20
+ "type": "union",
21
+ "refs": [
22
+ "org.hypercerts.defs#uri",
23
+ "org.hypercerts.defs#smallImage"
24
+ ],
25
+ "description": "Avatar or face image override for this user on hyperboards, as a URI or image blob."
26
+ },
27
+ "video": {
28
+ "type": "union",
29
+ "refs": [
30
+ "org.hypercerts.defs#uri",
31
+ "org.hypercerts.defs#smallVideo"
32
+ ],
33
+ "description": "Default video for this user across boards, as a URI (embed/direct link) or uploaded video blob."
34
+ },
35
+ "hoverImage": {
36
+ "type": "union",
37
+ "refs": [
38
+ "org.hypercerts.defs#uri",
39
+ "org.hypercerts.defs#smallImage"
40
+ ],
41
+ "description": "Default hover image for this user across boards, as a URI or image blob."
42
+ },
43
+ "hoverIframeUrl": {
44
+ "type": "string",
45
+ "format": "uri",
46
+ "description": "Default hover iframe URL for this user across boards.",
47
+ "maxLength": 2048
48
+ },
49
+ "url": {
50
+ "type": "string",
51
+ "format": "uri",
52
+ "description": "Default click-through link URL for this user across boards.",
53
+ "maxLength": 2048
54
+ },
55
+ "createdAt": {
56
+ "type": "string",
57
+ "format": "datetime",
58
+ "description": "Client-declared timestamp when this record was originally created."
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
@@ -12,7 +12,7 @@
12
12
  "properties": {
13
13
  "title": {
14
14
  "type": "string",
15
- "description": "Title of the hypercert.",
15
+ "description": "Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024')",
16
16
  "maxLength": 256
17
17
  },
18
18
  "shortDescription": {
@@ -30,18 +30,9 @@
30
30
  }
31
31
  },
32
32
  "description": {
33
- "type": "string",
34
- "description": "Optional longer description of this activity claim, including context or interpretation. Rich text annotations may be provided via `descriptionFacets`.",
35
- "maxLength": 30000,
36
- "maxGraphemes": 3000
37
- },
38
- "descriptionFacets": {
39
- "type": "array",
40
- "description": "Rich text annotations for `description` (mentions, URLs, hashtags, etc).",
41
- "items": {
42
- "type": "ref",
43
- "ref": "app.bsky.richtext.facet"
44
- }
33
+ "type": "ref",
34
+ "ref": "pub.leaflet.pages.linearDocument#main",
35
+ "description": "Rich-text description, represented as a Leaflet linear document."
45
36
  },
46
37
  "image": {
47
38
  "type": "union",
@@ -51,10 +42,19 @@
51
42
  ],
52
43
  "description": "The hypercert visual representation as a URI or image blob."
53
44
  },
45
+ "contributors": {
46
+ "type": "array",
47
+ "description": "An array of contributor objects, each containing contributor information, weight, and contribution details.",
48
+ "maxLength": 1000,
49
+ "items": {
50
+ "type": "ref",
51
+ "ref": "#contributor"
52
+ }
53
+ },
54
54
  "workScope": {
55
55
  "type": "union",
56
- "refs": ["com.atproto.repo.strongRef", "#workScopeString"],
57
- "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."
56
+ "refs": ["org.hypercerts.workscope.cel", "#workScopeString"],
57
+ "description": "Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes."
58
58
  },
59
59
  "startDate": {
60
60
  "type": "string",
@@ -66,12 +66,13 @@
66
66
  "format": "datetime",
67
67
  "description": "When the work ended"
68
68
  },
69
- "contributors": {
69
+ "locations": {
70
70
  "type": "array",
71
- "description": "An array of contributor objects, each containing contributor information, weight, and contribution details.",
71
+ "description": "An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.",
72
+ "maxLength": 1000,
72
73
  "items": {
73
74
  "type": "ref",
74
- "ref": "#contributor"
75
+ "ref": "com.atproto.repo.strongRef"
75
76
  }
76
77
  },
77
78
  "rights": {
@@ -79,14 +80,6 @@
79
80
  "ref": "com.atproto.repo.strongRef",
80
81
  "description": "A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights."
81
82
  },
82
- "locations": {
83
- "type": "array",
84
- "description": "An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location.",
85
- "items": {
86
- "type": "ref",
87
- "ref": "com.atproto.repo.strongRef"
88
- }
89
- },
90
83
  "createdAt": {
91
84
  "type": "string",
92
85
  "format": "datetime",
@@ -102,16 +95,17 @@
102
95
  "contributorIdentity": {
103
96
  "type": "union",
104
97
  "refs": ["#contributorIdentity", "com.atproto.repo.strongRef"],
105
- "description": "Contributor identity as a string (DID or identifier) via org.hypercerts.claim.activity#contributorIdentity, or a strong reference to a contributor information record."
98
+ "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."
106
99
  },
107
100
  "contributionWeight": {
108
101
  "type": "string",
109
- "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."
102
+ "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.",
103
+ "maxLength": 100
110
104
  },
111
105
  "contributionDetails": {
112
106
  "type": "union",
113
107
  "refs": ["#contributorRole", "com.atproto.repo.strongRef"],
114
- "description": "Contribution details as a string via org.hypercerts.claim.activity#contributorRole, or a strong reference to a contribution details record."
108
+ "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."
115
109
  }
116
110
  }
117
111
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "lexicon": 1,
3
- "id": "org.hypercerts.claim.contributionDetails",
3
+ "id": "org.hypercerts.claim.contribution",
4
4
  "defs": {
5
5
  "main": {
6
6
  "type": "record",
@@ -17,19 +17,19 @@
17
17
  },
18
18
  "contributionDescription": {
19
19
  "type": "string",
20
- "description": "What the contribution concretely was.",
20
+ "description": "Description of what the contribution concretely involved.",
21
21
  "maxLength": 10000,
22
22
  "maxGraphemes": 1000
23
23
  },
24
24
  "startDate": {
25
25
  "type": "string",
26
26
  "format": "datetime",
27
- "description": "When this contribution started. This should be a subset of the hypercert timeframe."
27
+ "description": "When this contribution started. Should fall within the parent hypercert's timeframe."
28
28
  },
29
29
  "endDate": {
30
30
  "type": "string",
31
31
  "format": "datetime",
32
- "description": "When this contribution finished. This should be a subset of the hypercert timeframe."
32
+ "description": "When this contribution finished. Should fall within the parent hypercert's timeframe."
33
33
  },
34
34
  "createdAt": {
35
35
  "type": "string",
@@ -12,11 +12,12 @@
12
12
  "properties": {
13
13
  "identifier": {
14
14
  "type": "string",
15
- "description": "DID or a URI to a social profile of the contributor."
15
+ "description": "DID (did:plc:...) or URI to a social profile of the contributor.",
16
+ "maxLength": 2048
16
17
  },
17
18
  "displayName": {
18
19
  "type": "string",
19
- "description": "Display name of the contributor.",
20
+ "description": "Human-readable name for the contributor as it should appear in UI.",
20
21
  "maxLength": 100
21
22
  },
22
23
  "image": {
@@ -17,17 +17,19 @@
17
17
  "properties": {
18
18
  "rightsName": {
19
19
  "type": "string",
20
- "description": "Full name of the rights",
20
+ "description": "Human-readable name for these rights (e.g. 'All Rights Reserved', 'CC BY-SA 4.0')",
21
21
  "maxLength": 100
22
22
  },
23
23
  "rightsType": {
24
24
  "type": "string",
25
- "description": "Short rights identifier for easier search",
25
+ "description": "Short identifier code for this rights type (e.g. 'ARR', 'CC-BY-SA') to facilitate filtering and search",
26
26
  "maxLength": 10
27
27
  },
28
28
  "rightsDescription": {
29
29
  "type": "string",
30
- "description": "Description of the rights of this hypercert"
30
+ "description": "Detailed explanation of the rights holders' permissions, restrictions, and conditions",
31
+ "maxLength": 10000,
32
+ "maxGraphemes": 1000
31
33
  },
32
34
  "attachment": {
33
35
  "type": "union",