id.sifa.profile.position

sifa.id

Schema Diff

+20 -1

From

CID
bafyreiag2sjil76...
Indexed At
2026-07-26 20:04 UTC
View this version

To

CID
bafyreid2v5v7vdn...
Indexed At
2026-08-06 12:37 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 6 non-breaking changes.

Breaking Changes (1)
  • ConstraintTightened ConstraintTightened { vertex_id: "id.sifa.profile.position:body.employmentType", sort: "knownValues", old_value: "[\"id.sifa.defs#fullTime\",\"id.sifa.defs#partTime\",\"id.sifa.defs#temporary\",\"id.sifa.defs#seasonal\",\"id.sifa.defs#contract\",\"id.sifa.defs#freelance\",\"id.sifa.defs#selfEmployed\",\"id.sifa.defs#independentWork\",\"id.sifa.defs#internship\",\"id.sifa.defs#apprenticeship\",\"id.sifa.defs#fellowship\",\"id.sifa.defs#trainee\",\"id.sifa.defs#volunteer\"]", new_value: "[\"id.sifa.defs#fullTime\",\"id.sifa.defs#partTime\",\"id.sifa.defs#temporary\",\"id.sifa.defs#seasonal\",\"id.sifa.defs#contract\",\"id.sifa.defs#freelance\",\"id.sifa.defs#selfEmployed\",\"id.sifa.defs#independentWork\",\"id.sifa.defs#internship\",\"id.sifa.defs#apprenticeship\",\"id.sifa.defs#fellowship\",\"id.sifa.defs#trainee\",\"id.sifa.defs#volunteer\",\"id.sifa.defs#boardMember\",\"id.sifa.defs#boardObserver\",\"id.sifa.defs#advisor\"]" }
