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