id.sifa.profile.involvement

sifa.id

{
  "id": "id.sifa.profile.involvement",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "kind",
          "createdAt"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "description": "The nature of the involvement. Drives the display heading (Open Source / Community / Volunteering / Civic).",
            "knownValues": [
              "id.sifa.defs#involvementOpenSource",
              "id.sifa.defs#involvementCommunity",
              "id.sifa.defs#involvementCharity",
              "id.sifa.defs#involvementCivic",
              "id.sifa.defs#involvementOther"
            ]
          },
          "role": {
            "type": "string",
            "maxLength": 2560,
            "description": "The user's role (e.g. 'Maintainer', 'Translator', 'Organizer', 'Contributor').",
            "maxGraphemes": 256
          },
          "links": {
            "type": "array",
            "items": {
              "ref": "id.sifa.defs#artifactLink",
              "type": "ref"
            },
            "maxLength": 50,
            "description": "Public artifacts proving the involvement (PRs, releases, talk recordings, published translations)."
          },
          "labels": {
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union",
            "description": "Self-label values for this record."
          },
          "skills": {
            "type": "array",
            "items": {
              "ref": "id.sifa.defs#skillRef",
              "type": "ref"
            },
            "maxLength": 50,
            "description": "Skills demonstrated by this involvement. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID."
          },
          "endedAt": {
            "type": "string",
            "description": "End date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing."
          },
          "location": {
            "ref": "community.lexicon.location.address",
            "type": "ref",
            "description": "Where the involvement takes place. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer."
          },
          "upstream": {
            "type": "string",
            "maxLength": 2560,
            "description": "Name of the project, community, event, or cause (e.g. 'atproto', 'Linux kernel', 'PyCon NL'). Optional — a one-off contribution need not name an organization.",
            "maxGraphemes": 256
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this record was originally created."
          },
          "entityRef": {
            "type": "string",
            "format": "uri",
            "description": "Portable, app-neutral identifier for the upstream the user selected from a resolver dropdown: a Wikidata Q-ID URI (http://www.wikidata.org/entity/Q...), a ROR URI, or an LEI URI. Enables deterministic resolution to a canonical entity even before the upstream claims an ATproto account. Absent for free-text or one-off entries."
          },
          "startedAt": {
            "type": "string",
            "description": "Start date in YYYY-MM or YYYY-MM-DD format. Freeform (NOT strict datetime) to allow partial dates and importer writes."
          },
          "description": {
            "type": "string",
            "maxLength": 50000,
            "description": "What the user did and why it mattered.",
            "maxGraphemes": 5000
          },
          "upstreamDid": {
            "type": "string",
            "format": "did",
            "description": "DID of the upstream's ATproto account, if one exists."
          },
          "upstreamUrl": {
            "type": "string",
            "format": "uri",
            "description": "Primary URL of the upstream (project homepage, repo, event site)."
          }
        }
      },
      "description": "Record representing one involvement — an ongoing role and/or a body of discrete contributions to a single upstream."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "Uncompensated involvement with an external project, community, event, or cause the user does not own or run — open-source, community, charity, or civic work. Distinct from paid roles (position), things you own (project), and paid employment."
}

Validate Record

Validate a record against id.sifa.profile.involvement

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2f2ahswozqy4v5lvu676375y
CID
bafyreidfpmnv7v54ov2rmhic7hqsnudky4qogpefmlj5cliipdtehblyc4
Indexed At
2026-07-26 20:04 UTC
AT-URI
at://did:plc:2f2ahswozqy4v5lvu676375y/com.atproto.lexicon.schema/id.sifa.profile.involvement

Version History (4 versions)

Referenced Schemas (4)

Lexicon Garden

@