id.sifa.profile.involvement

sifa.id

Schema Diff

+1 -0

From

CID
bafyreifmgivkyrj...
Indexed At
2026-08-06 14:52 UTC
View this version

To

CID
bafyreiazyw4ecxk...
Indexed At
2026-08-07 11:35 UTC
View this version

Compatibility Analysis

Backward Compatible

No changes detected.

1 1
{
2 2
  "id": "id.sifa.profile.involvement",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "kind",
11 11
          "createdAt"
12 12
        ],
13 13
        "properties": {
14 14
          "kind": {
15 15
            "type": "string",
16 16
            "description": "The nature of the involvement. Drives the display heading (Open Source / Community / Volunteering / Civic).",
17 17
            "knownValues": [
18 18
              "id.sifa.defs#involvementOpenSource",
19 19
              "id.sifa.defs#involvementCommunity",
20 20
              "id.sifa.defs#involvementCharity",
21 21
              "id.sifa.defs#involvementCivic",
22 22
              "id.sifa.defs#involvementOther"
23 23
            ]
24 24
          },
25 25
          "role": {
26 26
            "type": "string",
27 27
            "maxLength": 2560,
28 28
            "description": "The user's role (e.g. 'Maintainer', 'Translator', 'Organizer', 'Contributor').",
29 29
            "maxGraphemes": 256
30 30
          },
31 31
          "links": {
32 32
            "type": "array",
33 33
            "items": {
34 34
              "ref": "id.sifa.defs#artifactLink",
35 35
              "type": "ref"
36 36
            },
37 37
            "maxLength": 50,
38 38
            "description": "Public artifacts proving the involvement (PRs, releases, talk recordings, published translations)."
39 39
          },
40 40
          "labels": {
41 41
            "refs": [
42 42
              "com.atproto.label.defs#selfLabels"
43 43
            ],
44 44
            "type": "union",
45 45
            "description": "Self-label values for this record."
46 46
          },
47 47
          "sameAs": {
48 48
            "ref": "id.sifa.defs#externalRecordRef",
49 49
            "type": "ref",
50 50
            "description": "The same involvement as recorded on another person's profile. Set when you keep your own entry for work someone else has also recorded, so consumers can tell the two describe one thing rather than showing it twice. Each side stays its own record: the other person cannot edit yours, and yours does not change theirs. Resolve by AT-URI, since they will keep editing their copy."
51 51
          },
52 52
          "skills": {
53 53
            "type": "array",
54 54
            "items": {
55 55
              "ref": "id.sifa.defs#skillRef",
56 56
              "type": "ref"
57 57
            },
58 58
            "maxLength": 50,
59 59
            "description": "Skills demonstrated by this involvement. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID."
60 60
          },
61 61
          "endedAt": {
62 62
            "type": "string",
63 63
            "description": "End date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing."
64 64
          },
65 65
          "location": {
66 66
            "ref": "community.lexicon.location.address",
67 67
            "type": "ref",
68 68
            "description": "Where the involvement takes place. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer."
69 69
          },
70 70
          "upstream": {
71 71
            "type": "string",
72 72
            "maxLength": 2560,
73 73
            "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.",
74 74
            "maxGraphemes": 256
75 75
          },
76 76
          "createdAt": {
77 77
            "type": "string",
78 78
            "format": "datetime",
79 79
            "description": "Client-declared timestamp when this record was originally created."
80 80
          },
81 81
          "entityRef": {
82 82
            "type": "string",
83 83
            "format": "uri",
84 84
            "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."
85 85
          },
86 86
          "startedAt": {
87 87
            "type": "string",
88 88
            "description": "Start date in YYYY-MM or YYYY-MM-DD format. Freeform (NOT strict datetime) to allow partial dates and importer writes."
89 89
          },
90 90
          "description": {
91 91
            "type": "string",
92 92
            "maxLength": 50000,
93 93
            "description": "What the user did and why it mattered.",
94 94
            "maxGraphemes": 5000
95 95
          },
96 96
          "upstreamDid": {
97 97
            "type": "string",
98 98
            "format": "did",
99 99
            "description": "DID of the upstream's ATproto account, if one exists."
100 100
          },
101 101
          "upstreamUrl": {
102 102
            "type": "string",
103 103
            "format": "uri",
104 104
            "description": "Primary URL of the upstream (project homepage, repo, event site)."
105 105
          },
106 106
          "collaborators": {
107 107
            "type": "array",
108 108
            "items": {
109 109
              "ref": "id.sifa.defs#projectMemberRef",
110 110
              "type": "ref"
111 111
            },
112 112
            "maxLength": 50,
113 113
            "description": "Other people who worked on this alongside you. Each entry is a claim by the record author and is not self-verifying: the named person supplies the other half by publishing an id.sifa.confirmation record whose subject is this record and whose relation is id.sifa.defs#collaborator. Until they do, consumers must render the entry without their display name, avatar, or profile link. Confirming never puts this record on their profile: it lives in the author's repository and the author can rename it at any time."
114 114
          }
115 115
        }
116 116
      },
117 117
      "description": "Record representing one involvement — an ongoing role and/or a body of discrete contributions to a single upstream.",
118 +
      "x-skos:note": "The kind known values have no external equivalent.",
118 119
      "x-skos:broadMatch": [
119 120
        "org:Membership"
120 121
      ]
121 122
    }
122 123
  },
123 124
  "$type": "com.atproto.lexicon.schema",
124 125
  "lexicon": 1,
125 126
  "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."
126 127
}

Compare Other Versions

Lexicon Garden

@