@snokam/mcp-api 1.10.0 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/auth.d.ts +0 -15
  2. package/dist/auth.js +15 -59
  3. package/dist/builtin-tools.d.ts +109 -0
  4. package/dist/builtin-tools.js +200 -0
  5. package/dist/execute-call.d.ts +5 -0
  6. package/dist/execute-call.js +45 -0
  7. package/dist/index.d.ts +0 -7
  8. package/dist/index.js +7 -312
  9. package/dist/openapi-loader.d.ts +1 -14
  10. package/dist/openapi-loader.js +8 -49
  11. package/dist/state.d.ts +13 -0
  12. package/dist/state.js +54 -0
  13. package/dist/tool-schema.d.ts +2 -0
  14. package/dist/tool-schema.js +42 -0
  15. package/package.json +6 -6
  16. package/specs/production/accounting.json +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 +3095 -242
  21. package/specs/production/events.json +366 -52
  22. package/specs/production/notifications.json +419 -12
  23. package/specs/production/office.json +818 -836
  24. package/specs/production/recruitment.json +3635 -1
  25. package/specs/production/sales.json +5250 -417
  26. package/specs/production/sanity.json +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 +3095 -242
  34. package/specs/test/events.json +366 -52
  35. package/specs/test/notifications.json +419 -12
  36. package/specs/test/office.json +818 -836
  37. package/specs/test/recruitment.json +3635 -1
  38. package/specs/test/sales.json +5250 -417
  39. package/specs/test/sanity.json +29008 -15539
  40. package/specs/test/sync.json +116 -20
  41. package/specs/test/webshop.json +38 -18
@@ -11,23 +11,23 @@
11
11
  }
12
12
  ],
