id.sifa.profile.project

sifa.id

Schema Diff

+10 -1

From

CID
bafyreidg4x3vv5v...
Indexed At
2026-05-27 12:05 UTC
View this version

To

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

Compatibility Analysis

Backward Compatible

Backward compatible. 6 non-breaking changes.

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

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.defs#projectMemberRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.project:body.members" }
  • AddedVertex { vertex_id: "id.sifa.profile.project:body.members:items" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.project:body", tgt: "id.sifa.profile.project:body.members", kind: "prop", name: Some("members") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.project:body.members", tgt: "id.sifa.profile.project:body.members:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.project:body.members:items", tgt: "id.sifa.defs#projectMemberRef", 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 project.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "createdAt": {
10 10
            "description": "Client-declared timestamp when this record was originally created.",
11 11
            "format": "datetime",
12 12
            "type": "string"
13 13
          },
14 14
          "description": {
15 15
            "description": "Description of the project, the user's role, and outcomes.",
16 16
            "maxGraphemes": 5000,
17 17
            "maxLength": 50000,
18 18
            "type": "string"
19 19
          },
20 20
          "endedAt": {
21 21
            "description": "Project end date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing.",
22 22
            "type": "string"
23 23
          },
24 24
          "labels": {
25 25
            "description": "Self-label values for this project record.",
26 26
            "refs": [
27 27
              "com.atproto.label.defs#selfLabels"
28 28
            ],
29 29
            "type": "union"
30 30
          },
31 +
          "members": {
32 +
            "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.",
33 +
            "items": {
34 +
              "ref": "id.sifa.defs#projectMemberRef",
35 +
              "type": "ref"
36 +
            },
37 +
            "maxLength": 50,
38 +
            "type": "array"
39 +
          },
31 40
          "name": {
32 41
            "description": "Project name.",
33 42
            "maxGraphemes": 256,
34 43
            "maxLength": 2560,
35 44
            "minLength": 1,
36 45
            "type": "string"
37 46
          },
38 47
          "position": {
39 48
            "description": "Reference to the associated id.sifa.profile.position record, if applicable.",
40 49
            "ref": "com.atproto.repo.strongRef",
41 50
            "type": "ref"
42 51
          },
43 52
          "projectRef": {
44 -
            "description": "Reference to the first-class id.sifa.project.self record, if this personal project entry corresponds to a collaborative project.",
53 +
            "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.",
45 54
            "ref": "com.atproto.repo.strongRef",
46 55
            "type": "ref"
47 56
          },
48 57
          "startedAt": {
49 58
            "description": "Project start date in YYYY-MM or YYYY-MM-DD format.",
50 59
            "type": "string"
51 60
          },
52 61
          "url": {
53 62
            "description": "URL of the project (website, repository, demo, etc.).",
54 63
            "format": "uri",
55 64
            "type": "string"
56 65
          }
57 66
        },
58 67
        "required": [
59 68
          "name",
60 69
          "createdAt"
61 70
        ],
62 71
        "type": "object"
63 72
      },
64 73
      "type": "record"
65 74
    }
66 75
  },
67 76
  "description": "A project the user has worked on.",
68 77
  "id": "id.sifa.profile.project",
69 78
  "lexicon": 1
70 79
}

Compare Other Versions

Lexicon Garden

@