@snokam/mcp-api 1.21.1 → 2.0.0

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 +3 -3
  16. package/specs/production/accounting.json +2629 -1754
  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 +2979 -299
  21. package/specs/production/events.json +366 -52
  22. package/specs/production/notifications.json +390 -13
  23. package/specs/production/office.json +818 -836
  24. package/specs/production/recruitment.json +3635 -1
  25. package/specs/production/sales.json +5088 -393
  26. package/specs/production/sanity.json +29008 -15539
  27. package/specs/production/sync.json +116 -20
  28. package/specs/production/webshop.json +38 -18
  29. package/specs/test/accounting.json +2629 -1754
  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 +2979 -299
  34. package/specs/test/events.json +366 -52
  35. package/specs/test/notifications.json +390 -13
  36. package/specs/test/office.json +818 -836
  37. package/specs/test/recruitment.json +3635 -1
  38. package/specs/test/sales.json +5088 -393
  39. package/specs/test/sanity.json +29008 -15539
  40. package/specs/test/sync.json +116 -20
  41. package/specs/test/webshop.json +38 -18
@@ -42,12 +42,41 @@
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
  },
54
+ "/v1.0/presentations": {
55
+ "get": {
56
+ "tags": [
57
+ "CV"
58
+ ],
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",
62
+ "responses": {
63
+ "200": {
64
+ "description": "List of presentations retrieved successfully",
65
+ "content": {
66
+ "application/json": {
67
+ "schema": {
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/components/schemas/consultantPresentation"
71
+ }
72
+ }
73
+ }
74
+ },
75
+ "x-ms-summary": "Success"
76
+ }
77
+ }
78
+ }
79
+ },
51
80
  "/v1.0/cvs/my-cv": {
52
81
  "get": {
53
82
  "tags": [
@@ -80,363 +109,2217 @@
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
119
  }
88
120
  },
89
- "/v1.0/cvs/{email}": {
121
+ "/v1.0/cvs/{slug}": {
90
122
  "get": {
91
123
  "tags": [
92
124
  "CV"
93
125
  ],
94
- "summary": "Gets CV data for a specific employee by email",
95
- "description": "Retrieves CV data for a specific consultant from CvPartner by their email address.",
96
- "operationId": "GetEmployeeCvByEmail",
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",
97
129
  "parameters": [
98
130
  {
99
- "name": "email",
131
+ "name": "slug",
100
132
  "in": "path",
101
- "description": "The email address of the consultant to retrieve CV data for",
102
133
  "required": true,
103
134
  "schema": {
104
135
  "type": "string"
105
- },
106
- "x-ms-summary": "The email address of the employee"
136
+ }
107
137
  }
108
138
  ],
109
139
  "responses": {
110
140
  "200": {
111
- "description": "Consultant CV profile retrieved successfully",
141
+ "description": "Payload of ConsultantCv",
112
142
  "content": {
113
143
  "application/json": {
114
144
  "schema": {
115
145
  "$ref": "#/components/schemas/consultantCv"
116
146
  }
117
147
  }
118
- },
119
- "x-ms-summary": "Success"
120
- },
121
- "401": {
122
- "description": "User is not authorized",
123
- "x-ms-summary": "Unauthorized"
148
+ }
124
149
  },
125
150
  "404": {
126
- "description": "Employee not found in CvPartner",
127
- "x-ms-summary": "Not Found"
151
+ "description": "No description"
128
152
  }
129
153
  },
130
154
  "security": [
131
155
  {
132
156
  "Implicit": [
133
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
157
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
134
158
  ]
159
+ },
160
+ {
161
+ "ApiKey": []
135
162
  }
136
163
  ]
137
164
  }
138
165
  },
