id.sifa.endorsement

sifa.id

Schema Diff

+10 -0

From

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

To

CID
bafyreihqhyostav...
Indexed At
2026-07-25 12:08 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 6 non-breaking changes.

Non-Breaking Changes (6)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.endorsement:body.credentialRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.endorsement:body.positionRef" }
  • AddedEdge AddedEdge { src: "id.sifa.endorsement:body", tgt: "id.sifa.endorsement:body.credentialRef", kind: "prop", name: Some("credentialRef") }
  • AddedEdge AddedEdge { src: "id.sifa.endorsement:body", tgt: "id.sifa.endorsement:body.positionRef", kind: "prop", name: Some("positionRef") }
  • AddedEdge AddedEdge { src: "id.sifa.endorsement:body.credentialRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.endorsement:body.positionRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.endorsement:body.credentialRef" }
  • AddedVertex { vertex_id: "id.sifa.endorsement:body.positionRef" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.endorsement:body", tgt: "id.sifa.endorsement:body.credentialRef", kind: "prop", name: Some("credentialRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.endorsement:body", tgt: "id.sifa.endorsement:body.positionRef", kind: "prop", name: Some("positionRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.endorsement:body.credentialRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.endorsement:body.positionRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
1 1
{
2 2
  "id": "id.sifa.endorsement",
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
          "subject",
11 11
          "skill",
12 12
          "skillName",
13 13
          "createdAt"
14 14
        ],
15 15
        "properties": {
16 16
          "skill": {
17 17
            "ref": "com.atproto.repo.strongRef",
18 18
            "type": "ref",
19 19
            "description": "StrongRef to the id.sifa.profile.skill record being endorsed. The AT-URI identifies the skill, and the CID pins the version."
20 20
          },
21 21
          "comment": {
22 22
            "type": "string",
23 23
            "maxLength": 3000,
24 24
            "description": "Optional brief comment explaining the endorsement.",
25 25
            "maxGraphemes": 300
26 26
          },
27 27
          "subject": {
28 28
            "type": "string",
29 29
            "format": "did",
30 30
            "description": "DID of the user whose skill is being endorsed."
31 31
          },
32 32
          "createdAt": {
33 33
            "type": "string",
34 34
            "format": "datetime",
35 35
            "description": "Client-declared timestamp when this endorsement was created."
36 36
          },
37 37
          "skillName": {
38 38
            "type": "string",
39 39
            "maxLength": 640,
40 40
            "minLength": 1,
41 41
            "description": "Skill name at endorsement time, captured from the endorsed record. This is the anchor field: if the skill is later renamed, this value lets the AppView detect that the endorsed claim may no longer match the current record. Stored in the endorser's PDS, so the endorsee cannot modify it.",
42 42
            "maxGraphemes": 64
43 +
          },
44 +
          "positionRef": {
45 +
            "ref": "com.atproto.repo.strongRef",
46 +
            "type": "ref",
47 +
            "description": "Optional reference to the id.sifa.position record this endorsement relates to. When present, indicates the endorsement is contextualised to a specific role rather than a general skill."
48 +
          },
49 +
          "credentialRef": {
50 +
            "ref": "com.atproto.repo.strongRef",
51 +
            "type": "ref",
52 +
            "description": "Optional reference to an education or credential record this endorsement confirms. May be set alongside positionRef when the endorsement relates to both a role and a credential."
43 53
          }
44 54
        }
45 55
      },
46 56
      "description": "Record representing an endorsement of another user's claimed skill."
47 57
    }
48 58
  },
49 59
  "$type": "com.atproto.lexicon.schema",
50 60
  "lexicon": 1,
51 61
  "description": "An endorsement of another user's skill. Lives in the endorser's PDS; the endorser is implicit (whoever owns the repository)."
52 62
}

Compare Other Versions

Lexicon Garden

@