Activity Claim
org.hypercerts.claim.activity
Overview#
An activity claim, also called a hypercert, describes a piece of work: what is being done or was done, by whom, when, and where. It is the record other records point to. Evidence, measurements, evaluations, funding receipts, and collections all refer to an activity to say which work they concern.
The record is the publisher's account of the work. It becomes more useful as others add evidence and assessments, but publishing it does not make its claims true. For the concepts behind it, see Activity Claims in the Guide.
How it's used#
- A project describes its work. A team publishes an activity for each distinct piece of work, such as one installation phase or six months of library maintenance, and groups related activities into a project with a collection.
- Others add context. Attachments, measurements, and evaluations published by the team or by other accounts link to the activity with a strong reference, so they stay tied to the version they concern.
- Funders record support. A funding receipt can name the activity it supported.
- Contributors are credited. The
contributorsarray names the people or organizations involved, with optional weights and roles, either inline or through contribution records.
Only title, shortDescription, and createdAt are required. Start with those and add detail when it answers a real question for your users.
Schema#
Record key: any · Lexicon version: 1.6.0 · View the schema
Required properties#
| Property | Type | Description |
|---|---|---|
title | string | Display title summarizing the impact work (e.g. 'Reforestation in Amazon Basin 2024') maxLength: 256 |
shortDescription | string | Short summary of this activity claim, suitable for previews and list views. Rich text annotations may be provided via shortDescriptionFacets. maxLength: 3000 maxGraphemes: 300 |
createdAt | string (datetime) | Client-declared timestamp when this record was originally created |
Optional properties#
| Property | Type | Description |
|---|---|---|
shortDescriptionFacets | array of richtext facet | Rich text annotations for shortDescription (mentions, URLs, hashtags, etc). |
description | union: org.hypercerts.defs#descriptionString, Leaflet linear document, strongRef | Long-form description of the activity. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record. |
langs | array of string (language) | Human language(s) of this record's text fields, as BCP-47 language tags (e.g. 'es', 'pt-BR'); up to three for mixed-language text. Set by the writing app from the text the author wrote, with the author able to correct it; never from the interface language or a profile preference alone. A hint for readers, not a guarantee: consumers must not hide a record because it lacks this field. maxItems: 3 |
image | union: org.hypercerts.defs#uri, org.hypercerts.defs#smallImage | The hypercert visual representation as a URI or image blob. |
contributors | array of contributor | An array of contributor objects, each containing contributor information, weight, and contribution details. |
workScope | union: org.hypercerts.workscope.cel, workScopeString | Work scope definition. A CEL expression for structured, machine-evaluable scopes or a free-form string for simple and legacy scopes. |
startDate | string (datetime) | When the work began |
endDate | string (datetime) | When the work ended |
locations | array of strongRef → app.certified.location | An array of strong references to the location where activity was performed. The record referenced must conform with the lexicon app.certified.location. maxItems: 1000 |
rights | strongRef → org.hypercerts.claim.rights | A strong reference to the rights that this hypercert has. The record referenced must conform with the lexicon org.hypercerts.claim.rights. |
signatures | app.certified.signature.defs#list | Optional cryptographic signatures attesting to this record's content. |
Definitions#
contributor
A contributor to the activity, with identity, weight, and contribution details.
| Property | Type | Required | Description |
|---|---|---|---|
contributorIdentity | union: contributorIdentity, strongRef | Yes | 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. |
contributionWeight | string | No | 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. maxLength: 100 |
contributionDetails | union: contributorRole, strongRef | No | 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. |
contributorIdentity
Contributor information as a string (DID or identifier).
| Property | Type | Required | Description |
|---|---|---|---|
identity | string | Yes | The contributor identity string (DID or identifier). maxLength: 1000 maxGraphemes: 100 |
contributorRole
Contribution details as a string.
| Property | Type | Required | Description |
|---|---|---|---|
role | string | Yes | The contribution role or details. maxLength: 1000 maxGraphemes: 100 |
workScopeString
A free-form string describing the work scope for simple or legacy scopes.
| Property | Type | Required | Description |
|---|---|---|---|
scope | string | Yes | The work scope description string. maxLength: 10000 maxGraphemes: 1000 |
Example#
A community energy project describing the installation phase of its solar array:
{
"$type": "org.hypercerts.claim.activity",
"title": "Solar array installation, phase 1",
"shortDescription": "Installation of a 40 kW community-owned solar array on the village hall roof.",
"description": {
"$type": "org.hypercerts.defs#descriptionString",
"value": "Phase 1 covers design, permits, and installation. Maintenance is described in a separate activity."
},
"contributors": [
{
"contributorIdentity": {
"$type": "org.hypercerts.claim.activity#contributorIdentity",
"identity": "did:plc:4yyb5gyoxl3sqdlqrvuxshkp"
},
"contributionWeight": "3",
"contributionDetails": {
"$type": "org.hypercerts.claim.activity#contributorRole",
"role": "Project lead"
}
},
{
"contributorIdentity": {
"$type": "org.hypercerts.claim.activity#contributorIdentity",
"identity": "did:plc:ewvi7nxzyoun6zhxrhs64oiz"
},
"contributionWeight": "1",
"contributionDetails": {
"$type": "org.hypercerts.claim.activity#contributorRole",
"role": "Electrical installation"
}
}
],
"workScope": {
"$type": "org.hypercerts.claim.activity#workScopeString",
"scope": "Design, permitting, and installation of the rooftop array. Excludes ongoing maintenance."
},
"startDate": "2026-03-01T00:00:00.000Z",
"endDate": "2026-06-30T00:00:00.000Z",
"locations": [
{
"uri": "at://did:plc:4yyb5gyoxl3sqdlqrvuxshkp/app.certified.location/3lx2k7p4hvc2a",
"cid": "bafyreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy"
}
],
"createdAt": "2026-07-02T09:15:00.000Z"
}
Rules and best practices#
- Say whether the work is planned, ongoing, or completed. The schema has no status field, so make it clear in the title, description, and dates. A plan and a report of completed work should not be mistaken for each other.
- Keep one activity per distinct piece of work. Smaller, well-scoped activities are easier to evaluate and fund than one broad claim. Use a collection to group them.
- Contribution weights are relative.
contributionWeightis a positive number stored as a string. Weights don't need to sum to a total; applications normalize them if they need shares. - Choose inline or referenced contributor details. Inline objects are simplest. Use a contributor information or contribution record when the same contributor or role is reused across activities.
- Use a plain-text work scope unless software needs to reason about it. The structured CEL form is for applications that compare or combine scopes; see Describing and Classifying Work.
- Strong references pin a version.
locationsandrightspoint to a specific version of the referenced record. If that record changes, update the reference to point at the new version. - Editing changes the CID. Evaluations and other records that referenced the earlier version keep pointing to it. Readers should be told when an assessment concerns an older version; see Records That Change Over Time.
- Declare the text's language with
langs. List up to three BCP-47 tags (such asesorpt-BR) for the language the author actually wrote in, and let the author correct it. Don't derive it from the interface language or a profile preference. Readers treat it as a hint: don't hide a record because it has nolangs.
Related#
- Collection: group activities into a project or portfolio.
- Contribution: reusable contributor identity and role records.
- Attachment and Measurement: evidence and data about the work.
- Evaluation: assessments of the work.
- Funding Receipt: records of support for the work.
- Rights and Location: records the activity references.
- Guide: Activity Claims, A Shared Language.