139
- "/v1.0/protected": {
166
+ "/v1.0/me/cv/pdf": {
140
167
  "get": {
141
168
  "tags": [
142
- "Protected"
169
+ "CV"
143
170
  ],
144
- "summary": "Gets all protected employees",
145
- "description": "Retrieves a list of all protected employees.",
146
- "operationId": "GetEmployeesProtected",
171
+ "summary": "Downloads the authenticated user's CV as PDF",
172
+ "operationId": "GetMyCvPdf",
147
173
  "responses": {
148
174
  "200": {
149
- "description": "List of protected employees retrieved successfully",
175
+ "description": "Payload of Array of Byte",
150
176
  "content": {
151
- "application/json": {
177
+ "application/pdf": {
152
178
  "schema": {
153
- "type": "array",
154
- "items": {
155
- "$ref": "#/components/schemas/protectedEmployee"
156
- }
179
+ "type": "string",
180
+ "format": "binary"
157
181
  }
158
182
  }
159
- },
160
- "x-ms-summary": "Success"
183
+ }
161
184
  },
162
185
  "401": {
163
- "description": "User is not authorized",
164
- "x-ms-summary": "Unauthorized"
186
+ "description": "No description"
187
+ },
188
+ "404": {
189
+ "description": "No description"
165
190
  }
166
191
  },
167
192
  "security": [
168
193
  {
169
194
  "Implicit": [
170
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
195
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
171
196
  ]
197
+ },
198
+ {
199
+ "ApiKey": []
172
200
  }
173
201
  ]
174
202
  }
175
203
  },
176
- "/v1.0/protected/me": {
204
+ "/v1.0/cvs/{slug}/pdf": {
177
205
  "get": {
178
206
  "tags": [
179
- "Protected"
207
+ "CV"
208
+ ],
209
+ "summary": "Downloads a specific consultant's CV as PDF by slug",
210
+ "operationId": "GetEmployeeCvPdfBySlug",
211
+ "parameters": [
212
+ {
213
+ "name": "slug",
214
+ "in": "path",
215
+ "required": true,
216
+ "schema": {
217
+ "type": "string"
218
+ }
219
+ }
180
220
  ],
181
- "summary": "Gets the authenticated user's protected employee data",
182
- "description": "Retrieves the protected employee data for the authenticated user.",
183
- "operationId": "GetMeProtected",
184
221
  "responses": {
185
222
  "200": {
186
- "description": "Authenticated user's protected employee data retrieved successfully",
223
+ "description": "Payload of Array of Byte",
187
224
  "content": {
188
- "application/json": {
225
+ "application/pdf": {
189
226
  "schema": {
190
- "$ref": "#/components/schemas/protectedEmployee"
227
+ "type": "string",
228
+ "format": "binary"
191
229
  }
192
230
  }
193
- },
194
- "x-ms-summary": "Success"
231
+ }
195
232
  },
196
233
  "401": {
197
- "description": "User is not authorized",
198
- "x-ms-summary": "Unauthorized"
234
+ "description": "No description"
199
235
  },
200
236
  "404": {
201
- "description": "Employee not found",
202
- "x-ms-summary": "Not Found"
237
+ "description": "No description"
203
238
  }
204
239
  },
205
240
  "security": [
206
241
  {
207
242
  "Implicit": [
208
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
243
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
209
244
  ]
245
+ },
246
+ {
247
+ "ApiKey": []
210
248
  }
211
249
  ]
212
- },
213
- "put": {
250
+ }
251
+ },
252
+ "/v1.0/proposals": {
253
+ "post": {
214
254
  "tags": [
215
- "Protected"
255
+ "Proposals"
216
256
  ],
217
- "summary": "Updates the authenticated user's protected employee data",
218
- "description": "Updates the protected employee data for the authenticated user.",
219
- "operationId": "PatchMeProtected",
257
+ "summary": "Create a Flowcase proposal",
258
+ "operationId": "CreateProposal",
220
259
  "requestBody": {
221
- "description": "Employee data to update",
222
260
  "content": {
223
261
  "application/json": {
224
262
  "schema": {
225
- "$ref": "#/components/schemas/patchEmployee"
263
+ "$ref": "#/components/schemas/createProposalRequest"
226
264
  }
227
265
  }
228
266
  },
229
267
  "required": true
230
268
  },
231
269
  "responses": {
232
- "200": {
233
- "description": "Authenticated user's protected employee data updated successfully",
270
+ "201": {
271
+ "description": "Payload of FlowcaseProposal",
234
272
  "content": {
235
273
  "application/json": {
236
274
  "schema": {
237
- "$ref": "#/components/schemas/protectedEmployee"
275
+ "$ref": "#/components/schemas/flowcaseProposal"
238
276
  }
239
277
  }
240
- },
241
- "x-ms-summary": "Success"
242
- },
243
- "401": {
244
- "description": "User is not authorized",
245
- "x-ms-summary": "Unauthorized"
278
+ }
246
279
  }
247
280
  },
248
281
  "security": [
249
282
  {
250
283
  "Implicit": [
251
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
284
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
252
285
  ]
286
+ },
287
+ {
288
+ "ApiKey": []
253
289
  }
254
290
  ]
255
291
  }
256
292
  },
257
- "/v1.0/protected/{id}": {
293
+ "/v1.0/proposals/{proposalId}": {
258
294
  "get": {
259
295
  "tags": [
260
- "Protected"
296
+ "Proposals"
261
297
  ],
262
- "summary": "Gets a protected employee by ID",
263
- "description": "Retrieves a protected employee by their ID.",
264
- "operationId": "GetEmployeeProtected",
298
+ "summary": "Get a Flowcase proposal by id",
299
+ "operationId": "GetProposal",
265
300
  "parameters": [
266
301
  {
267
- "name": "id",
302
+ "name": "proposalId",
268
303
  "in": "path",
269
- "description": "The ID of the protected employee to retrieve",
270
304
  "required": true,
271
305
  "schema": {
272
306
  "type": "string"
273
- },
274
- "x-ms-summary": "The ID of the employee"
307
+ }
275
308
  }
276
309
  ],
277
310
  "responses": {
278
311
  "200": {
279
- "description": "Protected employee retrieved successfully",
312
+ "description": "Payload of FlowcaseProposal",
280
313
  "content": {
281
314
  "application/json": {
282
315
  "schema": {
283
- "$ref": "#/components/schemas/protectedEmployee"
316
+ "$ref": "#/components/schemas/flowcaseProposal"
284
317
  }
285
318
  }
286
- },
287
- "x-ms-summary": "Success"
288
- },
289
- "401": {
290
- "description": "User is not authorized",
291
- "x-ms-summary": "Unauthorized"
319
+ }
292
320
  },
293
321
  "404": {
294
- "description": "Employee not found",
295
- "x-ms-summary": "Not Found"
322
+ "description": "No description"
296
323
  }
297
324
  },
298
325
  "security": [
299
326
  {
300
327
  "Implicit": [
301
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
328
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
302
329
  ]
330
+ },
331
+ {
332
+ "ApiKey": []
303
333
  }
304
334
  ]
305
- }
306
- },
307
- "/v1.0/protected/me/gadgetbudget": {
308
- "get": {
335
+ },
336
+ "patch": {
309
337
  "tags": [
310
- "Protected"
338
+ "Proposals"
311
339
  ],
312
- "summary": "Gets the authenticated user's gadget budget",
313
- "description": "Retrieves the gadget budget for the authenticated user.",
314
- "operationId": "GetMyGadgetBudget",
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
+ },
315
362
  "responses": {
316
363
  "200": {
317
- "description": "Authenticated user's gadget budget retrieved successfully",
364
+ "description": "Payload of FlowcaseProposal",
318
365
  "content": {
319
366
  "application/json": {
320
367
  "schema": {
321
- "$ref": "#/components/schemas/gadgetBudget"
368
+ "$ref": "#/components/schemas/flowcaseProposal"
322
369
  }
323
370
  }
324
- },
325
- "x-ms-summary": "Success"
326
- },
327
- "401": {
328
- "description": "User is not authorized",
329
- "x-ms-summary": "Unauthorized"
371
+ }
330
372
  }
331
373
  },
332
374
  "security": [
333
375
  {
334
376
  "Implicit": [
335
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
377
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
336
378
  ]
379
+ },
380
+ {
381
+ "ApiKey": []
337
382
  }
338
383
  ]
339
- }
340
- },
341
- "/v1.0/public/{slugOrId}": {
342
- "get": {
384
+ },
385
+ "delete": {
343
386
  "tags": [
344
- "Public"
387
+ "Proposals"
345
388
  ],
346
- "summary": "Gets a public employee by slug or id",
347
- "description": "Retrieves a public employee by their slug or id.",
348
- "operationId": "GetEmployeePublic",
389
+ "summary": "Archive a proposal Flowcase has no hard-delete; we PUT archived=true.",
390
+ "operationId": "ArchiveProposal",
349
391
  "parameters": [
350
392
  {
351
- "name": "slugOrId",
393
+ "name": "proposalId",
352
394
  "in": "path",
353
- "description": "The slug or id of the public employee to retrieve",
354
395
  "required": true,
355
396
  "schema": {
356
397
  "type": "string"
357
- },
358
- "x-ms-summary": "The slug or id of the employee"
398
+ }
359
399
  }
360
400
  ],
361
401
  "responses": {
362
402
  "200": {
363
- "description": "Public employee retrieved successfully",
403
+ "description": "Payload of FlowcaseProposal",
364
404
  "content": {
365
405
  "application/json": {
366
406
  "schema": {
367
- "$ref": "#/components/schemas/publicEmployee"
407
+ "$ref": "#/components/schemas/flowcaseProposal"
368
408
  }
369
409
  }
370
- },
371
- "x-ms-summary": "Success"
410
+ }
411
+ }
412
+ },
413
+ "security": [
414
+ {
415
+ "Implicit": [
416
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
417
+ ]
372
418
  },
373
- "404": {
374
- "description": "Employee not found",
375
- "x-ms-summary": "Not Found"
419
+ {
420
+ "ApiKey": []
376
421
  }
377
- }
422
+ ]
378
423
  }
