id.sifa.profile.project

sifa.id

Schema Diff

+6 -1

From

CID
bafyreielduwsmct...
Indexed At
2026-07-31 21:36 UTC
View this version

To

CID
bafyreian34gija3...
Indexed At
2026-08-01 10:28 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 4 non-breaking changes.

Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.defs#externalRecordRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.project:body.sameAs" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.project:body", tgt: "id.sifa.profile.project:body.sameAs", kind: "prop", name: Some("sameAs") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.project:body.sameAs", tgt: "id.sifa.defs#externalRecordRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.defs#externalRecordRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.project:body.sameAs" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.project:body", tgt: "id.sifa.profile.project:body.sameAs", kind: "prop", name: Some("sameAs") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.project:body.sameAs", tgt: "id.sifa.defs#externalRecordRef", kind: "ref", name: None }
1 1
{
2 2
  "id": "id.sifa.profile.project",
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
          "name",
11 11
          "createdAt"
12 12
        ],
13 13
        "properties": {
14 14
          "url": {
15 15
            "type": "string",
16 16
            "format": "uri",
17 17
            "description": "URL of the project (website, repository, demo, etc.)."
18 18
          },
19 19
          "name": {
20 20
            "type": "string",
21 21
            "maxLength": 2560,
22 22
            "minLength": 1,
23 23
            "description": "Project name.",
24 24
            "maxGraphemes": 256
25 25
          },
26 26
          "labels": {
27 27
            "refs": [
28 28
              "com.atproto.label.defs#selfLabels"
29 29
            ],
30 30
            "type": "union",
31 31
            "description": "Self-label values for this project record."
32 32
          },
33 +
          "sameAs": {
34 +
            "ref": "id.sifa.defs#externalRecordRef",
35 +
            "type": "ref",
36 +
            "description": "The same project 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."
37 +
          },
33 38
          "endedAt": {
34 39
            "type": "string",
35 40
            "description": "Project end date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing."
36 41
          },
37 42
          "members": {
38 43
            "type": "array",
39 44
            "items": {
40 45
              "ref": "id.sifa.defs#projectMemberRef",
41 46
              "type": "ref"
42 47
            },
43 48
            "maxLength": 50,
44 49
            "description": "Other people who worked on this project. 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#projectMember. Until they do, consumers must render the entry without their display name, avatar, or profile link. Confirming never puts this record on the named person's profile: it lives in the author's repository and the author can rename it at any time. A named person who wants the project on their profile keeps their own id.sifa.profile.project record and points its projectRef here."
45 50
          },
46 51
          "position": {
47 52
            "ref": "com.atproto.repo.strongRef",
48 53
            "type": "ref",
49 54
            "description": "Reference to the associated id.sifa.profile.position record, if applicable."
50 55
          },
51 56
          "createdAt": {
52 57
            "type": "string",
53 58
            "format": "datetime",
54 59
            "description": "Client-declared timestamp when this record was originally created."
55 60
          },
56 61
          "startedAt": {
57 62
            "type": "string",
58 63
            "description": "Project start date in YYYY-MM or YYYY-MM-DD format."
59 64
          },
60 65
          "projectRef": {
61 66
            "ref": "com.atproto.repo.strongRef",
62 67
            "type": "ref",
63 -
            "description": "Reference to the same project as recorded elsewhere: another person's id.sifa.profile.project entry for the work you shared, or a first-class id.sifa.project.self record. Set when you were named as a member of someone else's entry and keep your own version of it, so consumers can tell the two describe one project instead of showing it twice."
68 +
            "description": "Reference to the first-class id.sifa.project.self record this personal entry corresponds to, when there is one. A composition link, not a peer one: for the same project recorded on someone else's profile, see sameAs."
64 69
          },
65 70
          "description": {
66 71
            "type": "string",
67 72
            "maxLength": 50000,
68 73
            "description": "Description of the project, the user's role, and outcomes.",
69 74
            "maxGraphemes": 5000
70 75
          }
71 76
        }
72 77
      },
73 78
      "description": "Record representing a single project."
74 79
    }
75 80
  },
76 81
  "$type": "com.atproto.lexicon.schema",
77 82
  "lexicon": 1,
78 83
  "description": "A project the user has worked on."
79 84
}

Compare Other Versions

Lexicon Garden

@