id.sifa.profile.volunteering

sifa.id

Schema Diff

+23 -11

From

CID
bafyreihkffv2lgm...
Indexed At
2026-03-27 23:46 UTC
View this version

To

CID
bafyreib67g4wrez...
Indexed At
2026-09-05 18:31 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 14 non-breaking changes.

Non-Breaking Changes (14)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.defs#agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.volunteering:body.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.volunteering:body.entityRef" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.volunteering:body", tgt: "id.sifa.profile.volunteering:body.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.volunteering:body", tgt: "id.sifa.profile.volunteering:body.entityRef", kind: "prop", name: Some("entityRef") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.volunteering:body.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.volunteering:body.startedAt", sort: "format" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.organization", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.organization", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.cause", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.cause", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.role", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.role", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.volunteering:body.endedAt", sort: "format" }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.defs#agentRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.volunteering:body.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.volunteering:body.entityRef" }

Constraint Changes

  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.volunteering:body.endedAt", sort: "format" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.cause", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.cause", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.volunteering:body.startedAt", sort: "format" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.organization", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.organization", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.role", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.volunteering:body.role", sort: "maxGraphemes", old_value: "100", new_value: "256" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.volunteering:body", tgt: "id.sifa.profile.volunteering:body.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.volunteering:body", tgt: "id.sifa.profile.volunteering:body.entityRef", kind: "prop", name: Some("entityRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.volunteering:body.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Record representing a single volunteer role.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 +
          "agentRef": {
10 +
            "description": "The organization, as a single nested reference mirroring the flat organization / organizationDid / entityRef fields. Additive dual-write: the flat fields remain the source of truth for existing consumers.",
11 +
            "ref": "id.sifa.defs#agentRef",
12 +
            "type": "ref"
13 +
          },
9 14
          "cause": {
10 15
            "description": "Cause area (e.g., 'Education', 'Environment', 'Health').",
11 -
            "maxGraphemes": 100,
12 -
            "maxLength": 1000,
16 +
            "maxGraphemes": 256,
17 +
            "maxLength": 2560,
13 18
            "type": "string"
14 19
          },
15 20
          "createdAt": {
16 21
            "description": "Client-declared timestamp when this record was originally created.",
17 22
            "format": "datetime",
18 23
            "type": "string"
19 24
          },
20 25
          "description": {
21 26
            "description": "Description of volunteer activities and impact.",
22 27
            "maxGraphemes": 5000,
23 28
            "maxLength": 50000,
24 29
            "type": "string"
25 30
          },
26 31
          "endedAt": {
27 -
            "description": "End date. Omit if currently volunteering.",
28 -
            "format": "datetime",
32 +
            "description": "End date in YYYY-MM or YYYY-MM-DD format. Omit if currently volunteering.",
33 +
            "type": "string"
34 +
          },
35 +
          "entityRef": {
36 +
            "description": "Portable, app-neutral identifier for the organization 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 organization claims an ATproto account. Absent for free-text entries.",
37 +
            "format": "uri",
29 38
            "type": "string"
30 39
          },
31 40
          "organization": {
32 41
            "description": "Organization name.",
33 -
            "maxGraphemes": 100,
34 -
            "maxLength": 1000,
42 +
            "maxGraphemes": 256,
43 +
            "maxLength": 2560,
35 44
            "minLength": 1,
36 45
            "type": "string"
37 46
          },
38 47
          "organizationDid": {
39 48
            "description": "DID of the organization's ATproto account, if one exists.",
40 49
            "format": "did",
41 50
            "type": "string"
42 51
          },
43 52
          "role": {
44 53
            "description": "Volunteer role or title.",
45 -
            "maxGraphemes": 100,
46 -
            "maxLength": 1000,
54 +
            "maxGraphemes": 256,
55 +
            "maxLength": 2560,
47 56
            "type": "string"
48 57
          },
49 58
          "startedAt": {
50 -
            "description": "Start date of the volunteer role.",
51 -
            "format": "datetime",
59 +
            "description": "Start date of the volunteer role in YYYY-MM or YYYY-MM-DD format.",
52 60
            "type": "string"
53 61
          }
54 62
        },
55 63
        "required": [
56 64
          "organization",
57 65
          "createdAt"
58 66
        ],
59 67
        "type": "object"
60 68
      },
61 -
      "type": "record"
69 +
      "type": "record",
70 +
      "x-skos:closeMatch": [
71 +
        "org:Membership",
72 +
        "schema:OrganizationRole"
73 +
      ]
62 74
    }
63 75
  },
64 76
  "description": "A volunteer experience entry in the user's professional profile.",
65 77
  "id": "id.sifa.profile.volunteering",
66 78
  "lexicon": 1
67 79
}

Compare Other Versions

Lexicon Garden

@