id.sifa.profile.education
Schema Diff
+9 -11
Compatibility Analysis
Backward Compatible
Backward compatible. 8 non-breaking changes.
Non-Breaking Changes (8)
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.institution", sort: "maxGraphemes", old_value: "100", new_value: "256" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.institution", sort: "maxLength", old_value: "1000", new_value: "2560" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.degree", sort: "maxLength", old_value: "1000", new_value: "2560" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.degree", sort: "maxGraphemes", old_value: "100", new_value: "256" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.education:body.endedAt", sort: "format" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.fieldOfStudy", sort: "maxGraphemes", old_value: "100", new_value: "256" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.fieldOfStudy", sort: "maxLength", old_value: "1000", new_value: "2560" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.education:body.startedAt", sort: "format" }
Migration Guidance
Constraint Changes
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.fieldOfStudy", sort: "maxLength", old_value: "1000", new_value: "2560" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.fieldOfStudy", sort: "maxGraphemes", old_value: "100", new_value: "256" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.education:body.startedAt", sort: "format" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.institution", sort: "maxLength", old_value: "1000", new_value: "2560" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.institution", sort: "maxGraphemes", old_value: "100", new_value: "256" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.education:body.endedAt", sort: "format" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.degree", sort: "maxGraphemes", old_value: "100", new_value: "256" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.education:body.degree", sort: "maxLength", old_value: "1000", new_value: "2560" }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Record representing a single education credential.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"activities": {
10
10
"description": "Activities, societies, and extracurriculars.",
11
11
"maxGraphemes": 1000,
12
12
"maxLength": 10000,
13
13
"type": "string"
14
14
},
15
15
"createdAt": {
16
16
"description": "Client-declared timestamp when this record was originally created.",
17
17
"format": "datetime",
18
18
"type": "string"
19
19
},
20
20
"degree": {
21
21
"description": "Degree name (e.g., 'Bachelor of Science', 'Master of Arts').",
22
-
"maxGraphemes": 100,
23
-
"maxLength": 1000,
22
+
"maxGraphemes": 256,
23
+
"maxLength": 2560,
24
24
"type": "string"
25
25
},
26
26
"description": {
27
27
"description": "Additional description or notes about the education.",
28
28
"maxGraphemes": 5000,
29
29
"maxLength": 50000,
30
30
"type": "string"
31
31
},
32
32
"endedAt": {
33
-
"description": "End date (graduation or expected graduation). Omit if currently enrolled.",
34
-
"format": "datetime",
33
+
"description": "End date (graduation or expected graduation) in YYYY-MM or YYYY-MM-DD format. Omit if currently enrolled.",
35
34
"type": "string"
36
35
},
37
36
"fieldOfStudy": {
38
37
"description": "Field of study or major.",
39
-
"maxGraphemes": 100,
40
-
"maxLength": 1000,
38
+
"maxGraphemes": 256,
39
+
"maxLength": 2560,
41
40
"type": "string"
42
41
},
43
42
"grade": {
44
43
"description": "Grade, GPA, or classification achieved.",
45
44
"maxGraphemes": 50,
46
45
"maxLength": 500,
47
46
"type": "string"
48
47
},
49
48
"institution": {
50
49
"description": "Name of the educational institution.",
51
-
"maxGraphemes": 100,
52
-
"maxLength": 1000,
50
+
"maxGraphemes": 256,
51
+
"maxLength": 2560,
53
52
"minLength": 1,
54
53
"type": "string"
55
54
},
56
55
"institutionDid": {
57
56
"description": "DID of the institution's ATproto account, if one exists.",
58
57
"format": "did",
59
58
"type": "string"
60
59
},
61
60
"labels": {
62
61
"description": "Self-label values for this education record.",
63
62
"refs": [
64
63
"com.atproto.label.defs#selfLabels"
65
64
],
66
65
"type": "union"
67
66
},
68
67
"location": {
69
-
"description": "Institution location.",
68
+
"description": "Institution location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
70
69
"ref": "community.lexicon.location.address",
71
70
"type": "ref"
72
71
},
73
72
"startedAt": {
74
-
"description": "Start date. For month-precision imports, use first day of month at midnight UTC.",
75
-
"format": "datetime",
73
+
"description": "Start date in YYYY-MM or YYYY-MM-DD format.",
76
74
"type": "string"
77
75
}
78
76
},
79
77
"required": [
80
78
"institution",
81
79
"createdAt"
82
80
],
83
81
"type": "object"
84
82
},
85
83
"type": "record"
86
84
}
87
85
},
88
86
"description": "An education entry in the user's professional profile.",
89
87
"id": "id.sifa.profile.education",
90
88
"lexicon": 1
91
89
}