@snokam/mcp-api 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/auth.d.ts +0 -15
  2. package/dist/auth.js +15 -59
  3. package/dist/builtin-tools.d.ts +109 -0
  4. package/dist/builtin-tools.js +200 -0
  5. package/dist/execute-call.d.ts +5 -0
  6. package/dist/execute-call.js +45 -0
  7. package/dist/index.d.ts +0 -7
  8. package/dist/index.js +7 -312
  9. package/dist/openapi-loader.d.ts +1 -14
  10. package/dist/openapi-loader.js +8 -49
  11. package/dist/state.d.ts +13 -0
  12. package/dist/state.js +54 -0
  13. package/dist/tool-schema.d.ts +2 -0
  14. package/dist/tool-schema.js +42 -0
  15. package/package.json +6 -6
  16. package/specs/production/accounting.json +2533 -1937
  17. package/specs/production/blog.json +1608 -1
  18. package/specs/production/broker.json +52 -24
  19. package/specs/production/chatgpt.json +299 -17
  20. package/specs/production/employees.json +3116 -278
  21. package/specs/production/events.json +437 -51
  22. package/specs/production/notifications.json +441 -11
  23. package/specs/production/office.json +818 -836
  24. package/specs/production/recruitment.json +3635 -1
  25. package/specs/production/sales.json +5250 -417
  26. package/specs/production/sanity.json +28588 -15500
  27. package/specs/production/sync.json +116 -20
  28. package/specs/production/webshop.json +38 -18
  29. package/specs/test/accounting.json +2533 -1937
  30. package/specs/test/blog.json +1608 -1
  31. package/specs/test/broker.json +52 -24
  32. package/specs/test/chatgpt.json +299 -17
  33. package/specs/test/employees.json +3116 -278
  34. package/specs/test/events.json +437 -51
  35. package/specs/test/notifications.json +441 -11
  36. package/specs/test/office.json +818 -836
  37. package/specs/test/recruitment.json +3635 -1
  38. package/specs/test/sales.json +5250 -417
  39. package/specs/test/sanity.json +28588 -15500
  40. package/specs/test/sync.json +116 -20
  41. package/specs/test/webshop.json +38 -18
@@ -11,23 +11,23 @@
11
11
  }
12
12
  ],