Non-Breaking Changes (6)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.position:body.onBehalfOf" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.position:body.onBehalfOfDid" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.profile.position:body.onBehalfOfEntityRef" }
  • AddedEdge AddedEdge { src: "id.sifa.profile.position:body", tgt: "id.sifa.profile.position:body.onBehalfOf", kind: "prop", name: Some("onBehalfOf") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.position:body", tgt: "id.sifa.profile.position:body.onBehalfOfDid", kind: "prop", name: Some("onBehalfOfDid") }
  • AddedEdge AddedEdge { src: "id.sifa.profile.position:body", tgt: "id.sifa.profile.position:body.onBehalfOfEntityRef", kind: "prop", name: Some("onBehalfOfEntityRef") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "id.sifa.profile.position:body.onBehalfOf" }
  • AddedVertex { vertex_id: "id.sifa.profile.position:body.onBehalfOfDid" }
  • AddedVertex { vertex_id: "id.sifa.profile.position:body.onBehalfOfEntityRef" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "id.sifa.profile.position:body.employmentType", sort: "knownValues", old_value: "[\"id.sifa.defs#fullTime\",\"id.sifa.defs#partTime\",\"id.sifa.defs#temporary\",\"id.sifa.defs#seasonal\",\"id.sifa.defs#contract\",\"id.sifa.defs#freelance\",\"id.sifa.defs#selfEmployed\",\"id.sifa.defs#independentWork\",\"id.sifa.defs#internship\",\"id.sifa.defs#apprenticeship\",\"id.sifa.defs#fellowship\",\"id.sifa.defs#trainee\",\"id.sifa.defs#volunteer\"]", new_value: "[\"id.sifa.defs#fullTime\",\"id.sifa.defs#partTime\",\"id.sifa.defs#temporary\",\"id.sifa.defs#seasonal\",\"id.sifa.defs#contract\",\"id.sifa.defs#freelance\",\"id.sifa.defs#selfEmployed\",\"id.sifa.defs#independentWork\",\"id.sifa.defs#internship\",\"id.sifa.defs#apprenticeship\",\"id.sifa.defs#fellowship\",\"id.sifa.defs#trainee\",\"id.sifa.defs#volunteer\",\"id.sifa.defs#boardMember\",\"id.sifa.defs#boardObserver\",\"id.sifa.defs#advisor\"]" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.profile.position:body", tgt: "id.sifa.profile.position:body.onBehalfOf", kind: "prop", name: Some("onBehalfOf") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.position:body", tgt: "id.sifa.profile.position:body.onBehalfOfDid", kind: "prop", name: Some("onBehalfOfDid") }
  • Non-breaking: AddedEdge { src: "id.sifa.profile.position:body", tgt: "id.sifa.profile.position:body.onBehalfOfEntityRef", kind: "prop", name: Some("onBehalfOfEntityRef") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Record representing a single work position or role.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "company": {
10 10
            "description": "Company or organization name. Optional: omit for self-employed, freelance, contract, or independent work that has no separately named or registered entity.",
11 11
            "maxGraphemes": 256,
12 12
            "maxLength": 2560,
13 13
            "minLength": 1,
14 14
            "type": "string"
15 15
          },
16 16
          "companyDid": {
17 17
            "description": "DID of the company's ATproto account, if one exists. Enables verified company linking.",
18 18
            "format": "did",
19 19
            "type": "string"
20 20
          },
21 21
          "createdAt": {
22 22
            "description": "Client-declared timestamp when this record was originally created.",
23 23
            "format": "datetime",
24 24
            "type": "string"
25 25
          },
26 26
          "description": {
27 27
            "description": "Description of responsibilities, achievements, and duties.",
28 28
            "maxGraphemes": 5000,
29 29
            "maxLength": 50000,
30 30
            "type": "string"
31 31
          },
32 32
          "employmentType": {
33 33
            "description": "Type of employment (full-time, part-time, contract, etc.).",
34 34
            "knownValues": [
35 35
              "id.sifa.defs#fullTime",
36 36
              "id.sifa.defs#partTime",
37 37
              "id.sifa.defs#temporary",
38 38
              "id.sifa.defs#seasonal",
39 39
              "id.sifa.defs#contract",
40 40
              "id.sifa.defs#freelance",
41 41
              "id.sifa.defs#selfEmployed",
42 42
              "id.sifa.defs#independentWork",
43 43
              "id.sifa.defs#internship",
44 44
              "id.sifa.defs#apprenticeship",
45 45
              "id.sifa.defs#fellowship",
46 46
              "id.sifa.defs#trainee",
47 -
              "id.sifa.defs#volunteer"
47 +
              "id.sifa.defs#volunteer",
48 +
              "id.sifa.defs#boardMember",
49 +
              "id.sifa.defs#boardObserver",
50 +
              "id.sifa.defs#advisor"
48 51
            ],
49 52
            "type": "string"
50 53
          },
51 54
          "endedAt": {
52 55
            "description": "End date of the position in YYYY-MM or YYYY-MM-DD format. Omit if this is a current position.",
53 56
            "type": "string"
54 57
          },
55 58
          "entityRef": {
56 59
            "description": "Portable, app-neutral identifier for the 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 org claims an ATproto account. Absent for free-text or independent/self-employed positions.",
57 60
            "format": "uri",
58 61
            "type": "string"
59 62
          },
60 63
          "isPrimary": {
61 64
            "description": "Whether this is the user's primary current position, displayed on the identity card.",
62 65
            "type": "boolean"
63 66
          },
64 67
          "labels": {
65 68
            "description": "Self-label values for this position record.",
66 69
            "refs": [
67 70
              "com.atproto.label.defs#selfLabels"
68 71
            ],
69 72
            "type": "union"
70 73
          },
71 74
          "location": {
72 75
            "description": "Work location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
73 76
            "ref": "community.lexicon.location.address",
74 77
            "type": "ref"
75 78
          },
79 +
          "onBehalfOf": {
80 +
            "description": "Name of the party this role is held on behalf of, when the person represents someone else — most often a fund whose board seat this is. A disclosure, not a role type. Omit for independent seats.",
81 +
            "maxGraphemes": 256,
82 +
            "maxLength": 2560,
83 +
            "type": "string"
84 +
          },
85 +
          "onBehalfOfDid": {
86 +
            "description": "DID of the represented party's ATproto account, if one exists. May resolve to an organization or to a person (e.g. a family-office principal).",
87 +
            "format": "did",
88 +
            "type": "string"
89 +
          },
90 +
          "onBehalfOfEntityRef": {
91 +
            "description": "Portable, app-neutral identifier for the represented party selected from a resolver dropdown: a Wikidata Q-ID URI, a ROR URI, or an LEI URI. Absent for free-text entries.",
92 +
            "format": "uri",
93 +
            "type": "string"
94 +
          },
76 95
          "skills": {
77 96
            "description": "Skills used in this position. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID.",
78 97
            "items": {
79 98
              "ref": "id.sifa.defs#skillRef",
80 99
              "type": "ref"
81 100
            },
82 101
            "maxLength": 50,
83 102
            "type": "array"
84 103
          },
85 104
          "startedAt": {
86 105
            "description": "Start date of the position in YYYY-MM or YYYY-MM-DD format.",
87 106
            "type": "string"
88 107
          },
89 108
          "title": {
90 109
            "description": "Job title or role name.",
91 110
            "maxGraphemes": 256,
92 111
            "maxLength": 2560,
93 112
            "minLength": 1,
94 113
            "type": "string"
95 114
          },
96 115
          "workplaceType": {
97 116
            "description": "Workplace arrangement (on-site, remote, hybrid).",
98 117
            "knownValues": [
99 118
              "id.sifa.defs#onSite",
100 119
              "id.sifa.defs#remote",
101 120
              "id.sifa.defs#hybrid"
102 121
            ],
103 122
            "type": "string"
104 123
          }
105 124
        },
106 125
        "required": [
107 126
          "title",
108 127
          "startedAt",
109 128
          "createdAt"
110 129
        ],
111 130
        "type": "object"
112 131
      },
113 132
      "type": "record"
114 133
    }
115 134
  },
116 135
  "description": "A work experience entry in the user's professional profile.",
117 136
  "id": "id.sifa.profile.position",
118 137
  "lexicon": 1
119 138
}

Compare Other Versions

Lexicon Garden

@