13
13
  "paths": {
14
- "/v1.0/protected": {
14
+ "/v1.0/cvs": {
15
15
  "get": {
16
16
  "tags": [
17
- "Protected"
17
+ "CV"
18
18
  ],
19
- "summary": "Gets all protected employees",
20
- "description": "Retrieves a list of all protected employees.",
21
- "operationId": "GetEmployeesProtected",
19
+ "summary": "Gets CV data for all consultants",
20
+ "description": "Retrieves CV data for all consultants from CvPartner, including technologies, roles, about, and CV text.",
21
+ "operationId": "GetEmployeesCv",
22
22
  "responses": {
23
23
  "200": {
24
- "description": "List of protected employees retrieved successfully",
24
+ "description": "List of consultant CV profiles retrieved successfully",
25
25
  "content": {
26
26
  "application/json": {
27
27
  "schema": {
28
28
  "type": "array",
29
29
  "items": {
30
- "$ref": "#/components/schemas/protectedEmployee"
30
+ "$ref": "#/components/schemas/consultantCv"
31
31
  }
32
32
  }
33
33
  }
@@ -42,27 +42,56 @@
42
42
  "security": [
43
43
  {
44
44
  "Implicit": [
45
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
45
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
46
46
  ]
47
+ },
48
+ {
49
+ "ApiKey": []
47
50
  }
48
51
  ]
49
52
  }
50
53
  },
51
- "/v1.0/protected/me": {
54
+ "/v1.0/presentations": {
52
55
  "get": {
53
56
  "tags": [
54
- "Protected"
57
+ "CV"
55
58
  ],
56
- "summary": "Gets the authenticated user's protected employee data",
57
- "description": "Retrieves the protected employee data for the authenticated user.",
58
- "operationId": "GetMeProtected",
59
+ "summary": "Gets all presentations held by consultants",
60
+ "description": "Aggregates the presentations listed across all consultant CVs in CvPartner, including the speaker for each presentation. Public endpoint used by the snokam.no/presentasjoner page.",
61
+ "operationId": "GetPresentations",
59
62
  "responses": {
60
63
  "200": {
61
- "description": "Authenticated user's protected employee data retrieved successfully",
64
+ "description": "List of presentations retrieved successfully",
62
65
  "content": {
63
66
  "application/json": {
64
67
  "schema": {
65
- "$ref": "#/components/schemas/protectedEmployee"
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/components/schemas/consultantPresentation"
71
+ }
72
+ }
73
+ }
74
+ },
75
+ "x-ms-summary": "Success"
76
+ }
77
+ }
78
+ }
79
+ },
80
+ "/v1.0/cvs/my-cv": {
81
+ "get": {
82
+ "tags": [
83
+ "CV"
84
+ ],
85
+ "summary": "Gets CV data for the authenticated user",
86
+ "description": "Retrieves CV data for the currently authenticated consultant from CvPartner.",
87
+ "operationId": "GetMyCv",
88
+ "responses": {
89
+ "200": {
90
+ "description": "Authenticated user's CV profile retrieved successfully",
91
+ "content": {
92
+ "application/json": {
93
+ "schema": {
94
+ "$ref": "#/components/schemas/consultantCv"
66
95
  }
67
96
  }
68
97
  },
@@ -73,225 +102,258 @@
73
102
  "x-ms-summary": "Unauthorized"
74
103
  },
75
104
  "404": {
76
- "description": "Employee not found",
105
+ "description": "Employee not found in CvPartner",
77
106
  "x-ms-summary": "Not Found"
78
107
  }
79
108
  },
80
109
  "security": [
81
110
  {
82
111
  "Implicit": [
83
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
112
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
84
113
  ]
114
+ },
115
+ {
116
+ "ApiKey": []
85
117
  }
86
118
  ]
87
- },
88
- "put": {
119
+ }
120
+ },
121
+ "/v1.0/cvs/{slug}": {
122
+ "get": {
89
123
  "tags": [
90
- "Protected"
124
+ "CV"
91
125
  ],
92
- "summary": "Updates the authenticated user's protected employee data",
93
- "description": "Updates the protected employee data for the authenticated user.",
94
- "operationId": "PatchMeProtected",
95
- "requestBody": {
96
- "description": "Employee data to update",
97
- "content": {
98
- "application/json": {
99
- "schema": {
100
- "$ref": "#/components/schemas/patchEmployee"
126
+ "summary": "Gets CV data for a specific employee by slug",
127
+ "description": "Retrieves CV data for a specific consultant from CvPartner by their Sanity slug (e.g. 'hakon-grotte').",
128
+ "operationId": "GetEmployeeCvBySlug",
129
+ "parameters": [
130
+ {
131
+ "name": "slug",
132
+ "in": "path",
133
+ "required": true,
134
+ "schema": {
135
+ "type": "string"
136
+ }
137
+ }
138
+ ],
139
+ "responses": {
140
+ "200": {
141
+ "description": "Payload of ConsultantCv",
142
+ "content": {
143
+ "application/json": {
144
+ "schema": {
145
+ "$ref": "#/components/schemas/consultantCv"
146
+ }
101
147
  }
102
148
  }
103
149
  },
104
- "required": true
150
+ "404": {
151
+ "description": "No description"
152
+ }
105
153
  },
154
+ "security": [
155
+ {
156
+ "Implicit": [
157
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
158
+ ]
159
+ },
160
+ {
161
+ "ApiKey": []
162
+ }
163
+ ]
164
+ }
165
+ },
166
+ "/v1.0/me/cv/pdf": {
167
+ "get": {
168
+ "tags": [
169
+ "CV"
170
+ ],
171
+ "summary": "Downloads the authenticated user's CV as PDF",
172
+ "operationId": "GetMyCvPdf",
106
173
  "responses": {
107
174
  "200": {
108
- "description": "Authenticated user's protected employee data updated successfully",
175
+ "description": "Payload of Array of Byte",
109
176
  "content": {
110
- "application/json": {
177
+ "application/pdf": {
111
178
  "schema": {
112
- "$ref": "#/components/schemas/protectedEmployee"
179
+ "type": "string",
180
+ "format": "binary"
113
181
  }
114
182
  }
115
- },
116
- "x-ms-summary": "Success"
183
+ }
117
184
  },
118
185
  "401": {
119
- "description": "User is not authorized",
120
- "x-ms-summary": "Unauthorized"
186
+ "description": "No description"
187
+ },
188
+ "404": {
189
+ "description": "No description"
121
190
  }
122
191
  },
123
192
  "security": [
124
193
  {
125
194
  "Implicit": [
126
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
195
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
127
196
  ]
197
+ },
198
+ {
199
+ "ApiKey": []
128
200
  }
129
201
  ]
130
202
  }
131
203
  },
132
- "/v1.0/protected/{id}": {
204
+ "/v1.0/cvs/{slug}/pdf": {
133
205
  "get": {
134
206
  "tags": [
135
- "Protected"
207
+ "CV"
136
208
  ],
137
- "summary": "Gets a protected employee by ID",
138
- "description": "Retrieves a protected employee by their ID.",
139
- "operationId": "GetEmployeeProtected",
209
+ "summary": "Downloads a specific consultant's CV as PDF by slug",
210
+ "operationId": "GetEmployeeCvPdfBySlug",
140
211
  "parameters": [
141
212
  {
142
- "name": "id",
213
+ "name": "slug",
143
214
  "in": "path",
144
- "description": "The ID of the protected employee to retrieve",
145
215
  "required": true,
146
216
  "schema": {
147
217
  "type": "string"
148
- },
149
- "x-ms-summary": "The ID of the employee"
218
+ }
150
219
  }
151
220
  ],
152
221
  "responses": {
153
222
  "200": {
154
- "description": "Protected employee retrieved successfully",
223
+ "description": "Payload of Array of Byte",
155
224
  "content": {
156
- "application/json": {
225
+ "application/pdf": {
157
226
  "schema": {
158
- "$ref": "#/components/schemas/protectedEmployee"
227
+ "type": "string",
228
+ "format": "binary"
159
229
  }
160
230
  }
161
- },
162
- "x-ms-summary": "Success"
231
+ }
163
232
  },
164
233
  "401": {
165
- "description": "User is not authorized",
166
- "x-ms-summary": "Unauthorized"
234
+ "description": "No description"
167
235
  },
168
236
  "404": {
169
- "description": "Employee not found",
170
- "x-ms-summary": "Not Found"
237
+ "description": "No description"
171
238
  }
172
239
  },
173
240
  "security": [
174
241
  {
175
242
  "Implicit": [
176
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
243
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
177
244
  ]
245
+ },
246
+ {
247
+ "ApiKey": []
178
248
  }
179
249
  ]
180
250
  }
181
251
  },
182
- "/v1.0/protected/me/gadgetbudget": {
183
- "get": {
252
+ "/v1.0/proposals": {
253
+ "post": {
184
254
  "tags": [
185
- "Protected"
255
+ "Proposals"
186
256
  ],
187
- "summary": "Gets the authenticated user's gadget budget",
188
- "description": "Retrieves the gadget budget for the authenticated user.",
189
- "operationId": "GetMyGadgetBudget",
257
+ "summary": "Create a Flowcase proposal",
258
+ "operationId": "CreateProposal",
259
+ "requestBody": {
260
+ "content": {
261
+ "application/json": {
262
+ "schema": {
263
+ "$ref": "#/components/schemas/createProposalRequest"
264
+ }
265
+ }
266
+ },
267
+ "required": true
268
+ },
190
269
  "responses": {
191
- "200": {
192
- "description": "Authenticated user's gadget budget retrieved successfully",
270
+ "201": {
271
+ "description": "Payload of FlowcaseProposal",
193
272
  "content": {
194
273
  "application/json": {
195
274
  "schema": {
196
- "$ref": "#/components/schemas/gadgetBudget"
275
+ "$ref": "#/components/schemas/flowcaseProposal"
197
276
  }
198
277
  }
199
- },
200
- "x-ms-summary": "Success"
201
- },
202
- "401": {
203
- "description": "User is not authorized",
204
- "x-ms-summary": "Unauthorized"
278
+ }
205
279
  }
206
280
  },
207
281
  "security": [
208
282
  {
209
283
  "Implicit": [
210
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default"
284
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
211
285
  ]
286
+ },
287
+ {
288
+ "ApiKey": []
212
289
  }
213
290
  ]
214
291
  }
215
292
  },
216
- "/v1.0/public/{slugOrId}": {
293
+ "/v1.0/proposals/{proposalId}": {
217
294
  "get": {
218
295
  "tags": [
219
- "Public"
296
+ "Proposals"
220
297
  ],
221
- "summary": "Gets a public employee by slug or id",
222
- "description": "Retrieves a public employee by their slug or id.",
223
- "operationId": "GetEmployeePublic",
298
+ "summary": "Get a Flowcase proposal by id",
299
+ "operationId": "GetProposal",
224
300
  "parameters": [
225
301
  {
226
- "name": "slugOrId",
302
+ "name": "proposalId",
227
303
  "in": "path",
228
- "description": "The slug or id of the public employee to retrieve",
229
304
  "required": true,
230
305
  "schema": {
231
306
  "type": "string"
232
- },
233
- "x-ms-summary": "The slug or id of the employee"
307
+ }
234
308
  }
235
309
  ],
236
310
  "responses": {
237
311
  "200": {
238
- "description": "Public employee retrieved successfully",
312
+ "description": "Payload of FlowcaseProposal",
239
313
  "content": {
240
314
  "application/json": {
241
315
  "schema": {
242
- "$ref": "#/components/schemas/publicEmployee"
316
+ "$ref": "#/components/schemas/flowcaseProposal"
243
317
  }
244
318
  }
245
- },
246
- "x-ms-summary": "Success"
319
+ }
247
320
  },
248
321
  "404": {
249
- "description": "Employee not found",
250
- "x-ms-summary": "Not Found"
322
+ "description": "No description"
251
323
  }
252
- }
253
- }
254
- },
255
- "/v1.0/public": {
256
- "get": {
324
+ },
325
+ "security": [
326
+ {
327
+ "Implicit": [
328
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
329
+ ]
330
+ },
331
+ {
332
+ "ApiKey": []
333
+ }
334
+ ]
335
+ },
336
+ "patch": {
257
337
  "tags": [
258
- "Public"
338
+ "Proposals"
259
339
  ],
260
- "summary": "Gets all public employees",
261
- "description": "Retrieves a list of all public employees.",
262
- "operationId": "GetEmployeesPublic",
263
- "responses": {
264
- "200": {
265
- "description": "List of public employees retrieved successfully",
266
- "content": {
267
- "application/json": {
268
- "schema": {
269
- "type": "array",
270
- "items": {
271
- "$ref": "#/components/schemas/publicEmployee"
272
- }
273
- }
274
- }
275
- },
276
- "x-ms-summary": "Success"
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
+ }
277
350
  }
278
- }
279
- }
280
- },
281
- "/v1.0/feedback": {
282
- "post": {
283
- "tags": [
284
- "Public"
285
351
  ],
286
- "summary": "Submit anonymous feedback",
287
- "description": "Allows anyone to send anonymous text feedback.",
288
- "operationId": "PostAnonymousFeedback",
289
352
  "requestBody": {
290
- "description": "Feedback payload",
291
353
  "content": {
292
354
  "application/json": {
293
355
  "schema": {
294
- "$ref": "#/components/schemas/feedback"
356
+ "$ref": "#/components/schemas/updateProposalRequest"
295
357
  }
296
358
  }
297
359
  },
@@ -299,89 +361,2415 @@
299
361
  },
300
362
  "responses": {
301
363
  "200": {
302
- "description": "Feedback received",
303
- "x-ms-summary": "Success"
304
- },
305
- "400": {
306
- "description": "Invalid input",
307
- "x-ms-summary": "Bad Request"
364
+ "description": "Payload of FlowcaseProposal",
365
+ "content": {
366
+ "application/json": {
367
+ "schema": {
368
+ "$ref": "#/components/schemas/flowcaseProposal"
369
+ }
370
+ }
371
+ }
308
372
  }
309
- }
310
- }
311
- }
312
- },
313
- "components": {
314
- "schemas": {
315
- "commissionTierReference": {
316
- "type": "object",
317
- "properties": {
318
- "sanityType": {
319
- "enum": [
320
- "reference"
321
- ],
322
- "type": "string",
323
- "default": "reference"
324
- },
325
- "sanityRef": {
326
- "type": "string"
373
+ },
374
+ "security": [
375
+ {
376
+ "Implicit": [
377
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
378
+ ]
327
379
  },
328
- "sanityWeak": {
329
- "type": "boolean"
380
+ {
381
+ "ApiKey": []
330
382
  }
331
- }
383
+ ]
332
384
  },
333
- "componentBlocksInnerOneOfChildrenInner": {
385
+ "delete": {
386
+ "tags": [
387
+ "Proposals"
388
+ ],
389
+ "summary": "Archive a proposal — Flowcase has no hard-delete; we PUT archived=true.",
390
+ "operationId": "ArchiveProposal",
391
+ "parameters": [
392
+ {
393
+ "name": "proposalId",
394
+ "in": "path",
395
+ "required": true,
396
+ "schema": {
397
+ "type": "string"
398
+ }
399
+ }
400
+ ],
401
+ "responses": {
402
+ "200": {
403
+ "description": "Payload of FlowcaseProposal",
404
+ "content": {
405
+ "application/json": {
406
+ "schema": {
407
+ "$ref": "#/components/schemas/flowcaseProposal"
408
+ }
409
+ }
410
+ }
411
+ }
412
+ },
413
+ "security": [
414
+ {
415
+ "Implicit": [
416
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
417
+ ]
418
+ },
419
+ {
420
+ "ApiKey": []
421
+ }
422
+ ]
423
+ }
424
+ },
425
+ "/v1.0/proposals/{proposalId}/cvs": {
426
+ "post": {
427
+ "tags": [
428
+ "Proposals"
429
+ ],
430
+ "summary": "Attach a consultant's CV to a proposal; Flowcase copies the default CV into an editable tailored CV.",
431
+ "operationId": "AttachCvToProposal",
432
+ "parameters": [
433
+ {
434
+ "name": "proposalId",
435
+ "in": "path",
436
+ "required": true,
437
+ "schema": {
438
+ "type": "string"
439
+ }
440
+ }
441
+ ],
442
+ "requestBody": {
443
+ "content": {
444
+ "application/json": {
445
+ "schema": {
446
+ "$ref": "#/components/schemas/addCvToProposalRequest"
447
+ }
448
+ }
449
+ },
450
+ "required": true
451
+ },
452
+ "responses": {
453
+ "201": {
454
+ "description": "Payload of FlowcaseTailoredCv",
455
+ "content": {
456
+ "application/json": {
457
+ "schema": {
458
+ "$ref": "#/components/schemas/flowcaseTailoredCv"
459
+ }
460
+ }
461
+ }
462
+ }
463
+ },
464
+ "security": [
465
+ {
466
+ "Implicit": [
467
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
468
+ ]
469
+ },
470
+ {
471
+ "ApiKey": []
472
+ }
473
+ ]
474
+ }
475
+ },
476
+ "/v1.0/proposals/{proposalId}/cvs/{tailoredCvId}": {
477
+ "delete": {
478
+ "tags": [
479
+ "Proposals"
480
+ ],
481
+ "summary": "Remove a tailored CV from a proposal.",
482
+ "operationId": "DetachCvFromProposal",
483
+ "parameters": [
484
+ {
485
+ "name": "proposalId",
486
+ "in": "path",
487
+ "required": true,
488
+ "schema": {
489
+ "type": "string"
490
+ }
491
+ },
492
+ {
493
+ "name": "tailoredCvId",
494
+ "in": "path",
495
+ "required": true,
496
+ "schema": {
497
+ "type": "string"
498
+ }
499
+ }
500
+ ],
501
+ "responses": {
502
+ "204": {
503
+ "description": "No description"
504
+ }
505
+ },
506
+ "security": [
507
+ {
508
+ "Implicit": [
509
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
510
+ ]
511
+ },
512
+ {
513
+ "ApiKey": []
514
+ }
515
+ ]
516
+ }
517
+ },
518
+ "/v1.0/cvs/users/{userId}/{cvId}/pdf": {
519
+ "get": {
520
+ "tags": [
521
+ "Proposals"
522
+ ],
523
+ "summary": "Download any CV (including tailored CVs) as PDF by user_id + cv_id.",
524
+ "operationId": "DownloadTailoredCvPdf",
525
+ "parameters": [
526
+ {
527
+ "name": "userId",
528
+ "in": "path",
529
+ "required": true,
530
+ "schema": {
531
+ "type": "string"
532
+ }
533
+ },
534
+ {
535
+ "name": "cvId",
536
+ "in": "path",
537
+ "required": true,
538
+ "schema": {
539
+ "type": "string"
540
+ }
541
+ }
542
+ ],
543
+ "responses": {
544
+ "200": {
545
+ "description": "Payload of Array of Byte",
546
+ "content": {
547
+ "application/pdf": {
548
+ "schema": {
549
+ "type": "string",
550
+ "format": "binary"
551
+ }
552
+ }
553
+ }
554
+ },
555
+ "404": {
556
+ "description": "No description"
557
+ }
558
+ },
559
+ "security": [
560
+ {
561
+ "Implicit": [
562
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
563
+ ]
564
+ },
565
+ {
566
+ "ApiKey": []
567
+ }
568
+ ]
569
+ }
570
+ },
571
+ "/v1.0/cvs/users/{userId}/{cvId}": {
572
+ "get": {
573
+ "tags": [
574
+ "Proposals"
575
+ ],
576
+ "summary": "Get any CV (including tailored CVs) as raw Flowcase JSON by user_id + cv_id.",
577
+ "operationId": "GetRawCv",
578
+ "parameters": [
579
+ {
580
+ "name": "userId",
581
+ "in": "path",
582
+ "required": true,
583
+ "schema": {
584
+ "type": "string"
585
+ }
586
+ },
587
+ {
588
+ "name": "cvId",
589
+ "in": "path",
590
+ "required": true,
591
+ "schema": {
592
+ "type": "string"
593
+ }
594
+ }
595
+ ],
596
+ "responses": {
597
+ "200": {
598
+ "description": "Payload of Object",
599
+ "content": {
600
+ "application/json": {
601
+ "schema": {
602
+ "type": "object"
603
+ }
604
+ }
605
+ }
606
+ },
607
+ "404": {
608
+ "description": "No description"
609
+ }
610
+ },
611
+ "security": [
612
+ {
613
+ "Implicit": [
614
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
615
+ ]
616
+ },
617
+ {
618
+ "ApiKey": []
619
+ }
620
+ ]
621
+ }
622
+ },
623
+ "/v1.0/cvs/users/{userId}/{cvId}/sections/{sectionType}/{sectionId}": {
624
+ "put": {
625
+ "tags": [
626
+ "CV"
627
+ ],
628
+ "summary": "Edit a single CV section (PUT /v3/cvs/{user}/{cv}/{section_type}/{section_id}).",
629
+ "operationId": "UpdateCvSection",
630
+ "parameters": [
631
+ {
632
+ "name": "userId",
633
+ "in": "path",
634
+ "required": true,
635
+ "schema": {
636
+ "type": "string"
637
+ }
638
+ },
639
+ {
640
+ "name": "cvId",
641
+ "in": "path",
642
+ "required": true,
643
+ "schema": {
644
+ "type": "string"
645
+ }
646
+ },
647
+ {
648
+ "name": "sectionType",
649
+ "in": "path",
650
+ "required": true,
651
+ "schema": {
652
+ "type": "string"
653
+ }
654
+ },
655
+ {
656
+ "name": "sectionId",
657
+ "in": "path",
658
+ "required": true,
659
+ "schema": {
660
+ "type": "string"
661
+ }
662
+ }
663
+ ],
664
+ "requestBody": {
665
+ "description": "Section body — shape depends on section_type (see Flowcase CV API).",
666
+ "content": {
667
+ "application/json": {
668
+ "schema": {
669
+ "type": "object"
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
+ }
2296
+ },
2297
+ "components": {
2298
+ "schemas": {
2299
+ "addCvToProposalRequest": {
2300
+ "type": "object",
2301
+ "properties": {
2302
+ "user_id": {
2303
+ "type": "string",
2304
+ "nullable": true
2305
+ },
2306
+ "cv_id": {
2307
+ "type": "string",
2308
+ "nullable": true
2309
+ }
2310
+ }
2311
+ },
2312
+ "appRoleAssignmentRequest": {
2313
+ "type": "object",
2314
+ "properties": {
2315
+ "servicePrincipalObjectId": {
2316
+ "type": "string"
2317
+ },
2318
+ "appRoleId": {
2319
+ "type": "string"
2320
+ }
2321
+ }
2322
+ },
2323
+ "commissionTierReference": {
2324
+ "type": "object",
2325
+ "properties": {
2326
+ "sanityType": {
2327
+ "enum": [
2328
+ "reference"
2329
+ ],
2330
+ "type": "string",
2331
+ "default": "reference"
2332
+ },
2333
+ "sanityRef": {
2334
+ "type": "string"
2335
+ },
2336
+ "sanityWeak": {
2337
+ "type": "boolean"
2338
+ }
2339
+ }
2340
+ },
2341
+ "componentBlocksInnerOneOfChildrenInner": {
2342
+ "type": "object",
2343
+ "properties": {
2344
+ "sanityType": {
2345
+ "enum": [
2346
+ "span"
2347
+ ],
2348
+ "type": "string",
2349
+ "default": "span"
2350
+ },
2351
+ "marks": {
2352
+ "type": "array",
2353
+ "items": {
2354
+ "type": "string"
2355
+ }
2356
+ },
2357
+ "sanityKey": {
2358
+ "type": "string"
2359
+ },
2360
+ "text": {
2361
+ "type": "string"
2362
+ }
2363
+ }
2364
+ },
2365
+ "componentBlocksInnerOneOfMarkDefsInner": {
2366
+ "type": "object",
2367
+ "properties": {
2368
+ "sanityType": {
2369
+ "enum": [
2370
+ "link"
2371
+ ],
2372
+ "type": "string",
2373
+ "default": "link"
2374
+ },
2375
+ "href": {
2376
+ "type": "string"
2377
+ },
2378
+ "sanityKey": {
2379
+ "type": "string"
2380
+ }
2381
+ }
2382
+ },
2383
+ "componentGalleryMediaInner": {
2384
+ "type": "object",
2385
+ "properties": {
2386
+ "actualInstance": {
2387
+ "type": "object"
2388
+ },
2389
+ "isNullable": {
2390
+ "type": "boolean"
2391
+ },
2392
+ "schemaType": {
2393
+ "type": "string"
2394
+ }
2395
+ }
2396
+ },
2397
+ "consultantCv": {
2398
+ "type": "object",
2399
+ "properties": {
2400
+ "userId": {
2401
+ "type": "string",
2402
+ "nullable": true
2403
+ },
2404
+ "email": {
2405
+ "type": "string",
2406
+ "nullable": true
2407
+ },
2408
+ "name": {
2409
+ "type": "string",
2410
+ "nullable": true
2411
+ },
2412
+ "defaultCvId": {
2413
+ "type": "string",
2414
+ "nullable": true
2415
+ },
2416
+ "technologies": {
2417
+ "type": "array",
2418
+ "items": {
2419
+ "type": "string"
2420
+ },
2421
+ "nullable": true
2422
+ },
2423
+ "roles": {
2424
+ "type": "array",
2425
+ "items": {
2426
+ "type": "string"
2427
+ },
2428
+ "nullable": true
2429
+ },
2430
+ "yearsExperience": {
2431
+ "type": "integer",
2432
+ "format": "int32",
2433
+ "nullable": true
2434
+ },
2435
+ "about": {
2436
+ "type": "string",
2437
+ "nullable": true
2438
+ },
2439
+ "cvText": {
2440
+ "type": "string",
2441
+ "nullable": true
2442
+ },
2443
+ "projectExperiences": {
2444
+ "type": "array",
2445
+ "items": {
2446
+ "$ref": "#/components/schemas/consultantProjectExperience"
2447
+ },
2448
+ "nullable": true
2449
+ },
2450
+ "workExperiences": {
2451
+ "type": "array",
2452
+ "items": {
2453
+ "$ref": "#/components/schemas/consultantWorkExperience"
2454
+ },
2455
+ "nullable": true
2456
+ },
2457
+ "educations": {
2458
+ "type": "array",
2459
+ "items": {
2460
+ "$ref": "#/components/schemas/consultantEducation"
2461
+ },
2462
+ "nullable": true
2463
+ },
2464
+ "cvRoles": {
2465
+ "type": "array",
2466
+ "items": {
2467
+ "$ref": "#/components/schemas/consultantCvRole"
2468
+ },
2469
+ "nullable": true
2470
+ },
2471
+ "keyQualifications": {
2472
+ "type": "array",
2473
+ "items": {
2474
+ "$ref": "#/components/schemas/consultantKeyQualification"
2475
+ },
2476
+ "nullable": true
2477
+ }
2478
+ }
2479
+ },
2480
+ "consultantCvRole": {
2481
+ "type": "object",
2482
+ "properties": {
2483
+ "name": {
2484
+ "type": "string",
2485
+ "nullable": true
2486
+ },
2487
+ "longDescription": {
2488
+ "type": "string",
2489
+ "nullable": true
2490
+ },
2491
+ "tags": {
2492
+ "type": "array",
2493
+ "items": {
2494
+ "type": "string"
2495
+ },
2496
+ "nullable": true
2497
+ }
2498
+ }
2499
+ },
2500
+ "consultantEducation": {
2501
+ "type": "object",
2502
+ "properties": {
2503
+ "school": {
2504
+ "type": "string",
2505
+ "nullable": true
2506
+ },
2507
+ "degree": {
2508
+ "type": "string",
2509
+ "nullable": true
2510
+ },
2511
+ "description": {
2512
+ "type": "string",
2513
+ "nullable": true
2514
+ },
2515
+ "yearFrom": {
2516
+ "type": "integer",
2517
+ "format": "int32",
2518
+ "nullable": true
2519
+ },
2520
+ "yearTo": {
2521
+ "type": "integer",
2522
+ "format": "int32",
2523
+ "nullable": true
2524
+ }
2525
+ }
2526
+ },
2527
+ "consultantKeyQualification": {
2528
+ "type": "object",
2529
+ "properties": {
2530
+ "label": {
2531
+ "type": "string",
2532
+ "nullable": true
2533
+ },
2534
+ "description": {
2535
+ "type": "string",
2536
+ "nullable": true
2537
+ },
2538
+ "tags": {
2539
+ "type": "array",
2540
+ "items": {
2541
+ "type": "string"
2542
+ },
2543
+ "nullable": true
2544
+ }
2545
+ }
2546
+ },
2547
+ "consultantPresentation": {
2548
+ "type": "object",
2549
+ "properties": {
2550
+ "id": {
2551
+ "type": "string",
2552
+ "nullable": true
2553
+ },
2554
+ "title": {
2555
+ "type": "string",
2556
+ "nullable": true
2557
+ },
2558
+ "description": {
2559
+ "type": "string",
2560
+ "nullable": true
2561
+ },
2562
+ "longDescription": {
2563
+ "type": "string",
2564
+ "nullable": true
2565
+ },
2566
+ "year": {
2567
+ "type": "string",
2568
+ "nullable": true
2569
+ },
2570
+ "month": {
2571
+ "type": "string",
2572
+ "nullable": true
2573
+ },
2574
+ "speaker": {
2575
+ "$ref": "#/components/schemas/presentationSpeaker"
2576
+ }
2577
+ }
2578
+ },
2579
+ "consultantProjectExperience": {
2580
+ "type": "object",
2581
+ "properties": {
2582
+ "customer": {
2583
+ "type": "string",
2584
+ "nullable": true
2585
+ },
2586
+ "description": {
2587
+ "type": "string",
2588
+ "nullable": true
2589
+ },
2590
+ "longDescription": {
2591
+ "type": "string",
2592
+ "nullable": true
2593
+ },
2594
+ "industry": {
2595
+ "type": "string",
2596
+ "nullable": true
2597
+ },
2598
+ "yearFrom": {
2599
+ "type": "integer",
2600
+ "format": "int32",
2601
+ "nullable": true
2602
+ },
2603
+ "monthFrom": {
2604
+ "type": "integer",
2605
+ "format": "int32",
2606
+ "nullable": true
2607
+ },
2608
+ "yearTo": {
2609
+ "type": "integer",
2610
+ "format": "int32",
2611
+ "nullable": true
2612
+ },
2613
+ "monthTo": {
2614
+ "type": "integer",
2615
+ "format": "int32",
2616
+ "nullable": true
2617
+ },
2618
+ "roleTitle": {
2619
+ "type": "string",
2620
+ "nullable": true
2621
+ },
2622
+ "roleDescription": {
2623
+ "type": "string",
2624
+ "nullable": true
2625
+ },
2626
+ "technologies": {
2627
+ "type": "array",
2628
+ "items": {
2629
+ "type": "string"
2630
+ },
2631
+ "nullable": true
2632
+ }
2633
+ }
2634
+ },
2635
+ "consultantWorkExperience": {
2636
+ "type": "object",
2637
+ "properties": {
2638
+ "employer": {
2639
+ "type": "string",
2640
+ "nullable": true
2641
+ },
2642
+ "title": {
2643
+ "type": "string",
2644
+ "nullable": true
2645
+ },
2646
+ "description": {
2647
+ "type": "string",
2648
+ "nullable": true
2649
+ },
2650
+ "yearFrom": {
2651
+ "type": "integer",
2652
+ "format": "int32",
2653
+ "nullable": true
2654
+ },
2655
+ "monthFrom": {
2656
+ "type": "integer",
2657
+ "format": "int32",
2658
+ "nullable": true
2659
+ },
2660
+ "yearTo": {
2661
+ "type": "integer",
2662
+ "format": "int32",
2663
+ "nullable": true
2664
+ },
2665
+ "monthTo": {
2666
+ "type": "integer",
2667
+ "format": "int32",
2668
+ "nullable": true
2669
+ }
2670
+ }
2671
+ },
2672
+ "createProposalRequest": {
334
2673
  "type": "object",
335
2674
  "properties": {
336
- "sanityType": {
337
- "enum": [
338
- "span"
339
- ],
2675
+ "name": {
340
2676
  "type": "string",
341
- "default": "span"
2677
+ "nullable": true
342
2678
  },
343
- "marks": {
344
- "type": "array",
345
- "items": {
346
- "type": "string"
347
- }
2679
+ "owner_id": {
2680
+ "type": "string",
2681
+ "nullable": true
348
2682
  },
349
- "sanityKey": {
2683
+ "status": {
2684
+ "type": "string",
2685
+ "nullable": true
2686
+ }
2687
+ }
2688
+ },
2689
+ "createUserInput": {
2690
+ "type": "object",
2691
+ "properties": {
2692
+ "userPrincipalName": {
350
2693
  "type": "string"
351
2694
  },
352
- "text": {
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": {
353
2723
  "type": "string"
354
2724
  }
355
2725
  }
356
2726
  },
357
- "componentBlocksInnerOneOfMarkDefsInner": {
2727
+ "createUserResult": {
358
2728
  "type": "object",
359
2729
  "properties": {
360
- "sanityType": {
361
- "enum": [
362
- "link"
363
- ],
364
- "type": "string",
365
- "default": "link"
2730
+ "alreadyExisted": {
2731
+ "type": "boolean"
366
2732
  },
367
- "href": {
2733
+ "userObjectId": {
368
2734
  "type": "string"
369
2735
  },
370
- "sanityKey": {
2736
+ "userPrincipalName": {
2737
+ "type": "string"
2738
+ },
2739
+ "temporaryPassword": {
371
2740
  "type": "string"
372
2741
  }
373
2742
  }
374
2743
  },
375
- "componentGalleryMediaInner": {
2744
+ "directoryOperationResult": {
376
2745
  "type": "object",
377
2746
  "properties": {
378
- "actualInstance": {
379
- "type": "object"
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"
380
2765
  },
381
- "isNullable": {
2766
+ "wasAlreadyDisabled": {
382
2767
  "type": "boolean"
383
2768
  },
384
- "schemaType": {
2769
+ "userObjectId": {
2770
+ "type": "string"
2771
+ },
2772
+ "userPrincipalName": {
385
2773
  "type": "string"
386
2774
  }
387
2775
  }
@@ -404,6 +2792,81 @@
404
2792
  }
405
2793
  }
406
2794
  },
2795
+ "employeeSystemAccess": {
2796
+ "type": "object",
2797
+ "properties": {
2798
+ "key": {
2799
+ "type": "string"
2800
+ },
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": {
2817
+ "type": "array",
2818
+ "items": {
2819
+ "$ref": "#/components/schemas/systemRoleOption"
2820
+ }
2821
+ },
2822
+ "manageable": {
2823
+ "type": "boolean"
2824
+ },
2825
+ "inheritedVia": {
2826
+ "type": "string"
2827
+ },
2828
+ "provisioningStatus": {
2829
+ "type": "string"
2830
+ },
2831
+ "provisioningError": {
2832
+ "type": "string"
2833
+ }
2834
+ }
2835
+ },
2836
+ "employeeSystemAccessRow": {
2837
+ "type": "object",
2838
+ "properties": {
2839
+ "upn": {
2840
+ "type": "string"
2841
+ },
2842
+ "systems": {
2843
+ "type": "array",
2844
+ "items": {
2845
+ "$ref": "#/components/schemas/employeeSystemAccess"
2846
+ }
2847
+ }
2848
+ }
2849
+ },
2850
+ "employeeSystemConfig": {
2851
+ "type": "object",
2852
+ "properties": {
2853
+ "key": {
2854
+ "type": "string"
2855
+ },
2856
+ "label": {
2857
+ "type": "string"
2858
+ },
2859
+ "kind": {
2860
+ "type": "string"
2861
+ },
2862
+ "servicePrincipalId": {
2863
+ "type": "string"
2864
+ },
2865
+ "defaultRoleId": {
2866
+ "type": "string"
2867
+ }
2868
+ }
2869
+ },
407
2870
  "feedback": {
408
2871
  "type": "object",
409
2872
  "properties": {
@@ -412,6 +2875,96 @@
412
2875
  }
413
2876
  }
414
2877
  },
2878
+ "flowcaseProposal": {
2879
+ "type": "object",
2880
+ "properties": {
2881
+ "id": {
2882
+ "type": "string",
2883
+ "nullable": true
2884
+ },
2885
+ "name": {
2886
+ "type": "string",
2887
+ "nullable": true
2888
+ },
2889
+ "api_owner_id": {
2890
+ "type": "string",
2891
+ "nullable": true
2892
+ },
2893
+ "api_owner_name": {
2894
+ "type": "string",
2895
+ "nullable": true
2896
+ },
2897
+ "owner_id": {
2898
+ "type": "string",
2899
+ "nullable": true
2900
+ },
2901
+ "owner_name": {
2902
+ "type": "string",
2903
+ "nullable": true
2904
+ },
2905
+ "status": {
2906
+ "type": "string",
2907
+ "nullable": true
2908
+ },
2909
+ "archived": {
2910
+ "type": "boolean",
2911
+ "nullable": true
2912
+ },
2913
+ "created_at": {
2914
+ "type": "string",
2915
+ "format": "date-time",
2916
+ "nullable": true
2917
+ },
2918
+ "updated_at": {
2919
+ "type": "string",
2920
+ "format": "date-time",
2921
+ "nullable": true
2922
+ }
2923
+ }
2924
+ },
2925
+ "flowcaseTailoredCv": {
2926
+ "type": "object",
2927
+ "properties": {
2928
+ "id": {
2929
+ "type": "string",
2930
+ "nullable": true
2931
+ },
2932
+ "user_id": {
2933
+ "type": "string",
2934
+ "nullable": true
2935
+ },
2936
+ "proposal_id": {
2937
+ "type": "string",
2938
+ "nullable": true
2939
+ },
2940
+ "name": {
2941
+ "type": "string",
2942
+ "nullable": true
2943
+ },
2944
+ "email": {
2945
+ "type": "string",
2946
+ "nullable": true
2947
+ },
2948
+ "title": {
2949
+ "type": "string",
2950
+ "nullable": true
2951
+ },
2952
+ "status": {
2953
+ "type": "string",
2954
+ "nullable": true
2955
+ },
2956
+ "created_at": {
2957
+ "type": "string",
2958
+ "format": "date-time",
2959
+ "nullable": true
2960
+ },
2961
+ "updated_at": {
2962
+ "type": "string",
2963
+ "format": "date-time",
2964
+ "nullable": true
2965
+ }
2966
+ }
2967
+ },
415
2968
  "gadgetBudget": {
416
2969
  "type": "object",
417
2970
  "properties": {
@@ -445,27 +2998,72 @@
445
2998
  }
446
2999
  }
447
3000
  },
448
- "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": {
449
3060
  "type": "object",
450
3061
  "properties": {
451
- "sanityType": {
452
- "enum": [
453
- "geopoint"
454
- ],
455
- "type": "string",
456
- "default": "geopoint"
457
- },
458
- "alt": {
459
- "type": "number",
460
- "format": "double"
461
- },
462
- "lat": {
463
- "type": "number",
464
- "format": "double"
465
- },
466
- "lng": {
467
- "type": "number",
468
- "format": "double"
3062
+ "upns": {
3063
+ "type": "array",
3064
+ "items": {
3065
+ "type": "string"
3066
+ }
469
3067
  }
470
3068
  }
471
3069
  },
@@ -534,6 +3132,15 @@
534
3132
  "default": "single",
535
3133
  "nullable": true
536
3134
  },
3135
+ "parentalLeaveCoverage": {
3136
+ "enum": [
3137
+ "80",
3138
+ "100"
3139
+ ],
3140
+ "type": "string",
3141
+ "default": "80",
3142
+ "nullable": true
3143
+ },
537
3144
  "sanityType": {
538
3145
  "enum": [
539
3146
  "employee"
@@ -592,6 +3199,12 @@
592
3199
  "$ref": "#/components/schemas/pageEquipmentInner"
593
3200
  }
594
3201
  },
3202
+ "externalId": {
3203
+ "type": "string"
3204
+ },
3205
+ "github": {
3206
+ "type": "string"
3207
+ },
595
3208
  "graduationYear": {
596
3209
  "type": "number",
597
3210
  "format": "double",
@@ -615,6 +3228,25 @@
615
3228
  "format": "double",
616
3229
  "nullable": true
617
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
+ },
618
3250
  "manager": {
619
3251
  "$ref": "#/components/schemas/employeeReference"
620
3252
  },
@@ -638,9 +3270,21 @@
638
3270
  "format": "double",
639
3271
  "nullable": true
640
3272
  },
3273
+ "parentalLeaveStartDate": {
3274
+ "type": "string"
3275
+ },
3276
+ "personalProjectRequirements": {
3277
+ "type": "string"
3278
+ },
641
3279
  "position": {
642
3280
  "type": "string"
643
3281
  },
3282
+ "salaryConfig": {
3283
+ "$ref": "#/components/schemas/pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSalaryConfig"
3284
+ },
3285
+ "settings": {
3286
+ "$ref": "#/components/schemas/pickSanityPatchEmployeeExcludeKeyofSanityPatchEmployeeScopeGrantsSettings"
3287
+ },
644
3288
  "slug": {
645
3289
  "$ref": "#/components/schemas/slug"
646
3290
  },
@@ -670,6 +3314,53 @@
670
3314
  }
671
3315
  }
672
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
+ },
673
3364
  "protectedEmployee": {
674
3365
  "type": "object",
675
3366
  "properties": {
@@ -696,6 +3387,15 @@
696
3387
  "default": "cohabitant",
697
3388
  "nullable": true
698
3389
  },
3390
+ "parentalLeaveCoverage": {
3391
+ "enum": [
3392
+ "80",
3393
+ "100"
3394
+ ],
3395
+ "type": "string",
3396
+ "default": "80",
3397
+ "nullable": true
3398
+ },
699
3399
  "sanityType": {
700
3400
  "enum": [
701
3401
  "employee"
@@ -722,7 +3422,7 @@
722
3422
  "type": "string"
723
3423
  },
724
3424
  "blurred_image": {
725
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3425
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
726
3426
  },
727
3427
  "boardMember": {
728
3428
  "type": "boolean"
@@ -751,6 +3451,12 @@
751
3451
  "$ref": "#/components/schemas/sanityEmployeeEquipmentInner"
752
3452
  }
753
3453
  },
3454
+ "externalId": {
3455
+ "type": "string"
3456
+ },
3457
+ "github": {
3458
+ "type": "string"
3459
+ },
754
3460
  "graduationYear": {
755
3461
  "type": "number",
756
3462
  "format": "double"
@@ -762,7 +3468,7 @@
762
3468
  }
763
3469
  },
764
3470
  "image": {
765
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3471
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
766
3472
  },
767
3473
  "innovativeSalary": {
768
3474
  "type": "boolean"
@@ -771,13 +3477,28 @@
771
3477
  "type": "number",
772
3478
  "format": "double"
773
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
+ },
774
3495
  "manager": {
775
3496
  "$ref": "#/components/schemas/sanityEmployeeManager"
776
3497
  },
777
3498
  "media": {
778
3499
  "type": "array",
779
3500
  "items": {
780
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner"
3501
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner"
781
3502
  }
782
3503
  },
783
3504
  "name": {
@@ -793,9 +3514,18 @@
793
3514
  "type": "number",
794
3515
  "format": "double"
795
3516
  },
3517
+ "parentalLeaveStartDate": {
3518
+ "type": "string"
3519
+ },
3520
+ "personalProjectRequirements": {
3521
+ "type": "string"
3522
+ },
796
3523
  "position": {
797
3524
  "type": "string"
798
3525
  },
3526
+ "salaryConfig": {
3527
+ "$ref": "#/components/schemas/sanityEmployeeSalaryConfig"
3528
+ },
799
3529
  "sanityCreatedAt": {
800
3530
  "type": "string"
801
3531
  },
@@ -808,6 +3538,15 @@
808
3538
  "sanityUpdatedAt": {
809
3539
  "type": "string"
810
3540
  },
3541
+ "scopeGrants": {
3542
+ "type": "array",
3543
+ "items": {
3544
+ "type": "string"
3545
+ }
3546
+ },
3547
+ "settings": {
3548
+ "$ref": "#/components/schemas/sanityEmployeeSettings"
3549
+ },
811
3550
  "slug": {
812
3551
  "$ref": "#/components/schemas/slug"
813
3552
  },
@@ -817,7 +3556,7 @@
817
3556
  "tags": {
818
3557
  "type": "array",
819
3558
  "items": {
820
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3559
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
821
3560
  }
822
3561
  },
823
3562
  "technologies": {
@@ -844,6 +3583,10 @@
844
3583
  "type": "boolean",
845
3584
  "nullable": true
846
3585
  },
3586
+ "isPublic": {
3587
+ "type": "boolean",
3588
+ "nullable": true
3589
+ },
847
3590
  "image": {
848
3591
  "$ref": "#/components/schemas/sanityImage"
849
3592
  },
@@ -865,7 +3608,7 @@
865
3608
  "media": {
866
3609
  "type": "array",
867
3610
  "items": {
868
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner"
3611
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner"
869
3612
  }
870
3613
  },
871
3614
  "name": {
@@ -892,6 +3635,12 @@
892
3635
  "about": {
893
3636
  "type": "string"
894
3637
  },
3638
+ "linkedin": {
3639
+ "type": "string"
3640
+ },
3641
+ "github": {
3642
+ "type": "string"
3643
+ },
895
3644
  "birthDate": {
896
3645
  "type": "string",
897
3646
  "format": "date-time",
@@ -1098,7 +3847,7 @@
1098
3847
  "images": {
1099
3848
  "type": "array",
1100
3849
  "items": {
1101
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3850
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsArticlesInnerMediaOneOf"
1102
3851
  }
1103
3852
  },
1104
3853
  "sanityId": {
@@ -1126,7 +3875,7 @@
1126
3875
  }
1127
3876
  },
1128
3877
  "image": {
1129
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3878
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsArticlesInnerMediaOneOf"
1130
3879
  },
1131
3880
  "leaders": {
1132
3881
  "type": "array",
@@ -1137,6 +3886,9 @@
1137
3886
  "name": {
1138
3887
  "type": "string"
1139
3888
  },
3889
+ "permissions": {
3890
+ "type": "string"
3891
+ },
1140
3892
  "sanityCreatedAt": {
1141
3893
  "type": "string"
1142
3894
  },
@@ -1148,6 +3900,12 @@
1148
3900
  },
1149
3901
  "sanityUpdatedAt": {
1150
3902
  "type": "string"
3903
+ },
3904
+ "scopeGrants": {
3905
+ "type": "array",
3906
+ "items": {
3907
+ "type": "string"
3908
+ }
1151
3909
  }
1152
3910
  }
1153
3911
  },
@@ -1165,7 +3923,15 @@
1165
3923
  "type": "string"
1166
3924
  },
1167
3925
  "image": {
1168
- "$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
1169
3935
  },
1170
3936
  "name": {
1171
3937
  "type": "string"
@@ -1179,7 +3945,7 @@
1179
3945
  "tags": {
1180
3946
  "type": "array",
1181
3947
  "items": {
1182
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3948
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1183
3949
  }
1184
3950
  },
1185
3951
  "telephone": {
@@ -1208,6 +3974,35 @@
1208
3974
  }
1209
3975
  }
1210
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
+ },
1211
4006
  "sanityGadgetBudgetYearlyBudgetsInner": {
1212
4007
  "type": "object",
1213
4008
  "properties": {
@@ -1560,7 +4355,15 @@
1560
4355
  "type": "string"
1561
4356
  },
1562
4357
  "image": {
1563
- "$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
1564
4367
  },
1565
4368
  "name": {
1566
4369
  "type": "string"
@@ -1574,7 +4377,7 @@
1574
4377
  "tags": {
1575
4378
  "type": "array",
1576
4379
  "items": {
1577
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
4380
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1578
4381
  }
1579
4382
  },
1580
4383
  "telephone": {
@@ -1661,31 +4464,36 @@
1661
4464
  }
1662
4465
  }
1663
4466
  },
1664
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInner": {
4467
+ "sanityTechnologyWithRelationsArticlesInnerMediaOneOf": {
1665
4468
  "type": "object",
1666
4469
  "properties": {
1667
4470
  "sanityType": {
1668
4471
  "enum": [
1669
- "technology"
4472
+ "image"
1670
4473
  ],
1671
4474
  "type": "string",
1672
- "default": "technology"
1673
- },
1674
- "parent": {
1675
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
4475
+ "default": "image"
1676
4476
  },
1677
- "sanityId": {
1678
- "type": "string"
4477
+ "asset": {
4478
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
4479
+ }
4480
+ }
4481
+ },
4482
+ "sanityTechnologyWithRelationsDescriptionInnerOneOf4MediaInner": {
4483
+ "type": "object",
4484
+ "properties": {
4485
+ "actualInstance": {
4486
+ "type": "object"
1679
4487
  },
1680
- "slug": {
1681
- "$ref": "#/components/schemas/slug"
4488
+ "isNullable": {
4489
+ "type": "boolean"
1682
4490
  },
1683
- "title": {
4491
+ "schemaType": {
1684
4492
  "type": "string"
1685
4493
  }
1686
4494
  }
1687
4495
  },
1688
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent": {
4496
+ "sanityTechnologyWithRelationsEmployeesInnerTagsInner": {
1689
4497
  "type": "object",
1690
4498
  "properties": {
1691
4499
  "sanityType": {
@@ -1706,32 +4514,27 @@
1706
4514
  }
1707
4515
  }
1708
4516
  },
1709
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerContentInnerOneOf4MediaInner": {
1710
- "type": "object",
1711
- "properties": {
1712
- "actualInstance": {
1713
- "type": "object"
1714
- },
1715
- "isNullable": {
1716
- "type": "boolean"
1717
- },
1718
- "schemaType": {
1719
- "type": "string"
1720
- }
1721
- }
1722
- },
1723
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo": {
4517
+ "sanityTechnologyWithRelationsProjectsInnerTechnologiesInner": {
1724
4518
  "type": "object",
1725
4519
  "properties": {
1726
4520
  "sanityType": {
1727
4521
  "enum": [
1728
- "image"
4522
+ "technology"
1729
4523
  ],
1730
4524
  "type": "string",
1731
- "default": "image"
4525
+ "default": "technology"
1732
4526
  },
1733
- "asset": {
1734
- "$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"
1735
4538
  }
1736
4539
  }
1737
4540
  },
@@ -1792,6 +4595,17 @@
1792
4595
  }
1793
4596
  }
1794
4597
  },
4598
+ "systemRoleOption": {
4599
+ "type": "object",
4600
+ "properties": {
4601
+ "id": {
4602
+ "type": "string"
4603
+ },
4604
+ "label": {
4605
+ "type": "string"
4606
+ }
4607
+ }
4608
+ },
1795
4609
  "tag": {
1796
4610
  "type": "object",
1797
4611
  "properties": {
@@ -1828,6 +4642,40 @@
1828
4642
  "$ref": "#/components/schemas/tag"
1829
4643
  }
1830
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
+ }
1831
4679
  }
1832
4680
  },
1833
4681
  "securitySchemes": {
@@ -1835,14 +4683,19 @@
1835
4683
  "type": "oauth2",
1836
4684
  "flows": {
1837
4685
  "implicit": {
1838
- "authorizationUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/authorize",
1839
- "tokenUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/token",
1840
- "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",
1841
4689
  "scopes": {
1842
- "api://1c7354b7-6006-4c53-9ba4-c277b2ba31bb/.default": "Default function scope"
4690
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default": "Default function scope"
1843
4691
  }
1844
4692
  }
1845
4693
  }
4694
+ },
4695
+ "ApiKey": {
4696
+ "type": "http",
4697
+ "scheme": "bearer",
4698
+ "bearerFormat": "JWT"
1846
4699
  }
1847
4700
  }
1848
4701
  }