id.sifa.profile.project
Schema Diff
+10 -1
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
"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
33
"endedAt": {
34
34
"type": "string",
35
35
"description": "Project end date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing."
36
36
},
37
+
"members": {
38
+
"type": "array",
39
+
"items": {
40
+
"ref": "id.sifa.defs#projectMemberRef",
41
+
"type": "ref"
42
+
},
43
+
"maxLength": 50,
44
+
"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
+
},
37
46
"position": {
38
47
"ref": "com.atproto.repo.strongRef",
39
48
"type": "ref",
40
49
"description": "Reference to the associated id.sifa.profile.position record, if applicable."
41
50
},
42
51
"createdAt": {
43
52
"type": "string",
44
53
"format": "datetime",
45
54
"description": "Client-declared timestamp when this record was originally created."
46
55
},
47
56
"startedAt": {
48
57
"type": "string",
49
58
"description": "Project start date in YYYY-MM or YYYY-MM-DD format."
50
59
},
51
60
"projectRef": {
52
61
"ref": "com.atproto.repo.strongRef",
53
62
"type": "ref",
54
-
"description": "Reference to the first-class id.sifa.project.self record, if this personal project entry corresponds to a collaborative project."
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."
55
64
},
56
65
"description": {
57
66
"type": "string",
58
67
"maxLength": 50000,
59
68
"description": "Description of the project, the user's role, and outcomes.",
60
69
"maxGraphemes": 5000
61
70
}
62
71
}
63
72
},
64
73
"description": "Record representing a single project."
65
74
}
66
75
},
67
76
"$type": "com.atproto.lexicon.schema",
68
77
"lexicon": 1,
69
78
"description": "A project the user has worked on."
70
79
}