379
424
  },
380
- "/v1.0/public": {
381
- "get": {
425
+ "/v1.0/proposals/{proposalId}/cvs": {
426
+ "post": {
382
427
  "tags": [
383
- "Public"
428
+ "Proposals"
384
429
  ],
385
- "summary": "Gets all public employees",
386
- "description": "Retrieves a list of all public employees.",
387
- "operationId": "GetEmployeesPublic",
388
- "responses": {
389
- "200": {
390
- "description": "List of public employees retrieved successfully",
391
- "content": {
392
- "application/json": {
393
- "schema": {
394
- "type": "array",
395
- "items": {
396
- "$ref": "#/components/schemas/publicEmployee"
397
- }
398
- }
399
- }
400
- },
401
- "x-ms-summary": "Success"
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
+ }
402
440
  }
403
- }
404
- }
405
- },
406
- "/v1.0/feedback": {
407
- "post": {
408
- "tags": [
409
- "Public"
410
441
  ],
411
- "summary": "Submit anonymous feedback",
412
- "description": "Allows anyone to send anonymous text feedback.",
413
- "operationId": "PostAnonymousFeedback",
414
442
  "requestBody": {
415
- "description": "Feedback payload",
416
443
  "content": {
417
444
  "application/json": {
418
445
  "schema": {
419
- "$ref": "#/components/schemas/feedback"
446
+ "$ref": "#/components/schemas/addCvToProposalRequest"
420
447
  }
421
448
  }
422
449
  },
423
450
  "required": true
424
451
  },
425
452
  "responses": {
426
- "200": {
427
- "description": "Feedback received",
428
- "x-ms-summary": "Success"
429
- },
430
- "400": {
431
- "description": "Invalid input",
432
- "x-ms-summary": "Bad Request"
453
+ "201": {
454
+ "description": "Payload of FlowcaseTailoredCv",
455
+ "content": {
456
+ "application/json": {
457
+ "schema": {
458
+ "$ref": "#/components/schemas/flowcaseTailoredCv"
459
+ }
460
+ }
461
+ }
433
462
  }
434
- }
435
- }
436
- }
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"
670
+ }
671
+ }
672
+ },
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
+ }
437
2296
  },
