id.sifa.profile.involvement

sifa.id

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record representing one involvement — an ongoing role and/or a body of discrete contributions to a single upstream.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-declared timestamp when this record was originally created.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "What the user did and why it mattered.",
            "maxGraphemes": 5000,
            "maxLength": 50000,
            "type": "string"
          },
          "endedAt": {
            "description": "End date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing.",
            "type": "string"
          },
          "entityRef": {
            "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.",
            "format": "uri",
            "type": "string"
          },
          "kind": {
            "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"
            ],
            "type": "string"
          },
          "labels": {
            "description": "Self-label values for this record.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "links": {
            "description": "Public artifacts proving the involvement (PRs, releases, talk recordings, published translations).",
            "items": {
              "ref": "id.sifa.defs#artifactLink",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "location": {
            "description": "Where the involvement takes place. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
            "ref": "community.lexicon.location.address",
            "type": "ref"
          },
          "role": {
            "description": "The user's role (e.g. 'Maintainer', 'Translator', 'Organizer', 'Contributor').",
            "maxGraphemes": 256,
            "maxLength": 2560,
            "type": "string"
          },
          "skills": {
            "description": "Skills demonstrated by this involvement. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID.",
            "items": {
              "ref": "id.sifa.defs#skillRef",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "startedAt": {
            "description": "Start date in YYYY-MM or YYYY-MM-DD format. Freeform (NOT strict datetime) to allow partial dates and importer writes.",
            "type": "string"
          },
          "upstream": {
            "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,
            "maxLength": 2560,
            "type": "string"
          },
          "upstreamDid": {
            "description": "DID of the upstream's ATproto account, if one exists.",
            "format": "did",
            "type": "string"
          },
          "upstreamUrl": {
            "description": "Primary URL of the upstream (project homepage, repo, event site).",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "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.",
  "id": "id.sifa.profile.involvement",
  "lexicon": 1
}

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 (6 versions)

Referenced Schemas (4)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A volunteer experience entry in the user's professional profile.

  • A project the user has worked on.

  • A work experience entry in the user's professional profile.

  • id.sifa.project.self recordnot from the namespace authority

    A collaborative project record. Lives in the project creator's PDS. TID-keyed so one user can create multiple projects. Supports multiple owners — the creator is the first owner, and any owner can promote core members.

  • Shared type definitions for Sifa professional profile lexicons.

Lexicon Garden

@