13
13
  "paths": {
14
- "/v1.0/protected": {
14
+ "/v1.0/cvs": {
15
15
  "get": {
16
16
  "tags": [
17
- "Protected"
17
+ "CV"
18
18
  ],
19
- "summary": "Gets all protected employees",
20
- "description": "Retrieves a list of all protected employees.",
21
- "operationId": "GetEmployeesProtected",
19
+ "summary": "Gets CV data for all consultants",
20
+ "description": "Retrieves CV data for all consultants from CvPartner, including technologies, roles, about, and CV text.",
21
+ "operationId": "GetEmployeesCv",
22
22
  "responses": {
23
23
  "200": {
24
- "description": "List of protected employees retrieved successfully",
24
+ "description": "List of consultant CV profiles retrieved successfully",
25
25
  "content": {
26
26
  "application/json": {
27
27
  "schema": {
28
28
  "type": "array",
29
29
  "items": {
30
- "$ref": "#/components/schemas/protectedEmployee"
30
+ "$ref": "#/components/schemas/consultantCv"
31
31
  }
32
32
  }
33
33
  }
@@ -42,27 +42,56 @@
42
42
  "security": [
43
43
  {
44
44
  "Implicit": [
45
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
45
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
46
46
  ]
47
+ },
48
+ {
49
+ "ApiKey": []
47
50
  }
48
51
  ]
49
52
  }
50
53
  },
51
- "/v1.0/protected/me": {
54
+ "/v1.0/presentations": {
52
55
  "get": {
53
56
  "tags": [
54
- "Protected"
57
+ "CV"
55
58
  ],
56
- "summary": "Gets the authenticated user's protected employee data",
57
- "description": "Retrieves the protected employee data for the authenticated user.",
58
- "operationId": "GetMeProtected",
59
+ "summary": "Gets all presentations held by consultants",
60
+ "description": "Aggregates the presentations listed across all consultant CVs in CvPartner, including the speaker for each presentation. Public endpoint used by the snokam.no/presentasjoner page.",
61
+ "operationId": "GetPresentations",
59
62
  "responses": {
60
63
  "200": {
61
- "description": "Authenticated user's protected employee data retrieved successfully",
64
+ "description": "List of presentations retrieved successfully",
62
65
  "content": {
63
66
  "application/json": {
64
67
  "schema": {
65
- "$ref": "#/components/schemas/protectedEmployee"
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/components/schemas/consultantPresentation"
71
+ }
72
+ }
73
+ }
74
+ },
75
+ "x-ms-summary": "Success"
76
+ }
77
+ }
78
+ }
79
+ },
80
+ "/v1.0/cvs/my-cv": {
81
+ "get": {
82
+ "tags": [
83
+ "CV"
84
+ ],
85
+ "summary": "Gets CV data for the authenticated user",
86
+ "description": "Retrieves CV data for the currently authenticated consultant from CvPartner.",
87
+ "operationId": "GetMyCv",
88
+ "responses": {
89
+ "200": {
90
+ "description": "Authenticated user's CV profile retrieved successfully",
91
+ "content": {
92
+ "application/json": {
93
+ "schema": {
94
+ "$ref": "#/components/schemas/consultantCv"
66
95
  }
67
96
  }
68
97
  },
@@ -73,246 +102,2679 @@
73
102
  "x-ms-summary": "Unauthorized"
74
103
  },
75
104
  "404": {
76
- "description": "Employee not found",
105
+ "description": "Employee not found in CvPartner",
77
106
  "x-ms-summary": "Not Found"
78
107
  }
79
108
  },
80
109
  "security": [
81
110
  {
82
111
  "Implicit": [
83
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
112
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
84
113
  ]
114
+ },
115
+ {
116
+ "ApiKey": []
85
117
  }
86
118
  ]
87
- },
88
- "put": {
119
+ }
120
+ },
121
+ "/v1.0/cvs/{slug}": {
122
+ "get": {
89
123
  "tags": [
90
- "Protected"
124
+ "CV"
91
125
  ],
92
- "summary": "Updates the authenticated user's protected employee data",
93
- "description": "Updates the protected employee data for the authenticated user.",
94
- "operationId": "PatchMeProtected",
95
- "requestBody": {
96
- "description": "Employee data to update",
97
- "content": {
98
- "application/json": {
99
- "schema": {
100
- "$ref": "#/components/schemas/patchEmployee"
126
+ "summary": "Gets CV data for a specific employee by slug",
127
+ "description": "Retrieves CV data for a specific consultant from CvPartner by their Sanity slug (e.g. 'hakon-grotte').",
128
+ "operationId": "GetEmployeeCvBySlug",
129
+ "parameters": [
130
+ {
131
+ "name": "slug",
132
+ "in": "path",
133
+ "required": true,
134
+ "schema": {
135
+ "type": "string"
136
+ }
137
+ }
138
+ ],
139
+ "responses": {
140
+ "200": {
141
+ "description": "Payload of ConsultantCv",
142
+ "content": {
143
+ "application/json": {
144
+ "schema": {
145
+ "$ref": "#/components/schemas/consultantCv"
146
+ }
101
147
  }
102
148
  }
103
149
  },
104
- "required": true
150
+ "404": {
151
+ "description": "No description"
152
+ }
105
153
  },
154
+ "security": [
155
+ {
156
+ "Implicit": [
157
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
158
+ ]
159
+ },
160
+ {
161
+ "ApiKey": []
162
+ }
163
+ ]
164
+ }
165
+ },
166
+ "/v1.0/me/cv/pdf": {
167
+ "get": {
168
+ "tags": [
169
+ "CV"
170
+ ],
171
+ "summary": "Downloads the authenticated user's CV as PDF",
172
+ "operationId": "GetMyCvPdf",
106
173
  "responses": {
107
174
  "200": {
108
- "description": "Authenticated user's protected employee data updated successfully",
175
+ "description": "Payload of Array of Byte",
109
176
  "content": {
110
- "application/json": {
177
+ "application/pdf": {
111
178
  "schema": {
112
- "$ref": "#/components/schemas/protectedEmployee"
179
+ "type": "string",
180
+ "format": "binary"
113
181
  }
114
182
  }
115
- },
116
- "x-ms-summary": "Success"
183
+ }
117
184
  },
118
185
  "401": {
119
- "description": "User is not authorized",
120
- "x-ms-summary": "Unauthorized"
186
+ "description": "No description"
187
+ },
188
+ "404": {
189
+ "description": "No description"
121
190
  }
122
191
  },
123
192
  "security": [
124
193
  {
125
194
  "Implicit": [
126
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
195
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
127
196
  ]
197
+ },
198
+ {
199
+ "ApiKey": []
128
200
  }
129
201
  ]
130
202
  }
131
203
  },
132
- "/v1.0/protected/{id}": {
204
+ "/v1.0/cvs/{slug}/pdf": {
133
205
  "get": {
134
206
  "tags": [
135
- "Protected"
207
+ "CV"
136
208
  ],
137
- "summary": "Gets a protected employee by ID",
138
- "description": "Retrieves a protected employee by their ID.",
139
- "operationId": "GetEmployeeProtected",
209
+ "summary": "Downloads a specific consultant's CV as PDF by slug",
210
+ "operationId": "GetEmployeeCvPdfBySlug",
140
211
  "parameters": [
141
212
  {
142
- "name": "id",
213
+ "name": "slug",
143
214
  "in": "path",
144
- "description": "The ID of the protected employee to retrieve",
145
215
  "required": true,
146
216
  "schema": {
147
217
  "type": "string"
148
- },
149
- "x-ms-summary": "The ID of the employee"
218
+ }
150
219
  }
151
220
  ],
152
221
  "responses": {
153
222
  "200": {
154
- "description": "Protected employee retrieved successfully",
223
+ "description": "Payload of Array of Byte",
155
224
  "content": {
156
- "application/json": {
225
+ "application/pdf": {
157
226
  "schema": {
158
- "$ref": "#/components/schemas/protectedEmployee"
227
+ "type": "string",
228
+ "format": "binary"
159
229
  }
160
230
  }
161
- },
162
- "x-ms-summary": "Success"
231
+ }
163
232
  },
164
233
  "401": {
165
- "description": "User is not authorized",
166
- "x-ms-summary": "Unauthorized"
234
+ "description": "No description"
167
235
  },
168
236
  "404": {
169
- "description": "Employee not found",
170
- "x-ms-summary": "Not Found"
237
+ "description": "No description"
171
238
  }
172
239
  },
173
240
  "security": [
174
241
  {
175
242
  "Implicit": [
176
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
243
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
177
244
  ]
245
+ },
246
+ {
247
+ "ApiKey": []
178
248
  }
179
249
  ]
180
250
  }
181
251
  },
182
- "/v1.0/protected/me/gadgetbudget": {
183
- "get": {
252
+ "/v1.0/proposals": {
253
+ "post": {
184
254
  "tags": [
185
- "Protected"
255
+ "Proposals"
186
256
  ],
187
- "summary": "Gets the authenticated user's gadget budget",
188
- "description": "Retrieves the gadget budget for the authenticated user.",
189
- "operationId": "GetMyGadgetBudget",
257
+ "summary": "Create a Flowcase proposal",
258
+ "operationId": "CreateProposal",
259
+ "requestBody": {
260
+ "content": {
261
+ "application/json": {
262
+ "schema": {
263
+ "$ref": "#/components/schemas/createProposalRequest"
264
+ }
265
+ }
266
+ },
267
+ "required": true
268
+ },
190
269
  "responses": {
191
- "200": {
192
- "description": "Authenticated user's gadget budget retrieved successfully",
270
+ "201": {
271
+ "description": "Payload of FlowcaseProposal",
193
272
  "content": {
194
273
  "application/json": {
195
274
  "schema": {
196
- "$ref": "#/components/schemas/gadgetBudget"
275
+ "$ref": "#/components/schemas/flowcaseProposal"
197
276
  }
198
277
  }
199
- },
200
- "x-ms-summary": "Success"
201
- },
202
- "401": {
203
- "description": "User is not authorized",
204
- "x-ms-summary": "Unauthorized"
278
+ }
205
279
  }
206
280
  },
207
281
  "security": [
208
282
  {
209
283
  "Implicit": [
210
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
284
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
211
285
  ]
286
+ },
287
+ {
288
+ "ApiKey": []
212
289
  }
213
290
  ]
214
291
  }
215
292
  },
216
- "/v1.0/public/{slugOrId}": {
293
+ "/v1.0/proposals/{proposalId}": {
217
294
  "get": {
218
295
  "tags": [
219
- "Public"
296
+ "Proposals"
220
297
  ],
221
- "summary": "Gets a public employee by slug or id",
222
- "description": "Retrieves a public employee by their slug or id.",
223
- "operationId": "GetEmployeePublic",
298
+ "summary": "Get a Flowcase proposal by id",
299
+ "operationId": "GetProposal",
224
300
  "parameters": [
225
301
  {
226
- "name": "slugOrId",
302
+ "name": "proposalId",
227
303
  "in": "path",
228
- "description": "The slug or id of the public employee to retrieve",
229
304
  "required": true,
230
305
  "schema": {
231
306
  "type": "string"
232
- },
233
- "x-ms-summary": "The slug or id of the employee"
307
+ }
234
308
  }
235
309
  ],
236
310
  "responses": {
237
311
  "200": {
238
- "description": "Public employee retrieved successfully",
312
+ "description": "Payload of FlowcaseProposal",
239
313
  "content": {
240
314
  "application/json": {
241
315
  "schema": {
242
- "$ref": "#/components/schemas/publicEmployee"
316
+ "$ref": "#/components/schemas/flowcaseProposal"
243
317
  }
244
318
  }
245
- },
246
- "x-ms-summary": "Success"
319
+ }
247
320
  },
248
321
  "404": {
249
- "description": "Employee not found",
250
- "x-ms-summary": "Not Found"
322
+ "description": "No description"
251
323
  }
252
- }
253
- }
254
- },
255
- "/v1.0/public": {
256
- "get": {
324
+ },
325
+ "security": [
326
+ {
327
+ "Implicit": [
328
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
329
+ ]
330
+ },
331
+ {
332
+ "ApiKey": []
333
+ }
334
+ ]
335
+ },
336
+ "patch": {
257
337
  "tags": [
258
- "Public"
338
+ "Proposals"
259
339
  ],
260
- "summary": "Gets all public employees",
261
- "description": "Retrieves a list of all public employees.",
262
- "operationId": "GetEmployeesPublic",
340
+ "summary": "Update / patch a Flowcase proposal",
341
+ "operationId": "UpdateProposal",
342
+ "parameters": [
343
+ {
344
+ "name": "proposalId",
345
+ "in": "path",
346
+ "required": true,
347
+ "schema": {
348
+ "type": "string"
349
+ }
350
+ }
351
+ ],
352
+ "requestBody": {
353
+ "content": {
354
+ "application/json": {
355
+ "schema": {
356
+ "$ref": "#/components/schemas/updateProposalRequest"
357
+ }
358
+ }
359
+ },
360
+ "required": true
361
+ },
263
362
  "responses": {
264
363
  "200": {
265
- "description": "List of public employees retrieved successfully",
364
+ "description": "Payload of FlowcaseProposal",
266
365
  "content": {
267
366
  "application/json": {
268
367
  "schema": {
269
- "type": "array",
270
- "items": {
271
- "$ref": "#/components/schemas/publicEmployee"
272
- }
368
+ "$ref": "#/components/schemas/flowcaseProposal"
273
369
  }
274
370
  }
275
- },
276
- "x-ms-summary": "Success"
371
+ }
277
372
  }
278
- }
373
+ },
374
+ "security": [
375
+ {
376
+ "Implicit": [
377
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
378
+ ]
379
+ },
380
+ {
381
+ "ApiKey": []
382
+ }
383
+ ]
384
+ },
385
+ "delete": {
386
+ "tags": [
387
+ "Proposals"
388
+ ],
389
+ "summary": "Archive a proposal — Flowcase has no hard-delete; we PUT archived=true.",
390
+ "operationId": "ArchiveProposal",
391
+ "parameters": [
392
+ {
393
+ "name": "proposalId",
394
+ "in": "path",
395
+ "required": true,
396
+ "schema": {
397
+ "type": "string"
398
+ }
399
+ }
400
+ ],
401
+ "responses": {
402
+ "200": {
403
+ "description": "Payload of FlowcaseProposal",
404
+ "content": {
405
+ "application/json": {
406
+ "schema": {
407
+ "$ref": "#/components/schemas/flowcaseProposal"
408
+ }
409
+ }
410
+ }
411
+ }
412
+ },
413
+ "security": [
414
+ {
415
+ "Implicit": [
416
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
417
+ ]
418
+ },
419
+ {
420
+ "ApiKey": []
421
+ }
422
+ ]
279
423
  }
280
424
  },
281
- "/v1.0/feedback": {
425
+ "/v1.0/proposals/{proposalId}/cvs": {
282
426
  "post": {
283
427
  "tags": [
284
- "Public"
428
+ "Proposals"
285
429
  ],
286
- "summary": "Submit anonymous feedback",
287
- "description": "Allows anyone to send anonymous text feedback.",
288
- "operationId": "PostAnonymousFeedback",
289
- "requestBody": {
290
- "description": "Feedback payload",
291
- "content": {
430
+ "summary": "Attach a consultant's CV to a proposal; Flowcase copies the default CV into an editable tailored CV.",
431
+ "operationId": "AttachCvToProposal",
432
+ "parameters": [
433
+ {
434
+ "name": "proposalId",
435
+ "in": "path",
436
+ "required": true,
437
+ "schema": {
438
+ "type": "string"
439
+ }
440
+ }
441
+ ],
442
+ "requestBody": {
443
+ "content": {
292
444
  "application/json": {
293
445
  "schema": {
294
- "$ref": "#/components/schemas/feedback"
446
+ "$ref": "#/components/schemas/addCvToProposalRequest"
447
+ }
448
+ }
449
+ },
450
+ "required": true
451
+ },
452
+ "responses": {
453
+ "201": {
454
+ "description": "Payload of FlowcaseTailoredCv",
455
+ "content": {
456
+ "application/json": {
457
+ "schema": {
458
+ "$ref": "#/components/schemas/flowcaseTailoredCv"
459
+ }
460
+ }
461
+ }
462
+ }
463
+ },
464
+ "security": [
465
+ {
466
+ "Implicit": [
467
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
468
+ ]
469
+ },
470
+ {
471
+ "ApiKey": []
472
+ }
473
+ ]
474
+ }
475
+ },
476
+ "/v1.0/proposals/{proposalId}/cvs/{tailoredCvId}": {
477
+ "delete": {
478
+ "tags": [
479
+ "Proposals"
480
+ ],
481
+ "summary": "Remove a tailored CV from a proposal.",
482
+ "operationId": "DetachCvFromProposal",
483
+ "parameters": [
484
+ {
485
+ "name": "proposalId",
486
+ "in": "path",
487
+ "required": true,
488
+ "schema": {
489
+ "type": "string"
490
+ }
491
+ },
492
+ {
493
+ "name": "tailoredCvId",
494
+ "in": "path",
495
+ "required": true,
496
+ "schema": {
497
+ "type": "string"
498
+ }
499
+ }
500
+ ],
501
+ "responses": {
502
+ "204": {
503
+ "description": "No description"
504
+ }
505
+ },
506
+ "security": [
507
+ {
508
+ "Implicit": [
509
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
510
+ ]
511
+ },
512
+ {
513
+ "ApiKey": []
514
+ }
515
+ ]
516
+ }
517
+ },
518
+ "/v1.0/cvs/users/{userId}/{cvId}/pdf": {
519
+ "get": {
520
+ "tags": [
521
+ "Proposals"
522
+ ],
523
+ "summary": "Download any CV (including tailored CVs) as PDF by user_id + cv_id.",
524
+ "operationId": "DownloadTailoredCvPdf",
525
+ "parameters": [
526
+ {
527
+ "name": "userId",
528
+ "in": "path",
529
+ "required": true,
530
+ "schema": {
531
+ "type": "string"
532
+ }
533
+ },
534
+ {
535
+ "name": "cvId",
536
+ "in": "path",
537
+ "required": true,
538
+ "schema": {
539
+ "type": "string"
540
+ }
541
+ }
542
+ ],
543
+ "responses": {
544
+ "200": {
545
+ "description": "Payload of Array of Byte",
546
+ "content": {
547
+ "application/pdf": {
548
+ "schema": {
549
+ "type": "string",
550
+ "format": "binary"
551
+ }
552
+ }
553
+ }
554
+ },
555
+ "404": {
556
+ "description": "No description"
557
+ }
558
+ },
559
+ "security": [
560
+ {
561
+ "Implicit": [
562
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
563
+ ]
564
+ },
565
+ {
566
+ "ApiKey": []
567
+ }
568
+ ]
569
+ }
570
+ },
571
+ "/v1.0/cvs/users/{userId}/{cvId}": {
572
+ "get": {
573
+ "tags": [
574
+ "Proposals"
575
+ ],
576
+ "summary": "Get any CV (including tailored CVs) as raw Flowcase JSON by user_id + cv_id.",
577
+ "operationId": "GetRawCv",
578
+ "parameters": [
579
+ {
580
+ "name": "userId",
581
+ "in": "path",
582
+ "required": true,
583
+ "schema": {
584
+ "type": "string"
585
+ }
586
+ },
587
+ {
588
+ "name": "cvId",
589
+ "in": "path",
590
+ "required": true,
591
+ "schema": {
592
+ "type": "string"
593
+ }
594
+ }
595
+ ],
596
+ "responses": {
597
+ "200": {
598
+ "description": "Payload of Object",
599
+ "content": {
600
+ "application/json": {
601
+ "schema": {
602
+ "type": "object"
603
+ }
604
+ }
605
+ }
606
+ },
607
+ "404": {
608
+ "description": "No description"
609
+ }
610
+ },
611
+ "security": [
612
+ {
613
+ "Implicit": [
614
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
615
+ ]
616
+ },
617
+ {
618
+ "ApiKey": []
619
+ }
620
+ ]
621
+ }
622
+ },
623
+ "/v1.0/cvs/users/{userId}/{cvId}/sections/{sectionType}/{sectionId}": {
624
+ "put": {
625
+ "tags": [
626
+ "CV"
627
+ ],
628
+ "summary": "Edit a single CV section (PUT /v3/cvs/{user}/{cv}/{section_type}/{section_id}).",
629
+ "operationId": "UpdateCvSection",
630
+ "parameters": [
631
+ {
632
+ "name": "userId",
633
+ "in": "path",
634
+ "required": true,
635
+ "schema": {
636
+ "type": "string"
637
+ }
638
+ },
639
+ {
640
+ "name": "cvId",
641
+ "in": "path",
642
+ "required": true,
643
+ "schema": {
644
+ "type": "string"
645
+ }
646
+ },
647
+ {
648
+ "name": "sectionType",
649
+ "in": "path",
650
+ "required": true,
651
+ "schema": {
652
+ "type": "string"
653
+ }
654
+ },
655
+ {
656
+ "name": "sectionId",
657
+ "in": "path",
658
+ "required": true,
659
+ "schema": {
660
+ "type": "string"
661
+ }
662
+ }
663
+ ],
664
+ "requestBody": {
665
+ "description": "Section body — shape depends on section_type (see Flowcase CV API).",
666
+ "content": {
667
+ "application/json": {
668
+ "schema": {
669
+ "type": "object"
295
670
  }
296
671
  }
297
672
  },
298
- "required": true
299
- },
300
- "responses": {
301
- "200": {
302
- "description": "Feedback received",
303
- "x-ms-summary": "Success"
673
+ "required": true
674
+ },
675
+ "responses": {
676
+ "204": {
677
+ "description": "No description"
678
+ }
679
+ },
680
+ "security": [
681
+ {
682
+ "Implicit": [
683
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
684
+ ]
685
+ },
686
+ {
687
+ "ApiKey": []
688
+ }
689
+ ]
690
+ }
691
+ },
692
+ "/v1.0/public/{slugOrId}/cv": {
693
+ "get": {
694
+ "tags": [
695
+ "Public"
696
+ ],
697
+ "summary": "Gets the full CV for a public employee by slug or id",
698
+ "description": "Resolves the employee by Sanity slug or id and returns the verbatim CvPartner (Flowcase) CV payload, including project experiences, recommendations and presentations.",
699
+ "operationId": "GetPublicEmployeeCv",
700
+ "parameters": [
701
+ {
702
+ "name": "slugOrId",
703
+ "in": "path",
704
+ "description": "The slug or id of the public employee whose CV to retrieve",
705
+ "required": true,
706
+ "schema": {
707
+ "type": "string"
708
+ },
709
+ "x-ms-summary": "The slug or id of the employee"
710
+ }
711
+ ],
712
+ "responses": {
713
+ "200": {
714
+ "description": "Raw CvPartner CV payload retrieved successfully",
715
+ "content": {
716
+ "application/json": {
717
+ "schema": {
718
+ "type": "object"
719
+ }
720
+ }
721
+ },
722
+ "x-ms-summary": "Success"
723
+ },
724
+ "404": {
725
+ "description": "Employee or CV not found",
726
+ "x-ms-summary": "Not Found"
727
+ }
728
+ }
729
+ }
730
+ },
731
+ "/v1.0/protected": {
732
+ "get": {
733
+ "tags": [
734
+ "Protected"
735
+ ],
736
+ "summary": "Gets all protected employees",
737
+ "description": "Retrieves a list of all protected employees.",
738
+ "operationId": "GetEmployeesProtected",
739
+ "parameters": [
740
+ {
741
+ "name": "includeBots",
742
+ "in": "query",
743
+ "description": "Include AI / bot employees (Olaf et al.). Defaults to false.",
744
+ "schema": {
745
+ "type": "boolean"
746
+ },
747
+ "x-ms-summary": "Include bots"
748
+ },
749
+ {
750
+ "name": "includeExternals",
751
+ "in": "query",
752
+ "description": "Include external employees (contractors). Defaults to false.",
753
+ "schema": {
754
+ "type": "boolean"
755
+ },
756
+ "x-ms-summary": "Include externals"
757
+ }
758
+ ],
759
+ "responses": {
760
+ "200": {
761
+ "description": "List of protected employees retrieved successfully",
762
+ "content": {
763
+ "application/json": {
764
+ "schema": {
765
+ "type": "array",
766
+ "items": {
767
+ "$ref": "#/components/schemas/protectedEmployee"
768
+ }
769
+ }
770
+ }
771
+ },
772
+ "x-ms-summary": "Success"
773
+ },
774
+ "401": {
775
+ "description": "User is not authorized",
776
+ "x-ms-summary": "Unauthorized"
777
+ }
778
+ },
779
+ "security": [
780
+ {
781
+ "Implicit": [
782
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
783
+ ]
784
+ },
785
+ {
786
+ "ApiKey": []
787
+ }
788
+ ]
789
+ }
790
+ },
791
+ "/v1.0/protected/me": {
792
+ "get": {
793
+ "tags": [
794
+ "Protected"
795
+ ],
796
+ "summary": "Gets the authenticated user's protected employee data",
797
+ "description": "Retrieves the protected employee data for the authenticated user.",
798
+ "operationId": "GetMeProtected",
799
+ "responses": {
800
+ "200": {
801
+ "description": "Authenticated user's protected employee data retrieved successfully",
802
+ "content": {
803
+ "application/json": {
804
+ "schema": {
805
+ "$ref": "#/components/schemas/protectedEmployee"
806
+ }
807
+ }
808
+ },
809
+ "x-ms-summary": "Success"
810
+ },
811
+ "401": {
812
+ "description": "User is not authorized",
813
+ "x-ms-summary": "Unauthorized"
814
+ },
815
+ "404": {
816
+ "description": "Employee not found",
817
+ "x-ms-summary": "Not Found"
818
+ }
819
+ },
820
+ "security": [
821
+ {
822
+ "Implicit": [
823
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
824
+ ]
825
+ },
826
+ {
827
+ "ApiKey": []
828
+ }
829
+ ]
830
+ },
831
+ "put": {
832
+ "tags": [
833
+ "Protected"
834
+ ],
835
+ "summary": "Updates the authenticated user's protected employee data",
836
+ "description": "Updates the protected employee data for the authenticated user.",
837
+ "operationId": "PatchMeProtected",
838
+ "requestBody": {
839
+ "description": "Employee data to update",
840
+ "content": {
841
+ "application/json": {
842
+ "schema": {
843
+ "$ref": "#/components/schemas/patchEmployee"
844
+ }
845
+ }
846
+ },
847
+ "required": true
848
+ },
849
+ "responses": {
850
+ "200": {
851
+ "description": "Authenticated user's protected employee data updated successfully",
852
+ "content": {
853
+ "application/json": {
854
+ "schema": {
855
+ "$ref": "#/components/schemas/protectedEmployee"
856
+ }
857
+ }
858
+ },
859
+ "x-ms-summary": "Success"
860
+ },
861
+ "401": {
862
+ "description": "User is not authorized",
863
+ "x-ms-summary": "Unauthorized"
864
+ }
865
+ },
866
+ "security": [
867
+ {
868
+ "Implicit": [
869
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
870
+ ]
871
+ },
872
+ {
873
+ "ApiKey": []
874
+ }
875
+ ]
876
+ }
877
+ },
878
+ "/v1.0/protected/me/photo": {
879
+ "post": {
880
+ "tags": [
881
+ "Protected"
882
+ ],
883
+ "summary": "Uploads the authenticated user's profile photo",
884
+ "description": "Stores the photo and a blurred variant on the employee. Body is the raw image bytes.",
885
+ "operationId": "SetMyPhoto",
886
+ "requestBody": {
887
+ "description": "Raw image bytes",
888
+ "content": {
889
+ "application/octet-stream": {
890
+ "schema": {
891
+ "type": "string",
892
+ "format": "binary"
893
+ }
894
+ }
895
+ },
896
+ "required": true
897
+ },
898
+ "responses": {
899
+ "200": {
900
+ "description": "Photo updated successfully",
901
+ "content": {
902
+ "application/json": {
903
+ "schema": {
904
+ "$ref": "#/components/schemas/protectedEmployee"
905
+ }
906
+ }
907
+ },
908
+ "x-ms-summary": "Success"
909
+ },
910
+ "401": {
911
+ "description": "User is not authorized",
912
+ "x-ms-summary": "Unauthorized"
913
+ }
914
+ },
915
+ "security": [
916
+ {
917
+ "Implicit": [
918
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
919
+ ]
920
+ },
921
+ {
922
+ "ApiKey": []
923
+ }
924
+ ]
925
+ }
926
+ },
927
+ "/v1.0/protected/{id}": {
928
+ "put": {
929
+ "tags": [
930
+ "Protected"
931
+ ],
932
+ "summary": "Updates protected employee data by id or email",
933
+ "description": "Updates protected employee data for a specified employee id or email.",
934
+ "operationId": "PatchEmployeeProtected",
935
+ "parameters": [
936
+ {
937
+ "name": "id",
938
+ "in": "path",
939
+ "description": "Sanity id or employee email",
940
+ "required": true,
941
+ "schema": {
942
+ "type": "string"
943
+ },
944
+ "x-ms-summary": "The employee id or email"
945
+ }
946
+ ],
947
+ "requestBody": {
948
+ "description": "Employee data to update",
949
+ "content": {
950
+ "application/json": {
951
+ "schema": {
952
+ "$ref": "#/components/schemas/patchEmployee"
953
+ }
954
+ }
955
+ },
956
+ "required": true
957
+ },
958
+ "responses": {
959
+ "200": {
960
+ "description": "Protected employee data updated successfully",
961
+ "content": {
962
+ "application/json": {
963
+ "schema": {
964
+ "$ref": "#/components/schemas/protectedEmployee"
965
+ }
966
+ }
967
+ },
968
+ "x-ms-summary": "Success"
969
+ },
970
+ "401": {
971
+ "description": "User is not authorized",
972
+ "x-ms-summary": "Unauthorized"
973
+ }
974
+ },
975
+ "security": [
976
+ {
977
+ "Implicit": [
978
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
979
+ ]
980
+ },
981
+ {
982
+ "ApiKey": []
983
+ }
984
+ ]
985
+ },
986
+ "get": {
987
+ "tags": [
988
+ "Protected"
989
+ ],
990
+ "summary": "Gets a protected employee by ID",
991
+ "description": "Retrieves a protected employee by their ID.",
992
+ "operationId": "GetEmployeeProtected",
993
+ "parameters": [
994
+ {
995
+ "name": "id",
996
+ "in": "path",
997
+ "description": "The ID of the protected employee to retrieve",
998
+ "required": true,
999
+ "schema": {
1000
+ "type": "string"
1001
+ },
1002
+ "x-ms-summary": "The ID of the employee"
1003
+ }
1004
+ ],
1005
+ "responses": {
1006
+ "200": {
1007
+ "description": "Protected employee retrieved successfully",
1008
+ "content": {
1009
+ "application/json": {
1010
+ "schema": {
1011
+ "$ref": "#/components/schemas/protectedEmployee"
1012
+ }
1013
+ }
1014
+ },
1015
+ "x-ms-summary": "Success"
1016
+ },
1017
+ "401": {
1018
+ "description": "User is not authorized",
1019
+ "x-ms-summary": "Unauthorized"
1020
+ },
1021
+ "404": {
1022
+ "description": "Employee not found",
1023
+ "x-ms-summary": "Not Found"
1024
+ }
1025
+ },
1026
+ "security": [
1027
+ {
1028
+ "Implicit": [
1029
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1030
+ ]
1031
+ },
1032
+ {
1033
+ "ApiKey": []
1034
+ }
1035
+ ]
1036
+ }
1037
+ },
1038
+ "/v1.0/protected/{id}/photo": {
1039
+ "post": {
1040
+ "tags": [
1041
+ "Protected"
1042
+ ],
1043
+ "summary": "Uploads a profile photo for an employee (admin)",
1044
+ "description": "Stores the photo and a blurred variant on the given employee. Body is the raw image bytes.",
1045
+ "operationId": "SetEmployeePhoto",
1046
+ "parameters": [
1047
+ {
1048
+ "name": "id",
1049
+ "in": "path",
1050
+ "required": true,
1051
+ "schema": {
1052
+ "type": "string"
1053
+ },
1054
+ "x-ms-summary": "The employee Sanity id"
1055
+ }
1056
+ ],
1057
+ "requestBody": {
1058
+ "description": "Raw image bytes",
1059
+ "content": {
1060
+ "application/octet-stream": {
1061
+ "schema": {
1062
+ "type": "string",
1063
+ "format": "binary"
1064
+ }
1065
+ }
1066
+ },
1067
+ "required": true
1068
+ },
1069
+ "responses": {
1070
+ "200": {
1071
+ "description": "Photo updated successfully",
1072
+ "content": {
1073
+ "application/json": {
1074
+ "schema": {
1075
+ "$ref": "#/components/schemas/protectedEmployee"
1076
+ }
1077
+ }
1078
+ },
1079
+ "x-ms-summary": "Success"
1080
+ },
1081
+ "401": {
1082
+ "description": "User is not authorized",
1083
+ "x-ms-summary": "Unauthorized"
1084
+ }
1085
+ },
1086
+ "security": [
1087
+ {
1088
+ "Implicit": [
1089
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1090
+ ]
1091
+ },
1092
+ {
1093
+ "ApiKey": []
1094
+ }
1095
+ ]
1096
+ }
1097
+ },
1098
+ "/v1.0/protected/me/gadgetbudget": {
1099
+ "get": {
1100
+ "tags": [
1101
+ "Protected"
1102
+ ],
1103
+ "summary": "Gets the authenticated user's gadget budget",
1104
+ "description": "Retrieves the gadget budget for the authenticated user.",
1105
+ "operationId": "GetMyGadgetBudget",
1106
+ "responses": {
1107
+ "200": {
1108
+ "description": "Authenticated user's gadget budget retrieved successfully",
1109
+ "content": {
1110
+ "application/json": {
1111
+ "schema": {
1112
+ "$ref": "#/components/schemas/gadgetBudget"
1113
+ }
1114
+ }
1115
+ },
1116
+ "x-ms-summary": "Success"
1117
+ },
1118
+ "401": {
1119
+ "description": "User is not authorized",
1120
+ "x-ms-summary": "Unauthorized"
1121
+ }
1122
+ },
1123
+ "security": [
1124
+ {
1125
+ "Implicit": [
1126
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1127
+ ]
1128
+ },
1129
+ {
1130
+ "ApiKey": []
1131
+ }
1132
+ ]
1133
+ }
1134
+ },
1135
+ "/v1.0/public/{slugOrId}": {
1136
+ "get": {
1137
+ "tags": [
1138
+ "Public"
1139
+ ],
1140
+ "summary": "Gets a public employee by slug or id",
1141
+ "description": "Retrieves a public employee by their slug or id.",
1142
+ "operationId": "GetEmployeePublic",
1143
+ "parameters": [
1144
+ {
1145
+ "name": "slugOrId",
1146
+ "in": "path",
1147
+ "description": "The slug or id of the public employee to retrieve",
1148
+ "required": true,
1149
+ "schema": {
1150
+ "type": "string"
1151
+ },
1152
+ "x-ms-summary": "The slug or id of the employee"
1153
+ }
1154
+ ],
1155
+ "responses": {
1156
+ "200": {
1157
+ "description": "Public employee retrieved successfully",
1158
+ "content": {
1159
+ "application/json": {
1160
+ "schema": {
1161
+ "$ref": "#/components/schemas/publicEmployee"
1162
+ }
1163
+ }
1164
+ },
1165
+ "x-ms-summary": "Success"
1166
+ },
1167
+ "404": {
1168
+ "description": "Employee not found",
1169
+ "x-ms-summary": "Not Found"
1170
+ }
1171
+ }
1172
+ }
1173
+ },
1174
+ "/v1.0/public": {
1175
+ "get": {
1176
+ "tags": [
1177
+ "Public"
1178
+ ],
1179
+ "summary": "Gets all public employees",
1180
+ "description": "Retrieves a list of all public employees.",
1181
+ "operationId": "GetEmployeesPublic",
1182
+ "responses": {
1183
+ "200": {
1184
+ "description": "List of public employees retrieved successfully",
1185
+ "content": {
1186
+ "application/json": {
1187
+ "schema": {
1188
+ "type": "array",
1189
+ "items": {
1190
+ "$ref": "#/components/schemas/publicEmployee"
1191
+ }
1192
+ }
1193
+ }
1194
+ },
1195
+ "x-ms-summary": "Success"
1196
+ }
1197
+ }
1198
+ }
1199
+ },
1200
+ "/v1.0/feedback": {
1201
+ "post": {
1202
+ "tags": [
1203
+ "Public"
1204
+ ],
1205
+ "summary": "Submit anonymous feedback",
1206
+ "description": "Allows anyone to send anonymous text feedback.",
1207
+ "operationId": "PostAnonymousFeedback",
1208
+ "requestBody": {
1209
+ "description": "Feedback payload",
1210
+ "content": {
1211
+ "application/json": {
1212
+ "schema": {
1213
+ "$ref": "#/components/schemas/feedback"
1214
+ }
1215
+ }
1216
+ },
1217
+ "required": true
1218
+ },
1219
+ "responses": {
1220
+ "200": {
1221
+ "description": "Feedback received",
1222
+ "x-ms-summary": "Success"
1223
+ },
1224
+ "400": {
1225
+ "description": "Invalid input",
1226
+ "x-ms-summary": "Bad Request"
1227
+ }
1228
+ }
1229
+ }
1230
+ },
1231
+ "/v1.0/protected/directory/users/{objectId}/groups/{groupId}": {
1232
+ "post": {
1233
+ "tags": [
1234
+ "Directory"
1235
+ ],
1236
+ "summary": "Add the directory user to a security group",
1237
+ "description": "Returns changed: false when the user already was a member.",
1238
+ "operationId": "AddDirectoryUserToGroup",
1239
+ "parameters": [
1240
+ {
1241
+ "name": "objectId",
1242
+ "in": "path",
1243
+ "required": true,
1244
+ "schema": {
1245
+ "type": "string"
1246
+ }
1247
+ },
1248
+ {
1249
+ "name": "groupId",
1250
+ "in": "path",
1251
+ "required": true,
1252
+ "schema": {
1253
+ "type": "string"
1254
+ }
1255
+ }
1256
+ ],
1257
+ "responses": {
1258
+ "200": {
1259
+ "description": "Payload of DirectoryOperationResult",
1260
+ "content": {
1261
+ "application/json": {
1262
+ "schema": {
1263
+ "$ref": "#/components/schemas/directoryOperationResult"
1264
+ }
1265
+ }
1266
+ },
1267
+ "x-ms-summary": "Success"
1268
+ },
1269
+ "401": {
1270
+ "description": "No description",
1271
+ "x-ms-summary": "Unauthorized"
1272
+ }
1273
+ },
1274
+ "security": [
1275
+ {
1276
+ "Implicit": [
1277
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1278
+ ]
1279
+ },
1280
+ {
1281
+ "ApiKey": []
1282
+ }
1283
+ ]
1284
+ },
1285
+ "delete": {
1286
+ "tags": [
1287
+ "Directory"
1288
+ ],
1289
+ "summary": "Remove the directory user from a security group",
1290
+ "description": "Returns changed: false when the user was not a member.",
1291
+ "operationId": "RemoveDirectoryUserFromGroup",
1292
+ "parameters": [
1293
+ {
1294
+ "name": "objectId",
1295
+ "in": "path",
1296
+ "required": true,
1297
+ "schema": {
1298
+ "type": "string"
1299
+ }
1300
+ },
1301
+ {
1302
+ "name": "groupId",
1303
+ "in": "path",
1304
+ "required": true,
1305
+ "schema": {
1306
+ "type": "string"
1307
+ }
1308
+ }
1309
+ ],
1310
+ "responses": {
1311
+ "200": {
1312
+ "description": "Payload of DirectoryOperationResult",
1313
+ "content": {
1314
+ "application/json": {
1315
+ "schema": {
1316
+ "$ref": "#/components/schemas/directoryOperationResult"
1317
+ }
1318
+ }
1319
+ },
1320
+ "x-ms-summary": "Success"
1321
+ },
1322
+ "401": {
1323
+ "description": "No description",
1324
+ "x-ms-summary": "Unauthorized"
1325
+ }
1326
+ },
1327
+ "security": [
1328
+ {
1329
+ "Implicit": [
1330
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1331
+ ]
1332
+ },
1333
+ {
1334
+ "ApiKey": []
1335
+ }
1336
+ ]
1337
+ }
1338
+ },
1339
+ "/v1.0/protected/directory/users/{objectId}/app-roles": {
1340
+ "post": {
1341
+ "tags": [
1342
+ "Directory"
1343
+ ],
1344
+ "summary": "Assign an app-role on a service principal to the directory user",
1345
+ "description": "Returns changed: false when the assignment already existed.",
1346
+ "operationId": "AssignDirectoryAppRole",
1347
+ "parameters": [
1348
+ {
1349
+ "name": "objectId",
1350
+ "in": "path",
1351
+ "required": true,
1352
+ "schema": {
1353
+ "type": "string"
1354
+ }
1355
+ }
1356
+ ],
1357
+ "requestBody": {
1358
+ "content": {
1359
+ "application/json": {
1360
+ "schema": {
1361
+ "$ref": "#/components/schemas/appRoleAssignmentRequest"
1362
+ }
1363
+ }
1364
+ },
1365
+ "required": true
1366
+ },
1367
+ "responses": {
1368
+ "200": {
1369
+ "description": "Payload of DirectoryOperationResult",
1370
+ "content": {
1371
+ "application/json": {
1372
+ "schema": {
1373
+ "$ref": "#/components/schemas/directoryOperationResult"
1374
+ }
1375
+ }
1376
+ },
1377
+ "x-ms-summary": "Success"
1378
+ },
1379
+ "401": {
1380
+ "description": "No description",
1381
+ "x-ms-summary": "Unauthorized"
1382
+ }
1383
+ },
1384
+ "security": [
1385
+ {
1386
+ "Implicit": [
1387
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1388
+ ]
1389
+ },
1390
+ {
1391
+ "ApiKey": []
1392
+ }
1393
+ ]
1394
+ },
1395
+ "get": {
1396
+ "tags": [
1397
+ "Directory"
1398
+ ],
1399
+ "summary": "Map the directory user's app-role assignments by service principal",
1400
+ "description": "Returns { servicePrincipalObjectId: appRoleId } for every Enterprise App the user is assigned to.",
1401
+ "operationId": "ListDirectoryUserAppRoles",
1402
+ "parameters": [
1403
+ {
1404
+ "name": "objectId",
1405
+ "in": "path",
1406
+ "required": true,
1407
+ "schema": {
1408
+ "type": "string"
1409
+ }
1410
+ }
1411
+ ],
1412
+ "responses": {
1413
+ "200": {
1414
+ "description": "Payload of Dictionary of String",
1415
+ "content": {
1416
+ "application/json": {
1417
+ "schema": {
1418
+ "type": "object",
1419
+ "additionalProperties": {
1420
+ "type": "string"
1421
+ }
1422
+ }
1423
+ }
1424
+ },
1425
+ "x-ms-summary": "Success"
1426
+ },
1427
+ "401": {
1428
+ "description": "No description",
1429
+ "x-ms-summary": "Unauthorized"
1430
+ }
1431
+ },
1432
+ "security": [
1433
+ {
1434
+ "Implicit": [
1435
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1436
+ ]
1437
+ },
1438
+ {
1439
+ "ApiKey": []
1440
+ }
1441
+ ]
1442
+ }
1443
+ },
1444
+ "/v1.0/protected/directory/users/{objectId}/app-roles/{servicePrincipalObjectId}": {
1445
+ "delete": {
1446
+ "tags": [
1447
+ "Directory"
1448
+ ],
1449
+ "summary": "Remove the directory user's app-role assignment(s) on a service principal",
1450
+ "operationId": "RemoveDirectoryAppRole",
1451
+ "parameters": [
1452
+ {
1453
+ "name": "objectId",
1454
+ "in": "path",
1455
+ "required": true,
1456
+ "schema": {
1457
+ "type": "string"
1458
+ }
1459
+ },
1460
+ {
1461
+ "name": "servicePrincipalObjectId",
1462
+ "in": "path",
1463
+ "required": true,
1464
+ "schema": {
1465
+ "type": "string"
1466
+ }
1467
+ }
1468
+ ],
1469
+ "responses": {
1470
+ "200": {
1471
+ "description": "Payload of DirectoryOperationResult",
1472
+ "content": {
1473
+ "application/json": {
1474
+ "schema": {
1475
+ "$ref": "#/components/schemas/directoryOperationResult"
1476
+ }
1477
+ }
1478
+ },
1479
+ "x-ms-summary": "Success"
1480
+ },
1481
+ "401": {
1482
+ "description": "No description",
1483
+ "x-ms-summary": "Unauthorized"
1484
+ }
1485
+ },
1486
+ "security": [
1487
+ {
1488
+ "Implicit": [
1489
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1490
+ ]
1491
+ },
1492
+ {
1493
+ "ApiKey": []
1494
+ }
1495
+ ]
1496
+ }
1497
+ },
1498
+ "/v1.0/protected/directory/service-principals/{servicePrincipalObjectId}/app-roles": {
1499
+ "get": {
1500
+ "tags": [
1501
+ "Directory"
1502
+ ],
1503
+ "summary": "List a service principal's enabled app-roles",
1504
+ "operationId": "ListDirectoryAppRoles",
1505
+ "parameters": [
1506
+ {
1507
+ "name": "servicePrincipalObjectId",
1508
+ "in": "path",
1509
+ "required": true,
1510
+ "schema": {
1511
+ "type": "string"
1512
+ }
1513
+ }
1514
+ ],
1515
+ "responses": {
1516
+ "200": {
1517
+ "description": "Payload of Array of SystemRoleOption",
1518
+ "content": {
1519
+ "application/json": {
1520
+ "schema": {
1521
+ "type": "array",
1522
+ "items": {
1523
+ "$ref": "#/components/schemas/systemRoleOption"
1524
+ }
1525
+ }
1526
+ }
1527
+ },
1528
+ "x-ms-summary": "Success"
1529
+ },
1530
+ "401": {
1531
+ "description": "No description",
1532
+ "x-ms-summary": "Unauthorized"
1533
+ }
1534
+ },
1535
+ "security": [
1536
+ {
1537
+ "Implicit": [
1538
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1539
+ ]
1540
+ },
1541
+ {
1542
+ "ApiKey": []
1543
+ }
1544
+ ]
1545
+ }
1546
+ },
1547
+ "/v1.0/protected/directory/users/{objectId}/licenses/{skuId}": {
1548
+ "post": {
1549
+ "tags": [
1550
+ "Directory"
1551
+ ],
1552
+ "summary": "Assign a license SKU to the directory user",
1553
+ "operationId": "AssignDirectoryLicense",
1554
+ "parameters": [
1555
+ {
1556
+ "name": "objectId",
1557
+ "in": "path",
1558
+ "required": true,
1559
+ "schema": {
1560
+ "type": "string"
1561
+ }
1562
+ },
1563
+ {
1564
+ "name": "skuId",
1565
+ "in": "path",
1566
+ "required": true,
1567
+ "schema": {
1568
+ "type": "string"
1569
+ }
1570
+ }
1571
+ ],
1572
+ "responses": {
1573
+ "204": {
1574
+ "description": "No description",
1575
+ "x-ms-summary": "Assigned"
1576
+ },
1577
+ "401": {
1578
+ "description": "No description",
1579
+ "x-ms-summary": "Unauthorized"
1580
+ }
1581
+ },
1582
+ "security": [
1583
+ {
1584
+ "Implicit": [
1585
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1586
+ ]
1587
+ },
1588
+ {
1589
+ "ApiKey": []
1590
+ }
1591
+ ]
1592
+ },
1593
+ "delete": {
1594
+ "tags": [
1595
+ "Directory"
1596
+ ],
1597
+ "summary": "Revoke a license SKU from the directory user",
1598
+ "operationId": "RevokeDirectoryLicense",
1599
+ "parameters": [
1600
+ {
1601
+ "name": "objectId",
1602
+ "in": "path",
1603
+ "required": true,
1604
+ "schema": {
1605
+ "type": "string"
1606
+ }
1607
+ },
1608
+ {
1609
+ "name": "skuId",
1610
+ "in": "path",
1611
+ "required": true,
1612
+ "schema": {
1613
+ "type": "string"
1614
+ }
1615
+ }
1616
+ ],
1617
+ "responses": {
1618
+ "204": {
1619
+ "description": "No description",
1620
+ "x-ms-summary": "Revoked"
1621
+ },
1622
+ "401": {
1623
+ "description": "No description",
1624
+ "x-ms-summary": "Unauthorized"
1625
+ }
1626
+ },
1627
+ "security": [
1628
+ {
1629
+ "Implicit": [
1630
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1631
+ ]
1632
+ },
1633
+ {
1634
+ "ApiKey": []
1635
+ }
1636
+ ]
1637
+ }
1638
+ },
1639
+ "/v1.0/protected/directory/licenses/{skuId}": {
1640
+ "get": {
1641
+ "tags": [
1642
+ "Directory"
1643
+ ],
1644
+ "summary": "Get seat availability for a license SKU",
1645
+ "operationId": "GetDirectoryLicenseAvailability",
1646
+ "parameters": [
1647
+ {
1648
+ "name": "skuId",
1649
+ "in": "path",
1650
+ "required": true,
1651
+ "schema": {
1652
+ "type": "string"
1653
+ }
1654
+ }
1655
+ ],
1656
+ "responses": {
1657
+ "200": {
1658
+ "description": "Payload of LicenseAvailability",
1659
+ "content": {
1660
+ "application/json": {
1661
+ "schema": {
1662
+ "$ref": "#/components/schemas/licenseAvailability"
1663
+ }
1664
+ }
1665
+ },
1666
+ "x-ms-summary": "Success"
1667
+ },
1668
+ "401": {
1669
+ "description": "No description",
1670
+ "x-ms-summary": "Unauthorized"
1671
+ },
1672
+ "404": {
1673
+ "description": "No description",
1674
+ "x-ms-summary": "SKU unknown"
1675
+ }
1676
+ },
1677
+ "security": [
1678
+ {
1679
+ "Implicit": [
1680
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1681
+ ]
1682
+ },
1683
+ {
1684
+ "ApiKey": []
1685
+ }
1686
+ ]
1687
+ }
1688
+ },
1689
+ "/v1.0/protected/directory/licenses/primary": {
1690
+ "get": {
1691
+ "tags": [
1692
+ "Directory"
1693
+ ],
1694
+ "summary": "Auto-select the tenant's primary productivity license SKU",
1695
+ "description": "Returns skuId: null when no productivity SKU has a free seat.",
1696
+ "operationId": "ResolvePrimaryDirectoryLicense",
1697
+ "responses": {
1698
+ "200": {
1699
+ "description": "Payload of LicenseSkuRef",
1700
+ "content": {
1701
+ "application/json": {
1702
+ "schema": {
1703
+ "$ref": "#/components/schemas/licenseSkuRef"
1704
+ }
1705
+ }
1706
+ },
1707
+ "x-ms-summary": "Success"
1708
+ },
1709
+ "401": {
1710
+ "description": "No description",
1711
+ "x-ms-summary": "Unauthorized"
1712
+ }
1713
+ },
1714
+ "security": [
1715
+ {
1716
+ "Implicit": [
1717
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1718
+ ]
1719
+ },
1720
+ {
1721
+ "ApiKey": []
1722
+ }
1723
+ ]
1724
+ }
1725
+ },
1726
+ "/v1.0/protected/systems/batch": {
1727
+ "post": {
1728
+ "tags": [
1729
+ "EmployeeSystems"
1730
+ ],
1731
+ "summary": "Bulk list per-employee system access for a set of UPNs",
1732
+ "description": "Resolves every UPN's third-party system seats in one roundtrip — fans out the Graph calls server-side.",
1733
+ "operationId": "ListEmployeeSystemAccessBatch",
1734
+ "requestBody": {
1735
+ "content": {
1736
+ "application/json": {
1737
+ "schema": {
1738
+ "$ref": "#/components/schemas/listEmployeeSystemAccessBatchRequest"
1739
+ }
1740
+ }
1741
+ },
1742
+ "required": true
1743
+ },
1744
+ "responses": {
1745
+ "200": {
1746
+ "description": "Payload of Array of EmployeeSystemAccessRow",
1747
+ "content": {
1748
+ "application/json": {
1749
+ "schema": {
1750
+ "type": "array",
1751
+ "items": {
1752
+ "$ref": "#/components/schemas/employeeSystemAccessRow"
1753
+ }
1754
+ }
1755
+ }
1756
+ },
1757
+ "x-ms-summary": "Success"
1758
+ },
1759
+ "401": {
1760
+ "description": "No description",
1761
+ "x-ms-summary": "Unauthorized"
1762
+ }
1763
+ },
1764
+ "security": [
1765
+ {
1766
+ "Implicit": [
1767
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1768
+ ]
1769
+ },
1770
+ {
1771
+ "ApiKey": []
1772
+ }
1773
+ ]
1774
+ }
1775
+ },
1776
+ "/v1.0/protected/systems-config": {
1777
+ "get": {
1778
+ "tags": [
1779
+ "EmployeeSystems"
1780
+ ],
1781
+ "summary": "List the system registry with per-tenant configuration",
1782
+ "description": "Which Enterprise App (service principal) backs each registered system, and the optional default role. Unconfigured systems have servicePrincipalId: null.",
1783
+ "operationId": "GetEmployeeSystemsConfig",
1784
+ "responses": {
1785
+ "200": {
1786
+ "description": "Payload of Array of EmployeeSystemConfig",
1787
+ "content": {
1788
+ "application/json": {
1789
+ "schema": {
1790
+ "type": "array",
1791
+ "items": {
1792
+ "$ref": "#/components/schemas/employeeSystemConfig"
1793
+ }
1794
+ }
1795
+ }
1796
+ },
1797
+ "x-ms-summary": "Success"
1798
+ },
1799
+ "401": {
1800
+ "description": "No description",
1801
+ "x-ms-summary": "Unauthorized"
1802
+ }
1803
+ },
1804
+ "security": [
1805
+ {
1806
+ "Implicit": [
1807
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1808
+ ]
1809
+ },
1810
+ {
1811
+ "ApiKey": []
1812
+ }
1813
+ ]
1814
+ }
1815
+ },
1816
+ "/v1.0/protected/systems/{upn}": {
1817
+ "get": {
1818
+ "tags": [
1819
+ "EmployeeSystems"
1820
+ ],
1821
+ "summary": "List an employee's third-party system access",
1822
+ "description": "Per registered system (e.g. Salesforce): whether the employee has a seat, which app-role backs it, and the selectable roles.",
1823
+ "operationId": "ListEmployeeSystemAccess",
1824
+ "parameters": [
1825
+ {
1826
+ "name": "upn",
1827
+ "in": "path",
1828
+ "required": true,
1829
+ "schema": {
1830
+ "type": "string"
1831
+ },
1832
+ "x-ms-summary": "Employee UPN (work email)"
1833
+ }
1834
+ ],
1835
+ "responses": {
1836
+ "200": {
1837
+ "description": "Payload of Array of EmployeeSystemAccess",
1838
+ "content": {
1839
+ "application/json": {
1840
+ "schema": {
1841
+ "type": "array",
1842
+ "items": {
1843
+ "$ref": "#/components/schemas/employeeSystemAccess"
1844
+ }
1845
+ }
1846
+ }
1847
+ },
1848
+ "x-ms-summary": "Success"
1849
+ },
1850
+ "401": {
1851
+ "description": "No description",
1852
+ "x-ms-summary": "Unauthorized"
1853
+ },
1854
+ "404": {
1855
+ "description": "No description",
1856
+ "x-ms-summary": "Employee not found in the directory"
1857
+ }
1858
+ },
1859
+ "security": [
1860
+ {
1861
+ "Implicit": [
1862
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1863
+ ]
1864
+ },
1865
+ {
1866
+ "ApiKey": []
1867
+ }
1868
+ ]
1869
+ }
1870
+ },
1871
+ "/v1.0/protected/systems/{upn}/{systemKey}": {
1872
+ "post": {
1873
+ "tags": [
1874
+ "EmployeeSystems"
1875
+ ],
1876
+ "summary": "Grant the employee a seat in a third-party system",
1877
+ "description": "Assigns the backing app-role on the system's Enterprise App. SCIM/provisioning then creates the account automatically.",
1878
+ "operationId": "AssignEmployeeSystem",
1879
+ "parameters": [
1880
+ {
1881
+ "name": "upn",
1882
+ "in": "path",
1883
+ "required": true,
1884
+ "schema": {
1885
+ "type": "string"
1886
+ }
1887
+ },
1888
+ {
1889
+ "name": "systemKey",
1890
+ "in": "path",
1891
+ "required": true,
1892
+ "schema": {
1893
+ "type": "string"
1894
+ },
1895
+ "x-ms-summary": "Stable system key (e.g. \"salesforce\")"
1896
+ },
1897
+ {
1898
+ "name": "roleId",
1899
+ "in": "query",
1900
+ "schema": {
1901
+ "type": "string"
1902
+ },
1903
+ "x-ms-summary": "App-role id to assign; falls back to the tenant's default role when omitted. Assigning a different role than the current one replaces the assignment."
1904
+ }
1905
+ ],
1906
+ "responses": {
1907
+ "200": {
1908
+ "description": "Payload of EmployeeSystemAccess",
1909
+ "content": {
1910
+ "application/json": {
1911
+ "schema": {
1912
+ "$ref": "#/components/schemas/employeeSystemAccess"
1913
+ }
1914
+ }
1915
+ },
1916
+ "x-ms-summary": "Success"
1917
+ },
1918
+ "401": {
1919
+ "description": "No description",
1920
+ "x-ms-summary": "Unauthorized"
1921
+ },
1922
+ "404": {
1923
+ "description": "No description",
1924
+ "x-ms-summary": "Unknown system or employee"
1925
+ },
1926
+ "501": {
1927
+ "description": "No description",
1928
+ "x-ms-summary": "System not configured in this environment"
1929
+ }
1930
+ },
1931
+ "security": [
1932
+ {
1933
+ "Implicit": [
1934
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1935
+ ]
1936
+ },
1937
+ {
1938
+ "ApiKey": []
1939
+ }
1940
+ ]
1941
+ },
1942
+ "delete": {
1943
+ "tags": [
1944
+ "EmployeeSystems"
1945
+ ],
1946
+ "summary": "Revoke the employee's seat in a third-party system",
1947
+ "description": "Removes the backing app-role assignment. SCIM/provisioning deactivates the account on the next sync.",
1948
+ "operationId": "RevokeEmployeeSystem",
1949
+ "parameters": [
1950
+ {
1951
+ "name": "upn",
1952
+ "in": "path",
1953
+ "required": true,
1954
+ "schema": {
1955
+ "type": "string"
1956
+ }
1957
+ },
1958
+ {
1959
+ "name": "systemKey",
1960
+ "in": "path",
1961
+ "required": true,
1962
+ "schema": {
1963
+ "type": "string"
1964
+ }
1965
+ }
1966
+ ],
1967
+ "responses": {
1968
+ "200": {
1969
+ "description": "Payload of EmployeeSystemAccess",
1970
+ "content": {
1971
+ "application/json": {
1972
+ "schema": {
1973
+ "$ref": "#/components/schemas/employeeSystemAccess"
1974
+ }
1975
+ }
1976
+ },
1977
+ "x-ms-summary": "Success"
1978
+ },
1979
+ "401": {
1980
+ "description": "No description",
1981
+ "x-ms-summary": "Unauthorized"
1982
+ },
1983
+ "404": {
1984
+ "description": "No description",
1985
+ "x-ms-summary": "Unknown system or employee"
1986
+ },
1987
+ "501": {
1988
+ "description": "No description",
1989
+ "x-ms-summary": "System not configured in this environment"
1990
+ }
1991
+ },
1992
+ "security": [
1993
+ {
1994
+ "Implicit": [
1995
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1996
+ ]
1997
+ },
1998
+ {
1999
+ "ApiKey": []
2000
+ }
2001
+ ]
2002
+ }
2003
+ },
2004
+ "/v1.0/protected/directory/users": {
2005
+ "post": {
2006
+ "tags": [
2007
+ "Directory"
2008
+ ],
2009
+ "summary": "Create (or adopt) a directory user",
2010
+ "description": "Creates the Entra user, or patches an existing one with the supplied fields. Returns the temporary password only on fresh creation.",
2011
+ "operationId": "CreateDirectoryUser",
2012
+ "requestBody": {
2013
+ "content": {
2014
+ "application/json": {
2015
+ "schema": {
2016
+ "$ref": "#/components/schemas/createUserInput"
2017
+ }
2018
+ }
2019
+ },
2020
+ "required": true
2021
+ },
2022
+ "responses": {
2023
+ "200": {
2024
+ "description": "Payload of CreateUserResult",
2025
+ "content": {
2026
+ "application/json": {
2027
+ "schema": {
2028
+ "$ref": "#/components/schemas/createUserResult"
2029
+ }
2030
+ }
2031
+ },
2032
+ "x-ms-summary": "Success"
2033
+ },
2034
+ "401": {
2035
+ "description": "No description",
2036
+ "x-ms-summary": "Unauthorized"
2037
+ }
2038
+ },
2039
+ "security": [
2040
+ {
2041
+ "Implicit": [
2042
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2043
+ ]
2044
+ },
2045
+ {
2046
+ "ApiKey": []
2047
+ }
2048
+ ]
2049
+ }
2050
+ },
2051
+ "/v1.0/protected/directory/users/{objectId}": {
2052
+ "patch": {
2053
+ "tags": [
2054
+ "Directory"
2055
+ ],
2056
+ "summary": "Patch a directory user from candidate fields",
2057
+ "operationId": "PatchDirectoryUser",
2058
+ "parameters": [
2059
+ {
2060
+ "name": "objectId",
2061
+ "in": "path",
2062
+ "required": true,
2063
+ "schema": {
2064
+ "type": "string"
2065
+ }
2066
+ }
2067
+ ],
2068
+ "requestBody": {
2069
+ "content": {
2070
+ "application/json": {
2071
+ "schema": {
2072
+ "$ref": "#/components/schemas/createUserInput"
2073
+ }
2074
+ }
2075
+ },
2076
+ "required": true
2077
+ },
2078
+ "responses": {
2079
+ "204": {
2080
+ "description": "No description",
2081
+ "x-ms-summary": "Patched"
2082
+ },
2083
+ "401": {
2084
+ "description": "No description",
2085
+ "x-ms-summary": "Unauthorized"
2086
+ }
2087
+ },
2088
+ "security": [
2089
+ {
2090
+ "Implicit": [
2091
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2092
+ ]
2093
+ },
2094
+ {
2095
+ "ApiKey": []
2096
+ }
2097
+ ]
2098
+ }
2099
+ },
2100
+ "/v1.0/protected/directory/users/{objectId}/photo": {
2101
+ "post": {
2102
+ "tags": [
2103
+ "Directory"
2104
+ ],
2105
+ "summary": "Upload a profile photo to the directory user",
2106
+ "description": "Fetches the image from the supplied URL and PUTs it as the user's Entra profile photo.",
2107
+ "operationId": "UploadDirectoryUserPhoto",
2108
+ "parameters": [
2109
+ {
2110
+ "name": "objectId",
2111
+ "in": "path",
2112
+ "required": true,
2113
+ "schema": {
2114
+ "type": "string"
2115
+ }
2116
+ }
2117
+ ],
2118
+ "requestBody": {
2119
+ "content": {
2120
+ "application/json": {
2121
+ "schema": {
2122
+ "$ref": "#/components/schemas/uploadPhotoRequest"
2123
+ }
2124
+ }
2125
+ },
2126
+ "required": true
2127
+ },
2128
+ "responses": {
2129
+ "200": {
2130
+ "description": "Payload of UploadPhotoResult",
2131
+ "content": {
2132
+ "application/json": {
2133
+ "schema": {
2134
+ "$ref": "#/components/schemas/uploadPhotoResult"
2135
+ }
2136
+ }
2137
+ },
2138
+ "x-ms-summary": "Success"
2139
+ },
2140
+ "401": {
2141
+ "description": "No description",
2142
+ "x-ms-summary": "Unauthorized"
2143
+ }
2144
+ },
2145
+ "security": [
2146
+ {
2147
+ "Implicit": [
2148
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2149
+ ]
2150
+ },
2151
+ {
2152
+ "ApiKey": []
2153
+ }
2154
+ ]
2155
+ }
2156
+ },
2157
+ "/v1.0/protected/directory/users/by-upn/{upn}": {
2158
+ "get": {
2159
+ "tags": [
2160
+ "Directory"
2161
+ ],
2162
+ "summary": "Resolve a UPN to the directory user's object id",
2163
+ "description": "Returns userObjectId: null when no directory user exists for the UPN.",
2164
+ "operationId": "GetDirectoryUserByUpn",
2165
+ "parameters": [
2166
+ {
2167
+ "name": "upn",
2168
+ "in": "path",
2169
+ "required": true,
2170
+ "schema": {
2171
+ "type": "string"
2172
+ }
2173
+ }
2174
+ ],
2175
+ "responses": {
2176
+ "200": {
2177
+ "description": "Payload of DirectoryUserRef",
2178
+ "content": {
2179
+ "application/json": {
2180
+ "schema": {
2181
+ "$ref": "#/components/schemas/directoryUserRef"
2182
+ }
2183
+ }
2184
+ },
2185
+ "x-ms-summary": "Success"
2186
+ },
2187
+ "401": {
2188
+ "description": "No description",
2189
+ "x-ms-summary": "Unauthorized"
2190
+ }
2191
+ },
2192
+ "security": [
2193
+ {
2194
+ "Implicit": [
2195
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2196
+ ]
2197
+ },
2198
+ {
2199
+ "ApiKey": []
2200
+ }
2201
+ ]
2202
+ }
2203
+ },
2204
+ "/v1.0/protected/directory/users/{upn}/disable": {
2205
+ "post": {
2206
+ "tags": [
2207
+ "Directory"
2208
+ ],
2209
+ "summary": "Disable the directory user (offboarding)",
2210
+ "operationId": "DisableDirectoryUser",
2211
+ "parameters": [
2212
+ {
2213
+ "name": "upn",
2214
+ "in": "path",
2215
+ "required": true,
2216
+ "schema": {
2217
+ "type": "string"
2218
+ }
2219
+ }
2220
+ ],
2221
+ "responses": {
2222
+ "200": {
2223
+ "description": "Payload of DisableUserResult",
2224
+ "content": {
2225
+ "application/json": {
2226
+ "schema": {
2227
+ "$ref": "#/components/schemas/disableUserResult"
2228
+ }
2229
+ }
2230
+ },
2231
+ "x-ms-summary": "Success"
2232
+ },
2233
+ "401": {
2234
+ "description": "No description",
2235
+ "x-ms-summary": "Unauthorized"
2236
+ }
2237
+ },
2238
+ "security": [
2239
+ {
2240
+ "Implicit": [
2241
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2242
+ ]
2243
+ },
2244
+ {
2245
+ "ApiKey": []
2246
+ }
2247
+ ]
2248
+ }
2249
+ },
2250
+ "/v1.0/protected/directory/users/{upn}": {
2251
+ "delete": {
2252
+ "tags": [
2253
+ "Directory"
2254
+ ],
2255
+ "summary": "Delete the directory user (recoverable in Entra for 30 days)",
2256
+ "operationId": "DeleteDirectoryUser",
2257
+ "parameters": [
2258
+ {
2259
+ "name": "upn",
2260
+ "in": "path",
2261
+ "required": true,
2262
+ "schema": {
2263
+ "type": "string"
2264
+ }
2265
+ }
2266
+ ],
2267
+ "responses": {
2268
+ "200": {
2269
+ "description": "Payload of DisableUserResult",
2270
+ "content": {
2271
+ "application/json": {
2272
+ "schema": {
2273
+ "$ref": "#/components/schemas/disableUserResult"
2274
+ }
2275
+ }
2276
+ },
2277
+ "x-ms-summary": "Success"
2278
+ },
2279
+ "401": {
2280
+ "description": "No description",
2281
+ "x-ms-summary": "Unauthorized"
2282
+ }
2283
+ },
2284
+ "security": [
2285
+ {
2286
+ "Implicit": [
2287
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
2288
+ ]
2289
+ },
2290
+ {
2291
+ "ApiKey": []
2292
+ }
2293
+ ]
2294
+ }
2295
+ }
2296
+ },
2297
+ "components": {
2298
+ "schemas": {
2299
+ "addCvToProposalRequest": {
2300
+ "type": "object",
2301
+ "properties": {
2302
+ "user_id": {
2303
+ "type": "string",
2304
+ "nullable": true
2305
+ },
2306
+ "cv_id": {
2307
+ "type": "string",
2308
+ "nullable": true
2309
+ }
2310
+ }
2311
+ },
2312
+ "appRoleAssignmentRequest": {
2313
+ "type": "object",
2314
+ "properties": {
2315
+ "servicePrincipalObjectId": {
2316
+ "type": "string"
2317
+ },
2318
+ "appRoleId": {
2319
+ "type": "string"
2320
+ }
2321
+ }
2322
+ },
2323
+ "commissionTierReference": {
2324
+ "type": "object",
2325
+ "properties": {
2326
+ "sanityType": {
2327
+ "enum": [
2328
+ "reference"
2329
+ ],
2330
+ "type": "string",
2331
+ "default": "reference"
2332
+ },
2333
+ "sanityRef": {
2334
+ "type": "string"
2335
+ },
2336
+ "sanityWeak": {
2337
+ "type": "boolean"
2338
+ }
2339
+ }
2340
+ },
2341
+ "componentBlocksInnerOneOfChildrenInner": {
2342
+ "type": "object",
2343
+ "properties": {
2344
+ "sanityType": {
2345
+ "enum": [
2346
+ "span"
2347
+ ],
2348
+ "type": "string",
2349
+ "default": "span"
2350
+ },
2351
+ "marks": {
2352
+ "type": "array",
2353
+ "items": {
2354
+ "type": "string"
2355
+ }
2356
+ },
2357
+ "sanityKey": {
2358
+ "type": "string"
2359
+ },
2360
+ "text": {
2361
+ "type": "string"
2362
+ }
2363
+ }
2364
+ },
2365
+ "componentBlocksInnerOneOfMarkDefsInner": {
2366
+ "type": "object",
2367
+ "properties": {
2368
+ "sanityType": {
2369
+ "enum": [
2370
+ "link"
2371
+ ],
2372
+ "type": "string",
2373
+ "default": "link"
2374
+ },
2375
+ "href": {
2376
+ "type": "string"
2377
+ },
2378
+ "sanityKey": {
2379
+ "type": "string"
2380
+ }
2381
+ }
2382
+ },
2383
+ "componentGalleryMediaInner": {
2384
+ "type": "object",
2385
+ "properties": {
2386
+ "actualInstance": {
2387
+ "type": "object"
2388
+ },
2389
+ "isNullable": {
2390
+ "type": "boolean"
2391
+ },
2392
+ "schemaType": {
2393
+ "type": "string"
2394
+ }
2395
+ }
2396
+ },
2397
+ "consultantCv": {
2398
+ "type": "object",
2399
+ "properties": {
2400
+ "userId": {
2401
+ "type": "string",
2402
+ "nullable": true
2403
+ },
2404
+ "email": {
2405
+ "type": "string",
2406
+ "nullable": true
2407
+ },
2408
+ "name": {
2409
+ "type": "string",
2410
+ "nullable": true
2411
+ },
2412
+ "defaultCvId": {
2413
+ "type": "string",
2414
+ "nullable": true
2415
+ },
2416
+ "technologies": {
2417
+ "type": "array",
2418
+ "items": {
2419
+ "type": "string"
2420
+ },
2421
+ "nullable": true
2422
+ },
2423
+ "roles": {
2424
+ "type": "array",
2425
+ "items": {
2426
+ "type": "string"
2427
+ },
2428
+ "nullable": true
2429
+ },
2430
+ "yearsExperience": {
2431
+ "type": "integer",
2432
+ "format": "int32",
2433
+ "nullable": true
2434
+ },
2435
+ "about": {
2436
+ "type": "string",
2437
+ "nullable": true
2438
+ },
2439
+ "cvText": {
2440
+ "type": "string",
2441
+ "nullable": true
2442
+ },
2443
+ "projectExperiences": {
2444
+ "type": "array",
2445
+ "items": {
2446
+ "$ref": "#/components/schemas/consultantProjectExperience"
2447
+ },
2448
+ "nullable": true
2449
+ },
2450
+ "workExperiences": {
2451
+ "type": "array",
2452
+ "items": {
2453
+ "$ref": "#/components/schemas/consultantWorkExperience"
2454
+ },
2455
+ "nullable": true
2456
+ },
2457
+ "educations": {
2458
+ "type": "array",
2459
+ "items": {
2460
+ "$ref": "#/components/schemas/consultantEducation"
2461
+ },
2462
+ "nullable": true
2463
+ },
2464
+ "cvRoles": {
2465
+ "type": "array",
2466
+ "items": {
2467
+ "$ref": "#/components/schemas/consultantCvRole"
2468
+ },
2469
+ "nullable": true
2470
+ },
2471
+ "keyQualifications": {
2472
+ "type": "array",
2473
+ "items": {
2474
+ "$ref": "#/components/schemas/consultantKeyQualification"
2475
+ },
2476
+ "nullable": true
2477
+ }
2478
+ }
2479
+ },
2480
+ "consultantCvRole": {
2481
+ "type": "object",
2482
+ "properties": {
2483
+ "name": {
2484
+ "type": "string",
2485
+ "nullable": true
2486
+ },
2487
+ "longDescription": {
2488
+ "type": "string",
2489
+ "nullable": true
2490
+ },
2491
+ "tags": {
2492
+ "type": "array",
2493
+ "items": {
2494
+ "type": "string"
2495
+ },
2496
+ "nullable": true
2497
+ }
2498
+ }
2499
+ },
2500
+ "consultantEducation": {
2501
+ "type": "object",
2502
+ "properties": {
2503
+ "school": {
2504
+ "type": "string",
2505
+ "nullable": true
2506
+ },
2507
+ "degree": {
2508
+ "type": "string",
2509
+ "nullable": true
2510
+ },
2511
+ "description": {
2512
+ "type": "string",
2513
+ "nullable": true
2514
+ },
2515
+ "yearFrom": {
2516
+ "type": "integer",
2517
+ "format": "int32",
2518
+ "nullable": true
2519
+ },
2520
+ "yearTo": {
2521
+ "type": "integer",
2522
+ "format": "int32",
2523
+ "nullable": true
2524
+ }
2525
+ }
2526
+ },
2527
+ "consultantKeyQualification": {
2528
+ "type": "object",
2529
+ "properties": {
2530
+ "label": {
2531
+ "type": "string",
2532
+ "nullable": true
2533
+ },
2534
+ "description": {
2535
+ "type": "string",
2536
+ "nullable": true
2537
+ },
2538
+ "tags": {
2539
+ "type": "array",
2540
+ "items": {
2541
+ "type": "string"
2542
+ },
2543
+ "nullable": true
2544
+ }
2545
+ }
2546
+ },
2547
+ "consultantPresentation": {
2548
+ "type": "object",
2549
+ "properties": {
2550
+ "id": {
2551
+ "type": "string",
2552
+ "nullable": true
2553
+ },
2554
+ "title": {
2555
+ "type": "string",
2556
+ "nullable": true
2557
+ },
2558
+ "description": {
2559
+ "type": "string",
2560
+ "nullable": true
2561
+ },
2562
+ "longDescription": {
2563
+ "type": "string",
2564
+ "nullable": true
2565
+ },
2566
+ "year": {
2567
+ "type": "string",
2568
+ "nullable": true
2569
+ },
2570
+ "month": {
2571
+ "type": "string",
2572
+ "nullable": true
2573
+ },
2574
+ "speaker": {
2575
+ "$ref": "#/components/schemas/presentationSpeaker"
2576
+ }
2577
+ }
2578
+ },
2579
+ "consultantProjectExperience": {
2580
+ "type": "object",
2581
+ "properties": {
2582
+ "customer": {
2583
+ "type": "string",
2584
+ "nullable": true
2585
+ },
2586
+ "description": {
2587
+ "type": "string",
2588
+ "nullable": true
2589
+ },
2590
+ "longDescription": {
2591
+ "type": "string",
2592
+ "nullable": true
2593
+ },
2594
+ "industry": {
2595
+ "type": "string",
2596
+ "nullable": true
2597
+ },
2598
+ "yearFrom": {
2599
+ "type": "integer",
2600
+ "format": "int32",
2601
+ "nullable": true
2602
+ },
2603
+ "monthFrom": {
2604
+ "type": "integer",
2605
+ "format": "int32",
2606
+ "nullable": true
2607
+ },
2608
+ "yearTo": {
2609
+ "type": "integer",
2610
+ "format": "int32",
2611
+ "nullable": true
2612
+ },
2613
+ "monthTo": {
2614
+ "type": "integer",
2615
+ "format": "int32",
2616
+ "nullable": true
2617
+ },
2618
+ "roleTitle": {
2619
+ "type": "string",
2620
+ "nullable": true
2621
+ },
2622
+ "roleDescription": {
2623
+ "type": "string",
2624
+ "nullable": true
2625
+ },
2626
+ "technologies": {
2627
+ "type": "array",
2628
+ "items": {
2629
+ "type": "string"
2630
+ },
2631
+ "nullable": true
2632
+ }
2633
+ }
2634
+ },
2635
+ "consultantWorkExperience": {
2636
+ "type": "object",
2637
+ "properties": {
2638
+ "employer": {
2639
+ "type": "string",
2640
+ "nullable": true
2641
+ },
2642
+ "title": {
2643
+ "type": "string",
2644
+ "nullable": true
2645
+ },
2646
+ "description": {
2647
+ "type": "string",
2648
+ "nullable": true
2649
+ },
2650
+ "yearFrom": {
2651
+ "type": "integer",
2652
+ "format": "int32",
2653
+ "nullable": true
2654
+ },
2655
+ "monthFrom": {
2656
+ "type": "integer",
2657
+ "format": "int32",
2658
+ "nullable": true
2659
+ },
2660
+ "yearTo": {
2661
+ "type": "integer",
2662
+ "format": "int32",
2663
+ "nullable": true
2664
+ },
2665
+ "monthTo": {
2666
+ "type": "integer",
2667
+ "format": "int32",
2668
+ "nullable": true
2669
+ }
2670
+ }
2671
+ },
2672
+ "createProposalRequest": {
2673
+ "type": "object",
2674
+ "properties": {
2675
+ "name": {
2676
+ "type": "string",
2677
+ "nullable": true
2678
+ },
2679
+ "owner_id": {
2680
+ "type": "string",
2681
+ "nullable": true
2682
+ },
2683
+ "status": {
2684
+ "type": "string",
2685
+ "nullable": true
2686
+ }
2687
+ }
2688
+ },
2689
+ "createUserInput": {
2690
+ "type": "object",
2691
+ "properties": {
2692
+ "userPrincipalName": {
2693
+ "type": "string"
2694
+ },
2695
+ "displayName": {
2696
+ "type": "string"
2697
+ },
2698
+ "givenName": {
2699
+ "type": "string"
2700
+ },
2701
+ "surname": {
2702
+ "type": "string"
2703
+ },
2704
+ "jobTitle": {
2705
+ "type": "string"
2706
+ },
2707
+ "mobilePhone": {
2708
+ "type": "string"
2709
+ },
2710
+ "streetAddress": {
2711
+ "type": "string"
2712
+ },
2713
+ "city": {
2714
+ "type": "string"
2715
+ },
2716
+ "postalCode": {
2717
+ "type": "string"
2718
+ },
2719
+ "country": {
2720
+ "type": "string"
2721
+ },
2722
+ "sanityId": {
2723
+ "type": "string"
2724
+ }
2725
+ }
2726
+ },
2727
+ "createUserResult": {
2728
+ "type": "object",
2729
+ "properties": {
2730
+ "alreadyExisted": {
2731
+ "type": "boolean"
2732
+ },
2733
+ "userObjectId": {
2734
+ "type": "string"
2735
+ },
2736
+ "userPrincipalName": {
2737
+ "type": "string"
2738
+ },
2739
+ "temporaryPassword": {
2740
+ "type": "string"
2741
+ }
2742
+ }
2743
+ },
2744
+ "directoryOperationResult": {
2745
+ "type": "object",
2746
+ "properties": {
2747
+ "changed": {
2748
+ "type": "boolean"
2749
+ }
2750
+ }
2751
+ },
2752
+ "directoryUserRef": {
2753
+ "type": "object",
2754
+ "properties": {
2755
+ "userObjectId": {
2756
+ "type": "string"
2757
+ }
2758
+ }
2759
+ },
2760
+ "disableUserResult": {
2761
+ "type": "object",
2762
+ "properties": {
2763
+ "found": {
2764
+ "type": "boolean"
2765
+ },
2766
+ "wasAlreadyDisabled": {
2767
+ "type": "boolean"
304
2768
  },
305
- "400": {
306
- "description": "Invalid input",
307
- "x-ms-summary": "Bad Request"
2769
+ "userObjectId": {
2770
+ "type": "string"
2771
+ },
2772
+ "userPrincipalName": {
2773
+ "type": "string"
308
2774
  }
309
2775
  }
310
- }
311
- }
312
- },
313
- "components": {
314
- "schemas": {
315
- "commissionTierReference": {
2776
+ },
2777
+ "employeeReference": {
316
2778
  "type": "object",
317
2779
  "properties": {
318
2780
  "sanityType": {
@@ -330,85 +2792,176 @@
330
2792
  }
331
2793
  }
332
2794
  },
333
- "componentBlocksInnerOneOfChildrenInner": {
2795
+ "employeeSystemAccess": {
334
2796
  "type": "object",
335
2797
  "properties": {
336
- "sanityType": {
337
- "enum": [
338
- "span"
339
- ],
340
- "type": "string",
341
- "default": "span"
2798
+ "key": {
2799
+ "type": "string"
342
2800
  },
343
- "marks": {
2801
+ "label": {
2802
+ "type": "string"
2803
+ },
2804
+ "assigned": {
2805
+ "type": "boolean"
2806
+ },
2807
+ "kind": {
2808
+ "type": "string"
2809
+ },
2810
+ "notImplemented": {
2811
+ "type": "boolean"
2812
+ },
2813
+ "assignedRoleId": {
2814
+ "type": "string"
2815
+ },
2816
+ "availableRoles": {
344
2817
  "type": "array",
345
2818
  "items": {
346
- "type": "string"
2819
+ "$ref": "#/components/schemas/systemRoleOption"
347
2820
  }
348
2821
  },
349
- "sanityKey": {
2822
+ "manageable": {
2823
+ "type": "boolean"
2824
+ },
2825
+ "inheritedVia": {
350
2826
  "type": "string"
351
2827
  },
352
- "text": {
2828
+ "provisioningStatus": {
2829
+ "type": "string"
2830
+ },
2831
+ "provisioningError": {
353
2832
  "type": "string"
354
2833
  }
355
2834
  }
356
2835
  },
357
- "componentBlocksInnerOneOfMarkDefsInner": {
2836
+ "employeeSystemAccessRow": {
358
2837
  "type": "object",
359
2838
  "properties": {
360
- "sanityType": {
361
- "enum": [
362
- "link"
363
- ],
364
- "type": "string",
365
- "default": "link"
366
- },
367
- "href": {
2839
+ "upn": {
368
2840
  "type": "string"
369
2841
  },
370
- "sanityKey": {
371
- "type": "string"
2842
+ "systems": {
2843
+ "type": "array",
2844
+ "items": {
2845
+ "$ref": "#/components/schemas/employeeSystemAccess"
2846
+ }
372
2847
  }
373
2848
  }
374
2849
  },
375
- "componentGalleryMediaInner": {
2850
+ "employeeSystemConfig": {
376
2851
  "type": "object",
377
2852
  "properties": {
378
- "actualInstance": {
379
- "type": "object"
2853
+ "key": {
2854
+ "type": "string"
380
2855
  },
381
- "isNullable": {
382
- "type": "boolean"
2856
+ "label": {
2857
+ "type": "string"
383
2858
  },
384
- "schemaType": {
2859
+ "kind": {
2860
+ "type": "string"
2861
+ },
2862
+ "servicePrincipalId": {
2863
+ "type": "string"
2864
+ },
2865
+ "defaultRoleId": {
385
2866
  "type": "string"
386
2867
  }
387
2868
  }
388
2869
  },
389
- "employeeReference": {
2870
+ "feedback": {
390
2871
  "type": "object",
391
2872
  "properties": {
392
- "sanityType": {
393
- "enum": [
394
- "reference"
395
- ],
2873
+ "message": {
2874
+ "type": "string"
2875
+ }
2876
+ }
2877
+ },
2878
+ "flowcaseProposal": {
2879
+ "type": "object",
2880
+ "properties": {
2881
+ "id": {
396
2882
  "type": "string",
397
- "default": "reference"
2883
+ "nullable": true
398
2884
  },
399
- "sanityRef": {
400
- "type": "string"
2885
+ "name": {
2886
+ "type": "string",
2887
+ "nullable": true
401
2888
  },
402
- "sanityWeak": {
403
- "type": "boolean"
2889
+ "api_owner_id": {
2890
+ "type": "string",
2891
+ "nullable": true
2892
+ },
2893
+ "api_owner_name": {
2894
+ "type": "string",
2895
+ "nullable": true
2896
+ },
2897
+ "owner_id": {
2898
+ "type": "string",
2899
+ "nullable": true
2900
+ },
2901
+ "owner_name": {
2902
+ "type": "string",
2903
+ "nullable": true
2904
+ },
2905
+ "status": {
2906
+ "type": "string",
2907
+ "nullable": true
2908
+ },
2909
+ "archived": {
2910
+ "type": "boolean",
2911
+ "nullable": true
2912
+ },
2913
+ "created_at": {
2914
+ "type": "string",
2915
+ "format": "date-time",
2916
+ "nullable": true
2917
+ },
2918
+ "updated_at": {
2919
+ "type": "string",
2920
+ "format": "date-time",
2921
+ "nullable": true
404
2922
  }
405
2923
  }
406
2924
  },
407
- "feedback": {
2925
+ "flowcaseTailoredCv": {
408
2926
  "type": "object",
409
2927
  "properties": {
410
- "message": {
411
- "type": "string"
2928
+ "id": {
2929
+ "type": "string",
2930
+ "nullable": true
2931
+ },
2932
+ "user_id": {
2933
+ "type": "string",
2934
+ "nullable": true
2935
+ },
2936
+ "proposal_id": {
2937
+ "type": "string",
2938
+ "nullable": true
2939
+ },
2940
+ "name": {
2941
+ "type": "string",
2942
+ "nullable": true
2943
+ },
2944
+ "email": {
2945
+ "type": "string",
2946
+ "nullable": true
2947
+ },
2948
+ "title": {
2949
+ "type": "string",
2950
+ "nullable": true
2951
+ },
2952
+ "status": {
2953
+ "type": "string",
2954
+ "nullable": true
2955
+ },
2956
+ "created_at": {
2957
+ "type": "string",
2958
+ "format": "date-time",
2959
+ "nullable": true
2960
+ },
2961
+ "updated_at": {
2962
+ "type": "string",
2963
+ "format": "date-time",
2964
+ "nullable": true
412
2965
  }
413
2966
  }
414
2967
  },
@@ -469,6 +3022,93 @@
469
3022
  }
470
3023
  }
471
3024
  },
3025
+ "licenseAvailability": {
3026
+ "type": "object",
3027
+ "properties": {
3028
+ "skuId": {
3029
+ "type": "string"
3030
+ },
3031
+ "skuPartNumber": {
3032
+ "type": "string"
3033
+ },
3034
+ "enabled": {
3035
+ "type": "integer",
3036
+ "format": "int32"
3037
+ },
3038
+ "consumed": {
3039
+ "type": "integer",
3040
+ "format": "int32"
3041
+ },
3042
+ "available": {
3043
+ "type": "integer",
3044
+ "format": "int32"
3045
+ },
3046
+ "isConfigured": {
3047
+ "type": "boolean"
3048
+ }
3049
+ }
3050
+ },
3051
+ "licenseSkuRef": {
3052
+ "type": "object",
3053
+ "properties": {
3054
+ "skuId": {
3055
+ "type": "string"
3056
+ }
3057
+ }
3058
+ },
3059
+ "listEmployeeSystemAccessBatchRequest": {
3060
+ "type": "object",
3061
+ "properties": {
3062
+ "upns": {
3063
+ "type": "array",
3064
+ "items": {
3065
+ "type": "string"
3066
+ }
3067
+ }
3068
+ }
3069
+ },
3070
+ "pageEmployeeOrderInner": {
3071
+ "type": "object",
3072
+ "properties": {
3073
+ "sanityType": {
3074
+ "enum": [
3075
+ "reference"
3076
+ ],
3077
+ "type": "string",
3078
+ "default": "reference"
3079
+ },
3080
+ "sanityKey": {
3081
+ "type": "string"
3082
+ },
3083
+ "sanityRef": {
3084
+ "type": "string"
3085
+ },
3086
+ "sanityWeak": {
3087
+ "type": "boolean"
3088
+ }
3089
+ }
3090
+ },
3091
+ "pageEquipmentInner": {
3092
+ "type": "object",
3093
+ "properties": {
3094
+ "sanityType": {
3095
+ "enum": [
3096
+ "reference"
3097
+ ],
3098
+ "type": "string",
3099
+ "default": "reference"
3100
+ },
3101
+ "sanityKey": {
3102
+ "type": "string"
3103
+ },
3104
+ "sanityRef": {
3105
+ "type": "string"
3106
+ },
3107
+ "sanityWeak": {
3108
+ "type": "boolean"
3109
+ }
3110
+ }
3111
+ },
472
3112
  "patchEmployee": {
473
3113
  "type": "object",
474
3114
  "properties": {
@@ -492,6 +3132,15 @@
492
3132
  "default": "single",
493
3133
  "nullable": true
494
3134
  },
3135
+ "parentalLeaveCoverage": {
3136
+ "enum": [
3137
+ "80",
3138
+ "100"
3139
+ ],
3140
+ "type": "string",
3141
+ "default": "80",
3142
+ "nullable": true
3143
+ },
495
3144
  "sanityType": {
496
3145
  "enum": [
497
3146
  "employee"
@@ -516,14 +3165,11 @@
516
3165
  "type": "string"
517
3166
  }
518
3167
  },
519
- "appRedemptionCode": {
520
- "type": "string"
521
- },
522
3168
  "birth_date": {
523
3169
  "type": "string"
524
3170
  },
525
3171
  "blurred_image": {
526
- "$ref": "#/components/schemas/sanityPatchOkrIcon"
3172
+ "$ref": "#/components/schemas/sanityPatchPageMetaImage"
527
3173
  },
528
3174
  "boardMember": {
529
3175
  "type": "boolean",
@@ -550,9 +3196,15 @@
550
3196
  "equipment": {
551
3197
  "type": "array",
552
3198
  "items": {
553
- "$ref": "#/components/schemas/sanityCreateEmployeeEquipmentInner"
3199
+ "$ref": "#/components/schemas/pageEquipmentInner"
554
3200
  }
555
3201
  },
3202
+ "externalId": {
3203
+ "type": "string"
3204
+ },
3205
+ "github": {
3206
+ "type": "string"
3207
+ },
556
3208
  "graduationYear": {
557
3209
  "type": "number",
558
3210
  "format": "double",
@@ -565,17 +3217,36 @@
565
3217
  }
566
3218
  },
567
3219
  "image": {
568
- "$ref": "#/components/schemas/sanityPatchOkrIcon"
3220
+ "$ref": "#/components/schemas/sanityPatchPageMetaImage"
569
3221
  },
570
3222
  "innovativeSalary": {
571
3223
  "type": "boolean",
572
3224
  "nullable": true
573
3225
  },
574
- "innovativeSalaryPercentage": {
575
- "type": "number",
576
- "format": "double",
3226
+ "innovativeSalaryPercentage": {
3227
+ "type": "number",
3228
+ "format": "double",
3229
+ "nullable": true
3230
+ },
3231
+ "isBot": {
3232
+ "type": "boolean",
3233
+ "nullable": true
3234
+ },
3235
+ "isExternal": {
3236
+ "type": "boolean",
3237
+ "nullable": true
3238
+ },
3239
+ "isPublic": {
3240
+ "type": "boolean",
3241
+ "nullable": true
3242
+ },
3243
+ "isSeekingProject": {
3244
+ "type": "boolean",
577
3245
  "nullable": true
578
3246
  },
3247
+ "linkedin": {
3248
+ "type": "string"
3249
+ },
579
3250
  "manager": {
580
3251
  "$ref": "#/components/schemas/employeeReference"
581
3252
  },
@@ -599,13 +3270,20 @@
599
3270
  "format": "double",
600
3271
  "nullable": true
601
3272
  },
3273
+ "parentalLeaveStartDate": {
3274
+ "type": "string"
3275
+ },
3276
+ "personalProjectRequirements": {
3277
+ "type": "string"
3278
+ },
602
3279
  "position": {
603
3280
  "type": "string"
604
3281
  },
605
- "satisfaction": {
606
- "type": "number",
607
- "format": "double",
608
- "nullable": true
3282
+ "salaryConfig": {
3283
+ "$ref": "#/components/schemas/pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSalaryConfig"
3284
+ },
3285
+ "settings": {
3286
+ "$ref": "#/components/schemas/pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSettings"
609
3287
  },
610
3288
  "slug": {
611
3289
  "$ref": "#/components/schemas/slug"
@@ -636,6 +3314,53 @@
636
3314
  }
637
3315
  }
638
3316
  },
3317
+ "pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSalaryConfig": {
3318
+ "type": "object",
3319
+ "properties": {
3320
+ "model": {
3321
+ "enum": [
3322
+ "snokam.ceo",
3323
+ "snokam.employee"
3324
+ ],
3325
+ "type": "string",
3326
+ "default": "snokam.ceo",
3327
+ "nullable": true
3328
+ }
3329
+ }
3330
+ },
3331
+ "pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSettings": {
3332
+ "type": "object",
3333
+ "properties": {
3334
+ "colorScheme": {
3335
+ "enum": [
3336
+ "dark",
3337
+ "light",
3338
+ "system"
3339
+ ],
3340
+ "type": "string",
3341
+ "default": "dark",
3342
+ "nullable": true
3343
+ }
3344
+ }
3345
+ },
3346
+ "presentationSpeaker": {
3347
+ "type": "object",
3348
+ "properties": {
3349
+ "name": {
3350
+ "type": "string",
3351
+ "nullable": true
3352
+ },
3353
+ "email": {
3354
+ "type": "string",
3355
+ "nullable": true
3356
+ },
3357
+ "flowcaseUserId": {
3358
+ "type": "string",
3359
+ "nullable": true
3360
+ }
3361
+ },
3362
+ "nullable": true
3363
+ },
639
3364
  "protectedEmployee": {
640
3365
  "type": "object",
641
3366
  "properties": {
@@ -662,6 +3387,15 @@
662
3387
  "default": "cohabitant",
663
3388
  "nullable": true
664
3389
  },
3390
+ "parentalLeaveCoverage": {
3391
+ "enum": [
3392
+ "80",
3393
+ "100"
3394
+ ],
3395
+ "type": "string",
3396
+ "default": "80",
3397
+ "nullable": true
3398
+ },
665
3399
  "sanityType": {
666
3400
  "enum": [
667
3401
  "employee"
@@ -684,14 +3418,11 @@
684
3418
  "type": "string"
685
3419
  }
686
3420
  },
687
- "appRedemptionCode": {
688
- "type": "string"
689
- },
690
3421
  "birth_date": {
691
3422
  "type": "string"
692
3423
  },
693
3424
  "blurred_image": {
694
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3425
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
695
3426
  },
696
3427
  "boardMember": {
697
3428
  "type": "boolean"
@@ -720,6 +3451,12 @@
720
3451
  "$ref": "#/components/schemas/sanityEmployeeEquipmentInner"
721
3452
  }
722
3453
  },
3454
+ "externalId": {
3455
+ "type": "string"
3456
+ },
3457
+ "github": {
3458
+ "type": "string"
3459
+ },
723
3460
  "graduationYear": {
724
3461
  "type": "number",
725
3462
  "format": "double"
@@ -731,7 +3468,7 @@
731
3468
  }
732
3469
  },
733
3470
  "image": {
734
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3471
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
735
3472
  },
736
3473
  "innovativeSalary": {
737
3474
  "type": "boolean"
@@ -740,13 +3477,28 @@
740
3477
  "type": "number",
741
3478
  "format": "double"
742
3479
  },
3480
+ "isBot": {
3481
+ "type": "boolean"
3482
+ },
3483
+ "isExternal": {
3484
+ "type": "boolean"
3485
+ },
3486
+ "isPublic": {
3487
+ "type": "boolean"
3488
+ },
3489
+ "isSeekingProject": {
3490
+ "type": "boolean"
3491
+ },
3492
+ "linkedin": {
3493
+ "type": "string"
3494
+ },
743
3495
  "manager": {
744
3496
  "$ref": "#/components/schemas/sanityEmployeeManager"
745
3497
  },
746
3498
  "media": {
747
3499
  "type": "array",
748
3500
  "items": {
749
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner"
3501
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner"
750
3502
  }
751
3503
  },
752
3504
  "name": {
@@ -762,9 +3514,18 @@
762
3514
  "type": "number",
763
3515
  "format": "double"
764
3516
  },
3517
+ "parentalLeaveStartDate": {
3518
+ "type": "string"
3519
+ },
3520
+ "personalProjectRequirements": {
3521
+ "type": "string"
3522
+ },
765
3523
  "position": {
766
3524
  "type": "string"
767
3525
  },
3526
+ "salaryConfig": {
3527
+ "$ref": "#/components/schemas/sanityEmployeeSalaryConfig"
3528
+ },
768
3529
  "sanityCreatedAt": {
769
3530
  "type": "string"
770
3531
  },
@@ -777,9 +3538,14 @@
777
3538
  "sanityUpdatedAt": {
778
3539
  "type": "string"
779
3540
  },
780
- "satisfaction": {
781
- "type": "number",
782
- "format": "double"
3541
+ "scopeGrants": {
3542
+ "type": "array",
3543
+ "items": {
3544
+ "type": "string"
3545
+ }
3546
+ },
3547
+ "settings": {
3548
+ "$ref": "#/components/schemas/sanityEmployeeSettings"
783
3549
  },
784
3550
  "slug": {
785
3551
  "$ref": "#/components/schemas/slug"
@@ -790,7 +3556,7 @@
790
3556
  "tags": {
791
3557
  "type": "array",
792
3558
  "items": {
793
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3559
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
794
3560
  }
795
3561
  },
796
3562
  "technologies": {
@@ -817,6 +3583,10 @@
817
3583
  "type": "boolean",
818
3584
  "nullable": true
819
3585
  },
3586
+ "isPublic": {
3587
+ "type": "boolean",
3588
+ "nullable": true
3589
+ },
820
3590
  "image": {
821
3591
  "$ref": "#/components/schemas/sanityImage"
822
3592
  },
@@ -838,7 +3608,7 @@
838
3608
  "media": {
839
3609
  "type": "array",
840
3610
  "items": {
841
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner"
3611
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner"
842
3612
  }
843
3613
  },
844
3614
  "name": {
@@ -865,6 +3635,12 @@
865
3635
  "about": {
866
3636
  "type": "string"
867
3637
  },
3638
+ "linkedin": {
3639
+ "type": "string"
3640
+ },
3641
+ "github": {
3642
+ "type": "string"
3643
+ },
868
3644
  "birthDate": {
869
3645
  "type": "string",
870
3646
  "format": "date-time",
@@ -917,27 +3693,6 @@
917
3693
  }
918
3694
  }
919
3695
  },
920
- "sanityCreateEmployeeEquipmentInner": {
921
- "type": "object",
922
- "properties": {
923
- "sanityType": {
924
- "enum": [
925
- "reference"
926
- ],
927
- "type": "string",
928
- "default": "reference"
929
- },
930
- "sanityKey": {
931
- "type": "string"
932
- },
933
- "sanityRef": {
934
- "type": "string"
935
- },
936
- "sanityWeak": {
937
- "type": "boolean"
938
- }
939
- }
940
- },
941
3696
  "sanityCreateEmployeeGroupsInner": {
942
3697
  "type": "object",
943
3698
  "properties": {
@@ -1092,7 +3847,7 @@
1092
3847
  "images": {
1093
3848
  "type": "array",
1094
3849
  "items": {
1095
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3850
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsArticlesInnerMediaOneOf"
1096
3851
  }
1097
3852
  },
1098
3853
  "sanityId": {
@@ -1120,17 +3875,20 @@
1120
3875
  }
1121
3876
  },
1122
3877
  "image": {
1123
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3878
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsArticlesInnerMediaOneOf"
1124
3879
  },
1125
3880
  "leaders": {
1126
3881
  "type": "array",
1127
3882
  "items": {
1128
- "$ref": "#/components/schemas/sanityEmployeeGroupsInnerLeadersInner"
3883
+ "$ref": "#/components/schemas/pageEmployeeOrderInner"
1129
3884
  }
1130
3885
  },
1131
3886
  "name": {
1132
3887
  "type": "string"
1133
3888
  },
3889
+ "permissions": {
3890
+ "type": "string"
3891
+ },
1134
3892
  "sanityCreatedAt": {
1135
3893
  "type": "string"
1136
3894
  },
@@ -1142,27 +3900,12 @@
1142
3900
  },
1143
3901
  "sanityUpdatedAt": {
1144
3902
  "type": "string"
1145
- }
1146
- }
1147
- },
1148
- "sanityEmployeeGroupsInnerLeadersInner": {
1149
- "type": "object",
1150
- "properties": {
1151
- "sanityType": {
1152
- "enum": [
1153
- "reference"
1154
- ],
1155
- "type": "string",
1156
- "default": "reference"
1157
- },
1158
- "sanityKey": {
1159
- "type": "string"
1160
- },
1161
- "sanityRef": {
1162
- "type": "string"
1163
3903
  },
1164
- "sanityWeak": {
1165
- "type": "boolean"
3904
+ "scopeGrants": {
3905
+ "type": "array",
3906
+ "items": {
3907
+ "type": "string"
3908
+ }
1166
3909
  }
1167
3910
  }
1168
3911
  },
@@ -1180,7 +3923,15 @@
1180
3923
  "type": "string"
1181
3924
  },
1182
3925
  "image": {
1183
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3926
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
3927
+ },
3928
+ "isBot": {
3929
+ "type": "boolean",
3930
+ "nullable": true
3931
+ },
3932
+ "isExternal": {
3933
+ "type": "boolean",
3934
+ "nullable": true
1184
3935
  },
1185
3936
  "name": {
1186
3937
  "type": "string"
@@ -1194,7 +3945,7 @@
1194
3945
  "tags": {
1195
3946
  "type": "array",
1196
3947
  "items": {
1197
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3948
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1198
3949
  }
1199
3950
  },
1200
3951
  "telephone": {
@@ -1223,6 +3974,35 @@
1223
3974
  }
1224
3975
  }
1225
3976
  },
3977
+ "sanityEmployeeSalaryConfig": {
3978
+ "type": "object",
3979
+ "properties": {
3980
+ "model": {
3981
+ "enum": [
3982
+ "snokam.ceo",
3983
+ "snokam.employee"
3984
+ ],
3985
+ "type": "string",
3986
+ "default": "snokam.ceo",
3987
+ "nullable": true
3988
+ }
3989
+ }
3990
+ },
3991
+ "sanityEmployeeSettings": {
3992
+ "type": "object",
3993
+ "properties": {
3994
+ "colorScheme": {
3995
+ "enum": [
3996
+ "dark",
3997
+ "light",
3998
+ "system"
3999
+ ],
4000
+ "type": "string",
4001
+ "default": "dark",
4002
+ "nullable": true
4003
+ }
4004
+ }
4005
+ },
1226
4006
  "sanityGadgetBudgetYearlyBudgetsInner": {
1227
4007
  "type": "object",
1228
4008
  "properties": {
@@ -1575,7 +4355,15 @@
1575
4355
  "type": "string"
1576
4356
  },
1577
4357
  "image": {
1578
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
4358
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
4359
+ },
4360
+ "isBot": {
4361
+ "type": "boolean",
4362
+ "nullable": true
4363
+ },
4364
+ "isExternal": {
4365
+ "type": "boolean",
4366
+ "nullable": true
1579
4367
  },
1580
4368
  "name": {
1581
4369
  "type": "string"
@@ -1589,7 +4377,7 @@
1589
4377
  "tags": {
1590
4378
  "type": "array",
1591
4379
  "items": {
1592
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
4380
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1593
4381
  }
1594
4382
  },
1595
4383
  "telephone": {
@@ -1597,7 +4385,7 @@
1597
4385
  }
1598
4386
  }
1599
4387
  },
1600
- "sanityPatchOkrIcon": {
4388
+ "sanityPatchPageMetaImage": {
1601
4389
  "type": "object",
1602
4390
  "properties": {
1603
4391
  "sanityType": {
@@ -1676,31 +4464,36 @@
1676
4464
  }
1677
4465
  }
1678
4466
  },
1679
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInner": {
4467
+ "sanityTechnologyWithRelationsArticlesInnerMediaOneOf": {
1680
4468
  "type": "object",
1681
4469
  "properties": {
1682
4470
  "sanityType": {
1683
4471
  "enum": [
1684
- "technology"
4472
+ "image"
1685
4473
  ],
1686
4474
  "type": "string",
1687
- "default": "technology"
1688
- },
1689
- "parent": {
1690
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
4475
+ "default": "image"
1691
4476
  },
1692
- "sanityId": {
1693
- "type": "string"
4477
+ "asset": {
4478
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
4479
+ }
4480
+ }
4481
+ },
4482
+ "sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner": {
4483
+ "type": "object",
4484
+ "properties": {
4485
+ "actualInstance": {
4486
+ "type": "object"
1694
4487
  },
1695
- "slug": {
1696
- "$ref": "#/components/schemas/slug"
4488
+ "isNullable": {
4489
+ "type": "boolean"
1697
4490
  },
1698
- "title": {
4491
+ "schemaType": {
1699
4492
  "type": "string"
1700
4493
  }
1701
4494
  }
1702
4495
  },
1703
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent": {
4496
+ "sanityTechnologyWithRelationsEmployeesInnerTagsInner": {
1704
4497
  "type": "object",
1705
4498
  "properties": {
1706
4499
  "sanityType": {
@@ -1721,32 +4514,27 @@
1721
4514
  }
1722
4515
  }
1723
4516
  },
1724
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner": {
1725
- "type": "object",
1726
- "properties": {
1727
- "actualInstance": {
1728
- "type": "object"
1729
- },
1730
- "isNullable": {
1731
- "type": "boolean"
1732
- },
1733
- "schemaType": {
1734
- "type": "string"
1735
- }
1736
- }
1737
- },
1738
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo": {
4517
+ "sanityTechnologyWithRelationsProjectsInnerTechnologiesInner": {
1739
4518
  "type": "object",
1740
4519
  "properties": {
1741
4520
  "sanityType": {
1742
4521
  "enum": [
1743
- "image"
4522
+ "technology"
1744
4523
  ],
1745
4524
  "type": "string",
1746
- "default": "image"
4525
+ "default": "technology"
1747
4526
  },
1748
- "asset": {
1749
- "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
4527
+ "parent": {
4528
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
4529
+ },
4530
+ "sanityId": {
4531
+ "type": "string"
4532
+ },
4533
+ "slug": {
4534
+ "$ref": "#/components/schemas/slug"
4535
+ },
4536
+ "title": {
4537
+ "type": "string"
1750
4538
  }
1751
4539
  }
1752
4540
  },
@@ -1807,6 +4595,17 @@
1807
4595
  }
1808
4596
  }
1809
4597
  },
4598
+ "systemRoleOption": {
4599
+ "type": "object",
4600
+ "properties": {
4601
+ "id": {
4602
+ "type": "string"
4603
+ },
4604
+ "label": {
4605
+ "type": "string"
4606
+ }
4607
+ }
4608
+ },
1810
4609
  "tag": {
1811
4610
  "type": "object",
1812
4611
  "properties": {
@@ -1843,6 +4642,40 @@
1843
4642
  "$ref": "#/components/schemas/tag"
1844
4643
  }
1845
4644
  }
4645
+ },
4646
+ "updateProposalRequest": {
4647
+ "type": "object",
4648
+ "properties": {
4649
+ "name": {
4650
+ "type": "string",
4651
+ "nullable": true
4652
+ },
4653
+ "archived": {
4654
+ "type": "boolean",
4655
+ "nullable": true
4656
+ },
4657
+ "status": {
4658
+ "type": "string",
4659
+ "nullable": true
4660
+ }
4661
+ }
4662
+ },
4663
+ "uploadPhotoRequest": {
4664
+ "type": "object",
4665
+ "properties": {
4666
+ "imageUrl": {
4667
+ "type": "string"
4668
+ }
4669
+ }
4670
+ },
4671
+ "uploadPhotoResult": {
4672
+ "type": "object",
4673
+ "properties": {
4674
+ "bytes": {
4675
+ "type": "integer",
4676
+ "format": "int64"
4677
+ }
4678
+ }
1846
4679
  }
1847
4680
  },
1848
4681
  "securitySchemes": {
@@ -1850,14 +4683,19 @@
1850
4683
  "type": "oauth2",
1851
4684
  "flows": {
1852
4685
  "implicit": {
1853
- "authorizationUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/authorize",
1854
- "tokenUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/token",
1855
- "refreshUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/token",
4686
+ "authorizationUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize",
4687
+ "tokenUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
4688
+ "refreshUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
1856
4689
  "scopes": {
1857
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default": "Default function scope"
4690
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default": "Default function scope"
1858
4691
  }
1859
4692
  }
1860
4693
  }
4694
+ },
4695
+ "ApiKey": {
4696
+ "type": "http",
4697
+ "scheme": "bearer",
4698
+ "bearerFormat": "JWT"
1861
4699
  }
1862
4700
  }
1863
4701
  }