id.sifa.getProfileView

sifa.id

Schema Diff

+63 -0

From

CID
bafyreiagvuxmqrl...
Indexed At
2026-09-05 16:00 UTC
View this version

To

CID
bafyreib533hsphd...
Indexed At
2026-09-20 10:01 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 36 non-breaking changes.

Non-Breaking Changes (36)
  • AddedVertex AddedVertex { vertex_id: "id.sifa.defs#agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#certificationView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#certificationView.currentCompanyName" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#courseView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#courseView.currentCompanyName" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#educationView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#educationView.currentCompanyName" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#honorView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#honorView.currentCompanyName" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#involvementView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#involvementView.currentCompanyName" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#positionView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#positionView.currentCompanyName" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#volunteeringView.agentRef" }
  • AddedVertex AddedVertex { vertex_id: "id.sifa.getProfileView#volunteeringView.currentCompanyName" }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#certificationView", tgt: "id.sifa.getProfileView#certificationView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#certificationView", tgt: "id.sifa.getProfileView#certificationView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#certificationView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#courseView", tgt: "id.sifa.getProfileView#courseView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#courseView", tgt: "id.sifa.getProfileView#courseView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#courseView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#educationView", tgt: "id.sifa.getProfileView#educationView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#educationView", tgt: "id.sifa.getProfileView#educationView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#educationView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#honorView", tgt: "id.sifa.getProfileView#honorView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#honorView", tgt: "id.sifa.getProfileView#honorView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#honorView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#involvementView", tgt: "id.sifa.getProfileView#involvementView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#involvementView", tgt: "id.sifa.getProfileView#involvementView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#involvementView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#positionView", tgt: "id.sifa.getProfileView#positionView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#positionView", tgt: "id.sifa.getProfileView#positionView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#positionView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#volunteeringView", tgt: "id.sifa.getProfileView#volunteeringView.agentRef", kind: "prop", name: Some("agentRef") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#volunteeringView", tgt: "id.sifa.getProfileView#volunteeringView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • AddedEdge AddedEdge { src: "id.sifa.getProfileView#volunteeringView.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.getProfileView#certificationView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#certificationView.currentCompanyName" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#courseView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#courseView.currentCompanyName" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#educationView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#educationView.currentCompanyName" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#honorView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#honorView.currentCompanyName" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#involvementView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#involvementView.currentCompanyName" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#positionView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#positionView.currentCompanyName" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#volunteeringView.agentRef" }
  • AddedVertex { vertex_id: "id.sifa.getProfileView#volunteeringView.currentCompanyName" }

Additional Notes

  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#certificationView", tgt: "id.sifa.getProfileView#certificationView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#certificationView", tgt: "id.sifa.getProfileView#certificationView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#certificationView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#courseView", tgt: "id.sifa.getProfileView#courseView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#courseView", tgt: "id.sifa.getProfileView#courseView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#courseView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#educationView", tgt: "id.sifa.getProfileView#educationView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#educationView", tgt: "id.sifa.getProfileView#educationView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#educationView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#honorView", tgt: "id.sifa.getProfileView#honorView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#honorView", tgt: "id.sifa.getProfileView#honorView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#honorView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#involvementView", tgt: "id.sifa.getProfileView#involvementView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#involvementView", tgt: "id.sifa.getProfileView#involvementView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#involvementView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#positionView", tgt: "id.sifa.getProfileView#positionView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#positionView", tgt: "id.sifa.getProfileView#positionView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#positionView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#volunteeringView", tgt: "id.sifa.getProfileView#volunteeringView.agentRef", kind: "prop", name: Some("agentRef") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#volunteeringView", tgt: "id.sifa.getProfileView#volunteeringView.currentCompanyName", kind: "prop", name: Some("currentCompanyName") }
  • Non-breaking: AddedEdge { src: "id.sifa.getProfileView#volunteeringView.agentRef", tgt: "id.sifa.defs#agentRef", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "activeAppView": {
5 5
      "description": "An AT Protocol app the account has recently created records in.",
6 6
      "properties": {
7 7
        "category": {
8 8
          "description": "App category.",
9 9
          "type": "string"
10 10
        },
11 11
        "id": {
12 12
          "description": "App identifier.",
13 13
          "type": "string"
14 14
        },
15 15
        "latestRecordAt": {
16 16
          "description": "Timestamp of the latest record.",
17 17
          "format": "datetime",
18 18
          "type": "string"
19 19
        },
20 20
        "name": {
21 21
          "description": "App display name.",
22 22
          "type": "string"
23 23
        },
24 24
        "recentCount": {
25 25
          "description": "Recent record count.",
26 26
          "type": "integer"
27 27
        }
28 28
      },
29 29
      "required": [
30 30
        "id",
31 31
        "name"
32 32
      ],
33 33
      "type": "object"
34 34
    },
35 35
    "atfundLink": {
36 36
      "description": "A contribution or funding link.",
37 37
      "properties": {
38 38
        "label": {
39 39
          "description": "Optional display label.",
40 40
          "type": "string"
41 41
        },
42 42
        "url": {
43 43
          "description": "Contribution URL.",
44 44
          "format": "uri",
45 45
          "type": "string"
46 46
        }
47 47
      },
48 48
      "required": [
49 49
        "url"
50 50
      ],
51 51
      "type": "object"
52 52
    },
53 53
    "certificationView": {
54 54
      "description": "A certification or license.",
55 55
      "properties": {
56 +
        "agentRef": {
57 +
          "description": "Canonical issuing-authority reference (name plus optional did/entityRef). Mirrors the flat authority/entityRef fields during the migration; the two always agree.",
58 +
          "ref": "id.sifa.defs#agentRef",
59 +
          "type": "ref"
60 +
        },
56 61
        "credentialUrl": {
57 62
          "description": "URL of the credential.",
58 63
          "format": "uri",
59 64
          "type": "string"
60 65
        },
66 +
        "currentCompanyName": {
67 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
68 +
          "type": "string"
69 +
        },
61 70
        "entityRef": {
62 71
          "description": "Pointer URI to the resolved issuer entity.",
63 72
          "format": "uri",
64 73
          "type": "string"
65 74
        },
66 75
        "expiryDate": {
67 76
          "description": "Expiry date. Partial date.",
68 77
          "type": "string"
69 78
        },
70 79
        "issueDate": {
71 80
          "description": "Issue date. Partial date.",
72 81
          "type": "string"
73 82
        },
74 83
        "issuingOrg": {
75 84
          "description": "Issuing organization.",
76 85
          "type": "string"
77 86
        },
78 87
        "name": {
79 88
          "description": "Certification name.",
80 89
          "type": "string"
81 90
        },
82 91
        "rkey": {
83 92
          "description": "Record key of the certification record.",
84 93
          "type": "string"
85 94
        }
86 95
      },
87 96
      "required": [
88 97
        "rkey",
89 98
        "name"
90 99
      ],
91 100
      "type": "object"
92 101
    },
93 102
    "coSpeakerView": {
94 103
      "description": "A co-speaker on a presentation delivery.",
95 104
      "properties": {
96 105
        "avatar": {
97 106
          "description": "Avatar URL, when linked.",
98 107
          "format": "uri",
99 108
          "type": "string"
100 109
        },
101 110
        "did": {
102 111
          "description": "DID of the co-speaker, when linked to a Sifa profile.",
103 112
          "format": "did",
104 113
          "type": "string"
105 114
        },
106 115
        "displayName": {
107 116
          "description": "Display name, when linked.",
108 117
          "type": "string"
109 118
        },
110 119
        "handle": {
111 120
          "description": "Handle, when linked.",
112 121
          "format": "handle",
113 122
          "type": "string"
114 123
        },
115 124
        "name": {
116 125
          "description": "Free-text co-speaker name, when not linked.",
117 126
          "type": "string"
118 127
        }
119 128
      },
120 129
      "type": "object"
121 130
    },
122 131
    "contributorView": {
123 132
      "description": "A linked publication contributor.",
124 133
      "properties": {
125 134
        "did": {
126 135
          "description": "Sifa/AT Protocol DID, when linked.",
127 136
          "format": "did",
128 137
          "type": "string"
129 138
        },
130 139
        "handle": {
131 140
          "description": "Handle, when linked.",
132 141
          "format": "handle",
133 142
          "type": "string"
134 143
        },
135 144
        "name": {
136 145
          "description": "Contributor name.",
137 146
          "type": "string"
138 147
        },
139 148
        "orcidId": {
140 149
          "description": "ORCID identifier.",
141 150
          "type": "string"
142 151
        }
143 152
      },
144 153
      "required": [
145 154
        "name"
146 155
      ],
147 156
      "type": "object"
148 157
    },
149 158
    "courseView": {
150 159
      "description": "A course entry.",
151 160
      "properties": {
161 +
        "agentRef": {
162 +
          "description": "Canonical institution reference (name plus optional did/entityRef). Mirrors the flat institution/entityRef fields during the migration; the two always agree.",
163 +
          "ref": "id.sifa.defs#agentRef",
164 +
          "type": "ref"
165 +
        },
152 166
        "credentialRkey": {
153 167
          "description": "Record key of a linked certification, when present.",
154 168
          "type": "string"
155 169
        },
170 +
        "currentCompanyName": {
171 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
172 +
          "type": "string"
173 +
        },
156 174
        "entityRef": {
157 175
          "description": "Pointer URI to the resolved institution entity.",
158 176
          "format": "uri",
159 177
          "type": "string"
160 178
        },
161 179
        "institution": {
162 180
          "description": "Institution name.",
163 181
          "type": "string"
164 182
        },
165 183
        "name": {
166 184
          "description": "Course name.",
167 185
          "type": "string"
168 186
        },
169 187
        "number": {
170 188
          "description": "Course number or code.",
171 189
          "type": "string"
172 190
        },
173 191
        "rkey": {
174 192
          "description": "Record key of the course record.",
175 193
          "type": "string"
176 194
        }
177 195
      },
178 196
      "required": [
179 197
        "rkey",
180 198
        "name"
181 199
      ],
182 200
      "type": "object"
183 201
    },
184 202
    "durationView": {
185 203
      "description": "A duration range in minutes.",
186 204
      "properties": {
187 205
        "maxMinutes": {
188 206
          "description": "Maximum duration in minutes.",
189 207
          "type": "integer"
190 208
        },
191 209
        "minMinutes": {
192 210
          "description": "Minimum duration in minutes.",
193 211
          "type": "integer"
194 212
        }
195 213
      },
196 214
      "required": [
197 215
        "minMinutes"
198 216
      ],
199 217
      "type": "object"
200 218
    },
201 219
    "educationView": {
202 220
      "description": "An education-history entry.",
203 221
      "properties": {
204 222
        "activities": {
205 223
          "description": "Activities and societies.",
206 224
          "type": "string"
207 225
        },
226 +
        "agentRef": {
227 +
          "description": "Canonical institution reference (name plus optional did/entityRef). Mirrors the flat institution/institutionDid/entityRef fields during the migration; the two always agree.",
228 +
          "ref": "id.sifa.defs#agentRef",
229 +
          "type": "ref"
230 +
        },
231 +
        "currentCompanyName": {
232 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
233 +
          "type": "string"
234 +
        },
208 235
        "degree": {
209 236
          "description": "Degree earned.",
210 237
          "type": "string"
211 238
        },
212 239
        "description": {
213 240
          "description": "Additional description.",
214 241
          "type": "string"
215 242
        },
216 243
        "endedAt": {
217 244
          "description": "End date. Partial date.",
218 245
          "type": "string"
219 246
        },
220 247
        "entityRef": {
221 248
          "description": "Pointer URI to the resolved institution entity.",
222 249
          "format": "uri",
223 250
          "type": "string"
224 251
        },
225 252
        "fieldOfStudy": {
226 253
          "description": "Field of study.",
227 254
          "type": "string"
228 255
        },
229 256
        "institution": {
230 257
          "description": "Institution name.",
231 258
          "type": "string"
232 259
        },
233 260
        "institutionDid": {
234 261
          "description": "DID of the institution, when known.",
235 262
          "format": "did",
236 263
          "type": "string"
237 264
        },
238 265
        "primary": {
239 266
          "description": "Whether this is the user's primary education entry.",
240 267
          "type": "boolean"
241 268
        },
242 269
        "rkey": {
243 270
          "description": "Record key of the education record.",
244 271
          "type": "string"
245 272
        },
246 273
        "startedAt": {
247 274
          "description": "Start date. Partial date.",
248 275
          "type": "string"
249 276
        }
250 277
      },
251 278
      "required": [
252 279
        "rkey"
253 280
      ],
254 281
      "type": "object"
255 282
    },
256 283
    "externalAccountView": {
257 284
      "description": "A linked external account with verification state.",
258 285
      "properties": {
259 286
        "feedUrl": {
260 287
          "description": "Feed URL (RSS/Atom), when applicable.",
261 288
          "format": "uri",
262 289
          "type": "string"
263 290
        },
264 291
        "label": {
265 292
          "description": "Optional custom label.",
266 293
          "type": "string"
267 294
        },
268 295
        "platform": {
269 296
          "description": "Platform type.",
270 297
          "ref": "id.sifa.defs#externalPlatform",
271 298
          "type": "ref"
272 299
        },
273 300
        "primary": {
274 301
          "description": "Whether this is the primary external account.",
275 302
          "type": "boolean"
276 303
        },
277 304
        "rkey": {
278 305
          "description": "Record key of the external account record.",
279 306
          "type": "string"
280 307
        },
281 308
        "url": {
282 309
          "description": "Account URL.",
283 310
          "format": "uri",
284 311
          "type": "string"
285 312
        },
286 313
        "verifiable": {
287 314
          "description": "Whether the account can be verified.",
288 315
          "type": "boolean"
289 316
        },
290 317
        "verified": {
291 318
          "description": "Whether the account is verified.",
292 319
          "type": "boolean"
293 320
        },
294 321
        "verifiedVia": {
295 322
          "description": "Verification method, when verified.",
296 323
          "type": "string"
297 324
        }
298 325
      },
299 326
      "required": [
300 327
        "rkey",
301 328
        "url"
302 329
      ],
303 330
      "type": "object"
304 331
    },
305 332
    "honorView": {
306 333
      "description": "An honor or award.",
307 334
      "properties": {
335 +
        "agentRef": {
336 +
          "description": "Canonical issuer reference (name plus optional did/entityRef). Mirrors the flat issuer/entityRef fields during the migration; the two always agree.",
337 +
          "ref": "id.sifa.defs#agentRef",
338 +
          "type": "ref"
339 +
        },
340 +
        "currentCompanyName": {
341 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
342 +
          "type": "string"
343 +
        },
308 344
        "date": {
309 345
          "description": "Date received. Partial date.",
310 346
          "type": "string"
311 347
        },
312 348
        "description": {
313 349
          "description": "Description.",
314 350
          "type": "string"
315 351
        },
316 352
        "entityRef": {
317 353
          "description": "Pointer URI to the resolved issuer entity.",
318 354
          "format": "uri",
319 355
          "type": "string"
320 356
        },
321 357
        "issuer": {
322 358
          "description": "Issuing organization.",
323 359
          "type": "string"
324 360
        },
325 361
        "rkey": {
326 362
          "description": "Record key of the honor record.",
327 363
          "type": "string"
328 364
        },
329 365
        "title": {
330 366
          "description": "Honor or award title.",
331 367
          "type": "string"
332 368
        }
333 369
      },
334 370
      "required": [
335 371
        "rkey",
336 372
        "title"
337 373
      ],
338 374
      "type": "object"
339 375
    },
340 376
    "involvementLinkView": {
341 377
      "description": "A proof link on an involvement.",
342 378
      "properties": {
343 379
        "kind": {
344 380
          "description": "What the link points to (e.g. pull-request, talk, article).",
345 381
          "type": "string"
346 382
        },
347 383
        "label": {
348 384
          "description": "Optional human-readable label.",
349 385
          "type": "string"
350 386
        },
351 387
        "url": {
352 388
          "description": "Artifact URL.",
353 389
          "format": "uri",
354 390
          "type": "string"
355 391
        },
356 392
        "verified": {
357 393
          "description": "True if the link host matches a verified external account.",
358 394
          "type": "boolean"
359 395
        },
360 396
        "verifiedPlatform": {
361 397
          "description": "Platform token of the verified host, when verified.",
362 398
          "type": "string"
363 399
        }
364 400
      },
365 401
      "required": [
366 402
        "url"
367 403
      ],
368 404
      "type": "object"
369 405
    },
370 406
    "involvementView": {
371 407
      "description": "A community, open-source, charity, or civic involvement.",
372 408
      "properties": {
409 +
        "agentRef": {
410 +
          "description": "Canonical upstream reference (name plus optional did/entityRef). Mirrors the flat upstream/upstreamDid/entityRef fields during the migration; the two always agree.",
411 +
          "ref": "id.sifa.defs#agentRef",
412 +
          "type": "ref"
413 +
        },
414 +
        "currentCompanyName": {
415 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
416 +
          "type": "string"
417 +
        },
373 418
        "description": {
374 419
          "description": "Description.",
375 420
          "type": "string"
376 421
        },
377 422
        "endedAt": {
378 423
          "description": "End date. Partial date.",
379 424
          "type": "string"
380 425
        },
381 426
        "kind": {
382 427
          "description": "The nature of the involvement.",
383 428
          "ref": "id.sifa.defs#involvementKind",
384 429
          "type": "ref"
385 430
        },
386 431
        "legacy": {
387 432
          "description": "True if mapped from a legacy volunteering record.",
388 433
          "type": "boolean"
389 434
        },
390 435
        "links": {
391 436
          "description": "Public artifact links proving the work.",
392 437
          "items": {
393 438
            "ref": "#involvementLinkView",
394 439
            "type": "ref"
395 440
          },
396 441
          "type": "array"
397 442
        },
398 443
        "primary": {
399 444
          "description": "Whether this is the user's primary current involvement.",
400 445
          "type": "boolean"
401 446
        },
402 447
        "rkey": {
403 448
          "description": "Record key of the involvement (or legacy volunteering) record.",
404 449
          "type": "string"
405 450
        },
406 451
        "role": {
407 452
          "description": "Role in the involvement.",
408 453
          "type": "string"
409 454
        },
410 455
        "startedAt": {
411 456
          "description": "Start date. Partial date.",
412 457
          "type": "string"
413 458
        },
414 459
        "upstream": {
415 460
          "description": "Name of the community, org, or person the involvement is with.",
416 461
          "type": "string"
417 462
        },
418 463
        "upstreamDid": {
419 464
          "description": "DID of the upstream, when known.",
420 465
          "format": "did",
421 466
          "type": "string"
422 467
        },
423 468
        "upstreamUrl": {
424 469
          "description": "URL of the upstream, when provided.",
425 470
          "format": "uri",
426 471
          "type": "string"
427 472
        }
428 473
      },
429 474
      "required": [
430 475
        "rkey",
431 476
        "kind",
432 477
        "links",
433 478
        "legacy"
434 479
      ],
435 480
      "type": "object"
436 481
    },
437 482
    "languageView": {
438 483
      "description": "A language with proficiency.",
439 484
      "properties": {
440 485
        "language": {
441 486
          "description": "Language name or BCP-47 tag.",
442 487
          "type": "string"
443 488
        },
444 489
        "proficiency": {
445 490
          "description": "Proficiency level.",
446 491
          "ref": "id.sifa.defs#proficiency",
447 492
          "type": "ref"
448 493
        },
449 494
        "rkey": {
450 495
          "description": "Record key of the language record.",
451 496
          "type": "string"
452 497
        }
453 498
      },
454 499
      "required": [
455 500
        "rkey",
456 501
        "language"
457 502
      ],
458 503
      "type": "object"
459 504
    },
460 505
    "locationView": {
461 506
      "description": "A professional location on the profile.",
462 507
      "properties": {
463 508
        "countryCode": {
464 509
          "description": "ISO 3166-1 alpha-2 country code.",
465 510
          "type": "string"
466 511
        },
467 512
        "isPrimary": {
468 513
          "description": "Whether this is the primary location.",
469 514
          "type": "boolean"
470 515
        },
471 516
        "label": {
472 517
          "description": "Optional custom label.",
473 518
          "type": "string"
474 519
        },
475 520
        "location": {
476 521
          "description": "Assembled human-readable location string.",
477 522
          "type": "string"
478 523
        },
479 524
        "locationCountry": {
480 525
          "description": "Country name.",
481 526
          "type": "string"
482 527
        },
483 528
        "locationLocality": {
484 529
          "description": "City or locality.",
485 530
          "type": "string"
486 531
        },
487 532
        "locationRegion": {
488 533
          "description": "Region, state, or province.",
489 534
          "type": "string"
490 535
        },
491 536
        "rkey": {
492 537
          "description": "Record key of the location record.",
493 538
          "type": "string"
494 539
        },
495 540
        "type": {
496 541
          "description": "The role this location plays.",
497 542
          "ref": "id.sifa.defs#locationType",
498 543
          "type": "ref"
499 544
        }
500 545
      },
501 546
      "required": [
502 547
        "rkey"
503 548
      ],
504 549
      "type": "object"
505 550
    },
506 551
    "main": {
507 552
      "description": "Get the aggregated public profile view for an actor.",
508 553
      "errors": [
509 554
        {
510 555
          "description": "No profile exists for the given actor, or the actor could not be resolved.",
511 556
          "name": "ProfileNotFound"
512 557
        }
513 558
      ],
514 559
      "output": {
515 560
        "encoding": "application/json",
516 561
        "schema": {
517 562
          "ref": "#profileView",
518 563
          "type": "ref"
519 564
        }
520 565
      },
521 566
      "parameters": {
522 567
        "properties": {
523 568
          "actor": {
524 569
            "description": "The handle or DID of the profile to fetch.",
525 570
            "format": "at-identifier",
526 571
            "type": "string"
527 572
          }
528 573
        },
529 574
        "required": [
530 575
          "actor"
531 576
        ],
532 577
        "type": "params"
533 578
      },
534 579
      "type": "query"
535 580
    },
536 581
    "pdsProviderView": {
537 582
      "description": "A PDS provider descriptor.",
538 583
      "properties": {
539 584
        "host": {
540 585
          "description": "PDS hostname.",
541 586
          "type": "string"
542 587
        },
543 588
        "name": {
544 589
          "description": "Human-readable provider name.",
545 590
          "type": "string"
546 591
        }
547 592
      },
548 593
      "required": [
549 594
        "name"
550 595
      ],
551 596
      "type": "object"
552 597
    },
553 598
    "positionView": {
554 599
      "description": "A work-history entry.",
555 600
      "properties": {
601 +
        "agentRef": {
602 +
          "description": "Canonical company reference (name plus optional did/entityRef). Mirrors the flat company/companyDid/entityRef fields during the migration; the two always agree.",
603 +
          "ref": "id.sifa.defs#agentRef",
604 +
          "type": "ref"
605 +
        },
556 606
        "company": {
557 607
          "description": "Company or organization name.",
558 608
          "type": "string"
559 609
        },
560 610
        "companyDid": {
561 611
          "description": "DID of the company, when known.",
562 612
          "format": "did",
563 613
          "type": "string"
564 614
        },
565 615
        "countryCode": {
566 616
          "description": "ISO 3166-1 alpha-2 country code.",
567 617
          "type": "string"
568 618
        },
619 +
        "currentCompanyName": {
620 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
621 +
          "type": "string"
622 +
        },
569 623
        "description": {
570 624
          "description": "Role description.",
571 625
          "type": "string"
572 626
        },
573 627
        "employmentType": {
574 628
          "description": "Employment arrangement.",
575 629
          "ref": "id.sifa.defs#employmentType",
576 630
          "type": "ref"
577 631
        },
578 632
        "endedAt": {
579 633
          "description": "End date. Partial date, absent if current.",
580 634
          "type": "string"
581 635
        },
582 636
        "entityName": {
583 637
          "description": "Resolved canonical company name.",
584 638
          "type": "string"
585 639
        },
586 640
        "entityRef": {
587 641
          "description": "Pointer URI to the resolved company entity.",
588 642
          "format": "uri",
589 643
          "type": "string"
590 644
        },
591 645
        "location": {
592 646
          "description": "Assembled human-readable location string.",
593 647
          "type": "string"
594 648
        },
595 649
        "locationCountry": {
596 650
          "description": "Country name.",
597 651
          "type": "string"
598 652
        },
599 653
        "locationLocality": {
600 654
          "description": "City or locality.",
601 655
          "type": "string"
602 656
        },
603 657
        "locationRegion": {
604 658
          "description": "Region, state, or province.",
605 659
          "type": "string"
606 660
        },
607 661
        "onBehalfOf": {
608 662
          "description": "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. Absent for independent roles.",
609 663
          "type": "string"
610 664
        },
611 665
        "onBehalfOfDid": {
612 666
          "description": "DID of the represented party, when known. May be an organization or a person.",
613 667
          "format": "did",
614 668
          "type": "string"
615 669
        },
616 670
        "onBehalfOfEntityName": {
617 671
          "description": "Resolved canonical name for the represented party. Present only when the reference resolves; clients render onBehalfOf otherwise, never the raw URI.",
618 672
          "type": "string"
619 673
        },
620 674
        "onBehalfOfEntityRef": {
621 675
          "description": "Pointer URI to the resolved entity for the represented party.",
622 676
          "format": "uri",
623 677
          "type": "string"
624 678
        },
625 679
        "primary": {
626 680
          "description": "Whether this is the user's primary current position.",
627 681
          "type": "boolean"
628 682
        },
629 683
        "rkey": {
630 684
          "description": "Record key of the position record.",
631 685
          "type": "string"
632 686
        },
633 687
        "skillRkeys": {
634 688
          "description": "Record keys of skills linked to this position.",
635 689
          "items": {
636 690
            "type": "string"
637 691
          },
638 692
          "type": "array"
639 693
        },
640 694
        "startedAt": {
641 695
          "description": "Start date. Partial date (YYYY, YYYY-MM, or YYYY-MM-DD).",
642 696
          "type": "string"
643 697
        },
644 698
        "title": {
645 699
          "description": "Job title or role.",
646 700
          "type": "string"
647 701
        },
648 702
        "workplaceType": {
649 703
          "description": "Workplace arrangement.",
650 704
          "ref": "id.sifa.defs#workplaceType",
651 705
          "type": "ref"
652 706
        }
653 707
      },
654 708
      "required": [
655 709
        "rkey",
656 710
        "title"
657 711
      ],
658 712
      "type": "object"
659 713
    },
660 714
    "presentationDeliveryView": {
661 715
      "description": "A single delivery of a presentation at an occasion.",
662 716
      "properties": {
663 717
        "coSpeakers": {
664 718
          "description": "Co-speakers on this delivery.",
665 719
          "items": {
666 720
            "ref": "#coSpeakerView",
667 721
            "type": "ref"
668 722
          },
669 723
          "type": "array"
670 724
        },
671 725
        "date": {
672 726
          "description": "Delivery date. Partial date.",
673 727
          "type": "string"
674 728
        },
675 729
        "eventName": {
676 730
          "description": "Name of the event or occasion.",
677 731
          "type": "string"
678 732
        },
679 733
        "eventUri": {
680 734
          "description": "AT-URI of a linked event record.",
681 735
          "format": "at-uri",
682 736
          "type": "string"
683 737
        },
684 738
        "links": {
685 739
          "description": "Related links for this delivery.",
686 740
          "items": {
687 741
            "ref": "id.sifa.defs#presentationLink",
688 742
            "type": "ref"
689 743
          },
690 744
          "type": "array"
691 745
        },
692 746
        "location": {
693 747
          "description": "Event location.",
694 748
          "type": "string"
695 749
        },
696 750
        "mode": {
697 751
          "description": "Delivery mode (e.g. in-person, remote, hybrid).",
698 752
          "type": "string"
699 753
        },
700 754
        "presentationRkey": {
701 755
          "description": "Record key of the parent presentation, when grouped.",
702 756
          "type": "string"
703 757
        },
704 758
        "rkey": {
705 759
          "description": "Record key of the delivery record.",
706 760
          "type": "string"
707 761
        },
708 762
        "role": {
709 763
          "description": "The user's role in the delivery.",
710 764
          "ref": "id.sifa.defs#presentationRole",
711 765
          "type": "ref"
712 766
        },
713 767
        "status": {
714 768
          "description": "Delivery status.",
715 769
          "type": "string"
716 770
        },
717 771
        "title": {
718 772
          "description": "Delivery title (may differ from the presentation title).",
719 773
          "type": "string"
720 774
        }
721 775
      },
722 776
      "required": [
723 777
        "rkey"
724 778
      ],
725 779
      "type": "object"
726 780
    },
727 781
    "presentationView": {
728 782
      "description": "A talk or session (content), with its deliveries grouped underneath.",
729 783
      "properties": {
730 784
        "deliveries": {
731 785
          "description": "Deliveries of this presentation.",
732 786
          "items": {
733 787
            "ref": "#presentationDeliveryView",
734 788
            "type": "ref"
735 789
          },
736 790
          "type": "array"
737 791
        },
738 792
        "description": {
739 793
          "description": "Presentation description.",
740 794
          "type": "string"
741 795
        },
742 796
        "duration": {
743 797
          "description": "Duration range in minutes.",
744 798
          "ref": "#durationView",
745 799
          "type": "ref"
746 800
        },
747 801
        "intendedAudiences": {
748 802
          "description": "Intended audiences.",
749 803
          "items": {
750 804
            "type": "string"
751 805
          },
752 806
          "type": "array"
753 807
        },
754 808
        "links": {
755 809
          "description": "Related links (slides, recording, etc.).",
756 810
          "items": {
757 811
            "ref": "id.sifa.defs#presentationLink",
758 812
            "type": "ref"
759 813
          },
760 814
          "type": "array"
761 815
        },
762 816
        "primary": {
763 817
          "description": "Whether this is the user's primary talk.",
764 818
          "type": "boolean"
765 819
        },
766 820
        "rkey": {
767 821
          "description": "Record key of the presentation record.",
768 822
          "type": "string"
769 823
        },
770 824
        "title": {
771 825
          "description": "Presentation title.",
772 826
          "type": "string"
773 827
        },
774 828
        "writeupUri": {
775 829
          "description": "AT-URI of a linked write-up record.",
776 830
          "format": "at-uri",
777 831
          "type": "string"
778 832
        }
779 833
      },
780 834
      "required": [
781 835
        "rkey",
782 836
        "title",
783 837
        "deliveries"
784 838
      ],
785 839
      "type": "object"
786 840
    },
787 841
    "profileView": {
788 842
      "description": "The aggregated public professional profile view.",
789 843
      "properties": {
790 844
        "about": {
791 845
          "description": "Longer professional summary or bio.",
792 846
          "maxGraphemes": 5000,
793 847
          "maxLength": 50000,
794 848
          "type": "string"
795 849
        },
796 850
        "activeApps": {
797 851
          "description": "AT Protocol apps this account has recently created records in.",
798 852
          "items": {
799 853
            "ref": "#activeAppView",
800 854
            "type": "ref"
801 855
          },
802 856
          "type": "array"
803 857
        },
804 858
        "atfundContribute": {
805 859
          "description": "Optional contribution/funding link.",
806 860
          "ref": "#atfundLink",
807 861
          "type": "ref"
808 862
        },
809 863
        "atprotoFollowersCount": {
810 864
          "description": "Number of app.bsky.graph followers.",
811 865
          "type": "integer"
812 866
        },
813 867
        "availableFromUtc": {
814 868
          "description": "Start of an availability window, as a UTC offset, if set.",
815 869
          "type": "integer"
816 870
        },
817 871
        "availableToUtc": {
818 872
          "description": "End of an availability window, as a UTC offset, if set.",
819 873
          "type": "integer"
820 874
        },
821 875
        "avatar": {
822 876
          "description": "URL of the profile avatar image.",
823 877
          "format": "uri",
824 878
          "type": "string"
825 879
        },
826 880
        "blueskyVerified": {
827 881
          "description": "Whether the account holds a Bluesky verification.",
828 882
          "type": "boolean"
829 883
        },
830 884
        "blueskyVerifiedAt": {
831 885
          "description": "When the Bluesky verification was issued.",
832 886
          "format": "datetime",
833 887
          "type": "string"
834 888
        },
835 889
        "certifications": {
836 890
          "description": "Certifications and licenses.",
837 891
          "items": {
838 892
            "ref": "#certificationView",
839 893
            "type": "ref"
840 894
          },
841 895
          "type": "array"
842 896
        },
843 897
        "claimed": {
844 898
          "description": "Whether the profile has been claimed by its owner on Sifa.",
845 899
          "type": "boolean"
846 900
        },
847 901
        "connectionsCount": {
848 902
          "description": "Number of confirmed professional connections.",
849 903
          "type": "integer"
850 904
        },
851 905
        "countryCode": {
852 906
          "description": "ISO 3166-1 alpha-2 country code for the primary location.",
853 907
          "type": "string"
854 908
        },
855 909
        "courses": {
856 910
          "description": "Courses, optionally linked to a credential.",
857 911
          "items": {
858 912
            "ref": "#courseView",
859 913
            "type": "ref"
860 914
          },
861 915
          "type": "array"
862 916
        },
863 917
        "createdAt": {
864 918
          "description": "When the profile record was created.",
865 919
          "format": "datetime",
866 920
          "type": "string"
867 921
        },
868 922
        "did": {
869 923
          "description": "The account DID. Stable identifier for the profile.",
870 924
          "format": "did",
871 925
          "type": "string"
872 926
        },
873 927
        "displayName": {
874 928
          "description": "Display name shown on the profile.",
875 929
          "maxGraphemes": 128,
876 930
          "maxLength": 1280,
877 931
          "type": "string"
878 932
        },
879 933
        "education": {
880 934
          "description": "Education history entries.",
881 935
          "items": {
882 936
            "ref": "#educationView",
883 937
            "type": "ref"
884 938
          },
885 939
          "type": "array"
886 940
        },
887 941
        "externalAccounts": {
888 942
          "description": "Linked external accounts, with verification state.",
889 943
          "items": {
890 944
            "ref": "#externalAccountView",
891 945
            "type": "ref"
892 946
          },
893 947
          "type": "array"
894 948
        },
895 949
        "familyName": {
896 950
          "description": "Family (last) name, when provided.",
897 951
          "maxGraphemes": 128,
898 952
          "maxLength": 1280,
899 953
          "type": "string"
900 954
        },
901 955
        "followersCount": {
902 956
          "description": "Number of Sifa graph followers.",
903 957
          "type": "integer"
904 958
        },
905 959
        "followingCount": {
906 960
          "description": "Number of accounts this profile follows on the Sifa graph.",
907 961
          "type": "integer"
908 962
        },
909 963
        "givenName": {
910 964
          "description": "Given (first) name, when provided.",
911 965
          "maxGraphemes": 128,
912 966
          "maxLength": 1280,
913 967
          "type": "string"
914 968
        },
915 969
        "handle": {
916 970
          "description": "The current handle for the account.",
917 971
          "format": "handle",
918 972
          "type": "string"
919 973
        },
920 974
        "headline": {
921 975
          "description": "Short professional headline.",
922 976
          "maxGraphemes": 300,
923 977
          "maxLength": 3000,
924 978
          "type": "string"
925 979
        },
926 980
        "honors": {
927 981
          "description": "Honors and awards.",
928 982
          "items": {
929 983
            "ref": "#honorView",
930 984
            "type": "ref"
931 985
          },
932 986
          "type": "array"
933 987
        },
934 988
        "industries": {
935 989
          "description": "Industry/domain pairs the user works in.",
936 990
          "items": {
937 991
            "ref": "id.sifa.defs#industryDomain",
938 992
            "type": "ref"
939 993
          },
940 994
          "type": "array"
941 995
        },
942 996
        "involvement": {
943 997
          "description": "Community, open-source, charity, and civic involvement.",
944 998
          "items": {
945 999
            "ref": "#involvementView",
946 1000
            "type": "ref"
947 1001
          },
948 1002
          "type": "array"
949 1003
        },
950 1004
        "langs": {
951 1005
          "description": "BCP-47 language tags the user has indicated.",
952 1006
          "items": {
953 1007
            "type": "string"
954 1008
          },
955 1009
          "type": "array"
956 1010
        },
957 1011
        "languages": {
958 1012
          "description": "Spoken/written languages with proficiency.",
959 1013
          "items": {
960 1014
            "ref": "#languageView",
961 1015
            "type": "ref"
962 1016
          },
963 1017
          "type": "array"
964 1018
        },
965 1019
        "location": {
966 1020
          "description": "Assembled human-readable primary location string.",
967 1021
          "type": "string"
968 1022
        },
969 1023
        "locationCountry": {
970 1024
          "description": "Primary location country name.",
971 1025
          "type": "string"
972 1026
        },
973 1027
        "locationLocality": {
974 1028
          "description": "Primary location city or locality.",
975 1029
          "type": "string"
976 1030
        },
977 1031
        "locationRegion": {
978 1032
          "description": "Primary location region, state, or province.",
979 1033
          "type": "string"
980 1034
        },
981 1035
        "locations": {
982 1036
          "description": "All professional locations on the profile.",
983 1037
          "items": {
984 1038
            "ref": "#locationView",
985 1039
            "type": "ref"
986 1040
          },
987 1041
          "type": "array"
988 1042
        },
989 1043
        "metInPersonCount": {
990 1044
          "description": "Number of confirmed in-person meetings.",
991 1045
          "type": "integer"
992 1046
        },
993 1047
        "openTo": {
994 1048
          "description": "The kinds of opportunities the user is open to.",
995 1049
          "items": {
996 1050
            "ref": "id.sifa.defs#openToWorkStatus",
997 1051
            "type": "ref"
998 1052
          },
999 1053
          "type": "array"
1000 1054
        },
1001 1055
        "pdsProvider": {
1002 1056
          "description": "The account PDS provider.",
1003 1057
          "ref": "#pdsProviderView",
1004 1058
          "type": "ref"
1005 1059
        },
1006 1060
        "positions": {
1007 1061
          "description": "Work history entries.",
1008 1062
          "items": {
1009 1063
            "ref": "#positionView",
1010 1064
            "type": "ref"
1011 1065
          },
1012 1066
          "type": "array"
1013 1067
        },
1014 1068
        "preferredWorkplace": {
1015 1069
          "description": "Preferred workplace arrangements.",
1016 1070
          "items": {
1017 1071
            "ref": "id.sifa.defs#workplaceType",
1018 1072
            "type": "ref"
1019 1073
          },
1020 1074
          "type": "array"
1021 1075
        },
1022 1076
        "presentationDeliveries": {
1023 1077
          "description": "Standalone deliveries that reference no owned presentation.",
1024 1078
          "items": {
1025 1079
            "ref": "#presentationDeliveryView",
1026 1080
            "type": "ref"
1027 1081
          },
1028 1082
          "type": "array"
1029 1083
        },
1030 1084
        "presentations": {
1031 1085
          "description": "Talks and sessions (content), each with its deliveries grouped underneath.",
1032 1086
          "items": {
1033 1087
            "ref": "#presentationView",
1034 1088
            "type": "ref"
1035 1089
          },
1036 1090
          "type": "array"
1037 1091
        },
1038 1092
        "projects": {
1039 1093
          "description": "Personal or professional projects.",
1040 1094
          "items": {
1041 1095
            "ref": "#projectView",
1042 1096
            "type": "ref"
1043 1097
          },
1044 1098
          "type": "array"
1045 1099
        },
1046 1100
        "pronouns": {
1047 1101
          "description": "Self-described pronouns.",
1048 1102
          "maxGraphemes": 64,
1049 1103
          "maxLength": 640,
1050 1104
          "type": "string"
1051 1105
        },
1052 1106
        "publications": {
1053 1107
          "description": "Publications, merged from Sifa records and linked ORCID works.",
1054 1108
          "items": {
1055 1109
            "ref": "#publicationView",
1056 1110
            "type": "ref"
1057 1111
          },
1058 1112
          "type": "array"
1059 1113
        },
1060 1114
        "skills": {
1061 1115
          "description": "Skills, optionally linked to positions.",
1062 1116
          "items": {
1063 1117
            "ref": "#skillView",
1064 1118
            "type": "ref"
1065 1119
          },
1066 1120
          "type": "array"
1067 1121
        },
1068 1122
        "volunteering": {
1069 1123
          "description": "Legacy volunteering entries. New entries are surfaced under involvement.",
1070 1124
          "items": {
1071 1125
            "ref": "#volunteeringView",
1072 1126
            "type": "ref"
1073 1127
          },
1074 1128
          "type": "array"
1075 1129
        },
1076 1130
        "website": {
1077 1131
          "description": "Primary personal or professional website.",
1078 1132
          "format": "uri",
1079 1133
          "type": "string"
1080 1134
        }
1081 1135
      },
1082 1136
      "required": [
1083 1137
        "did",
1084 1138
        "handle"
1085 1139
      ],
1086 1140
      "type": "object"
1087 1141
    },
1088 1142
    "projectView": {
1089 1143
      "description": "A project entry.",
1090 1144
      "properties": {
1091 1145
        "description": {
1092 1146
          "description": "Project description.",
1093 1147
          "type": "string"
1094 1148
        },
1095 1149
        "endDate": {
1096 1150
          "description": "End date. Partial date.",
1097 1151
          "type": "string"
1098 1152
        },
1099 1153
        "name": {
1100 1154
          "description": "Project name.",
1101 1155
          "type": "string"
1102 1156
        },
1103 1157
        "primary": {
1104 1158
          "description": "Whether this is the user's primary ongoing project.",
1105 1159
          "type": "boolean"
1106 1160
        },
1107 1161
        "rkey": {
1108 1162
          "description": "Record key of the project record.",
1109 1163
          "type": "string"
1110 1164
        },
1111 1165
        "startDate": {
1112 1166
          "description": "Start date. Partial date.",
1113 1167
          "type": "string"
1114 1168
        },
1115 1169
        "url": {
1116 1170
          "description": "Project URL.",
1117 1171
          "format": "uri",
1118 1172
          "type": "string"
1119 1173
        }
1120 1174
      },
1121 1175
      "required": [
1122 1176
        "rkey",
1123 1177
        "name"
1124 1178
      ],
1125 1179
      "type": "object"
1126 1180
    },
1127 1181
    "publicationView": {
1128 1182
      "description": "A publication, merged from Sifa and linked ORCID works.",
1129 1183
      "properties": {
1130 1184
        "contributors": {
1131 1185
          "description": "Linked contributors (co-authors).",
1132 1186
          "items": {
1133 1187
            "ref": "#contributorView",
1134 1188
            "type": "ref"
1135 1189
          },
1136 1190
          "type": "array"
1137 1191
        },
1138 1192
        "date": {
1139 1193
          "description": "Publication date. Partial date.",
1140 1194
          "type": "string"
1141 1195
        },
1142 1196
        "description": {
1143 1197
          "description": "Description or abstract.",
1144 1198
          "type": "string"
1145 1199
        },
1146 1200
        "doi": {
1147 1201
          "description": "Digital Object Identifier.",
1148 1202
          "type": "string"
1149 1203
        },
1150 1204
        "image": {
1151 1205
          "description": "Cover or preview image URL.",
1152 1206
          "format": "uri",
1153 1207
          "type": "string"
1154 1208
        },
1155 1209
        "orcidCorroborated": {
1156 1210
          "description": "Whether an ORCID work corroborates a Sifa record.",
1157 1211
          "type": "boolean"
1158 1212
        },
1159 1213
        "primary": {
1160 1214
          "description": "Whether this is the user's primary publication.",
1161 1215
          "type": "boolean"
1162 1216
        },
1163 1217
        "publicationName": {
1164 1218
          "description": "Name of the source publication venue, when present.",
1165 1219
          "type": "string"
1166 1220
        },
1167 1221
        "publicationUri": {
1168 1222
          "description": "AT-URI of the source publication record, when present.",
1169 1223
          "format": "at-uri",
1170 1224
          "type": "string"
1171 1225
        },
1172 1226
        "publicationUrl": {
1173 1227
          "description": "Canonical publication URL, when present.",
1174 1228
          "format": "uri",
1175 1229
          "type": "string"
1176 1230
        },
1177 1231
        "publisher": {
1178 1232
          "description": "Publisher or journal.",
1179 1233
          "type": "string"
1180 1234
        },
1181 1235
        "rkey": {
1182 1236
          "description": "Record key, or a synthetic key for ORCID-only works.",
1183 1237
          "type": "string"
1184 1238
        },
1185 1239
        "subtitle": {
1186 1240
          "description": "Subtitle.",
1187 1241
          "type": "string"
1188 1242
        },
1189 1243
        "title": {
1190 1244
          "description": "Publication title.",
1191 1245
          "type": "string"
1192 1246
        },
1193 1247
        "type": {
1194 1248
          "description": "Publication type token.",
1195 1249
          "type": "string"
1196 1250
        },
1197 1251
        "typeLabel": {
1198 1252
          "description": "Human-readable publication type.",
1199 1253
          "type": "string"
1200 1254
        },
1201 1255
        "url": {
1202 1256
          "description": "Publication URL.",
1203 1257
          "format": "uri",
1204 1258
          "type": "string"
1205 1259
        },
1206 1260
        "verified": {
1207 1261
          "description": "Whether the publication is verified (e.g. via ORCID).",
1208 1262
          "type": "boolean"
1209 1263
        },
1210 1264
        "verifiedVia": {
1211 1265
          "description": "Verification source, when verified.",
1212 1266
          "type": "string"
1213 1267
        }
1214 1268
      },
1215 1269
      "required": [
1216 1270
        "rkey",
1217 1271
        "title",
1218 1272
        "verified"
1219 1273
      ],
1220 1274
      "type": "object"
1221 1275
    },
1222 1276
    "skillView": {
1223 1277
      "description": "A skill entry.",
1224 1278
      "properties": {
1225 1279
        "category": {
1226 1280
          "description": "Broad category.",
1227 1281
          "ref": "id.sifa.defs#skillCategory",
1228 1282
          "type": "ref"
1229 1283
        },
1230 1284
        "name": {
1231 1285
          "description": "Skill name.",
1232 1286
          "type": "string"
1233 1287
        },
1234 1288
        "positionRkeys": {
1235 1289
          "description": "Record keys of positions this skill is linked to.",
1236 1290
          "items": {
1237 1291
            "type": "string"
1238 1292
          },
1239 1293
          "type": "array"
1240 1294
        },
1241 1295
        "rkey": {
1242 1296
          "description": "Record key of the skill record.",
1243 1297
          "type": "string"
1244 1298
        }
1245 1299
      },
1246 1300
      "required": [
1247 1301
        "rkey",
1248 1302
        "name"
1249 1303
      ],
1250 1304
      "type": "object"
1251 1305
    },
1252 1306
    "volunteeringView": {
1253 1307
      "description": "A legacy volunteering entry.",
1254 1308
      "properties": {
1309 +
        "agentRef": {
1310 +
          "description": "Canonical organization reference (name plus optional did/entityRef). Mirrors the flat organization/entityRef fields during the migration; the two always agree.",
1311 +
          "ref": "id.sifa.defs#agentRef",
1312 +
          "type": "ref"
1313 +
        },
1255 1314
        "cause": {
1256 1315
          "description": "Cause supported.",
1257 1316
          "type": "string"
1258 1317
        },
1318 +
        "currentCompanyName": {
1319 +
          "description": "Current canonical name of the linked entity, when it resolves. The web shows it as a \"Now {name}\" hint when it differs from the saved snapshot name (#516).",
1320 +
          "type": "string"
1321 +
        },
1259 1322
        "description": {
1260 1323
          "description": "Description.",
1261 1324
          "type": "string"
1262 1325
        },
1263 1326
        "endDate": {
1264 1327
          "description": "End date. Partial date.",
1265 1328
          "type": "string"
1266 1329
        },
1267 1330
        "entityRef": {
1268 1331
          "description": "Pointer URI to the resolved organization entity.",
1269 1332
          "format": "uri",
1270 1333
          "type": "string"
1271 1334
        },
1272 1335
        "organization": {
1273 1336
          "description": "Organization name.",
1274 1337
          "type": "string"
1275 1338
        },
1276 1339
        "rkey": {
1277 1340
          "description": "Record key of the volunteering record.",
1278 1341
          "type": "string"
1279 1342
        },
1280 1343
        "role": {
1281 1344
          "description": "Role held.",
1282 1345
          "type": "string"
1283 1346
        },
1284 1347
        "startDate": {
1285 1348
          "description": "Start date. Partial date.",
1286 1349
          "type": "string"
1287 1350
        }
1288 1351
      },
1289 1352
      "required": [
1290 1353
        "rkey",
1291 1354
        "organization"
1292 1355
      ],
1293 1356
      "type": "object"
1294 1357
    }
1295 1358
  },
1296 1359
  "description": "Get the aggregated public professional profile for an actor, as computed by a Sifa AppView. This view joins a user's id.sifa.* records across all sections (positions, education, skills, endorsements received, and more) plus AppView-computed aggregates (follower/connection counts, active apps, verification state). Raw records remain readable directly from the user's PDS; this method exposes the enriched, joined view that only exists in the AppView. Public projection: viewer-specific and internal fields are not included.",
1297 1360
  "id": "id.sifa.getProfileView",
1298 1361
  "lexicon": 1
1299 1362
}

Compare Other Versions

Lexicon Garden

@