id.sifa.profile.certification

sifa.id

Schema Diff

+24 -12

From

CID
bafyreiema4v4nbz...
Indexed At
2026-03-27 23:46 UTC
View this version

To

CID
bafyreidxkhbd5hd...
Indexed At
2026-08-06 14:52 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 10 non-breaking changes.

Non-Breaking Changes (10)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.certification:body.entityRef" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.certification:body", tgt: "id.sifa.profile.certification:body.entityRef", kind: "prop", name: Some("entityRef") }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.name", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.name", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.authority", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.authority", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.certification:body.expiresAt", sort: "format" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.certification:body.issuedAt", sort: "format" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.credentialId", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.credentialId", sort: "maxLength", old_value: "1000", new_value: "2560" }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.profile.certification:body.entityRef" }

Constraint Changes

  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.credentialId", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.credentialId", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.certification:body.issuedAt", sort: "format" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "id.sifa.profile.certification:body.expiresAt", sort: "format" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.name", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.name", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.authority", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.certification:body.authority", sort: "maxLength", old_value: "1000", new_value: "2560" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.certification:body", tgt: "id.sifa.profile.certification:body.entityRef", kind: "prop", name: Some("entityRef") }
1 1
{
2 2
  "id": "id.sifa.profile.certification",
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
          "name": {
15 15
            "type": "string",
16 -
            "maxLength": 1000,
16 +
            "maxLength": 2560,
17 17
            "minLength": 1,
18 18
            "description": "Certification or license name.",
19 -
            "maxGraphemes": 100
19 +
            "maxGraphemes": 256
20 20
          },
21 21
          "labels": {
22 22
            "refs": [
23 23
              "com.atproto.label.defs#selfLabels"
24 24
            ],
25 25
            "type": "union",
26 26
            "description": "Self-label values for this certification record."
27 27
          },
28 28
          "issuedAt": {
29 29
            "type": "string",
30 -
            "format": "datetime",
31 -
            "description": "Date the certification was issued."
30 +
            "description": "Date the certification was issued, in YYYY-MM or YYYY-MM-DD format."
32 31
          },
33 32
          "authority": {
34 33
            "type": "string",
35 -
            "maxLength": 1000,
34 +
            "maxLength": 2560,
36 35
            "description": "Issuing organization or authority.",
37 -
            "maxGraphemes": 100
36 +
            "maxGraphemes": 256
38 37
          },
39 38
          "createdAt": {
40 39
            "type": "string",
41 40
            "format": "datetime",
42 41
            "description": "Client-declared timestamp when this record was originally created."
43 42
          },
43 +
          "entityRef": {
44 +
            "type": "string",
45 +
            "format": "uri",
46 +
            "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."
47 +
          },
44 48
          "expiresAt": {
45 49
            "type": "string",
46 -
            "format": "datetime",
47 -
            "description": "Expiry date. Omit if the certification does not expire."
50 +
            "description": "Expiry date in YYYY-MM or YYYY-MM-DD format. Omit if the certification does not expire.",
51 +
            "x-skos:exactMatch": [
52 +
              "schema:validUntil"
53 +
            ]
48 54
          },
49 55
          "authorityDid": {
50 56
            "type": "string",
51 57
            "format": "did",
52 58
            "description": "DID of the issuing authority's ATproto account, if one exists."
53 59
          },
54 60
          "credentialId": {
55 61
            "type": "string",
56 -
            "maxLength": 1000,
62 +
            "maxLength": 2560,
57 63
            "description": "Credential ID or license number.",
58 -
            "maxGraphemes": 100
64 +
            "maxGraphemes": 256
59 65
          },
60 66
          "credentialUrl": {
61 67
            "type": "string",
62 68
            "format": "uri",
63 -
            "description": "URL to verify the credential."
69 +
            "description": "URL to verify the credential.",
70 +
            "x-skos:exactMatch": [
71 +
              "schema:url"
72 +
            ]
64 73
          }
65 74
        }
66 75
      },
67 -
      "description": "Record representing a single certification or license."
76 +
      "description": "Record representing a single certification or license.",
77 +
      "x-skos:exactMatch": [
78 +
        "schema:EducationalOccupationalCredential"
79 +
      ]
68 80
    }
69 81
  },
70 82
  "$type": "com.atproto.lexicon.schema",
71 83
  "lexicon": 1,
72 84
  "description": "A professional certification or license held by the user."
73 85
}

Compare Other Versions

Lexicon Garden

@