id.sifa.profile.certification
Schema Diff
+17 -3
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "id.sifa.defs#agentRef" }
- AddedVertex AddedVertex { vertex_id: "id.sifa.profile.certification:body.agentRef" }
- AddedEdge AddedEdge { src: "id.sifa.profile.certification:body", tgt: "id.sifa.profile.certification:body.agentRef", kind: "prop", name: Some("agentRef") }
- AddedEdge AddedEdge { src: "id.sifa.profile.certification:body.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "id.sifa.defs#agentRef" }AddedVertex { vertex_id: "id.sifa.profile.certification:body.agentRef" }
Additional Notes
- Non-breaking: AddedEdge { src: "id.sifa.profile.certification:body", tgt: "id.sifa.profile.certification:body.agentRef", kind: "prop", name: Some("agentRef") }
- Non-breaking: AddedEdge { src: "id.sifa.profile.certification:body.agentRef", tgt: "id.sifa.defs#agentRef", 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 certification or license.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
+
"agentRef": {
10
+
"description": "The issuing authority, as a single nested reference mirroring the flat authority / authorityDid / entityRef fields. Additive dual-write: the flat fields remain the source of truth for existing consumers.",
11
+
"ref": "id.sifa.defs#agentRef",
12
+
"type": "ref"
13
+
},
9
14
"authority": {
10
15
"description": "Issuing organization or authority.",
11
16
"maxGraphemes": 256,
12
17
"maxLength": 2560,
13
18
"type": "string"
14
19
},
15
20
"authorityDid": {
16
21
"description": "DID of the issuing authority's ATproto account, if one exists.",
17
22
"format": "did",
18
23
"type": "string"
19
24
},
20
25
"createdAt": {
21
26
"description": "Client-declared timestamp when this record was originally created.",
22
27
"format": "datetime",
23
28
"type": "string"
24
29
},
25
30
"credentialId": {
26
31
"description": "Credential ID or license number.",
27
32
"maxGraphemes": 256,
28
33
"maxLength": 2560,
29
34
"type": "string"
30
35
},
31
36
"credentialUrl": {
32
37
"description": "URL to verify the credential.",
33
38
"format": "uri",
34
-
"type": "string"
39
+
"type": "string",
40
+
"x-skos:exactMatch": [
41
+
"schema:url"
42
+
]
35
43
},
36
44
"entityRef": {
37
45
"description": "Portable, app-neutral identifier for the issuing organization 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 organization claims an ATproto account. Absent for free-text entries.",
38
46
"format": "uri",
39
47
"type": "string"
40
48
},
41
49
"expiresAt": {
42
50
"description": "Expiry date in YYYY-MM or YYYY-MM-DD format. Omit if the certification does not expire.",
43
-
"type": "string"
51
+
"type": "string",
52
+
"x-skos:exactMatch": [
53
+
"schema:validUntil"
54
+
]
44
55
},
45
56
"issuedAt": {
46
57
"description": "Date the certification was issued, in YYYY-MM or YYYY-MM-DD format.",
47
58
"type": "string"
48
59
},
49
60
"labels": {
50
61
"description": "Self-label values for this certification record.",
51
62
"refs": [
52
63
"com.atproto.label.defs#selfLabels"
53
64
],
54
65
"type": "union"
55
66
},
56
67
"name": {
57
68
"description": "Certification or license name.",
58
69
"maxGraphemes": 256,
59
70
"maxLength": 2560,
60
71
"minLength": 1,
61
72
"type": "string"
62
73
}
63
74
},
64
75
"required": [
65
76
"name",
66
77
"createdAt"
67
78
],
68
79
"type": "object"
69
80
},
70
-
"type": "record"
81
+
"type": "record",
82
+
"x-skos:exactMatch": [
83
+
"schema:EducationalOccupationalCredential"
84
+
]
71
85
}
72
86
},
73
87
"description": "A professional certification or license held by the user.",
74
88
"id": "id.sifa.profile.certification",
75
89
"lexicon": 1
76
90
}