full diff

id.sifa.profile.education

sifa.id +18 −0
From
bafyreie4ua3ndwvxqirch2uvybr7jyhabltc6nbqroxt6exsi7nsc4dpey indexed 2026-10-30 13:43 UTC View this version
To
bafyreifnbymwjhiavnglzlihigtvayvrn4atgfsc2t7z64ihk2wlnc2boq indexed 2026-11-05 10:04 UTC View this version

Compatibility

backward compatible Backward compatible. 12 non-breaking changes.

Non-breaking changes (12)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.defs#skillRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.defs#toolRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.skills" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.skills:items" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.tools" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.education:body.tools:items" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.skills", kind: "prop", name: Some("skills") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.tools", kind: "prop", name: Some("tools") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body.skills", tgt: "id.sifa.profile.education:body.skills:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body.skills:items", tgt: "id.sifa.defs#skillRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body.tools", tgt: "id.sifa.profile.education:body.tools:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.profile.education:body.tools:items", tgt: "id.sifa.defs#toolRef", kind: "ref", name: None }

Migration guidance

Added

  • AddedVertex { vertex_id: "id.sifa.defs#skillRef" }
  • AddedVertex { vertex_id: "id.sifa.defs#toolRef" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.skills" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.skills:items" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.tools" }
  • AddedVertex { vertex_id: "id.sifa.profile.education:body.tools:items" }

Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.skills", kind: "prop", name: Some("skills") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body", tgt: "id.sifa.profile.education:body.tools", kind: "prop", name: Some("tools") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body.skills", tgt: "id.sifa.profile.education:body.skills:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body.skills:items", tgt: "id.sifa.defs#skillRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body.tools", tgt: "id.sifa.profile.education:body.tools:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.education:body.tools:items", tgt: "id.sifa.defs#toolRef", kind: "ref", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "Record representing a single education credential.",
66 "key": "tid",
77 "record": {
88 "properties": {
99 "activities": {
1010 "description": "Activities, societies, and extracurriculars.",
1111 "maxGraphemes": 1000,
1212 "maxLength": 10000,
1313 "type": "string"
1414 },
1515 "agentRef": {
1616 "description": "The educational institution, as a single nested reference mirroring the flat institution / institutionDid / entityRef fields. Additive dual-write: the flat fields remain the source of truth for existing consumers.",
1717 "ref": "id.sifa.defs#agentRef",
1818 "type": "ref"
1919 },
2020 "createdAt": {
2121 "description": "Client-declared timestamp when this record was originally created.",
2222 "format": "datetime",
2323 "type": "string"
2424 },
2525 "degree": {
2626 "description": "Degree name (e.g., 'Bachelor of Science', 'Master of Arts').",
2727 "maxGraphemes": 256,
2828 "maxLength": 2560,
2929 "type": "string",
3030 "x-skos:closeMatch": [
3131 "schema:hasCredential",
3232 "bibo:degree"
3333 ]
3434 },
3535 "description": {
3636 "description": "Additional description or notes about the education.",
3737 "maxGraphemes": 5000,
3838 "maxLength": 50000,
3939 "type": "string"
4040 },
4141 "endedAt": {
4242 "description": "End date (graduation or expected graduation) in YYYY, YYYY-MM or YYYY-MM-DD format. Omit if currently enrolled.",
4343 "type": "string"
4444 },
4545 "entityRef": {
4646 "description": "Portable, app-neutral identifier for the educational institution the user selected from a resolver dropdown: a Wikidata Q-ID URI (http://www.wikidata.org/entity/Q...), a ROR URI, or an LEI URI. Enables deterministic resolution to a canonical entity even before the institution claims an ATproto account. Absent for free-text entries.",
4747 "format": "uri",
4848 "type": "string"
4949 },
5050 "eqfLevel": {
5151 "description": "Level of the qualification on the European Qualifications Framework (EQF), 1 to 8. 6 is bachelor level, 7 is master level, 8 is doctoral level. Omit when unknown. The free-text degree stays the display name.",
5252 "maximum": 8,
5353 "minimum": 1,
5454 "type": "integer",
5555 "x-skos:closeMatch": [
5656 "schema:educationalLevel"
5757 ],
5858 "x-skos:note": "EQF is the value anchor."
5959 },
6060 "fieldOfStudy": {
6161 "description": "Field of study or major.",
6262 "maxGraphemes": 256,
6363 "maxLength": 2560,
6464 "type": "string",
6565 "x-skos:closeMatch": [
6666 "schema:educationalCredentialAwarded"
6767 ],
6868 "x-skos:note": "ISCED-F is the value anchor."
6969 },
7070 "grade": {
7171 "description": "Grade, GPA, or classification achieved.",
7272 "maxGraphemes": 50,
7373 "maxLength": 500,
7474 "type": "string"
7575 },
7676 "institution": {
7777 "description": "Name of the educational institution.",
7878 "maxGraphemes": 256,
7979 "maxLength": 2560,
8080 "minLength": 1,
8181 "type": "string",
8282 "x-skos:exactMatch": [
8383 "schema:alumniOf"
8484 ]
8585 },
8686 "institutionDid": {
8787 "description": "DID of the institution's ATproto account, if one exists.",
8888 "format": "did",
8989 "type": "string"
9090 },
9191 "isPrimary": {
9292 "description": "Whether this is the user's primary education entry, surfaced in profile Highlights. Any entry may be primary.",
9393 "type": "boolean"
9494 },
9595 "labels": {
9696 "description": "Self-label values for this education record.",
9797 "refs": [
9898 "com.atproto.label.defs#selfLabels"
9999 ],
100100 "type": "union"
101101 },
102102 "location": {
103103 "description": "Institution location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
104104 "ref": "community.lexicon.location.address",
105105 "type": "ref"
106106 },
107 "skills": {
108 "description": "Skills gained or used in this education. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID.",
109 "items": {
110 "ref": "id.sifa.defs#skillRef",
111 "type": "ref"
112 },
113 "maxLength": 50,
114 "type": "array"
115 },
107116 "startedAt": {
108117 "description": "Start date in YYYY, YYYY-MM or YYYY-MM-DD format.",
109118 "type": "string"
119 },
120 "tools": {
121 "description": "Tools used in this education. Each entry is a URI reference to a tool item record owned by the same DID. Consumers ignore entries that do not resolve.",
122 "items": {
123 "ref": "id.sifa.defs#toolRef",
124 "type": "ref"
125 },
126 "maxLength": 50,
127 "type": "array"
110128 }
111129 },
112130 "required": [
113131 "institution",
114132 "createdAt"
115133 ],
116134 "type": "object"
117135 },
118136 "type": "record",
119137 "x-skos:closeMatch": [
120138 "schema:EducationalOccupationalCredential"
121139 ],
122140 "x-skos:note": "One record maps to two schema.org assertions: alumniOf for the institution and hasCredential for the degree."
123141 }
124142 },
125143 "description": "An education entry in the user's professional profile.",
126144 "id": "id.sifa.profile.education",
127145 "lexicon": 1
128146}

Compare other versions