438
2297
  "components": {
439
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
+ },
440
2323
  "commissionTierReference": {
441
2324
  "type": "object",
442
2325
  "properties": {
@@ -455,133 +2338,630 @@
455
2338
  }
456
2339
  }
457
2340
  },
458
- "componentBlocksInnerOneOfChildrenInner": {
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"
2768
+ },
2769
+ "userObjectId": {
2770
+ "type": "string"
2771
+ },
2772
+ "userPrincipalName": {
2773
+ "type": "string"
2774
+ }
2775
+ }
2776
+ },
2777
+ "employeeReference": {
2778
+ "type": "object",
2779
+ "properties": {
2780
+ "sanityType": {
2781
+ "enum": [
2782
+ "reference"
2783
+ ],
2784
+ "type": "string",
2785
+ "default": "reference"
2786
+ },
2787
+ "sanityRef": {
2788
+ "type": "string"
2789
+ },
2790
+ "sanityWeak": {
2791
+ "type": "boolean"
2792
+ }
2793
+ }
2794
+ },
2795
+ "employeeSystemAccess": {
459
2796
  "type": "object",
460
2797
  "properties": {
461
- "sanityType": {
462
- "enum": [
463
- "span"
464
- ],
465
- "type": "string",
466
- "default": "span"
2798
+ "key": {
2799
+ "type": "string"
467
2800
  },
468
- "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": {
469
2817
  "type": "array",
470
2818
  "items": {
471
- "type": "string"
2819
+ "$ref": "#/components/schemas/systemRoleOption"
472
2820
  }
473
2821
  },
474
- "sanityKey": {
2822
+ "manageable": {
2823
+ "type": "boolean"
2824
+ },
2825
+ "inheritedVia": {
475
2826
  "type": "string"
476
2827
  },
477
- "text": {
2828
+ "provisioningStatus": {
2829
+ "type": "string"
2830
+ },
2831
+ "provisioningError": {
478
2832
  "type": "string"
479
2833
  }
480
2834
  }
481
2835
  },
482
- "componentBlocksInnerOneOfMarkDefsInner": {
2836
+ "employeeSystemAccessRow": {
483
2837
  "type": "object",
484
2838
  "properties": {
485
- "sanityType": {
486
- "enum": [
487
- "link"
488
- ],
489
- "type": "string",
490
- "default": "link"
491
- },
492
- "href": {
2839
+ "upn": {
493
2840
  "type": "string"
494
2841
  },
495
- "sanityKey": {
496
- "type": "string"
2842
+ "systems": {
2843
+ "type": "array",
2844
+ "items": {
2845
+ "$ref": "#/components/schemas/employeeSystemAccess"
2846
+ }
497
2847
  }
498
2848
  }
499
2849
  },
500
- "componentGalleryMediaInner": {
2850
+ "employeeSystemConfig": {
501
2851
  "type": "object",
502
2852
  "properties": {
503
- "actualInstance": {
504
- "type": "object"
2853
+ "key": {
2854
+ "type": "string"
505
2855
  },
506
- "isNullable": {
507
- "type": "boolean"
2856
+ "label": {
2857
+ "type": "string"
508
2858
  },
509
- "schemaType": {
2859
+ "kind": {
2860
+ "type": "string"
2861
+ },
2862
+ "servicePrincipalId": {
2863
+ "type": "string"
2864
+ },
2865
+ "defaultRoleId": {
510
2866
  "type": "string"
511
2867
  }
512
2868
  }
513
2869
  },
514
- "consultantCv": {
2870
+ "feedback": {
515
2871
  "type": "object",
516
2872
  "properties": {
517
- "userId": {
2873
+ "message": {
2874
+ "type": "string"
2875
+ }
2876
+ }
2877
+ },
2878
+ "flowcaseProposal": {
2879
+ "type": "object",
2880
+ "properties": {
2881
+ "id": {
518
2882
  "type": "string",
519
2883
  "nullable": true
520
2884
  },
521
- "email": {
2885
+ "name": {
522
2886
  "type": "string",
523
2887
  "nullable": true
524
2888
  },
525
- "name": {
2889
+ "api_owner_id": {
526
2890
  "type": "string",
527
2891
  "nullable": true
528
2892
  },
529
- "defaultCvId": {
2893
+ "api_owner_name": {
530
2894
  "type": "string",
531
2895
  "nullable": true
532
2896
  },
533
- "technologies": {
534
- "type": "array",
535
- "items": {
536
- "type": "string"
537
- },
2897
+ "owner_id": {
2898
+ "type": "string",
538
2899
  "nullable": true
539
2900
  },
540
- "roles": {
541
- "type": "array",
542
- "items": {
543
- "type": "string"
544
- },
2901
+ "owner_name": {
2902
+ "type": "string",
545
2903
  "nullable": true
546
2904
  },
547
- "yearsExperience": {
548
- "type": "integer",
549
- "format": "int32",
2905
+ "status": {
2906
+ "type": "string",
550
2907
  "nullable": true
551
2908
  },
552
- "about": {
2909
+ "archived": {
2910
+ "type": "boolean",
2911
+ "nullable": true
2912
+ },
2913
+ "created_at": {
553
2914
  "type": "string",
2915
+ "format": "date-time",
554
2916
  "nullable": true
555
2917
  },
556
- "cvText": {
2918
+ "updated_at": {
557
2919
  "type": "string",
2920
+ "format": "date-time",
558
2921
  "nullable": true
559
2922
  }
560
2923
  }
561
2924
  },
562
- "employeeReference": {
2925
+ "flowcaseTailoredCv": {
563
2926
  "type": "object",
564
2927
  "properties": {
565
- "sanityType": {
566
- "enum": [
567
- "reference"
568
- ],
2928
+ "id": {
569
2929
  "type": "string",
570
- "default": "reference"
2930
+ "nullable": true
571
2931
  },
572
- "sanityRef": {
573
- "type": "string"
2932
+ "user_id": {
2933
+ "type": "string",
2934
+ "nullable": true
574
2935
  },
575
- "sanityWeak": {
576
- "type": "boolean"
577
- }
578
- }
579
- },
580
- "feedback": {
581
- "type": "object",
582
- "properties": {
583
- "message": {
584
- "type": "string"
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
585
2965
  }
586
2966
  }
587
2967
  },
@@ -618,27 +2998,72 @@
618
2998
  }
619
2999
  }
620
3000
  },
621
- "geopoint": {
3001
+ "geopoint": {
3002
+ "type": "object",
3003
+ "properties": {
3004
+ "sanityType": {
3005
+ "enum": [
3006
+ "geopoint"
3007
+ ],
3008
+ "type": "string",
3009
+ "default": "geopoint"
3010
+ },
3011
+ "alt": {
3012
+ "type": "number",
3013
+ "format": "double"
3014
+ },
3015
+ "lat": {
3016
+ "type": "number",
3017
+ "format": "double"
3018
+ },
3019
+ "lng": {
3020
+ "type": "number",
3021
+ "format": "double"
3022
+ }
3023
+ }
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": {
622
3060
  "type": "object",
623
3061
  "properties": {
624
- "sanityType": {
625
- "enum": [
626
- "geopoint"
627
- ],
628
- "type": "string",
629
- "default": "geopoint"
630
- },
631
- "alt": {
632
- "type": "number",
633
- "format": "double"
634
- },
635
- "lat": {
636
- "type": "number",
637
- "format": "double"
638
- },
639
- "lng": {
640
- "type": "number",
641
- "format": "double"
3062
+ "upns": {
3063
+ "type": "array",
3064
+ "items": {
3065
+ "type": "string"
3066
+ }
642
3067
  }
643
3068
  }
644
3069
  },
@@ -707,6 +3132,15 @@
707
3132
  "default": "single",
708
3133
  "nullable": true
709
3134
  },
3135
+ "parentalLeaveCoverage": {
3136
+ "enum": [
3137
+ "80",
3138
+ "100"
3139
+ ],
3140
+ "type": "string",
3141
+ "default": "80",
3142
+ "nullable": true
3143
+ },
710
3144
  "sanityType": {
711
3145
  "enum": [
712
3146
  "employee"
@@ -765,6 +3199,12 @@
765
3199
  "$ref": "#/components/schemas/pageEquipmentInner"
766
3200
  }
767
3201
  },
3202
+ "externalId": {
3203
+ "type": "string"
3204
+ },
3205
+ "github": {
3206
+ "type": "string"
3207
+ },
768
3208
  "graduationYear": {
769
3209
  "type": "number",
770
3210
  "format": "double",
@@ -788,6 +3228,25 @@
788
3228
  "format": "double",
789
3229
  "nullable": true
790
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",
3245
+ "nullable": true
3246
+ },
3247
+ "linkedin": {
3248
+ "type": "string"
3249
+ },
791
3250
  "manager": {
792
3251
  "$ref": "#/components/schemas/employeeReference"
793
3252
  },
@@ -811,9 +3270,21 @@
811
3270
  "format": "double",
812
3271
  "nullable": true
813
3272
  },
3273
+ "parentalLeaveStartDate": {
3274
+ "type": "string"
3275
+ },
3276
+ "personalProjectRequirements": {
3277
+ "type": "string"
3278
+ },
814
3279
  "position": {
815
3280
  "type": "string"
816
3281
  },
3282
+ "salaryConfig": {
3283
+ "$ref": "#/components/schemas/pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSalaryConfig"
3284
+ },
3285
+ "settings": {
3286
+ "$ref": "#/components/schemas/pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSettings"
3287
+ },
817
3288
  "slug": {
818
3289
  "$ref": "#/components/schemas/slug"
819
3290
  },
@@ -843,6 +3314,53 @@
843
3314
  }
844
3315
  }
845
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
+ },
846
3364
  "protectedEmployee": {
847
3365
  "type": "object",
848
3366
  "properties": {
@@ -869,6 +3387,15 @@
869
3387
  "default": "cohabitant",
870
3388
  "nullable": true
871
3389
  },
3390
+ "parentalLeaveCoverage": {
3391
+ "enum": [
3392
+ "80",
3393
+ "100"
3394
+ ],
3395
+ "type": "string",
3396
+ "default": "80",
3397
+ "nullable": true
3398
+ },
872
3399
  "sanityType": {
873
3400
  "enum": [
874
3401
  "employee"
@@ -895,7 +3422,7 @@
895
3422
  "type": "string"
896
3423
  },
897
3424
  "blurred_image": {
898
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3425
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
899
3426
  },
900
3427
  "boardMember": {
901
3428
  "type": "boolean"
@@ -924,6 +3451,12 @@
924
3451
  "$ref": "#/components/schemas/sanityEmployeeEquipmentInner"
925
3452
  }
926
3453
  },
3454
+ "externalId": {
3455
+ "type": "string"
3456
+ },
3457
+ "github": {
3458
+ "type": "string"
3459
+ },
927
3460
  "graduationYear": {
928
3461
  "type": "number",
929
3462
  "format": "double"
@@ -935,7 +3468,7 @@
935
3468
  }
936
3469
  },
937
3470
  "image": {
938
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3471
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
939
3472
  },
940
3473
  "innovativeSalary": {
941
3474
  "type": "boolean"
@@ -944,13 +3477,28 @@
944
3477
  "type": "number",
945
3478
  "format": "double"
946
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
+ },
947
3495
  "manager": {
948
3496
  "$ref": "#/components/schemas/sanityEmployeeManager"
949
3497
  },
950
3498
  "media": {
951
3499
  "type": "array",
952
3500
  "items": {
953
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner"
3501
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner"
954
3502
  }
955
3503
  },
956
3504
  "name": {
@@ -966,9 +3514,18 @@
966
3514
  "type": "number",
967
3515
  "format": "double"
968
3516
  },
3517
+ "parentalLeaveStartDate": {
3518
+ "type": "string"
3519
+ },
3520
+ "personalProjectRequirements": {
3521
+ "type": "string"
3522
+ },
969
3523
  "position": {
970
3524
  "type": "string"
971
3525
  },
3526
+ "salaryConfig": {
3527
+ "$ref": "#/components/schemas/sanityEmployeeSalaryConfig"
3528
+ },
972
3529
  "sanityCreatedAt": {
973
3530
  "type": "string"
974
3531
  },
@@ -981,6 +3538,15 @@
981
3538
  "sanityUpdatedAt": {
982
3539
  "type": "string"
983
3540
  },
3541
+ "scopeGrants": {
3542
+ "type": "array",
3543
+ "items": {
3544
+ "type": "string"
3545
+ }
3546
+ },
3547
+ "settings": {
3548
+ "$ref": "#/components/schemas/sanityEmployeeSettings"
3549
+ },
984
3550
  "slug": {
985
3551
  "$ref": "#/components/schemas/slug"
986
3552
  },
@@ -990,7 +3556,7 @@
990
3556
  "tags": {
991
3557
  "type": "array",
992
3558
  "items": {
993
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3559
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
994
3560
  }
995
3561
  },
996
3562
  "technologies": {
@@ -1017,6 +3583,10 @@
1017
3583
  "type": "boolean",
1018
3584
  "nullable": true
1019
3585
  },
3586
+ "isPublic": {
3587
+ "type": "boolean",
3588
+ "nullable": true
3589
+ },
1020
3590
  "image": {
1021
3591
  "$ref": "#/components/schemas/sanityImage"
1022
3592
  },
@@ -1038,7 +3608,7 @@
1038
3608
  "media": {
1039
3609
  "type": "array",
1040
3610
  "items": {
1041
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner"
3611
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner"
1042
3612
  }
1043
3613
  },
1044
3614
  "name": {
@@ -1065,6 +3635,12 @@
1065
3635
  "about": {
1066
3636
  "type": "string"
1067
3637
  },
3638
+ "linkedin": {
3639
+ "type": "string"
3640
+ },
3641
+ "github": {
3642
+ "type": "string"
3643
+ },
1068
3644
  "birthDate": {
1069
3645
  "type": "string",
1070
3646
  "format": "date-time",
@@ -1271,7 +3847,7 @@
1271
3847
  "images": {
1272
3848
  "type": "array",
1273
3849
  "items": {
1274
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3850
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsArticlesInnerMediaOneOf"
1275
3851
  }
1276
3852
  },
1277
3853
  "sanityId": {
@@ -1299,7 +3875,7 @@
1299
3875
  }
1300
3876
  },
1301
3877
  "image": {
1302
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3878
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsArticlesInnerMediaOneOf"
1303
3879
  },
1304
3880
  "leaders": {
1305
3881
  "type": "array",
@@ -1310,6 +3886,9 @@
1310
3886
  "name": {
1311
3887
  "type": "string"
1312
3888
  },
3889
+ "permissions": {
3890
+ "type": "string"
3891
+ },
1313
3892
  "sanityCreatedAt": {
1314
3893
  "type": "string"
1315
3894
  },
@@ -1321,6 +3900,12 @@
1321
3900
  },
1322
3901
  "sanityUpdatedAt": {
1323
3902
  "type": "string"
3903
+ },
3904
+ "scopeGrants": {
3905
+ "type": "array",
3906
+ "items": {
3907
+ "type": "string"
3908
+ }
1324
3909
  }
1325
3910
  }
1326
3911
  },
@@ -1338,7 +3923,15 @@
1338
3923
  "type": "string"
1339
3924
  },
1340
3925
  "image": {
1341
- "$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
1342
3935
  },
1343
3936
  "name": {
1344
3937
  "type": "string"
@@ -1352,7 +3945,7 @@
1352
3945
  "tags": {
1353
3946
  "type": "array",
1354
3947
  "items": {
1355
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3948
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1356
3949
  }
1357
3950
  },
1358
3951
  "telephone": {
@@ -1381,6 +3974,35 @@
1381
3974
  }
1382
3975
  }
1383
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
+ },
1384
4006
  "sanityGadgetBudgetYearlyBudgetsInner": {
1385
4007
  "type": "object",
1386
4008
  "properties": {
@@ -1733,7 +4355,15 @@
1733
4355
  "type": "string"
1734
4356
  },
1735
4357
  "image": {
1736
- "$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
1737
4367
  },
1738
4368
  "name": {
1739
4369
  "type": "string"
@@ -1747,7 +4377,7 @@
1747
4377
  "tags": {
1748
4378
  "type": "array",
1749
4379
  "items": {
1750
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
4380
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1751
4381
  }
1752
4382
  },
1753
4383
  "telephone": {
@@ -1834,31 +4464,36 @@
1834
4464
  }
1835
4465
  }
1836
4466
  },
1837
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInner": {
4467
+ "sanityTechnologyWithRelationsArticlesInnerMediaOneOf": {
1838
4468
  "type": "object",
1839
4469
  "properties": {
1840
4470
  "sanityType": {
1841
4471
  "enum": [
1842
- "technology"
4472
+ "image"
1843
4473
  ],
1844
4474
  "type": "string",
1845
- "default": "technology"
1846
- },
1847
- "parent": {
1848
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
4475
+ "default": "image"
1849
4476
  },
1850
- "sanityId": {
1851
- "type": "string"
4477
+ "asset": {
4478
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
4479
+ }
4480
+ }
4481
+ },
4482
+ "sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner": {
4483
+ "type": "object",
4484
+ "properties": {
4485
+ "actualInstance": {
4486
+ "type": "object"
1852
4487
  },
1853
- "slug": {
1854
- "$ref": "#/components/schemas/slug"
4488
+ "isNullable": {
4489
+ "type": "boolean"
1855
4490
  },
1856
- "title": {
4491
+ "schemaType": {
1857
4492
  "type": "string"
1858
4493
  }
1859
4494
  }
1860
4495
  },
1861
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent": {
4496
+ "sanityTechnologyWithRelationsEmployeesInnerTagsInner": {
1862
4497
  "type": "object",
1863
4498
  "properties": {
1864
4499
  "sanityType": {
@@ -1879,32 +4514,27 @@
1879
4514
  }
1880
4515
  }
1881
4516
  },
1882
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner": {
1883
- "type": "object",
1884
- "properties": {
1885
- "actualInstance": {
1886
- "type": "object"
1887
- },
1888
- "isNullable": {
1889
- "type": "boolean"
1890
- },
1891
- "schemaType": {
1892
- "type": "string"
1893
- }
1894
- }
1895
- },
1896
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo": {
4517
+ "sanityTechnologyWithRelationsProjectsInnerTechnologiesInner": {
1897
4518
  "type": "object",
1898
4519
  "properties": {
1899
4520
  "sanityType": {
1900
4521
  "enum": [
1901
- "image"
4522
+ "technology"
1902
4523
  ],
1903
4524
  "type": "string",
1904
- "default": "image"
4525
+ "default": "technology"
1905
4526
  },
1906
- "asset": {
1907
- "$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"
1908
4538
  }
1909
4539
  }
1910
4540
  },
@@ -1965,6 +4595,17 @@
1965
4595
  }
1966
4596
  }
1967
4597
  },
4598
+ "systemRoleOption": {
4599
+ "type": "object",
4600
+ "properties": {
4601
+ "id": {
4602
+ "type": "string"
4603
+ },
4604
+ "label": {
4605
+ "type": "string"
4606
+ }
4607
+ }
4608
+ },
1968
4609
  "tag": {
1969
4610
  "type": "object",
1970
4611
  "properties": {
@@ -2001,6 +4642,40 @@
2001
4642
  "$ref": "#/components/schemas/tag"
2002
4643
  }
2003
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
+ }
2004
4679
  }
2005
4680
  },
2006
4681
  "securitySchemes": {
@@ -2008,14 +4683,19 @@
2008
4683
  "type": "oauth2",
2009
4684
  "flows": {
2010
4685
  "implicit": {
2011
- "authorizationUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/authorize",
2012
- "tokenUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/token",
2013
- "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",
2014
4689
  "scopes": {
2015
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default": "Default function scope"
4690
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default": "Default function scope"
2016
4691
  }
2017
4692
  }
2018
4693
  }
4694
+ },
4695
+ "ApiKey": {
4696
+ "type": "http",
4697
+ "scheme": "bearer",
4698
+ "bearerFormat": "JWT"
2019
4699
  }
2020
4700
  }
2021
4701
  }