id.sifa.profile.self
Schema Diff
+2 -1
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 0 non-breaking changes.
Breaking Changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "id.sifa.profile.self:body.openTo:items", sort: "knownValues", old_value: "[\"id.sifa.defs#fullTimeRoles\",\"id.sifa.defs#partTimeRoles\",\"id.sifa.defs#contractRoles\",\"id.sifa.defs#commissions\",\"id.sifa.defs#boardPositions\",\"id.sifa.defs#mentoringOthers\",\"id.sifa.defs#beingMentored\",\"id.sifa.defs#collaborations\"]", new_value: "[\"id.sifa.defs#fullTimeRoles\",\"id.sifa.defs#partTimeRoles\",\"id.sifa.defs#contractRoles\",\"id.sifa.defs#commissions\",\"id.sifa.defs#boardPositions\",\"id.sifa.defs#mentoringOthers\",\"id.sifa.defs#beingMentored\",\"id.sifa.defs#collaborations\",\"id.sifa.defs#speakingEngagements\"]" }
Migration Guidance
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "id.sifa.profile.self:body.openTo:items", sort: "knownValues", old_value: "[\"id.sifa.defs#fullTimeRoles\",\"id.sifa.defs#partTimeRoles\",\"id.sifa.defs#contractRoles\",\"id.sifa.defs#commissions\",\"id.sifa.defs#boardPositions\",\"id.sifa.defs#mentoringOthers\",\"id.sifa.defs#beingMentored\",\"id.sifa.defs#collaborations\"]", new_value: "[\"id.sifa.defs#fullTimeRoles\",\"id.sifa.defs#partTimeRoles\",\"id.sifa.defs#contractRoles\",\"id.sifa.defs#commissions\",\"id.sifa.defs#boardPositions\",\"id.sifa.defs#mentoringOthers\",\"id.sifa.defs#beingMentored\",\"id.sifa.defs#collaborations\",\"id.sifa.defs#speakingEngagements\"]" }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "The user's professional profile summary.",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"about": {
10
10
"description": "Professional summary or about section. Longer-form than Bluesky's description field.",
11
11
"maxGraphemes": 5000,
12
12
"maxLength": 50000,
13
13
"type": "string"
14
14
},
15
15
"availableFromUtc": {
16
16
"description": "Start of typical working hours in UTC (0-23). Used with availableToUtc for search filtering by work-hours overlap. Set via local-time UI, converted to UTC by the client.",
17
17
"maximum": 23,
18
18
"minimum": 0,
19
19
"type": "integer"
20
20
},
21
21
"availableToUtc": {
22
22
"description": "End of typical working hours in UTC (0-23). May wrap around midnight (e.g., from 22 to 06 for someone in Asia working US hours).",
23
23
"maximum": 23,
24
24
"minimum": 0,
25
25
"type": "integer"
26
26
},
27
27
"avatar": {
28
28
"accept": [
29
29
"image/png",
30
30
"image/jpeg"
31
31
],
32
32
"description": "Professional-context avatar image. Overrides app.bsky.actor.profile.avatar when present.",
33
33
"maxSize": 1000000,
34
34
"type": "blob"
35
35
},
36
36
"createdAt": {
37
37
"description": "Client-declared timestamp when this profile was originally created.",
38
38
"format": "datetime",
39
39
"type": "string"
40
40
},
41
41
"discoverable": {
42
42
"description": "Whether the rendered profile page may be indexed by search engines and AI tools. Default true when absent. When false, the rendering app emits noindex directives and excludes the page from any sitemap or push-indexing protocol. Does not affect the public visibility of the underlying ATproto records, which remain readable by any client.",
43
43
"type": "boolean"
44
44
},
45
45
"displayName": {
46
46
"description": "Professional-context display name. Overrides app.bsky.actor.profile.displayName when present.",
47
47
"maxGraphemes": 64,
48
48
"maxLength": 640,
49
49
"type": "string"
50
50
},
51
51
"familyName": {
52
52
"description": "Family (last) name. Maps to Schema.org Person.familyName. Optional.",
53
53
"maxGraphemes": 64,
54
54
"maxLength": 640,
55
55
"type": "string"
56
56
},
57
57
"givenName": {
58
58
"description": "Given (first) name. Maps to Schema.org Person.givenName. Optional; if absent, displayName is used for rendering.",
59
59
"maxGraphemes": 64,
60
60
"maxLength": 640,
61
61
"type": "string"
62
62
},
63
63
"headline": {
64
64
"description": "Professional headline (e.g., 'Senior Engineer at Acme Corp'). Distinct from Bluesky's displayName.",
65
65
"maxGraphemes": 120,
66
66
"maxLength": 1200,
67
67
"type": "string"
68
68
},
69
69
"industries": {
70
70
"description": "Professional industry/domain pairs. Each entry has a required industry and optional domain refinement. Replaces the former singular industry/domain fields.",
71
71
"items": {
72
72
"ref": "id.sifa.defs#industryDomain",
73
73
"type": "ref"
74
74
},
75
75
"maxLength": 10,
76
76
"type": "array"
77
77
},
78
78
"labels": {
79
79
"description": "Self-label values for the professional profile.",
80
80
"refs": [
81
81
"com.atproto.label.defs#selfLabels"
82
82
],
83
83
"type": "union"
84
84
},
85
85
"langs": {
86
86
"description": "BCP 47 language tags indicating the user's primary professional languages.",
87
87
"items": {
88
88
"format": "language",
89
89
"type": "string"
90
90
},
91
91
"maxLength": 3,
92
92
"type": "array"
93
93
},
94
94
"location": {
95
95
"description": "Professional location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
96
96
"ref": "community.lexicon.location.address",
97
97
"type": "ref"
98
98
},
99
99
"openTo": {
100
100
"description": "Types of opportunities the user is open to. Empty array or omitted means not actively seeking.",
101
101
"items": {
102
102
"knownValues": [
103
103
"id.sifa.defs#fullTimeRoles",
104
104
"id.sifa.defs#partTimeRoles",
105
105
"id.sifa.defs#contractRoles",
106
106
"id.sifa.defs#commissions",
107
107
"id.sifa.defs#boardPositions",
108
108
"id.sifa.defs#mentoringOthers",
109
109
"id.sifa.defs#beingMentored",
110
-
"id.sifa.defs#collaborations"
110
+
"id.sifa.defs#collaborations",
111
+
"id.sifa.defs#speakingEngagements"
111
112
],
112
113
"type": "string"
113
114
},
114
115
"maxLength": 10,
115
116
"type": "array"
116
117
},
117
118
"preferredWorkplace": {
118
119
"description": "Preferred workplace arrangements. Orthogonal to openTo. Empty array or omitted means no preference. Prefer the scoped remote variants (remoteLocal, remoteRegion, remoteGlobal) over the generic 'remote' token.",
119
120
"items": {
120
121
"knownValues": [
121
122
"id.sifa.defs#onSite",
122
123
"id.sifa.defs#remote",
123
124
"id.sifa.defs#hybrid",
124
125
"id.sifa.defs#remoteLocal",
125
126
"id.sifa.defs#remoteRegion",
126
127
"id.sifa.defs#remoteGlobal"
127
128
],
128
129
"type": "string"
129
130
},
130
131
"maxLength": 5,
131
132
"type": "array"
132
133
},
133
134
"pronouns": {
134
135
"description": "Free-form pronouns text. Professional-context override for app.bsky.actor.profile.pronouns.",
135
136
"maxGraphemes": 20,
136
137
"maxLength": 200,
137
138
"type": "string"
138
139
}
139
140
},
140
141
"required": [
141
142
"createdAt"
142
143
],
143
144
"type": "object"
144
145
},
145
146
"type": "record"
146
147
}
147
148
},
148
149
"description": "Professional profile summary. Singleton record providing professional identity beyond the base ATproto profile. Fields overlapping app.bsky.actor.profile (displayName, avatar, pronouns) act as optional professional-context overrides; absence means fall back to the bsky record. Structured name fields (givenName, familyName) extend rather than override displayName, since app.bsky.actor.profile has no structured-name primitive.",
149
150
"id": "id.sifa.profile.self",
150
151
"lexicon": 1
151
152
}