@snokam/mcp-api 2.61.0 → 3.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 (43) hide show
  1. package/dist/auth.d.ts +0 -15
  2. package/dist/auth.js +17 -61
  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 +16 -311
  9. package/dist/openapi-loader.d.ts +1 -14
  10. package/dist/openapi-loader.js +27 -50
  11. package/dist/requirements.d.ts +10 -0
  12. package/dist/requirements.js +92 -0
  13. package/dist/state.d.ts +14 -0
  14. package/dist/state.js +66 -0
  15. package/dist/tool-schema.d.ts +2 -0
  16. package/dist/tool-schema.js +42 -0
  17. package/package.json +8 -3
  18. package/specs/production/accounting.json +2759 -2107
  19. package/specs/production/blog.json +783 -1504
  20. package/specs/production/broker.json +52 -24
  21. package/specs/production/chatgpt.json +285 -35
  22. package/specs/production/employees.json +2225 -1267
  23. package/specs/production/events.json +475 -755
  24. package/specs/production/notifications.json +329 -15
  25. package/specs/production/office.json +818 -836
  26. package/specs/production/recruitment.json +1889 -1116
  27. package/specs/production/sales.json +2392 -853
  28. package/specs/production/sanity.json +26027 -15014
  29. package/specs/production/sync.json +116 -20
  30. package/specs/production/webshop.json +37 -17
  31. package/specs/test/accounting.json +2869 -2159
  32. package/specs/test/blog.json +774 -1511
  33. package/specs/test/broker.json +54 -25
  34. package/specs/test/chatgpt.json +561 -198
  35. package/specs/test/employees.json +2490 -1479
  36. package/specs/test/events.json +481 -773
  37. package/specs/test/notifications.json +329 -15
  38. package/specs/test/office.json +818 -836
  39. package/specs/test/recruitment.json +1894 -1121
  40. package/specs/test/sales.json +2909 -1172
  41. package/specs/test/sanity.json +47384 -16348
  42. package/specs/test/sync.json +116 -20
  43. package/specs/test/webshop.json +37 -17
@@ -34,6 +34,48 @@
34
34
  }
35
35
  }
36
36
  },
37
+ "/v1.0/protected/health/{provider}": {
38
+ "get": {
39
+ "tags": [
40
+ "Health"
41
+ ],
42
+ "summary": "Checks an integration's connectivity",
43
+ "operationId": "RecruitmentIntegrationHealth",
44
+ "parameters": [
45
+ {
46
+ "name": "provider",
47
+ "in": "path",
48
+ "required": true,
49
+ "schema": {
50
+ "type": "string"
51
+ }
52
+ }
53
+ ],
54
+ "responses": {
55
+ "200": {
56
+ "description": "Payload of IntegrationHealthResult",
57
+ "content": {
58
+ "application/json": {
59
+ "schema": {
60
+ "$ref": "#/components/schemas/integrationHealthResult"
61
+ }
62
+ }
63
+ },
64
+ "x-ms-summary": "Health result"
65
+ }
66
+ },
67
+ "security": [
68
+ {
69
+ "Implicit": [
70
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
71
+ ]
72
+ },
73
+ {
74
+ "ApiKey": []
75
+ }
76
+ ]
77
+ }
78
+ },
37
79
  "/v1.0/protected/candidates": {
38
80
  "get": {
39
81
  "tags": [
@@ -65,8 +107,11 @@
65
107
  "security": [
66
108
  {
67
109
  "Implicit": [
68
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
110
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
69
111
  ]
112
+ },
113
+ {
114
+ "ApiKey": []
70
115
  }
71
116
  ]
72
117
  },
@@ -77,6 +122,24 @@
77
122
  "summary": "Create a fresh admin-initiated candidate",
78
123
  "description": "Creates a candidate document directly (not via the public application flow). Caller supplies name + status + track.",
79
124
  "operationId": "CreateCandidate",
125
+ "parameters": [
126
+ {
127
+ "name": "notifyEmail",
128
+ "in": "query",
129
+ "schema": {
130
+ "type": "boolean"
131
+ },
132
+ "x-ms-summary": "If false, suppress the welcome email even when the candidate has an email on file. Defaults to true."
133
+ },
134
+ {
135
+ "name": "notifySms",
136
+ "in": "query",
137
+ "schema": {
138
+ "type": "boolean"
139
+ },
140
+ "x-ms-summary": "If false, suppress the welcome SMS even when the candidate has a phone on file. Defaults to true."
141
+ }
142
+ ],
80
143
  "requestBody": {
81
144
  "description": "Initial candidate fields",
82
145
  "content": {
@@ -119,8 +182,11 @@
119
182
  "security": [
120
183
  {
121
184
  "Implicit": [
122
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
185
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
123
186
  ]
187
+ },
188
+ {
189
+ "ApiKey": []
124
190
  }
125
191
  ]
126
192
  }
@@ -168,8 +234,11 @@
168
234
  "security": [
169
235
  {
170
236
  "Implicit": [
171
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
237
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
172
238
  ]
239
+ },
240
+ {
241
+ "ApiKey": []
173
242
  }
174
243
  ]
175
244
  },
@@ -189,14 +258,30 @@
189
258
  "type": "string"
190
259
  },
191
260
  "x-ms-summary": "Candidate Sanity id"
261
+ },
262
+ {
263
+ "name": "notifyEmail",
264
+ "in": "query",
265
+ "schema": {
266
+ "type": "boolean"
267
+ },
268
+ "x-ms-summary": "If true and the patch changes status, send the candidate the email for the new status"
269
+ },
270
+ {
271
+ "name": "notifySms",
272
+ "in": "query",
273
+ "schema": {
274
+ "type": "boolean"
275
+ },
276
+ "x-ms-summary": "If true and the patch changes status, send the candidate the SMS for the new status"
192
277
  }
193
278
  ],
194
279
  "requestBody": {
195
- "description": "Partial candidate fields to update",
280
+ "description": "Partial candidate fields to update, plus an optional interviewBooking sub-payload that triggers events-function event creation when status moves to an *_INTERVIEW value",
196
281
  "content": {
197
282
  "application/json": {
198
283
  "schema": {
199
- "$ref": "#/components/schemas/sanityPatchCandidate"
284
+ "$ref": "#/components/schemas/patchCandidateRequestBody"
200
285
  }
201
286
  }
202
287
  },
@@ -237,8 +322,11 @@
237
322
  "security": [
238
323
  {
239
324
  "Implicit": [
240
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
325
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
241
326
  ]
327
+ },
328
+ {
329
+ "ApiKey": []
242
330
  }
243
331
  ]
244
332
  }
@@ -297,20 +385,23 @@
297
385
  "security": [
298
386
  {
299
387
  "Implicit": [
300
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
388
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
301
389
  ]
390
+ },
391
+ {
392
+ "ApiKey": []
302
393
  }
303
394
  ]
304
395
  }
305
396
  },
306
- "/v1.0/protected/candidates/{id}/onboard/{system}": {
397
+ "/v1.0/protected/candidates/{id}/reject": {
307
398
  "post": {
308
399
  "tags": [
309
400
  "Candidates"
310
401
  ],
311
- "summary": "Trigger automated onboarding for a given system",
312
- "description": "Dispatches to the right onboarding handler based on the system slug. Microsoft 365 is the primary target; other systems report 'not implemented' until their handler lands.",
313
- "operationId": "OnboardCandidateSystem",
402
+ "summary": "Reject a candidate",
403
+ "description": "Sets status=REJECTED. Optionally sends an admin-edited rejection email and/or SMS both default to off so the status flip is the only guaranteed side-effect.",
404
+ "operationId": "RejectCandidate",
314
405
  "parameters": [
315
406
  {
316
407
  "name": "id",
@@ -320,40 +411,30 @@
320
411
  "type": "string"
321
412
  },
322
413
  "x-ms-summary": "Candidate Sanity id"
323
- },
324
- {
325
- "name": "system",
326
- "in": "path",
327
- "required": true,
328
- "schema": {
329
- "type": "string"
330
- },
331
- "x-ms-summary": "System slug (e.g. 'microsoft-365')"
332
414
  }
333
415
  ],
416
+ "requestBody": {
417
+ "description": "Optional admin-edited email/SMS draft + per-channel send flags. Omit to reject without notifying.",
418
+ "content": {
419
+ "application/json": {
420
+ "schema": {
421
+ "$ref": "#/components/schemas/rejectCandidateMessage"
422
+ }
423
+ }
424
+ }
425
+ },
334
426
  "responses": {
335
427
  "200": {
336
- "description": "Uniform onboarding result with status + message",
428
+ "description": "Payload of SanityCandidate",
337
429
  "content": {
338
430
  "application/json": {
339
431
  "schema": {
340
- "$ref": "#/components/schemas/onboardingResult"
432
+ "$ref": "#/components/schemas/sanityCandidate"
341
433
  }
342
434
  }
343
435
  },
344
436
  "x-ms-summary": "Success"
345
437
  },
346
- "400": {
347
- "description": "Payload of Object",
348
- "content": {
349
- "application/json": {
350
- "schema": {
351
- "type": "object"
352
- }
353
- }
354
- },
355
- "x-ms-summary": "Bad Request"
356
- },
357
438
  "401": {
358
439
  "description": "No description",
359
440
  "x-ms-summary": "Unauthorized"
@@ -366,73 +447,72 @@
366
447
  "security": [
367
448
  {
368
449
  "Implicit": [
369
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
450
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
370
451
  ]
452
+ },
453
+ {
454
+ "ApiKey": []
371
455
  }
372
456
  ]
373
457
  }
374
458
  },
375
- "/v1.0/protected/candidates/{id}/onboard-full/stream": {
376
- "post": {
459
+ "/v1.0/protected/employees": {
460
+ "get": {
377
461
  "tags": [
378
- "Candidates"
379
- ],
380
- "summary": "Run the onboarding chain with a live SSE event feed",
381
- "description": "Same chain as /onboard-full but streams Server-Sent Events (`event: step`) as each step starts (`status:running`) and finishes (`succeeded`/`failed`). Closes with `event: done`. Frontend uses fetch streaming so we can pass a Bearer token; EventSource doesn't support custom headers.",
382
- "operationId": "OnboardCandidateFullStream",
383
- "parameters": [
384
- {
385
- "name": "id",
386
- "in": "path",
387
- "required": true,
388
- "schema": {
389
- "type": "string"
390
- }
391
- }
462
+ "Employees"
392
463
  ],
464
+ "summary": "List employees for buddy/recruiter assignment",
465
+ "description": "Lightweight employee list used by the candidate detail page's buddy and recruiter dropdowns.",
466
+ "operationId": "ListRecruitmentEmployees",
393
467
  "responses": {
394
468
  "200": {
469
+ "description": "Payload of Array of SanityBasicEmployee",
470
+ "content": {
471
+ "application/json": {
472
+ "schema": {
473
+ "type": "array",
474
+ "items": {
475
+ "$ref": "#/components/schemas/sanityBasicEmployee"
476
+ }
477
+ }
478
+ }
479
+ },
480
+ "x-ms-summary": "Success"
481
+ },
482
+ "401": {
395
483
  "description": "No description",
396
- "x-ms-summary": "SSE stream of OnboardingResult frames"
484
+ "x-ms-summary": "Unauthorized"
397
485
  }
398
486
  },
399
487
  "security": [
400
488
  {
401
489
  "Implicit": [
402
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
490
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
403
491
  ]
492
+ },
493
+ {
494
+ "ApiKey": []
404
495
  }
405
496
  ]
406
497
  }
407
498
  },
408
- "/v1.0/protected/candidates/{id}/onboard-full": {
409
- "post": {
499
+ "/v1.0/protected/job-positions": {
500
+ "get": {
410
501
  "tags": [
411
- "Candidates"
412
- ],
413
- "summary": "Run the full automated onboarding chain",
414
- "description": "Provisions the candidate's Microsoft 365 user, then triggers an Azure AD → Sanity sync to create the matching employee doc. Returns one OnboardingResult row per step so the admin UI can render a live timeline.",
415
- "operationId": "OnboardCandidateFull",
416
- "parameters": [
417
- {
418
- "name": "id",
419
- "in": "path",
420
- "required": true,
421
- "schema": {
422
- "type": "string"
423
- },
424
- "x-ms-summary": "Candidate Sanity id"
425
- }
502
+ "JobPositions"
426
503
  ],
504
+ "summary": "List published job positions",
505
+ "description": "Returns every job position document. Used by the admin stillinger page.",
506
+ "operationId": "ListJobPositions",
427
507
  "responses": {
428
508
  "200": {
429
- "description": "Per-step results",
509
+ "description": "Payload of Array of SanityJobPosition",
430
510
  "content": {
431
511
  "application/json": {
432
512
  "schema": {
433
513
  "type": "array",
434
514
  "items": {
435
- "$ref": "#/components/schemas/onboardingResult"
515
+ "$ref": "#/components/schemas/sanityJobPosition"
436
516
  }
437
517
  }
438
518
  }
@@ -442,48 +522,37 @@
442
522
  "401": {
443
523
  "description": "No description",
444
524
  "x-ms-summary": "Unauthorized"
445
- },
446
- "404": {
447
- "description": "No description",
448
- "x-ms-summary": "Not Found"
449
525
  }
450
526
  },
451
527
  "security": [
452
528
  {
453
529
  "Implicit": [
454
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
530
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
455
531
  ]
532
+ },
533
+ {
534
+ "ApiKey": []
456
535
  }
457
536
  ]
458
537
  }
459
538
  },
460
- "/v1.0/protected/candidates/{id}/offboard-full": {
461
- "post": {
539
+ "/v1.0/protected/systems": {
540
+ "get": {
462
541
  "tags": [
463
- "Candidates"
464
- ],
465
- "summary": "Run the full automated offboarding chain",
466
- "description": "Disables the candidate's Microsoft 365 user and triggers an Azure AD → Sanity sync so the employee doc reflects the disabled state.",
467
- "operationId": "OffboardCandidateFull",
468
- "parameters": [
469
- {
470
- "name": "id",
471
- "in": "path",
472
- "required": true,
473
- "schema": {
474
- "type": "string"
475
- }
476
- }
542
+ "Systems"
477
543
  ],
544
+ "summary": "List systems used for onboarding checklists",
545
+ "description": "Returns every system document. Used by the candidate detail and systems library pages.",
546
+ "operationId": "ListSystems",
478
547
  "responses": {
479
548
  "200": {
480
- "description": "Per-step results",
549
+ "description": "Payload of Array of SanitySystemsInner",
481
550
  "content": {
482
551
  "application/json": {
483
552
  "schema": {
484
553
  "type": "array",
485
554
  "items": {
486
- "$ref": "#/components/schemas/onboardingResult"
555
+ "$ref": "#/components/schemas/sanitySystemsInner"
487
556
  }
488
557
  }
489
558
  }
@@ -493,120 +562,93 @@
493
562
  "401": {
494
563
  "description": "No description",
495
564
  "x-ms-summary": "Unauthorized"
496
- },
497
- "404": {
498
- "description": "No description",
499
- "x-ms-summary": "Not Found"
500
565
  }
501
566
  },
502
567
  "security": [
503
568
  {
504
569
  "Implicit": [
505
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
570
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
506
571
  ]
572
+ },
573
+ {
574
+ "ApiKey": []
507
575
  }
508
576
  ]
509
- }
510
- },
511
- "/v1.0/protected/candidates/{id}/offboard-full/stream": {
577
+ },
512
578
  "post": {
513
579
  "tags": [
514
- "Candidates"
580
+ "Systems"
515
581
  ],
516
- "summary": "Offboarding chain with a live SSE event feed",
517
- "description": "Streams the offboarding chain step-by-step as Server-Sent Events. Mirrors /onboard-full/stream.",
518
- "operationId": "OffboardCandidateFullStream",
519
- "parameters": [
520
- {
521
- "name": "id",
522
- "in": "path",
523
- "required": true,
524
- "schema": {
525
- "type": "string"
582
+ "summary": "Create a system",
583
+ "description": "Adds a new system to the onboarding/offboarding system library.",
584
+ "operationId": "CreateSystem",
585
+ "requestBody": {
586
+ "content": {
587
+ "application/json": {
588
+ "schema": {
589
+ "$ref": "#/components/schemas/sanityCreateSystem"
590
+ }
526
591
  }
527
- }
528
- ],
592
+ },
593
+ "required": true
594
+ },
529
595
  "responses": {
530
596
  "200": {
531
- "description": "No description",
532
- "x-ms-summary": "SSE stream of OnboardingResult frames"
533
- }
534
- },
535
- "security": [
536
- {
537
- "Implicit": [
538
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
539
- ]
540
- }
541
- ]
542
- }
543
- },
544
- "/v1.0/protected/candidates/{id}/reject": {
545
- "post": {
546
- "tags": [
547
- "Candidates"
548
- ],
549
- "summary": "Reject a candidate",
550
- "description": "Sets status=REJECTED. Convenience wrapper over PatchCandidate so UIs have a single-action reject button.",
551
- "operationId": "RejectCandidate",
552
- "parameters": [
553
- {
554
- "name": "id",
555
- "in": "path",
556
- "required": true,
557
- "schema": {
558
- "type": "string"
559
- },
560
- "x-ms-summary": "Candidate Sanity id"
561
- }
562
- ],
563
- "responses": {
564
- "200": {
565
- "description": "Payload of SanityCandidate",
597
+ "description": "Payload of SanitySystemsInner",
566
598
  "content": {
567
599
  "application/json": {
568
600
  "schema": {
569
- "$ref": "#/components/schemas/sanityCandidate"
601
+ "$ref": "#/components/schemas/sanitySystemsInner"
570
602
  }
571
603
  }
572
604
  },
573
605
  "x-ms-summary": "Success"
574
606
  },
607
+ "400": {
608
+ "description": "Payload of Object",
609
+ "content": {
610
+ "application/json": {
611
+ "schema": {
612
+ "type": "object"
613
+ }
614
+ }
615
+ },
616
+ "x-ms-summary": "Bad Request"
617
+ },
575
618
  "401": {
576
619
  "description": "No description",
577
620
  "x-ms-summary": "Unauthorized"
578
- },
579
- "404": {
580
- "description": "No description",
581
- "x-ms-summary": "Not Found"
582
621
  }
583
622
  },
584
623
  "security": [
585
624
  {
586
625
  "Implicit": [
587
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
626
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
588
627
  ]
628
+ },
629
+ {
630
+ "ApiKey": []
589
631
  }
590
632
  ]
591
633
  }
592
634
  },
593
- "/v1.0/protected/job-positions": {
635
+ "/v1.0/protected/onboarding-chain/automated-system-titles": {
594
636
  "get": {
595
637
  "tags": [
596
- "JobPositions"
638
+ "Systems"
597
639
  ],
598
- "summary": "List published job positions",
599
- "description": "Returns every job position document. Used by the admin stillinger page.",
600
- "operationId": "ListJobPositions",
640
+ "summary": "List systems handled end-to-end by the onboarding chain",
641
+ "description": "Returns title + maturity status (stable / beta) so the admin UI can badge systems that need no per-row admin action and flag the experimental ones.",
642
+ "operationId": "GetChainAutomatedSystemTitles",
601
643
  "responses": {
602
644
  "200": {
603
- "description": "Payload of Array of SanityJobPosition",
645
+ "description": "Payload of Array of ChainAutomatedSystem",
604
646
  "content": {
605
647
  "application/json": {
606
648
  "schema": {
607
649
  "type": "array",
608
650
  "items": {
609
- "$ref": "#/components/schemas/sanityJobPosition"
651
+ "$ref": "#/components/schemas/chainAutomatedSystem"
610
652
  }
611
653
  }
612
654
  }
@@ -621,30 +663,30 @@
621
663
  "security": [
622
664
  {
623
665
  "Implicit": [
624
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
666
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
625
667
  ]
668
+ },
669
+ {
670
+ "ApiKey": []
626
671
  }
627
672
  ]
628
673
  }
629
674
  },
630
- "/v1.0/protected/systems": {
675
+ "/v1.0/protected/license-availability": {
631
676
  "get": {
632
677
  "tags": [
633
678
  "Systems"
634
679
  ],
635
- "summary": "List systems used for onboarding checklists",
636
- "description": "Returns every system document. Used by the candidate detail and systems library pages.",
637
- "operationId": "ListSystems",
680
+ "summary": "Available Microsoft 365 seats for the configured onboarding SKU",
681
+ "description": "Reads /subscribedSkus and returns enabled / consumed counts for the M365_LICENSE_SKU_ID configured for the onboarding chain. The admin UI uses this to surface a 'buy more licenses' prompt before running the chain Graph has no purchase API.",
682
+ "operationId": "GetLicenseAvailability",
638
683
  "responses": {
639
684
  "200": {
640
- "description": "Payload of Array of SanitySystemsInner",
685
+ "description": "Payload of LicenseAvailability",
641
686
  "content": {
642
687
  "application/json": {
643
688
  "schema": {
644
- "type": "array",
645
- "items": {
646
- "$ref": "#/components/schemas/sanitySystemsInner"
647
- }
689
+ "$ref": "#/components/schemas/licenseAvailability"
648
690
  }
649
691
  }
650
692
  },
@@ -658,23 +700,37 @@
658
700
  "security": [
659
701
  {
660
702
  "Implicit": [
661
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
703
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
662
704
  ]
705
+ },
706
+ {
707
+ "ApiKey": []
663
708
  }
664
709
  ]
665
- },
666
- "post": {
710
+ }
711
+ },
712
+ "/v1.0/protected/systems/{id}": {
713
+ "patch": {
667
714
  "tags": [
668
715
  "Systems"
669
716
  ],
670
- "summary": "Create a system",
671
- "description": "Adds a new system to the onboarding/offboarding system library.",
672
- "operationId": "CreateSystem",
717
+ "summary": "Update a system",
718
+ "operationId": "PatchSystem",
719
+ "parameters": [
720
+ {
721
+ "name": "id",
722
+ "in": "path",
723
+ "required": true,
724
+ "schema": {
725
+ "type": "string"
726
+ }
727
+ }
728
+ ],
673
729
  "requestBody": {
674
730
  "content": {
675
731
  "application/json": {
676
732
  "schema": {
677
- "$ref": "#/components/schemas/sanityCreateSystem"
733
+ "$ref": "#/components/schemas/sanityPatchSystem"
678
734
  }
679
735
  }
680
736
  },
@@ -706,13 +762,68 @@
706
762
  "401": {
707
763
  "description": "No description",
708
764
  "x-ms-summary": "Unauthorized"
765
+ },
766
+ "404": {
767
+ "description": "No description",
768
+ "x-ms-summary": "Not Found"
769
+ }
770
+ },
771
+ "security": [
772
+ {
773
+ "Implicit": [
774
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
775
+ ]
776
+ },
777
+ {
778
+ "ApiKey": []
779
+ }
780
+ ]
781
+ },
782
+ "delete": {
783
+ "tags": [
784
+ "Systems"
785
+ ],
786
+ "summary": "Delete a system",
787
+ "operationId": "DeleteSystem",
788
+ "parameters": [
789
+ {
790
+ "name": "id",
791
+ "in": "path",
792
+ "required": true,
793
+ "schema": {
794
+ "type": "string"
795
+ }
796
+ }
797
+ ],
798
+ "responses": {
799
+ "200": {
800
+ "description": "Payload of SanitySystemsInner",
801
+ "content": {
802
+ "application/json": {
803
+ "schema": {
804
+ "$ref": "#/components/schemas/sanitySystemsInner"
805
+ }
806
+ }
807
+ },
808
+ "x-ms-summary": "Success"
809
+ },
810
+ "401": {
811
+ "description": "No description",
812
+ "x-ms-summary": "Unauthorized"
813
+ },
814
+ "404": {
815
+ "description": "No description",
816
+ "x-ms-summary": "Not Found"
709
817
  }
710
818
  },
711
819
  "security": [
712
820
  {
713
821
  "Implicit": [
714
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
822
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
715
823
  ]
824
+ },
825
+ {
826
+ "ApiKey": []
716
827
  }
717
828
  ]
718
829
  }
@@ -748,8 +859,11 @@
748
859
  "security": [
749
860
  {
750
861
  "Implicit": [
751
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
862
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
752
863
  ]
864
+ },
865
+ {
866
+ "ApiKey": []
753
867
  }
754
868
  ]
755
869
  }
@@ -785,8 +899,11 @@
785
899
  "security": [
786
900
  {
787
901
  "Implicit": [
788
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
902
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
789
903
  ]
904
+ },
905
+ {
906
+ "ApiKey": []
790
907
  }
791
908
  ]
792
909
  }
@@ -822,8 +939,11 @@
822
939
  "security": [
823
940
  {
824
941
  "Implicit": [
825
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
942
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
826
943
  ]
944
+ },
945
+ {
946
+ "ApiKey": []
827
947
  }
828
948
  ]
829
949
  }
@@ -877,8 +997,11 @@
877
997
  "security": [
878
998
  {
879
999
  "Implicit": [
880
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
1000
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
881
1001
  ]
1002
+ },
1003
+ {
1004
+ "ApiKey": []
882
1005
  }
883
1006
  ]
884
1007
  }
@@ -946,8 +1069,11 @@
946
1069
  "security": [
947
1070
  {
948
1071
  "Implicit": [
949
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
1072
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
950
1073
  ]
1074
+ },
1075
+ {
1076
+ "ApiKey": []
951
1077
  }
952
1078
  ]
953
1079
  },
@@ -992,19 +1118,23 @@
992
1118
  "security": [
993
1119
  {
994
1120
  "Implicit": [
995
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
1121
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
996
1122
  ]
1123
+ },
1124
+ {
1125
+ "ApiKey": []
997
1126
  }
998
1127
  ]
999
1128
  }
1000
1129
  },
1001
- "/v1.0/protected/systems/{id}": {
1002
- "patch": {
1130
+ "/v1.0/protected/candidates/{id}/generate-offer-pdf": {
1131
+ "post": {
1003
1132
  "tags": [
1004
- "Systems"
1133
+ "Candidates"
1005
1134
  ],
1006
- "summary": "Update a system",
1007
- "operationId": "PatchSystem",
1135
+ "summary": "Generate the 'Tilbud om ansettelse' PDF and store it on the candidate",
1136
+ "description": "Renders the Snøkam offer letter, uploads it as a Sanity file asset, and patches candidate.offerPdf to point at it. Stock percentage is taken from candidate.ownership; salary/pension language and the signing chair are fixed template constants. Re-running overwrites the previous PDF. Returns the updated candidate so the caller can read offerPdf.asset.url without an extra refetch.",
1137
+ "operationId": "GenerateOfferPdf",
1008
1138
  "parameters": [
1009
1139
  {
1010
1140
  "name": "id",
@@ -1012,42 +1142,22 @@
1012
1142
  "required": true,
1013
1143
  "schema": {
1014
1144
  "type": "string"
1015
- }
1145
+ },
1146
+ "x-ms-summary": "Candidate Sanity id"
1016
1147
  }
1017
1148
  ],
1018
- "requestBody": {
1019
- "content": {
1020
- "application/json": {
1021
- "schema": {
1022
- "$ref": "#/components/schemas/sanityPatchSystem"
1023
- }
1024
- }
1025
- },
1026
- "required": true
1027
- },
1028
1149
  "responses": {
1029
1150
  "200": {
1030
- "description": "Payload of SanitySystemsInner",
1151
+ "description": "Payload of SanityCandidate",
1031
1152
  "content": {
1032
1153
  "application/json": {
1033
1154
  "schema": {
1034
- "$ref": "#/components/schemas/sanitySystemsInner"
1155
+ "$ref": "#/components/schemas/sanityCandidate"
1035
1156
  }
1036
1157
  }
1037
1158
  },
1038
1159
  "x-ms-summary": "Success"
1039
1160
  },
1040
- "400": {
1041
- "description": "Payload of Object",
1042
- "content": {
1043
- "application/json": {
1044
- "schema": {
1045
- "type": "object"
1046
- }
1047
- }
1048
- },
1049
- "x-ms-summary": "Bad Request"
1050
- },
1051
1161
  "401": {
1052
1162
  "description": "No description",
1053
1163
  "x-ms-summary": "Unauthorized"
@@ -1060,17 +1170,23 @@
1060
1170
  "security": [
1061
1171
  {
1062
1172
  "Implicit": [
1063
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
1173
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1064
1174
  ]
1175
+ },
1176
+ {
1177
+ "ApiKey": []
1065
1178
  }
1066
1179
  ]
1067
- },
1068
- "delete": {
1180
+ }
1181
+ },
1182
+ "/v1.0/protected/candidates/{id}/generate-contract-pdf": {
1183
+ "post": {
1069
1184
  "tags": [
1070
- "Systems"
1185
+ "Candidates"
1071
1186
  ],
1072
- "summary": "Delete a system",
1073
- "operationId": "DeleteSystem",
1187
+ "summary": "Generate the 'Ansettelseskontrakt' PDF and store it on the candidate",
1188
+ "description": "Renders the Snøkam employment contract template, uploads it as a Sanity file asset, and patches candidate.contractPdf to point at it. The unsigned contract is what the candidate downloads, signs and the admin then uploads back as candidate.signedContract on the SIGNED status flip. Re-running overwrites the previous PDF. Returns the updated candidate so the caller can read contractPdf.asset.url without an extra refetch.",
1189
+ "operationId": "GenerateContractPdf",
1074
1190
  "parameters": [
1075
1191
  {
1076
1192
  "name": "id",
@@ -1078,16 +1194,17 @@
1078
1194
  "required": true,
1079
1195
  "schema": {
1080
1196
  "type": "string"
1081
- }
1197
+ },
1198
+ "x-ms-summary": "Candidate Sanity id"
1082
1199
  }
1083
1200
  ],
1084
1201
  "responses": {
1085
1202
  "200": {
1086
- "description": "Payload of SanitySystemsInner",
1203
+ "description": "Payload of SanityCandidate",
1087
1204
  "content": {
1088
1205
  "application/json": {
1089
1206
  "schema": {
1090
- "$ref": "#/components/schemas/sanitySystemsInner"
1207
+ "$ref": "#/components/schemas/sanityCandidate"
1091
1208
  }
1092
1209
  }
1093
1210
  },
@@ -1105,68 +1222,764 @@
1105
1222
  "security": [
1106
1223
  {
1107
1224
  "Implicit": [
1108
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
1225
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1109
1226
  ]
1227
+ },
1228
+ {
1229
+ "ApiKey": []
1110
1230
  }
1111
1231
  ]
1112
1232
  }
1113
1233
  },
1114
- "/v1.0/protected/employees": {
1115
- "get": {
1234
+ "/v1.0/protected/candidates/{id}/upload-signed-contract": {
1235
+ "post": {
1116
1236
  "tags": [
1117
- "Employees"
1237
+ "Candidates"
1118
1238
  ],
1119
- "summary": "List employees for buddy/recruiter assignment",
1120
- "description": "Lightweight employee list used by the candidate detail page's buddy and recruiter dropdowns.",
1121
- "operationId": "ListRecruitmentEmployees",
1239
+ "summary": "Upload the candidate's signed employment contract",
1240
+ "description": "Stores the admin-uploaded signed contract PDF as a Sanity file asset and patches candidate.signedContract. Used by the SIGNED status modal — the candidate-facing /prosess/{id}/signert page renders the resulting PDF inline. Send the file as multipart/form-data under the 'file' field, OR send the raw bytes as the request body with the appropriate Content-Type.",
1241
+ "operationId": "UploadSignedContract",
1242
+ "parameters": [
1243
+ {
1244
+ "name": "id",
1245
+ "in": "path",
1246
+ "required": true,
1247
+ "schema": {
1248
+ "type": "string"
1249
+ },
1250
+ "x-ms-summary": "Candidate Sanity id"
1251
+ }
1252
+ ],
1253
+ "requestBody": {
1254
+ "description": "Signed contract PDF bytes. Multipart 'file' field is also accepted.",
1255
+ "content": {
1256
+ "application/pdf": {
1257
+ "schema": {
1258
+ "type": "string",
1259
+ "format": "binary"
1260
+ }
1261
+ }
1262
+ },
1263
+ "required": true
1264
+ },
1122
1265
  "responses": {
1123
1266
  "200": {
1124
- "description": "Payload of Array of SanityBasicEmployee",
1267
+ "description": "Payload of SanityCandidate",
1125
1268
  "content": {
1126
1269
  "application/json": {
1127
1270
  "schema": {
1128
- "type": "array",
1129
- "items": {
1130
- "$ref": "#/components/schemas/sanityBasicEmployee"
1131
- }
1271
+ "$ref": "#/components/schemas/sanityCandidate"
1132
1272
  }
1133
1273
  }
1134
1274
  },
1135
1275
  "x-ms-summary": "Success"
1136
1276
  },
1277
+ "400": {
1278
+ "description": "Payload of Object",
1279
+ "content": {
1280
+ "application/json": {
1281
+ "schema": {
1282
+ "type": "object"
1283
+ }
1284
+ }
1285
+ },
1286
+ "x-ms-summary": "Bad Request"
1287
+ },
1137
1288
  "401": {
1138
1289
  "description": "No description",
1139
1290
  "x-ms-summary": "Unauthorized"
1291
+ },
1292
+ "404": {
1293
+ "description": "No description",
1294
+ "x-ms-summary": "Not Found"
1140
1295
  }
1141
1296
  },
1142
1297
  "security": [
1143
1298
  {
1144
1299
  "Implicit": [
1145
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default"
1300
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1146
1301
  ]
1302
+ },
1303
+ {
1304
+ "ApiKey": []
1147
1305
  }
1148
1306
  ]
1149
1307
  }
1150
- }
1151
- },
1152
- "components": {
1153
- "schemas": {
1154
- "componentBlocksInnerOneOfChildrenInner": {
1155
- "type": "object",
1156
- "properties": {
1157
- "sanityType": {
1158
- "enum": [
1159
- 1
1160
- ],
1308
+ },
1309
+ "/v1.0/protected/candidates/{id}/rejection-suggestion": {
1310
+ "post": {
1311
+ "tags": [
1312
+ "Candidates"
1313
+ ],
1314
+ "summary": "Draft a personalised rejection email for a candidate",
1315
+ "description": "Uses chatgpt-function to generate a Norwegian email + SMS draft based on the candidate, the job position, and optional internal feedback. The admin reviews and edits before deciding whether to send.",
1316
+ "operationId": "SuggestRejectionMessage",
1317
+ "parameters": [
1318
+ {
1319
+ "name": "id",
1320
+ "in": "path",
1321
+ "required": true,
1322
+ "schema": {
1323
+ "type": "string"
1324
+ },
1325
+ "x-ms-summary": "Candidate Sanity id"
1326
+ }
1327
+ ],
1328
+ "requestBody": {
1329
+ "description": "Optional internal admin notes used as LLM context (never quoted back to the candidate).",
1330
+ "content": {
1331
+ "application/json": {
1332
+ "schema": {
1333
+ "$ref": "#/components/schemas/rejectionSuggestionRequest"
1334
+ }
1335
+ }
1336
+ }
1337
+ },
1338
+ "responses": {
1339
+ "200": {
1340
+ "description": "Payload of RejectionSuggestion",
1341
+ "content": {
1342
+ "application/json": {
1343
+ "schema": {
1344
+ "$ref": "#/components/schemas/rejectionSuggestion"
1345
+ }
1346
+ }
1347
+ },
1348
+ "x-ms-summary": "Success"
1349
+ },
1350
+ "401": {
1351
+ "description": "No description",
1352
+ "x-ms-summary": "Unauthorized"
1353
+ },
1354
+ "404": {
1355
+ "description": "No description",
1356
+ "x-ms-summary": "Not Found"
1357
+ }
1358
+ },
1359
+ "security": [
1360
+ {
1361
+ "Implicit": [
1362
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1363
+ ]
1364
+ },
1365
+ {
1366
+ "ApiKey": []
1367
+ }
1368
+ ]
1369
+ }
1370
+ },
1371
+ "/v1.0/protected/candidates/{id}/notification-preview": {
1372
+ "get": {
1373
+ "tags": [
1374
+ "Candidates"
1375
+ ],
1376
+ "summary": "Preview the email/SMS that would be sent for a candidate event",
1377
+ "description": "Renders the email + SMS templates for the given event using the candidate's current data. Use to populate the confirm modal before a status change.",
1378
+ "operationId": "GetCandidateNotificationPreview",
1379
+ "parameters": [
1380
+ {
1381
+ "name": "id",
1382
+ "in": "path",
1383
+ "required": true,
1384
+ "schema": {
1385
+ "type": "string"
1386
+ },
1387
+ "x-ms-summary": "Candidate Sanity id"
1388
+ },
1389
+ {
1390
+ "name": "event",
1391
+ "in": "query",
1392
+ "required": true,
1393
+ "schema": {
1394
+ "type": "string"
1395
+ },
1396
+ "x-ms-summary": "Event name: Created, Introduction, Offer, Signed, Onboarding, UserCreationReview, Offboarding"
1397
+ }
1398
+ ],
1399
+ "responses": {
1400
+ "200": {
1401
+ "description": "Payload of CandidateNotificationPreview",
1402
+ "content": {
1403
+ "application/json": {
1404
+ "schema": {
1405
+ "$ref": "#/components/schemas/candidateNotificationPreview"
1406
+ }
1407
+ }
1408
+ },
1409
+ "x-ms-summary": "Success"
1410
+ },
1411
+ "400": {
1412
+ "description": "Payload of Object",
1413
+ "content": {
1414
+ "application/json": {
1415
+ "schema": {
1416
+ "type": "object"
1417
+ }
1418
+ }
1419
+ },
1420
+ "x-ms-summary": "Bad Request"
1421
+ },
1422
+ "401": {
1423
+ "description": "No description",
1424
+ "x-ms-summary": "Unauthorized"
1425
+ },
1426
+ "404": {
1427
+ "description": "No description",
1428
+ "x-ms-summary": "Not Found"
1429
+ }
1430
+ },
1431
+ "security": [
1432
+ {
1433
+ "Implicit": [
1434
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1435
+ ]
1436
+ },
1437
+ {
1438
+ "ApiKey": []
1439
+ }
1440
+ ]
1441
+ }
1442
+ },
1443
+ "/v1.0/protected/candidates/notification-preview": {
1444
+ "post": {
1445
+ "tags": [
1446
+ "Candidates"
1447
+ ],
1448
+ "summary": "Preview a candidate notification before the candidate is created",
1449
+ "description": "Used by the create form to render the email/SMS that will be sent on submit, given the in-progress candidate fields. No recruiter resolution — uses the team-fallback signoff.",
1450
+ "operationId": "PreviewCandidateNotification",
1451
+ "requestBody": {
1452
+ "description": "Event + candidate-shaped fields",
1453
+ "content": {
1454
+ "application/json": {
1455
+ "schema": {
1456
+ "$ref": "#/components/schemas/candidateNotificationPreviewRequest"
1457
+ }
1458
+ }
1459
+ },
1460
+ "required": true
1461
+ },
1462
+ "responses": {
1463
+ "200": {
1464
+ "description": "Payload of CandidateNotificationPreview",
1465
+ "content": {
1466
+ "application/json": {
1467
+ "schema": {
1468
+ "$ref": "#/components/schemas/candidateNotificationPreview"
1469
+ }
1470
+ }
1471
+ },
1472
+ "x-ms-summary": "Success"
1473
+ },
1474
+ "400": {
1475
+ "description": "Payload of Object",
1476
+ "content": {
1477
+ "application/json": {
1478
+ "schema": {
1479
+ "type": "object"
1480
+ }
1481
+ }
1482
+ },
1483
+ "x-ms-summary": "Bad Request"
1484
+ },
1485
+ "401": {
1486
+ "description": "No description",
1487
+ "x-ms-summary": "Unauthorized"
1488
+ }
1489
+ },
1490
+ "security": [
1491
+ {
1492
+ "Implicit": [
1493
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1494
+ ]
1495
+ },
1496
+ {
1497
+ "ApiKey": []
1498
+ }
1499
+ ]
1500
+ }
1501
+ },
1502
+ "/v1.0/protected/candidates/{id}/offboard/{system}": {
1503
+ "post": {
1504
+ "tags": [
1505
+ "Candidates"
1506
+ ],
1507
+ "summary": "Trigger automated offboarding for a single chain step",
1508
+ "description": "Mirror of OnboardCandidateSystem for the offboarding chain. Re-runs one named offboarding step (e.g. 'microsoft-365-disable', 'license-revoke', 'github-org-remove').",
1509
+ "operationId": "OffboardCandidateSystem",
1510
+ "parameters": [
1511
+ {
1512
+ "name": "id",
1513
+ "in": "path",
1514
+ "required": true,
1515
+ "schema": {
1516
+ "type": "string"
1517
+ },
1518
+ "x-ms-summary": "Candidate Sanity id"
1519
+ },
1520
+ {
1521
+ "name": "system",
1522
+ "in": "path",
1523
+ "required": true,
1524
+ "schema": {
1525
+ "type": "string"
1526
+ },
1527
+ "x-ms-summary": "Step slug (e.g. 'microsoft-365-disable')"
1528
+ }
1529
+ ],
1530
+ "responses": {
1531
+ "200": {
1532
+ "description": "Uniform onboarding result with status + message",
1533
+ "content": {
1534
+ "application/json": {
1535
+ "schema": {
1536
+ "$ref": "#/components/schemas/onboardingResult"
1537
+ }
1538
+ }
1539
+ },
1540
+ "x-ms-summary": "Success"
1541
+ },
1542
+ "400": {
1543
+ "description": "Payload of Object",
1544
+ "content": {
1545
+ "application/json": {
1546
+ "schema": {
1547
+ "type": "object"
1548
+ }
1549
+ }
1550
+ },
1551
+ "x-ms-summary": "Bad Request"
1552
+ },
1553
+ "401": {
1554
+ "description": "No description",
1555
+ "x-ms-summary": "Unauthorized"
1556
+ },
1557
+ "404": {
1558
+ "description": "No description",
1559
+ "x-ms-summary": "Not Found"
1560
+ }
1561
+ },
1562
+ "security": [
1563
+ {
1564
+ "Implicit": [
1565
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1566
+ ]
1567
+ },
1568
+ {
1569
+ "ApiKey": []
1570
+ }
1571
+ ]
1572
+ }
1573
+ },
1574
+ "/v1.0/protected/candidates/{id}/offboard-full": {
1575
+ "post": {
1576
+ "tags": [
1577
+ "Candidates"
1578
+ ],
1579
+ "summary": "Run the full automated offboarding chain",
1580
+ "description": "Disables the candidate's Microsoft 365 user and triggers an Azure AD → Sanity sync so the employee doc reflects the disabled state.",
1581
+ "operationId": "OffboardCandidateFull",
1582
+ "parameters": [
1583
+ {
1584
+ "name": "id",
1585
+ "in": "path",
1586
+ "required": true,
1587
+ "schema": {
1588
+ "type": "string"
1589
+ }
1590
+ }
1591
+ ],
1592
+ "responses": {
1593
+ "200": {
1594
+ "description": "Per-step results",
1595
+ "content": {
1596
+ "application/json": {
1597
+ "schema": {
1598
+ "type": "array",
1599
+ "items": {
1600
+ "$ref": "#/components/schemas/onboardingResult"
1601
+ }
1602
+ }
1603
+ }
1604
+ },
1605
+ "x-ms-summary": "Success"
1606
+ },
1607
+ "401": {
1608
+ "description": "No description",
1609
+ "x-ms-summary": "Unauthorized"
1610
+ },
1611
+ "404": {
1612
+ "description": "No description",
1613
+ "x-ms-summary": "Not Found"
1614
+ }
1615
+ },
1616
+ "security": [
1617
+ {
1618
+ "Implicit": [
1619
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1620
+ ]
1621
+ },
1622
+ {
1623
+ "ApiKey": []
1624
+ }
1625
+ ]
1626
+ }
1627
+ },
1628
+ "/v1.0/protected/candidates/{id}/offboard-full/stream": {
1629
+ "post": {
1630
+ "tags": [
1631
+ "Candidates"
1632
+ ],
1633
+ "summary": "Offboarding chain with a live SSE event feed",
1634
+ "description": "Streams the offboarding chain step-by-step as Server-Sent Events. Mirrors /onboard-full/stream.",
1635
+ "operationId": "OffboardCandidateFullStream",
1636
+ "parameters": [
1637
+ {
1638
+ "name": "id",
1639
+ "in": "path",
1640
+ "required": true,
1641
+ "schema": {
1642
+ "type": "string"
1643
+ }
1644
+ }
1645
+ ],
1646
+ "responses": {
1647
+ "200": {
1648
+ "description": "No description",
1649
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
1650
+ }
1651
+ },
1652
+ "security": [
1653
+ {
1654
+ "Implicit": [
1655
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1656
+ ]
1657
+ },
1658
+ {
1659
+ "ApiKey": []
1660
+ }
1661
+ ]
1662
+ }
1663
+ },
1664
+ "/v1.0/protected/candidates/{id}/onboard/{system}": {
1665
+ "post": {
1666
+ "tags": [
1667
+ "Candidates"
1668
+ ],
1669
+ "summary": "Trigger automated onboarding for a single chain step",
1670
+ "description": "Re-runs one named onboarding step (slug matches the timeline step ids — e.g. 'microsoft-365', 'license-assignment', 'github-org-invite'). Used by the admin UI's per-step retry button when an earlier chain run partially failed.",
1671
+ "operationId": "OnboardCandidateSystem",
1672
+ "parameters": [
1673
+ {
1674
+ "name": "id",
1675
+ "in": "path",
1676
+ "required": true,
1677
+ "schema": {
1678
+ "type": "string"
1679
+ },
1680
+ "x-ms-summary": "Candidate Sanity id"
1681
+ },
1682
+ {
1683
+ "name": "system",
1684
+ "in": "path",
1685
+ "required": true,
1686
+ "schema": {
1687
+ "type": "string"
1688
+ },
1689
+ "x-ms-summary": "System slug (e.g. 'microsoft-365')"
1690
+ }
1691
+ ],
1692
+ "responses": {
1693
+ "200": {
1694
+ "description": "Uniform onboarding result with status + message",
1695
+ "content": {
1696
+ "application/json": {
1697
+ "schema": {
1698
+ "$ref": "#/components/schemas/onboardingResult"
1699
+ }
1700
+ }
1701
+ },
1702
+ "x-ms-summary": "Success"
1703
+ },
1704
+ "400": {
1705
+ "description": "Payload of Object",
1706
+ "content": {
1707
+ "application/json": {
1708
+ "schema": {
1709
+ "type": "object"
1710
+ }
1711
+ }
1712
+ },
1713
+ "x-ms-summary": "Bad Request"
1714
+ },
1715
+ "401": {
1716
+ "description": "No description",
1717
+ "x-ms-summary": "Unauthorized"
1718
+ },
1719
+ "404": {
1720
+ "description": "No description",
1721
+ "x-ms-summary": "Not Found"
1722
+ }
1723
+ },
1724
+ "security": [
1725
+ {
1726
+ "Implicit": [
1727
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1728
+ ]
1729
+ },
1730
+ {
1731
+ "ApiKey": []
1732
+ }
1733
+ ]
1734
+ }
1735
+ },
1736
+ "/v1.0/protected/candidates/{id}/onboard-full": {
1737
+ "post": {
1738
+ "tags": [
1739
+ "Candidates"
1740
+ ],
1741
+ "summary": "Run the full automated onboarding chain",
1742
+ "description": "Provisions the candidate's Microsoft 365 user, then triggers an Azure AD → Sanity sync to create the matching employee doc. Returns one OnboardingResult row per step so the admin UI can render a live timeline.",
1743
+ "operationId": "OnboardCandidateFull",
1744
+ "parameters": [
1745
+ {
1746
+ "name": "id",
1747
+ "in": "path",
1748
+ "required": true,
1749
+ "schema": {
1750
+ "type": "string"
1751
+ },
1752
+ "x-ms-summary": "Candidate Sanity id"
1753
+ }
1754
+ ],
1755
+ "responses": {
1756
+ "200": {
1757
+ "description": "Per-step results",
1758
+ "content": {
1759
+ "application/json": {
1760
+ "schema": {
1761
+ "type": "array",
1762
+ "items": {
1763
+ "$ref": "#/components/schemas/onboardingResult"
1764
+ }
1765
+ }
1766
+ }
1767
+ },
1768
+ "x-ms-summary": "Success"
1769
+ },
1770
+ "401": {
1771
+ "description": "No description",
1772
+ "x-ms-summary": "Unauthorized"
1773
+ },
1774
+ "404": {
1775
+ "description": "No description",
1776
+ "x-ms-summary": "Not Found"
1777
+ }
1778
+ },
1779
+ "security": [
1780
+ {
1781
+ "Implicit": [
1782
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1783
+ ]
1784
+ },
1785
+ {
1786
+ "ApiKey": []
1787
+ }
1788
+ ]
1789
+ }
1790
+ },
1791
+ "/v1.0/protected/candidates/{id}/onboard-full/stream": {
1792
+ "post": {
1793
+ "tags": [
1794
+ "Candidates"
1795
+ ],
1796
+ "summary": "Run the onboarding chain with a live SSE event feed",
1797
+ "description": "Same chain as /onboard-full but streams Server-Sent Events (`event: step`) as each step starts (`status:running`) and finishes (`succeeded`/`failed`). Closes with `event: done`. Frontend uses fetch streaming so we can pass a Bearer token; EventSource doesn't support custom headers.",
1798
+ "operationId": "OnboardCandidateFullStream",
1799
+ "parameters": [
1800
+ {
1801
+ "name": "id",
1802
+ "in": "path",
1803
+ "required": true,
1804
+ "schema": {
1805
+ "type": "string"
1806
+ }
1807
+ }
1808
+ ],
1809
+ "responses": {
1810
+ "200": {
1811
+ "description": "No description",
1812
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
1813
+ }
1814
+ },
1815
+ "security": [
1816
+ {
1817
+ "Implicit": [
1818
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1819
+ ]
1820
+ },
1821
+ {
1822
+ "ApiKey": []
1823
+ }
1824
+ ]
1825
+ }
1826
+ },
1827
+ "/v1.0/protected/candidates/{id}/issue-pin": {
1828
+ "post": {
1829
+ "tags": [
1830
+ "Candidates"
1831
+ ],
1832
+ "summary": "Generate or set a candidate PIN code and notify them",
1833
+ "description": "Issues the six-digit PIN that gates the candidate's tilbud-, signert- and onboarding-side. Pass an empty body to generate a fresh code; pass {\"pin\": \"123456\"} to override with a specific value (handy when the candidate calls in for help). Patches candidate.pin in Sanity and dispatches the dedicated PinReissue notification to candidate.email and candidate.telephone via notifications-function. Returns the updated candidate.",
1834
+ "operationId": "IssueCandidatePin",
1835
+ "parameters": [
1836
+ {
1837
+ "name": "id",
1838
+ "in": "path",
1839
+ "required": true,
1840
+ "schema": {
1841
+ "type": "string"
1842
+ },
1843
+ "x-ms-summary": "Candidate Sanity id"
1844
+ }
1845
+ ],
1846
+ "requestBody": {
1847
+ "description": "Optional override",
1848
+ "content": {
1849
+ "application/json": {
1850
+ "schema": {
1851
+ "$ref": "#/components/schemas/issueCandidatePinRequest"
1852
+ }
1853
+ }
1854
+ }
1855
+ },
1856
+ "responses": {
1857
+ "200": {
1858
+ "description": "Payload of SanityCandidate",
1859
+ "content": {
1860
+ "application/json": {
1861
+ "schema": {
1862
+ "$ref": "#/components/schemas/sanityCandidate"
1863
+ }
1864
+ }
1865
+ },
1866
+ "x-ms-summary": "Success"
1867
+ },
1868
+ "400": {
1869
+ "description": "No description",
1870
+ "x-ms-summary": "Invalid PIN value"
1871
+ },
1872
+ "401": {
1873
+ "description": "No description",
1874
+ "x-ms-summary": "Unauthorized"
1875
+ },
1876
+ "404": {
1877
+ "description": "No description",
1878
+ "x-ms-summary": "Not Found"
1879
+ }
1880
+ },
1881
+ "security": [
1882
+ {
1883
+ "Implicit": [
1884
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default"
1885
+ ]
1886
+ },
1887
+ {
1888
+ "ApiKey": []
1889
+ }
1890
+ ]
1891
+ }
1892
+ }
1893
+ },
1894
+ "components": {
1895
+ "schemas": {
1896
+ "candidateNotificationPreview": {
1897
+ "type": "object",
1898
+ "properties": {
1899
+ "subject": {
1900
+ "type": "string"
1901
+ },
1902
+ "plainText": {
1903
+ "type": "string"
1904
+ },
1905
+ "htmlBody": {
1906
+ "type": "string"
1907
+ },
1908
+ "smsBody": {
1909
+ "type": "string"
1910
+ },
1911
+ "willSendEmail": {
1912
+ "type": "boolean"
1913
+ },
1914
+ "willSendSms": {
1915
+ "type": "boolean"
1916
+ },
1917
+ "recipientEmail": {
1918
+ "type": "string"
1919
+ },
1920
+ "recipientPhone": {
1921
+ "type": "string"
1922
+ }
1923
+ }
1924
+ },
1925
+ "candidateNotificationPreviewRequest": {
1926
+ "type": "object",
1927
+ "properties": {
1928
+ "ev": {
1929
+ "enum": [
1930
+ 0,
1931
+ 1,
1932
+ 2,
1933
+ 3,
1934
+ 4,
1935
+ 5,
1936
+ 6,
1937
+ 7,
1938
+ 8,
1939
+ 9,
1940
+ 10
1941
+ ],
1161
1942
  "type": "integer",
1162
1943
  "format": "int32",
1163
- "default": 1
1944
+ "default": 0
1164
1945
  },
1165
- "sanityKey": {
1946
+ "name": {
1947
+ "type": "string"
1948
+ },
1949
+ "email": {
1950
+ "type": "string"
1951
+ },
1952
+ "telephone": {
1953
+ "type": "string"
1954
+ },
1955
+ "recruiterName": {
1956
+ "type": "string"
1957
+ },
1958
+ "recruiterEmail": {
1959
+ "type": "string"
1960
+ }
1961
+ }
1962
+ },
1963
+ "chainAutomatedSystem": {
1964
+ "type": "object",
1965
+ "properties": {
1966
+ "title": {
1166
1967
  "type": "string"
1167
1968
  },
1168
- "marksOption": {
1169
- "$ref": "#/components/schemas/option_list`1"
1969
+ "status": {
1970
+ "type": "string"
1971
+ }
1972
+ }
1973
+ },
1974
+ "componentBlocksInnerOneOfChildrenInner": {
1975
+ "type": "object",
1976
+ "properties": {
1977
+ "sanityType": {
1978
+ "enum": [
1979
+ "span"
1980
+ ],
1981
+ "type": "string",
1982
+ "default": "span"
1170
1983
  },
1171
1984
  "marks": {
1172
1985
  "type": "array",
@@ -1174,8 +1987,8 @@
1174
1987
  "type": "string"
1175
1988
  }
1176
1989
  },
1177
- "textOption": {
1178
- "$ref": "#/components/schemas/option_string"
1990
+ "sanityKey": {
1991
+ "type": "string"
1179
1992
  },
1180
1993
  "text": {
1181
1994
  "type": "string"
@@ -1187,19 +2000,15 @@
1187
2000
  "properties": {
1188
2001
  "sanityType": {
1189
2002
  "enum": [
1190
- 1
2003
+ "link"
1191
2004
  ],
1192
- "type": "integer",
1193
- "format": "int32",
1194
- "default": 1
2005
+ "type": "string",
2006
+ "default": "link"
1195
2007
  },
1196
- "sanityKey": {
2008
+ "href": {
1197
2009
  "type": "string"
1198
2010
  },
1199
- "hrefOption": {
1200
- "$ref": "#/components/schemas/option_string"
1201
- },
1202
- "href": {
2011
+ "sanityKey": {
1203
2012
  "type": "string"
1204
2013
  }
1205
2014
  }
@@ -1209,35 +2018,39 @@
1209
2018
  "properties": {
1210
2019
  "status": {
1211
2020
  "enum": [
1212
- 1,
1213
- 2,
1214
- 3,
1215
- 4,
1216
- 5,
1217
- 6,
1218
- 7,
1219
- 8
1220
- ],
1221
- "type": "integer",
1222
- "format": "int32",
1223
- "default": 1
1224
- },
1225
- "track": {
1226
- "enum": [
1227
- 1,
1228
- 2
2021
+ "CREATED",
2022
+ "INTRODUCTION_INTERVIEW",
2023
+ "TECHNICAL_INTERVIEW",
2024
+ "SALES_INTERVIEW",
2025
+ "OFFER",
2026
+ "SIGNED",
2027
+ "ONBOARDING",
2028
+ "USER_CREATION_REVIEW",
2029
+ "OFFBOARDING",
2030
+ "REJECTED"
1229
2031
  ],
1230
- "type": "integer",
1231
- "format": "int32",
1232
- "default": 1
2032
+ "type": "string",
2033
+ "default": "CREATED"
1233
2034
  },
1234
2035
  "candidate": {
1235
2036
  "type": "string"
1236
2037
  },
2038
+ "email": {
2039
+ "type": "string"
2040
+ },
2041
+ "jobPositionId": {
2042
+ "type": "string"
2043
+ },
2044
+ "recruiter": {
2045
+ "type": "string"
2046
+ },
2047
+ "telephone": {
2048
+ "type": "string"
2049
+ },
1237
2050
  "additionalProperties": {
1238
2051
  "type": "object",
1239
2052
  "additionalProperties": {
1240
- "$ref": "#/components/schemas/jsonElement"
2053
+ "type": "object"
1241
2054
  }
1242
2055
  }
1243
2056
  }
@@ -1247,51 +2060,41 @@
1247
2060
  "properties": {
1248
2061
  "sanityType": {
1249
2062
  "enum": [
1250
- 1
2063
+ "reference"
1251
2064
  ],
1252
- "type": "integer",
1253
- "format": "int32",
1254
- "default": 1
2065
+ "type": "string",
2066
+ "default": "reference"
1255
2067
  },
1256
2068
  "sanityRef": {
1257
2069
  "type": "string"
1258
2070
  },
1259
- "sanityWeakOption": {
1260
- "$ref": "#/components/schemas/option_nullable`1"
1261
- },
1262
2071
  "sanityWeak": {
1263
- "type": "boolean",
1264
- "nullable": true
2072
+ "type": "boolean"
1265
2073
  }
1266
2074
  }
1267
2075
  },
1268
- "jsonElement": {
2076
+ "eventReference": {
1269
2077
  "type": "object",
1270
2078
  "properties": {
1271
- "valueKind": {
2079
+ "sanityType": {
1272
2080
  "enum": [
1273
- 0,
1274
- 1,
1275
- 2,
1276
- 3,
1277
- 4,
1278
- 5,
1279
- 6,
1280
- 7
2081
+ "reference"
1281
2082
  ],
1282
- "type": "integer",
1283
- "format": "int32",
1284
- "default": 0
2083
+ "type": "string",
2084
+ "default": "reference"
2085
+ },
2086
+ "sanityRef": {
2087
+ "type": "string"
1285
2088
  },
1286
- "item": {
1287
- "$ref": "#/components/schemas/jsonElement"
2089
+ "sanityWeak": {
2090
+ "type": "boolean"
1288
2091
  }
1289
2092
  }
1290
2093
  },
1291
- "onboardingResult": {
2094
+ "integrationHealthResult": {
1292
2095
  "type": "object",
1293
2096
  "properties": {
1294
- "step": {
2097
+ "key": {
1295
2098
  "type": "string"
1296
2099
  },
1297
2100
  "status": {
@@ -1299,130 +2102,351 @@
1299
2102
  },
1300
2103
  "message": {
1301
2104
  "type": "string"
1302
- },
1303
- "preferredEmail": {
1304
- "type": "string"
1305
- },
1306
- "createdAccountId": {
1307
- "type": "string"
1308
- },
1309
- "temporaryPassword": {
1310
- "type": "string"
1311
- }
1312
- }
1313
- },
1314
- "option_employeeReference": {
1315
- "type": "object",
1316
- "properties": {
1317
- "value": {
1318
- "$ref": "#/components/schemas/employeeReference"
1319
2105
  }
1320
2106
  }
1321
2107
  },
1322
- "option_list`1": {
2108
+ "interviewBookingBody": {
1323
2109
  "type": "object",
1324
2110
  "properties": {
1325
- "value": {
2111
+ "scheduledAt": {
2112
+ "type": "string",
2113
+ "nullable": true
2114
+ },
2115
+ "place": {
2116
+ "type": "string",
2117
+ "nullable": true
2118
+ },
2119
+ "eventTypeId": {
2120
+ "type": "string",
2121
+ "nullable": true
2122
+ },
2123
+ "durationMinutes": {
2124
+ "type": "integer",
2125
+ "format": "int32",
2126
+ "nullable": true
2127
+ },
2128
+ "interviewers": {
1326
2129
  "type": "array",
1327
2130
  "items": {
1328
- "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1329
- }
1330
- }
1331
- }
1332
- },
1333
- "option_nullable`1": {
1334
- "type": "object",
1335
- "properties": {
1336
- "value": {
1337
- "type": "boolean",
2131
+ "$ref": "#/components/schemas/interviewParticipantBody"
2132
+ },
1338
2133
  "nullable": true
1339
2134
  }
1340
- }
1341
- },
1342
- "option_object": {
1343
- "type": "object",
1344
- "properties": {
1345
- "value": {
1346
- "type": "object"
1347
- }
1348
- }
1349
- },
1350
- "option_sanityAssetSourceData": {
1351
- "type": "object",
1352
- "properties": {
1353
- "value": {
1354
- "$ref": "#/components/schemas/sanityAssetSourceData"
1355
- }
1356
- }
2135
+ },
2136
+ "nullable": true
1357
2137
  },
1358
- "option_sanityCandidateAddress": {
2138
+ "interviewParticipantBody": {
1359
2139
  "type": "object",
1360
2140
  "properties": {
1361
- "value": {
1362
- "$ref": "#/components/schemas/sanityCandidateAddress"
2141
+ "sanityId": {
2142
+ "type": "string",
2143
+ "nullable": true
2144
+ },
2145
+ "email": {
2146
+ "type": "string",
2147
+ "nullable": true
1363
2148
  }
1364
2149
  }
1365
2150
  },
1366
- "option_sanityFileAssetReference": {
2151
+ "issueCandidatePinRequest": {
1367
2152
  "type": "object",
1368
2153
  "properties": {
1369
- "value": {
1370
- "$ref": "#/components/schemas/sanityFileAssetReference"
2154
+ "pin": {
2155
+ "type": "string"
1371
2156
  }
1372
2157
  }
1373
2158
  },
1374
- "option_sanityImageAssetReference": {
2159
+ "jobPositionReference": {
1375
2160
  "type": "object",
1376
2161
  "properties": {
1377
- "value": {
1378
- "$ref": "#/components/schemas/sanityImageAssetReference"
2162
+ "sanityType": {
2163
+ "enum": [
2164
+ "reference"
2165
+ ],
2166
+ "type": "string",
2167
+ "default": "reference"
2168
+ },
2169
+ "sanityRef": {
2170
+ "type": "string"
2171
+ },
2172
+ "sanityWeak": {
2173
+ "type": "boolean"
1379
2174
  }
1380
2175
  }
1381
2176
  },
1382
- "option_sanityImageCrop": {
2177
+ "licenseAvailability": {
1383
2178
  "type": "object",
1384
2179
  "properties": {
1385
- "value": {
1386
- "$ref": "#/components/schemas/sanityImageCrop"
2180
+ "skuId": {
2181
+ "type": "string"
2182
+ },
2183
+ "skuPartNumber": {
2184
+ "type": "string"
2185
+ },
2186
+ "enabled": {
2187
+ "type": "integer",
2188
+ "format": "int32"
2189
+ },
2190
+ "consumed": {
2191
+ "type": "integer",
2192
+ "format": "int32"
2193
+ },
2194
+ "available": {
2195
+ "type": "integer",
2196
+ "format": "int32"
2197
+ },
2198
+ "isConfigured": {
2199
+ "type": "boolean"
1387
2200
  }
1388
2201
  }
1389
2202
  },
1390
- "option_sanityImageHotspot": {
2203
+ "onboardingResult": {
1391
2204
  "type": "object",
1392
2205
  "properties": {
1393
- "value": {
1394
- "$ref": "#/components/schemas/sanityImageHotspot"
2206
+ "step": {
2207
+ "type": "string"
2208
+ },
2209
+ "status": {
2210
+ "type": "string"
2211
+ },
2212
+ "message": {
2213
+ "type": "string"
2214
+ },
2215
+ "preferredEmail": {
2216
+ "type": "string"
2217
+ },
2218
+ "createdAccountId": {
2219
+ "type": "string"
2220
+ },
2221
+ "temporaryPassword": {
2222
+ "type": "string"
1395
2223
  }
1396
2224
  }
1397
2225
  },
1398
- "option_sanityPatchCandidateAddress": {
2226
+ "patchCandidateRequestBody": {
1399
2227
  "type": "object",
1400
2228
  "properties": {
1401
- "value": {
2229
+ "interviewBooking": {
2230
+ "$ref": "#/components/schemas/interviewBookingBody"
2231
+ },
2232
+ "sanityType": {
2233
+ "enum": [
2234
+ "candidate"
2235
+ ],
2236
+ "type": "string",
2237
+ "default": "candidate",
2238
+ "nullable": true
2239
+ },
2240
+ "status": {
2241
+ "enum": [
2242
+ "CREATED",
2243
+ "INTRODUCTION_INTERVIEW",
2244
+ "TECHNICAL_INTERVIEW",
2245
+ "SALES_INTERVIEW",
2246
+ "OFFER",
2247
+ "SIGNED",
2248
+ "ONBOARDING",
2249
+ "USER_CREATION_REVIEW",
2250
+ "OFFBOARDING",
2251
+ "REJECTED"
2252
+ ],
2253
+ "type": "string",
2254
+ "default": "CREATED",
2255
+ "nullable": true
2256
+ },
2257
+ "address": {
1402
2258
  "$ref": "#/components/schemas/sanityPatchCandidateAddress"
2259
+ },
2260
+ "allergies": {
2261
+ "type": "array",
2262
+ "items": {
2263
+ "type": "string"
2264
+ }
2265
+ },
2266
+ "applicationLetter": {
2267
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2268
+ },
2269
+ "applicationOther": {
2270
+ "type": "string"
2271
+ },
2272
+ "bankAccount": {
2273
+ "type": "string"
2274
+ },
2275
+ "birthDate": {
2276
+ "type": "string"
2277
+ },
2278
+ "buddy": {
2279
+ "$ref": "#/components/schemas/employeeReference"
2280
+ },
2281
+ "candidate": {
2282
+ "type": "string"
2283
+ },
2284
+ "contractPdf": {
2285
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2286
+ },
2287
+ "contractSignDate": {
2288
+ "type": "string"
2289
+ },
2290
+ "contractSigner": {
2291
+ "$ref": "#/components/schemas/employeeReference"
2292
+ },
2293
+ "contractSignerRole": {
2294
+ "type": "string"
2295
+ },
2296
+ "cv": {
2297
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2298
+ },
2299
+ "education": {
2300
+ "type": "string"
2301
+ },
2302
+ "email": {
2303
+ "type": "string"
2304
+ },
2305
+ "employee": {
2306
+ "$ref": "#/components/schemas/employeeReference"
2307
+ },
2308
+ "fromApplication": {
2309
+ "type": "boolean",
2310
+ "nullable": true
2311
+ },
2312
+ "githubUsername": {
2313
+ "type": "string"
2314
+ },
2315
+ "grades": {
2316
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2317
+ },
2318
+ "interviews": {
2319
+ "type": "array",
2320
+ "items": {
2321
+ "$ref": "#/components/schemas/sanityPatchCandidateInterviewsInner"
2322
+ }
2323
+ },
2324
+ "jobPosition": {
2325
+ "$ref": "#/components/schemas/jobPositionReference"
2326
+ },
2327
+ "linkedin": {
2328
+ "type": "string"
2329
+ },
2330
+ "offboardingChecklist": {
2331
+ "type": "array",
2332
+ "items": {
2333
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2334
+ }
2335
+ },
2336
+ "offerPdf": {
2337
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2338
+ },
2339
+ "onboardingChecklist": {
2340
+ "type": "array",
2341
+ "items": {
2342
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2343
+ }
2344
+ },
2345
+ "ownership": {
2346
+ "type": "number",
2347
+ "format": "double",
2348
+ "nullable": true
2349
+ },
2350
+ "personalNumber": {
2351
+ "type": "string"
2352
+ },
2353
+ "pin": {
2354
+ "type": "string"
2355
+ },
2356
+ "preferredDisplayName": {
2357
+ "type": "string"
2358
+ },
2359
+ "preferredEmail": {
2360
+ "type": "string"
2361
+ },
2362
+ "profileImage": {
2363
+ "$ref": "#/components/schemas/sanityPatchPageMetaImage"
2364
+ },
2365
+ "recruiter": {
2366
+ "$ref": "#/components/schemas/employeeReference"
2367
+ },
2368
+ "references": {
2369
+ "type": "array",
2370
+ "items": {
2371
+ "$ref": "#/components/schemas/sanityCandidateReferencesInner"
2372
+ }
2373
+ },
2374
+ "shortUrl": {
2375
+ "type": "string"
2376
+ },
2377
+ "signedContract": {
2378
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2379
+ },
2380
+ "snapchatUsername": {
2381
+ "type": "string"
2382
+ },
2383
+ "startDate": {
2384
+ "type": "string"
2385
+ },
2386
+ "systemsActive": {
2387
+ "type": "array",
2388
+ "items": {
2389
+ "$ref": "#/components/schemas/sanityPatchCandidateSystemsActiveInner"
2390
+ }
2391
+ },
2392
+ "telephone": {
2393
+ "type": "string"
2394
+ },
2395
+ "url": {
2396
+ "type": "string"
2397
+ },
2398
+ "additionalProperties": {
2399
+ "type": "object",
2400
+ "additionalProperties": {
2401
+ "type": "object"
2402
+ }
1403
2403
  }
1404
2404
  }
1405
2405
  },
1406
- "option_sanityPatchCandidateApplicationLetter": {
2406
+ "rejectCandidateMessage": {
1407
2407
  "type": "object",
1408
2408
  "properties": {
1409
- "value": {
1410
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2409
+ "subject": {
2410
+ "type": "string"
2411
+ },
2412
+ "plainText": {
2413
+ "type": "string"
2414
+ },
2415
+ "htmlBody": {
2416
+ "type": "string"
2417
+ },
2418
+ "smsBody": {
2419
+ "type": "string"
2420
+ },
2421
+ "sendEmail": {
2422
+ "type": "boolean"
2423
+ },
2424
+ "sendSms": {
2425
+ "type": "boolean"
1411
2426
  }
1412
2427
  }
1413
2428
  },
1414
- "option_sanityPatchPageMetaImage": {
2429
+ "rejectionSuggestion": {
1415
2430
  "type": "object",
1416
2431
  "properties": {
1417
- "value": {
1418
- "$ref": "#/components/schemas/sanityPatchPageMetaImage"
2432
+ "subject": {
2433
+ "type": "string"
2434
+ },
2435
+ "plainText": {
2436
+ "type": "string"
2437
+ },
2438
+ "htmlBody": {
2439
+ "type": "string"
2440
+ },
2441
+ "smsBody": {
2442
+ "type": "string"
1419
2443
  }
1420
2444
  }
1421
2445
  },
1422
- "option_string": {
2446
+ "rejectionSuggestionRequest": {
1423
2447
  "type": "object",
1424
2448
  "properties": {
1425
- "value": {
2449
+ "feedback": {
1426
2450
  "type": "string"
1427
2451
  }
1428
2452
  }
@@ -1432,27 +2456,17 @@
1432
2456
  "properties": {
1433
2457
  "sanityType": {
1434
2458
  "enum": [
1435
- 1
2459
+ "sanity.assetSourceData"
1436
2460
  ],
1437
- "type": "integer",
1438
- "format": "int32",
1439
- "default": 1
1440
- },
1441
- "idOption": {
1442
- "$ref": "#/components/schemas/option_string"
2461
+ "type": "string",
2462
+ "default": "sanity.assetSourceData"
1443
2463
  },
1444
2464
  "id": {
1445
2465
  "type": "string"
1446
2466
  },
1447
- "nameOption": {
1448
- "$ref": "#/components/schemas/option_string"
1449
- },
1450
2467
  "name": {
1451
2468
  "type": "string"
1452
2469
  },
1453
- "urlOption": {
1454
- "$ref": "#/components/schemas/option_string"
1455
- },
1456
2470
  "url": {
1457
2471
  "type": "string"
1458
2472
  }
@@ -1463,17 +2477,24 @@
1463
2477
  "properties": {
1464
2478
  "sanityType": {
1465
2479
  "enum": [
1466
- 1
2480
+ "employee"
1467
2481
  ],
1468
- "type": "integer",
1469
- "format": "int32",
1470
- "default": 1
2482
+ "type": "string",
2483
+ "default": "employee"
1471
2484
  },
1472
2485
  "email": {
1473
2486
  "type": "string"
1474
2487
  },
1475
2488
  "image": {
1476
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
2489
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2490
+ },
2491
+ "isBot": {
2492
+ "type": "boolean",
2493
+ "nullable": true
2494
+ },
2495
+ "isExternal": {
2496
+ "type": "boolean",
2497
+ "nullable": true
1477
2498
  },
1478
2499
  "name": {
1479
2500
  "type": "string"
@@ -1484,14 +2505,14 @@
1484
2505
  "slug": {
1485
2506
  "$ref": "#/components/schemas/slug"
1486
2507
  },
1487
- "telephone": {
1488
- "type": "string"
1489
- },
1490
2508
  "tags": {
1491
2509
  "type": "array",
1492
2510
  "items": {
1493
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
2511
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1494
2512
  }
2513
+ },
2514
+ "telephone": {
2515
+ "type": "string"
1495
2516
  }
1496
2517
  }
1497
2518
  },
@@ -1500,80 +2521,71 @@
1500
2521
  "properties": {
1501
2522
  "sanityType": {
1502
2523
  "enum": [
1503
- 1
2524
+ "candidate"
1504
2525
  ],
1505
- "type": "integer",
1506
- "format": "int32",
1507
- "default": 1
2526
+ "type": "string",
2527
+ "default": "candidate"
1508
2528
  },
1509
2529
  "status": {
1510
2530
  "enum": [
1511
- 1,
1512
- 2,
1513
- 3,
1514
- 4,
1515
- 5,
1516
- 6,
1517
- 7,
1518
- 8
2531
+ "CREATED",
2532
+ "INTRODUCTION_INTERVIEW",
2533
+ "OFFBOARDING",
2534
+ "OFFER",
2535
+ "ONBOARDING",
2536
+ "REJECTED",
2537
+ "SALES_INTERVIEW",
2538
+ "SIGNED",
2539
+ "TECHNICAL_INTERVIEW",
2540
+ "USER_CREATION_REVIEW"
1519
2541
  ],
1520
- "type": "integer",
1521
- "format": "int32",
1522
- "default": 1
2542
+ "type": "string",
2543
+ "default": "CREATED"
1523
2544
  },
1524
- "track": {
1525
- "enum": [
1526
- 1,
1527
- 2
1528
- ],
1529
- "type": "integer",
1530
- "format": "int32",
1531
- "default": 1
2545
+ "address": {
2546
+ "$ref": "#/components/schemas/sanityCandidateAddress"
1532
2547
  },
1533
- "candidate": {
1534
- "type": "string"
2548
+ "allergies": {
2549
+ "type": "array",
2550
+ "items": {
2551
+ "type": "string"
2552
+ }
1535
2553
  },
1536
- "sanityCreatedAt": {
1537
- "type": "string"
2554
+ "applicationLetter": {
2555
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1538
2556
  },
1539
- "sanityId": {
2557
+ "applicationOther": {
1540
2558
  "type": "string"
1541
2559
  },
1542
- "sanityRev": {
2560
+ "bankAccount": {
1543
2561
  "type": "string"
1544
2562
  },
1545
- "sanityUpdatedAt": {
2563
+ "birthDate": {
1546
2564
  "type": "string"
1547
2565
  },
1548
- "addressOption": {
1549
- "$ref": "#/components/schemas/option_sanityCandidateAddress"
1550
- },
1551
- "address": {
1552
- "$ref": "#/components/schemas/sanityCandidateAddress"
1553
- },
1554
- "applicationLetter": {
1555
- "$ref": "#/components/schemas/sanityCandidateGrades"
1556
- },
1557
- "applicationOtherOption": {
1558
- "$ref": "#/components/schemas/option_string"
2566
+ "buddy": {
2567
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1559
2568
  },
1560
- "applicationOther": {
2569
+ "candidate": {
1561
2570
  "type": "string"
1562
2571
  },
1563
- "bankAccountOption": {
1564
- "$ref": "#/components/schemas/option_string"
2572
+ "contractPdf": {
2573
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1565
2574
  },
1566
- "bankAccount": {
2575
+ "contractSignDate": {
1567
2576
  "type": "string"
1568
2577
  },
1569
- "buddy": {
2578
+ "contractSigner": {
1570
2579
  "$ref": "#/components/schemas/sanityEmployeeManager"
1571
2580
  },
2581
+ "contractSignerRole": {
2582
+ "type": "string"
2583
+ },
1572
2584
  "cv": {
1573
- "$ref": "#/components/schemas/sanityCandidateGrades"
2585
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1574
2586
  },
1575
- "emailOption": {
1576
- "$ref": "#/components/schemas/option_string"
2587
+ "education": {
2588
+ "type": "string"
1577
2589
  },
1578
2590
  "email": {
1579
2591
  "type": "string"
@@ -1581,24 +2593,26 @@
1581
2593
  "employee": {
1582
2594
  "$ref": "#/components/schemas/sanityEmployeeManager"
1583
2595
  },
1584
- "fromApplicationOption": {
1585
- "$ref": "#/components/schemas/option_nullable`1"
1586
- },
1587
2596
  "fromApplication": {
1588
- "type": "boolean",
1589
- "nullable": true
1590
- },
1591
- "githubUsernameOption": {
1592
- "$ref": "#/components/schemas/option_string"
2597
+ "type": "boolean"
1593
2598
  },
1594
2599
  "githubUsername": {
1595
2600
  "type": "string"
1596
2601
  },
1597
2602
  "grades": {
1598
- "$ref": "#/components/schemas/sanityCandidateGrades"
2603
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1599
2604
  },
1600
- "offboardingChecklistOption": {
1601
- "$ref": "#/components/schemas/option_list`1"
2605
+ "interviews": {
2606
+ "type": "array",
2607
+ "items": {
2608
+ "$ref": "#/components/schemas/sanityCandidateInterviewsInner"
2609
+ }
2610
+ },
2611
+ "jobPosition": {
2612
+ "$ref": "#/components/schemas/sanityCandidateJobPosition"
2613
+ },
2614
+ "linkedin": {
2615
+ "type": "string"
1602
2616
  },
1603
2617
  "offboardingChecklist": {
1604
2618
  "type": "array",
@@ -1606,8 +2620,8 @@
1606
2620
  "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1607
2621
  }
1608
2622
  },
1609
- "onboardingChecklistOption": {
1610
- "$ref": "#/components/schemas/option_list`1"
2623
+ "offerPdf": {
2624
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1611
2625
  },
1612
2626
  "onboardingChecklist": {
1613
2627
  "type": "array",
@@ -1615,22 +2629,18 @@
1615
2629
  "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1616
2630
  }
1617
2631
  },
1618
- "ownershipOption": {
1619
- "$ref": "#/components/schemas/option_nullable`1"
1620
- },
1621
2632
  "ownership": {
1622
2633
  "type": "number",
1623
- "format": "double",
1624
- "nullable": true
2634
+ "format": "double"
1625
2635
  },
1626
- "preferredDisplayNameOption": {
1627
- "$ref": "#/components/schemas/option_string"
2636
+ "personalNumber": {
2637
+ "type": "string"
1628
2638
  },
1629
- "preferredDisplayName": {
2639
+ "pin": {
1630
2640
  "type": "string"
1631
2641
  },
1632
- "preferredEmailOption": {
1633
- "$ref": "#/components/schemas/option_string"
2642
+ "preferredDisplayName": {
2643
+ "type": "string"
1634
2644
  },
1635
2645
  "preferredEmail": {
1636
2646
  "type": "string"
@@ -1641,36 +2651,45 @@
1641
2651
  "recruiter": {
1642
2652
  "$ref": "#/components/schemas/sanityEmployeeManager"
1643
2653
  },
1644
- "referencesOption": {
1645
- "$ref": "#/components/schemas/option_list`1"
1646
- },
1647
2654
  "references": {
1648
2655
  "type": "array",
1649
2656
  "items": {
1650
2657
  "$ref": "#/components/schemas/sanityCandidateReferencesInner"
1651
2658
  }
1652
2659
  },
1653
- "shortUrlOption": {
1654
- "$ref": "#/components/schemas/option_string"
2660
+ "sanityCreatedAt": {
2661
+ "type": "string"
2662
+ },
2663
+ "sanityId": {
2664
+ "type": "string"
2665
+ },
2666
+ "sanityRev": {
2667
+ "type": "string"
2668
+ },
2669
+ "sanityUpdatedAt": {
2670
+ "type": "string"
1655
2671
  },
1656
2672
  "shortUrl": {
1657
2673
  "type": "string"
1658
2674
  },
2675
+ "signedContract": {
2676
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
2677
+ },
2678
+ "snapchatUsername": {
2679
+ "type": "string"
2680
+ },
2681
+ "startDate": {
2682
+ "type": "string"
2683
+ },
1659
2684
  "systemsActive": {
1660
2685
  "type": "array",
1661
2686
  "items": {
1662
2687
  "$ref": "#/components/schemas/sanitySystemsInner"
1663
2688
  }
1664
2689
  },
1665
- "telephoneOption": {
1666
- "$ref": "#/components/schemas/option_string"
1667
- },
1668
2690
  "telephone": {
1669
2691
  "type": "string"
1670
2692
  },
1671
- "urlOption": {
1672
- "$ref": "#/components/schemas/option_string"
1673
- },
1674
2693
  "url": {
1675
2694
  "type": "string"
1676
2695
  }
@@ -1679,142 +2698,183 @@
1679
2698
  "sanityCandidateAddress": {
1680
2699
  "type": "object",
1681
2700
  "properties": {
1682
- "cityOption": {
1683
- "$ref": "#/components/schemas/option_string"
1684
- },
1685
2701
  "city": {
1686
2702
  "type": "string"
1687
2703
  },
1688
- "postalCodeOption": {
1689
- "$ref": "#/components/schemas/option_string"
1690
- },
1691
2704
  "postalCode": {
1692
2705
  "type": "string"
1693
2706
  },
1694
- "streetOption": {
1695
- "$ref": "#/components/schemas/option_string"
1696
- },
1697
2707
  "street": {
1698
2708
  "type": "string"
1699
2709
  }
1700
2710
  }
1701
2711
  },
1702
- "sanityCandidateGrades": {
2712
+ "sanityCandidateApplicationLetter": {
1703
2713
  "type": "object",
1704
2714
  "properties": {
1705
2715
  "sanityType": {
1706
2716
  "enum": [
1707
- 1
2717
+ "file"
1708
2718
  ],
1709
- "type": "integer",
1710
- "format": "int32",
1711
- "default": 1
2719
+ "type": "string",
2720
+ "default": "file"
1712
2721
  },
1713
2722
  "asset": {
1714
2723
  "$ref": "#/components/schemas/sanityDocFileAsset"
1715
2724
  },
1716
- "mediaOption": {
1717
- "$ref": "#/components/schemas/option_object"
1718
- },
1719
2725
  "media": {
1720
2726
  "type": "object"
1721
2727
  }
1722
2728
  }
1723
2729
  },
1724
- "sanityCandidateOffboardingChecklistInner": {
2730
+ "sanityCandidateInterviewsInner": {
1725
2731
  "type": "object",
1726
2732
  "properties": {
1727
2733
  "sanityType": {
1728
2734
  "enum": [
1729
- 1
2735
+ "interview"
1730
2736
  ],
1731
- "type": "integer",
1732
- "format": "int32",
1733
- "default": 1
2737
+ "type": "string",
2738
+ "default": "interview"
2739
+ },
2740
+ "type": {
2741
+ "enum": [
2742
+ "INTRODUCTION_INTERVIEW",
2743
+ "SALES_INTERVIEW",
2744
+ "TECHNICAL_INTERVIEW"
2745
+ ],
2746
+ "type": "string",
2747
+ "default": "INTRODUCTION_INTERVIEW"
2748
+ },
2749
+ "eventRef": {
2750
+ "$ref": "#/components/schemas/eventReference"
1734
2751
  },
1735
2752
  "sanityKey": {
1736
2753
  "type": "string"
2754
+ }
2755
+ }
2756
+ },
2757
+ "sanityCandidateJobPosition": {
2758
+ "type": "object",
2759
+ "properties": {
2760
+ "sanityType": {
2761
+ "enum": [
2762
+ "jobPosition"
2763
+ ],
2764
+ "type": "string",
2765
+ "default": "jobPosition"
2766
+ },
2767
+ "askForGrades": {
2768
+ "type": "boolean"
2769
+ },
2770
+ "deadline": {
2771
+ "type": "string"
1737
2772
  },
1738
- "sanityRef": {
2773
+ "description": {
2774
+ "type": "array",
2775
+ "items": {
2776
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2777
+ }
2778
+ },
2779
+ "employeeTitle": {
1739
2780
  "type": "string"
1740
2781
  },
1741
- "sanityWeakOption": {
1742
- "$ref": "#/components/schemas/option_nullable`1"
2782
+ "image": {
2783
+ "$ref": "#/components/schemas/sanityCreateTvCategoryDashboardsInnerBackgroundImage"
1743
2784
  },
1744
- "sanityWeak": {
1745
- "type": "boolean",
1746
- "nullable": true
2785
+ "metaDescription": {
2786
+ "type": "string"
2787
+ },
2788
+ "sanityCreatedAt": {
2789
+ "type": "string"
2790
+ },
2791
+ "sanityId": {
2792
+ "type": "string"
2793
+ },
2794
+ "sanityRev": {
2795
+ "type": "string"
2796
+ },
2797
+ "sanityUpdatedAt": {
2798
+ "type": "string"
2799
+ },
2800
+ "slug": {
2801
+ "$ref": "#/components/schemas/slug"
2802
+ },
2803
+ "title": {
2804
+ "type": "string"
1747
2805
  }
1748
2806
  }
1749
2807
  },
1750
- "sanityCandidateReferencesInner": {
2808
+ "sanityCandidateOffboardingChecklistInner": {
1751
2809
  "type": "object",
1752
2810
  "properties": {
1753
2811
  "sanityType": {
1754
2812
  "enum": [
1755
- 1
2813
+ "reference"
1756
2814
  ],
1757
- "type": "integer",
1758
- "format": "int32",
1759
- "default": 1
2815
+ "type": "string",
2816
+ "default": "reference"
1760
2817
  },
1761
2818
  "sanityKey": {
1762
2819
  "type": "string"
1763
2820
  },
1764
- "detailsOption": {
1765
- "$ref": "#/components/schemas/option_string"
2821
+ "sanityRef": {
2822
+ "type": "string"
2823
+ },
2824
+ "sanityWeak": {
2825
+ "type": "boolean"
2826
+ }
2827
+ }
2828
+ },
2829
+ "sanityCandidateReferencesInner": {
2830
+ "type": "object",
2831
+ "properties": {
2832
+ "sanityType": {
2833
+ "enum": [
2834
+ "candidateReference"
2835
+ ],
2836
+ "type": "string",
2837
+ "default": "candidateReference"
1766
2838
  },
1767
2839
  "details": {
1768
2840
  "type": "string"
1769
2841
  },
1770
- "emailOption": {
1771
- "$ref": "#/components/schemas/option_string"
1772
- },
1773
2842
  "email": {
1774
2843
  "type": "string"
1775
2844
  },
1776
- "nameOption": {
1777
- "$ref": "#/components/schemas/option_string"
1778
- },
1779
2845
  "name": {
1780
2846
  "type": "string"
1781
2847
  },
1782
- "phoneOption": {
1783
- "$ref": "#/components/schemas/option_string"
1784
- },
1785
2848
  "phone": {
1786
2849
  "type": "string"
2850
+ },
2851
+ "sanityKey": {
2852
+ "type": "string"
1787
2853
  }
1788
2854
  }
1789
2855
  },
1790
2856
  "sanityCreateSystem": {
1791
2857
  "type": "object",
1792
2858
  "properties": {
1793
- "title": {
1794
- "type": "string"
1795
- },
1796
- "descriptionOption": {
1797
- "$ref": "#/components/schemas/option_list`1"
1798
- },
1799
2859
  "description": {
1800
2860
  "type": "array",
1801
2861
  "items": {
1802
2862
  "type": "object"
1803
2863
  }
1804
2864
  },
1805
- "linksOption": {
1806
- "$ref": "#/components/schemas/option_list`1"
1807
- },
1808
2865
  "links": {
1809
2866
  "type": "array",
1810
2867
  "items": {
1811
2868
  "type": "string"
1812
2869
  }
1813
2870
  },
2871
+ "title": {
2872
+ "type": "string"
2873
+ },
1814
2874
  "additionalProperties": {
1815
2875
  "type": "object",
1816
2876
  "additionalProperties": {
1817
- "$ref": "#/components/schemas/jsonElement"
2877
+ "type": "object"
1818
2878
  }
1819
2879
  }
1820
2880
  }
@@ -1824,18 +2884,11 @@
1824
2884
  "properties": {
1825
2885
  "type": {
1826
2886
  "enum": [
1827
- 1,
1828
- 2
2887
+ "onboarding",
2888
+ "offboarding"
1829
2889
  ],
1830
- "type": "integer",
1831
- "format": "int32",
1832
- "default": 1
1833
- },
1834
- "title": {
1835
- "type": "string"
1836
- },
1837
- "descriptionOption": {
1838
- "$ref": "#/components/schemas/option_list`1"
2890
+ "type": "string",
2891
+ "default": "onboarding"
1839
2892
  },
1840
2893
  "description": {
1841
2894
  "type": "array",
@@ -1843,25 +2896,46 @@
1843
2896
  "type": "object"
1844
2897
  }
1845
2898
  },
1846
- "reminderSlackChannelOption": {
1847
- "$ref": "#/components/schemas/option_string"
1848
- },
1849
2899
  "reminderSlackChannel": {
1850
2900
  "type": "string"
1851
2901
  },
1852
- "reminderWeeksBeforeOption": {
1853
- "$ref": "#/components/schemas/option_nullable`1"
2902
+ "reminderWeeksBefore": {
2903
+ "type": "number",
2904
+ "format": "double",
2905
+ "nullable": true
2906
+ },
2907
+ "title": {
2908
+ "type": "string"
2909
+ },
2910
+ "additionalProperties": {
2911
+ "type": "object",
2912
+ "additionalProperties": {
2913
+ "type": "object"
2914
+ }
2915
+ }
2916
+ }
2917
+ },
2918
+ "sanityCreateTvCategoryDashboardsInnerBackgroundImage": {
2919
+ "type": "object",
2920
+ "properties": {
2921
+ "sanityType": {
2922
+ "enum": [
2923
+ "image"
2924
+ ],
2925
+ "type": "string",
2926
+ "default": "image"
2927
+ },
2928
+ "asset": {
2929
+ "$ref": "#/components/schemas/sanityImageAssetReference"
2930
+ },
2931
+ "crop": {
2932
+ "$ref": "#/components/schemas/sanityImageCrop"
1854
2933
  },
1855
- "reminderWeeksBefore": {
1856
- "type": "number",
1857
- "format": "double",
1858
- "nullable": true
2934
+ "hotspot": {
2935
+ "$ref": "#/components/schemas/sanityImageHotspot"
1859
2936
  },
1860
- "additionalProperties": {
1861
- "type": "object",
1862
- "additionalProperties": {
1863
- "$ref": "#/components/schemas/jsonElement"
1864
- }
2937
+ "media": {
2938
+ "type": "object"
1865
2939
  }
1866
2940
  }
1867
2941
  },
@@ -1870,21 +2944,32 @@
1870
2944
  "properties": {
1871
2945
  "sanityType": {
1872
2946
  "enum": [
1873
- 1
2947
+ "sanity.fileAsset"
1874
2948
  ],
1875
- "type": "integer",
1876
- "format": "int32",
1877
- "default": 1
2949
+ "type": "string",
2950
+ "default": "sanity.fileAsset"
2951
+ },
2952
+ "altText": {
2953
+ "type": "string"
1878
2954
  },
1879
2955
  "assetId": {
1880
2956
  "type": "string"
1881
2957
  },
2958
+ "description": {
2959
+ "type": "string"
2960
+ },
1882
2961
  "extension": {
1883
2962
  "type": "string"
1884
2963
  },
2964
+ "label": {
2965
+ "type": "string"
2966
+ },
1885
2967
  "mimeType": {
1886
2968
  "type": "string"
1887
2969
  },
2970
+ "originalFilename": {
2971
+ "type": "string"
2972
+ },
1888
2973
  "path": {
1889
2974
  "type": "string"
1890
2975
  },
@@ -1907,50 +2992,17 @@
1907
2992
  "type": "number",
1908
2993
  "format": "double"
1909
2994
  },
1910
- "url": {
1911
- "type": "string"
1912
- },
1913
- "altTextOption": {
1914
- "$ref": "#/components/schemas/option_string"
1915
- },
1916
- "altText": {
1917
- "type": "string"
1918
- },
1919
- "descriptionOption": {
1920
- "$ref": "#/components/schemas/option_string"
1921
- },
1922
- "description": {
1923
- "type": "string"
1924
- },
1925
- "labelOption": {
1926
- "$ref": "#/components/schemas/option_string"
1927
- },
1928
- "label": {
1929
- "type": "string"
1930
- },
1931
- "originalFilenameOption": {
1932
- "$ref": "#/components/schemas/option_string"
1933
- },
1934
- "originalFilename": {
1935
- "type": "string"
1936
- },
1937
- "sourceOption": {
1938
- "$ref": "#/components/schemas/option_sanityAssetSourceData"
1939
- },
1940
2995
  "source": {
1941
2996
  "$ref": "#/components/schemas/sanityAssetSourceData"
1942
2997
  },
1943
- "titleOption": {
1944
- "$ref": "#/components/schemas/option_string"
1945
- },
1946
2998
  "title": {
1947
2999
  "type": "string"
1948
3000
  },
1949
- "uploadIdOption": {
1950
- "$ref": "#/components/schemas/option_string"
1951
- },
1952
3001
  "uploadId": {
1953
3002
  "type": "string"
3003
+ },
3004
+ "url": {
3005
+ "type": "string"
1954
3006
  }
1955
3007
  }
1956
3008
  },
@@ -1959,17 +3011,24 @@
1959
3011
  "properties": {
1960
3012
  "sanityType": {
1961
3013
  "enum": [
1962
- 1
3014
+ "employee"
1963
3015
  ],
1964
- "type": "integer",
1965
- "format": "int32",
1966
- "default": 1
3016
+ "type": "string",
3017
+ "default": "employee"
1967
3018
  },
1968
3019
  "email": {
1969
3020
  "type": "string"
1970
3021
  },
1971
3022
  "image": {
1972
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
3023
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
3024
+ },
3025
+ "isBot": {
3026
+ "type": "boolean",
3027
+ "nullable": true
3028
+ },
3029
+ "isExternal": {
3030
+ "type": "boolean",
3031
+ "nullable": true
1973
3032
  },
1974
3033
  "name": {
1975
3034
  "type": "string"
@@ -1980,14 +3039,14 @@
1980
3039
  "slug": {
1981
3040
  "$ref": "#/components/schemas/slug"
1982
3041
  },
1983
- "telephone": {
1984
- "type": "string"
1985
- },
1986
3042
  "tags": {
1987
3043
  "type": "array",
1988
3044
  "items": {
1989
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3045
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1990
3046
  }
3047
+ },
3048
+ "telephone": {
3049
+ "type": "string"
1991
3050
  }
1992
3051
  }
1993
3052
  },
@@ -1996,21 +3055,16 @@
1996
3055
  "properties": {
1997
3056
  "sanityType": {
1998
3057
  "enum": [
1999
- 1
3058
+ "reference"
2000
3059
  ],
2001
- "type": "integer",
2002
- "format": "int32",
2003
- "default": 1
3060
+ "type": "string",
3061
+ "default": "reference"
2004
3062
  },
2005
3063
  "sanityRef": {
2006
3064
  "type": "string"
2007
3065
  },
2008
- "sanityWeakOption": {
2009
- "$ref": "#/components/schemas/option_nullable`1"
2010
- },
2011
3066
  "sanityWeak": {
2012
- "type": "boolean",
2013
- "nullable": true
3067
+ "type": "boolean"
2014
3068
  }
2015
3069
  }
2016
3070
  },
@@ -2019,21 +3073,16 @@
2019
3073
  "properties": {
2020
3074
  "sanityType": {
2021
3075
  "enum": [
2022
- 1
3076
+ "reference"
2023
3077
  ],
2024
- "type": "integer",
2025
- "format": "int32",
2026
- "default": 1
3078
+ "type": "string",
3079
+ "default": "reference"
2027
3080
  },
2028
3081
  "sanityRef": {
2029
3082
  "type": "string"
2030
3083
  },
2031
- "sanityWeakOption": {
2032
- "$ref": "#/components/schemas/option_nullable`1"
2033
- },
2034
3084
  "sanityWeak": {
2035
- "type": "boolean",
2036
- "nullable": true
3085
+ "type": "boolean"
2037
3086
  }
2038
3087
  }
2039
3088
  },
@@ -2042,11 +3091,10 @@
2042
3091
  "properties": {
2043
3092
  "sanityType": {
2044
3093
  "enum": [
2045
- 1
3094
+ "sanity.imageCrop"
2046
3095
  ],
2047
- "type": "integer",
2048
- "format": "int32",
2049
- "default": 1
3096
+ "type": "string",
3097
+ "default": "sanity.imageCrop"
2050
3098
  },
2051
3099
  "bottom": {
2052
3100
  "type": "number",
@@ -2071,11 +3119,10 @@
2071
3119
  "properties": {
2072
3120
  "sanityType": {
2073
3121
  "enum": [
2074
- 1
3122
+ "sanity.imageHotspot"
2075
3123
  ],
2076
- "type": "integer",
2077
- "format": "int32",
2078
- "default": 1
3124
+ "type": "string",
3125
+ "default": "sanity.imageHotspot"
2079
3126
  },
2080
3127
  "height": {
2081
3128
  "type": "number",
@@ -2098,309 +3145,90 @@
2098
3145
  "sanityJobPosition": {
2099
3146
  "type": "object",
2100
3147
  "properties": {
2101
- "sanityType": {
2102
- "enum": [
2103
- 1
2104
- ],
2105
- "type": "integer",
2106
- "format": "int32",
2107
- "default": 1
2108
- },
2109
- "askForGrades": {
2110
- "type": "boolean"
2111
- },
2112
- "description": {
2113
- "type": "array",
2114
- "items": {
2115
- "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2116
- }
2117
- },
2118
- "metaDescription": {
2119
- "type": "string"
2120
- },
2121
- "sanityCreatedAt": {
2122
- "type": "string"
2123
- },
2124
- "sanityId": {
2125
- "type": "string"
2126
- },
2127
- "sanityRev": {
2128
- "type": "string"
2129
- },
2130
- "sanityUpdatedAt": {
2131
- "type": "string"
2132
- },
2133
- "slug": {
2134
- "$ref": "#/components/schemas/slug"
2135
- },
2136
- "title": {
2137
- "type": "string"
2138
- },
2139
- "deadlineOption": {
2140
- "$ref": "#/components/schemas/option_string"
2141
- },
2142
- "deadline": {
2143
- "type": "string"
2144
- },
2145
- "image": {
2146
- "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2147
- }
2148
- }
2149
- },
2150
- "sanityOnboardingTask": {
2151
- "type": "object",
2152
- "properties": {
2153
- "type": {
2154
- "enum": [
2155
- 1
2156
- ],
2157
- "type": "integer",
2158
- "format": "int32",
2159
- "default": 1
2160
- },
2161
- "reminderSlackChannel": {
2162
- "type": "string"
2163
- },
2164
- "reminderWeeksBefore": {
2165
- "type": "number",
2166
- "format": "double"
2167
- },
2168
- "sanityCreatedAt": {
2169
- "type": "string"
2170
- },
2171
- "sanityId": {
2172
- "type": "string"
2173
- },
2174
- "sanityRev": {
2175
- "type": "string"
2176
- },
2177
- "sanityType": {
2178
- "type": "string"
2179
- },
2180
- "sanityUpdatedAt": {
2181
- "type": "string"
2182
- },
2183
- "title": {
2184
- "type": "string"
2185
- },
2186
- "additionalProperties": {
2187
- "type": "object",
2188
- "additionalProperties": {
2189
- "$ref": "#/components/schemas/jsonElement"
2190
- }
2191
- }
2192
- }
2193
- },
2194
- "sanityPatchCandidate": {
2195
- "type": "object",
2196
- "properties": {
2197
- "sanityTypeOption": {
2198
- "$ref": "#/components/schemas/option_nullable`1"
2199
- },
2200
- "sanityType": {
2201
- "enum": [
2202
- 1
2203
- ],
2204
- "type": "integer",
2205
- "format": "int32",
2206
- "default": 1,
2207
- "nullable": true
2208
- },
2209
- "statusOption": {
2210
- "$ref": "#/components/schemas/option_nullable`1"
2211
- },
2212
- "status": {
2213
- "enum": [
2214
- 1,
2215
- 2,
2216
- 3,
2217
- 4,
2218
- 5,
2219
- 6,
2220
- 7,
2221
- 8
2222
- ],
2223
- "type": "integer",
2224
- "format": "int32",
2225
- "default": 1,
2226
- "nullable": true
2227
- },
2228
- "trackOption": {
2229
- "$ref": "#/components/schemas/option_nullable`1"
2230
- },
2231
- "track": {
2232
- "enum": [
2233
- 1,
2234
- 2
2235
- ],
2236
- "type": "integer",
2237
- "format": "int32",
2238
- "default": 1,
2239
- "nullable": true
2240
- },
2241
- "addressOption": {
2242
- "$ref": "#/components/schemas/option_sanityPatchCandidateAddress"
2243
- },
2244
- "address": {
2245
- "$ref": "#/components/schemas/sanityPatchCandidateAddress"
2246
- },
2247
- "applicationLetterOption": {
2248
- "$ref": "#/components/schemas/option_sanityPatchCandidateApplicationLetter"
2249
- },
2250
- "applicationLetter": {
2251
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2252
- },
2253
- "applicationOtherOption": {
2254
- "$ref": "#/components/schemas/option_string"
2255
- },
2256
- "applicationOther": {
2257
- "type": "string"
2258
- },
2259
- "bankAccountOption": {
2260
- "$ref": "#/components/schemas/option_string"
2261
- },
2262
- "bankAccount": {
2263
- "type": "string"
2264
- },
2265
- "buddyOption": {
2266
- "$ref": "#/components/schemas/option_employeeReference"
2267
- },
2268
- "buddy": {
2269
- "$ref": "#/components/schemas/employeeReference"
2270
- },
2271
- "candidateOption": {
2272
- "$ref": "#/components/schemas/option_string"
2273
- },
2274
- "candidate": {
2275
- "type": "string"
2276
- },
2277
- "cvOption": {
2278
- "$ref": "#/components/schemas/option_sanityPatchCandidateApplicationLetter"
2279
- },
2280
- "cv": {
2281
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2282
- },
2283
- "emailOption": {
2284
- "$ref": "#/components/schemas/option_string"
2285
- },
2286
- "email": {
2287
- "type": "string"
2288
- },
2289
- "employeeOption": {
2290
- "$ref": "#/components/schemas/option_employeeReference"
2291
- },
2292
- "employee": {
2293
- "$ref": "#/components/schemas/employeeReference"
2294
- },
2295
- "fromApplicationOption": {
2296
- "$ref": "#/components/schemas/option_nullable`1"
2297
- },
2298
- "fromApplication": {
2299
- "type": "boolean",
2300
- "nullable": true
2301
- },
2302
- "githubUsernameOption": {
2303
- "$ref": "#/components/schemas/option_string"
2304
- },
2305
- "githubUsername": {
2306
- "type": "string"
2307
- },
2308
- "gradesOption": {
2309
- "$ref": "#/components/schemas/option_sanityPatchCandidateApplicationLetter"
2310
- },
2311
- "grades": {
2312
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2313
- },
2314
- "offboardingChecklistOption": {
2315
- "$ref": "#/components/schemas/option_list`1"
2316
- },
2317
- "offboardingChecklist": {
2318
- "type": "array",
2319
- "items": {
2320
- "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2321
- }
3148
+ "sanityType": {
3149
+ "enum": [
3150
+ "jobPosition"
3151
+ ],
3152
+ "type": "string",
3153
+ "default": "jobPosition"
2322
3154
  },
2323
- "onboardingChecklistOption": {
2324
- "$ref": "#/components/schemas/option_list`1"
3155
+ "askForGrades": {
3156
+ "type": "boolean"
2325
3157
  },
2326
- "onboardingChecklist": {
3158
+ "deadline": {
3159
+ "type": "string"
3160
+ },
3161
+ "description": {
2327
3162
  "type": "array",
2328
3163
  "items": {
2329
- "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
3164
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2330
3165
  }
2331
3166
  },
2332
- "ownershipOption": {
2333
- "$ref": "#/components/schemas/option_nullable`1"
2334
- },
2335
- "ownership": {
2336
- "type": "number",
2337
- "format": "double",
2338
- "nullable": true
2339
- },
2340
- "preferredDisplayNameOption": {
2341
- "$ref": "#/components/schemas/option_string"
2342
- },
2343
- "preferredDisplayName": {
3167
+ "employeeTitle": {
2344
3168
  "type": "string"
2345
3169
  },
2346
- "preferredEmailOption": {
2347
- "$ref": "#/components/schemas/option_string"
3170
+ "image": {
3171
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2348
3172
  },
2349
- "preferredEmail": {
3173
+ "metaDescription": {
2350
3174
  "type": "string"
2351
3175
  },
2352
- "profileImageOption": {
2353
- "$ref": "#/components/schemas/option_sanityPatchPageMetaImage"
3176
+ "sanityCreatedAt": {
3177
+ "type": "string"
2354
3178
  },
2355
- "profileImage": {
2356
- "$ref": "#/components/schemas/sanityPatchPageMetaImage"
3179
+ "sanityId": {
3180
+ "type": "string"
2357
3181
  },
2358
- "recruiterOption": {
2359
- "$ref": "#/components/schemas/option_employeeReference"
3182
+ "sanityRev": {
3183
+ "type": "string"
2360
3184
  },
2361
- "recruiter": {
2362
- "$ref": "#/components/schemas/employeeReference"
3185
+ "sanityUpdatedAt": {
3186
+ "type": "string"
2363
3187
  },
2364
- "referencesOption": {
2365
- "$ref": "#/components/schemas/option_list`1"
3188
+ "slug": {
3189
+ "$ref": "#/components/schemas/slug"
2366
3190
  },
2367
- "references": {
2368
- "type": "array",
2369
- "items": {
2370
- "$ref": "#/components/schemas/sanityCandidateReferencesInner"
2371
- }
3191
+ "title": {
3192
+ "type": "string"
3193
+ }
3194
+ }
3195
+ },
3196
+ "sanityOnboardingTask": {
3197
+ "type": "object",
3198
+ "properties": {
3199
+ "type": {
3200
+ "enum": [
3201
+ "onboarding"
3202
+ ],
3203
+ "type": "string",
3204
+ "default": "onboarding"
2372
3205
  },
2373
- "shortUrlOption": {
2374
- "$ref": "#/components/schemas/option_string"
3206
+ "remindDaysBefore": {
3207
+ "type": "number",
3208
+ "format": "double"
2375
3209
  },
2376
- "shortUrl": {
3210
+ "sanityCreatedAt": {
2377
3211
  "type": "string"
2378
3212
  },
2379
- "systemsActiveOption": {
2380
- "$ref": "#/components/schemas/option_list`1"
2381
- },
2382
- "systemsActive": {
2383
- "type": "array",
2384
- "items": {
2385
- "$ref": "#/components/schemas/sanityPatchCandidateSystemsActiveInner"
2386
- }
3213
+ "sanityId": {
3214
+ "type": "string"
2387
3215
  },
2388
- "telephoneOption": {
2389
- "$ref": "#/components/schemas/option_string"
3216
+ "sanityRev": {
3217
+ "type": "string"
2390
3218
  },
2391
- "telephone": {
3219
+ "sanityType": {
2392
3220
  "type": "string"
2393
3221
  },
2394
- "urlOption": {
2395
- "$ref": "#/components/schemas/option_string"
3222
+ "sanityUpdatedAt": {
3223
+ "type": "string"
2396
3224
  },
2397
- "url": {
3225
+ "title": {
2398
3226
  "type": "string"
2399
3227
  },
2400
3228
  "additionalProperties": {
2401
3229
  "type": "object",
2402
3230
  "additionalProperties": {
2403
- "$ref": "#/components/schemas/jsonElement"
3231
+ "type": "object"
2404
3232
  }
2405
3233
  }
2406
3234
  }
@@ -2408,21 +3236,12 @@
2408
3236
  "sanityPatchCandidateAddress": {
2409
3237
  "type": "object",
2410
3238
  "properties": {
2411
- "cityOption": {
2412
- "$ref": "#/components/schemas/option_string"
2413
- },
2414
3239
  "city": {
2415
3240
  "type": "string"
2416
3241
  },
2417
- "postalCodeOption": {
2418
- "$ref": "#/components/schemas/option_string"
2419
- },
2420
3242
  "postalCode": {
2421
3243
  "type": "string"
2422
3244
  },
2423
- "streetOption": {
2424
- "$ref": "#/components/schemas/option_string"
2425
- },
2426
3245
  "street": {
2427
3246
  "type": "string"
2428
3247
  }
@@ -2433,36 +3252,55 @@
2433
3252
  "properties": {
2434
3253
  "sanityType": {
2435
3254
  "enum": [
2436
- 1
3255
+ "file"
2437
3256
  ],
2438
- "type": "integer",
2439
- "format": "int32",
2440
- "default": 1
2441
- },
2442
- "assetOption": {
2443
- "$ref": "#/components/schemas/option_sanityFileAssetReference"
3257
+ "type": "string",
3258
+ "default": "file"
2444
3259
  },
2445
3260
  "asset": {
2446
3261
  "$ref": "#/components/schemas/sanityFileAssetReference"
2447
3262
  },
2448
- "mediaOption": {
2449
- "$ref": "#/components/schemas/option_object"
2450
- },
2451
3263
  "media": {
2452
3264
  "type": "object"
2453
3265
  }
2454
3266
  }
2455
3267
  },
3268
+ "sanityPatchCandidateInterviewsInner": {
3269
+ "type": "object",
3270
+ "properties": {
3271
+ "sanityType": {
3272
+ "enum": [
3273
+ "interview"
3274
+ ],
3275
+ "type": "string",
3276
+ "default": "interview"
3277
+ },
3278
+ "type": {
3279
+ "enum": [
3280
+ "INTRODUCTION_INTERVIEW",
3281
+ "TECHNICAL_INTERVIEW",
3282
+ "SALES_INTERVIEW"
3283
+ ],
3284
+ "type": "string",
3285
+ "default": "INTRODUCTION_INTERVIEW"
3286
+ },
3287
+ "eventRef": {
3288
+ "$ref": "#/components/schemas/eventReference"
3289
+ },
3290
+ "sanityKey": {
3291
+ "type": "string"
3292
+ }
3293
+ }
3294
+ },
2456
3295
  "sanityPatchCandidateSystemsActiveInner": {
2457
3296
  "type": "object",
2458
3297
  "properties": {
2459
3298
  "sanityType": {
2460
3299
  "enum": [
2461
- 1
3300
+ "reference"
2462
3301
  ],
2463
- "type": "integer",
2464
- "format": "int32",
2465
- "default": 1
3302
+ "type": "string",
3303
+ "default": "reference"
2466
3304
  },
2467
3305
  "sanityKey": {
2468
3306
  "type": "string"
@@ -2470,12 +3308,8 @@
2470
3308
  "sanityRef": {
2471
3309
  "type": "string"
2472
3310
  },
2473
- "sanityWeakOption": {
2474
- "$ref": "#/components/schemas/option_nullable`1"
2475
- },
2476
3311
  "sanityWeak": {
2477
- "type": "boolean",
2478
- "nullable": true
3312
+ "type": "boolean"
2479
3313
  }
2480
3314
  }
2481
3315
  },
@@ -2484,33 +3318,20 @@
2484
3318
  "properties": {
2485
3319
  "sanityType": {
2486
3320
  "enum": [
2487
- 1
3321
+ "image"
2488
3322
  ],
2489
- "type": "integer",
2490
- "format": "int32",
2491
- "default": 1
2492
- },
2493
- "assetOption": {
2494
- "$ref": "#/components/schemas/option_sanityImageAssetReference"
3323
+ "type": "string",
3324
+ "default": "image"
2495
3325
  },
2496
3326
  "asset": {
2497
3327
  "$ref": "#/components/schemas/sanityImageAssetReference"
2498
3328
  },
2499
- "cropOption": {
2500
- "$ref": "#/components/schemas/option_sanityImageCrop"
2501
- },
2502
3329
  "crop": {
2503
3330
  "$ref": "#/components/schemas/sanityImageCrop"
2504
3331
  },
2505
- "hotspotOption": {
2506
- "$ref": "#/components/schemas/option_sanityImageHotspot"
2507
- },
2508
3332
  "hotspot": {
2509
3333
  "$ref": "#/components/schemas/sanityImageHotspot"
2510
3334
  },
2511
- "mediaOption": {
2512
- "$ref": "#/components/schemas/option_object"
2513
- },
2514
3335
  "media": {
2515
3336
  "type": "object"
2516
3337
  }
@@ -2519,34 +3340,25 @@
2519
3340
  "sanityPatchSystem": {
2520
3341
  "type": "object",
2521
3342
  "properties": {
2522
- "descriptionOption": {
2523
- "$ref": "#/components/schemas/option_list`1"
2524
- },
2525
3343
  "description": {
2526
3344
  "type": "array",
2527
3345
  "items": {
2528
3346
  "type": "object"
2529
3347
  }
2530
3348
  },
2531
- "linksOption": {
2532
- "$ref": "#/components/schemas/option_list`1"
2533
- },
2534
3349
  "links": {
2535
3350
  "type": "array",
2536
3351
  "items": {
2537
3352
  "type": "string"
2538
3353
  }
2539
3354
  },
2540
- "titleOption": {
2541
- "$ref": "#/components/schemas/option_string"
2542
- },
2543
3355
  "title": {
2544
3356
  "type": "string"
2545
3357
  },
2546
3358
  "additionalProperties": {
2547
3359
  "type": "object",
2548
3360
  "additionalProperties": {
2549
- "$ref": "#/components/schemas/jsonElement"
3361
+ "type": "object"
2550
3362
  }
2551
3363
  }
2552
3364
  }
@@ -2554,52 +3366,36 @@
2554
3366
  "sanityPatchTask": {
2555
3367
  "type": "object",
2556
3368
  "properties": {
2557
- "typeOption": {
2558
- "$ref": "#/components/schemas/option_nullable`1"
2559
- },
2560
3369
  "type": {
2561
3370
  "enum": [
2562
- 1,
2563
- 2
3371
+ "onboarding",
3372
+ "offboarding"
2564
3373
  ],
2565
- "type": "integer",
2566
- "format": "int32",
2567
- "default": 1,
3374
+ "type": "string",
3375
+ "default": "onboarding",
2568
3376
  "nullable": true
2569
3377
  },
2570
- "descriptionOption": {
2571
- "$ref": "#/components/schemas/option_list`1"
2572
- },
2573
3378
  "description": {
2574
3379
  "type": "array",
2575
3380
  "items": {
2576
3381
  "type": "object"
2577
3382
  }
2578
3383
  },
2579
- "reminderSlackChannelOption": {
2580
- "$ref": "#/components/schemas/option_string"
2581
- },
2582
3384
  "reminderSlackChannel": {
2583
3385
  "type": "string"
2584
3386
  },
2585
- "reminderWeeksBeforeOption": {
2586
- "$ref": "#/components/schemas/option_nullable`1"
2587
- },
2588
3387
  "reminderWeeksBefore": {
2589
3388
  "type": "number",
2590
3389
  "format": "double",
2591
3390
  "nullable": true
2592
3391
  },
2593
- "titleOption": {
2594
- "$ref": "#/components/schemas/option_string"
2595
- },
2596
3392
  "title": {
2597
3393
  "type": "string"
2598
3394
  },
2599
3395
  "additionalProperties": {
2600
3396
  "type": "object",
2601
3397
  "additionalProperties": {
2602
- "$ref": "#/components/schemas/jsonElement"
3398
+ "type": "object"
2603
3399
  }
2604
3400
  }
2605
3401
  }
@@ -2607,32 +3403,31 @@
2607
3403
  "sanitySystemsInner": {
2608
3404
  "type": "object",
2609
3405
  "properties": {
2610
- "sanityType": {
3406
+ "reminderSlackChannel": {
2611
3407
  "enum": [
2612
- 1
3408
+ "#spor-økonomi",
3409
+ "#spor-rekruttering",
3410
+ "#spor-selskapsadmin",
3411
+ "#spor-sosialt",
3412
+ "#spor-utvikling"
2613
3413
  ],
2614
- "type": "integer",
2615
- "format": "int32",
2616
- "default": 1
2617
- },
2618
- "sanityCreatedAt": {
2619
- "type": "string"
2620
- },
2621
- "sanityId": {
2622
- "type": "string"
3414
+ "type": "string",
3415
+ "default": "#spor-økonomi",
3416
+ "nullable": true
2623
3417
  },
2624
- "sanityRev": {
2625
- "type": "string"
3418
+ "sanityType": {
3419
+ "enum": [
3420
+ "system"
3421
+ ],
3422
+ "type": "string",
3423
+ "default": "system"
2626
3424
  },
2627
- "sanityUpdatedAt": {
3425
+ "activateUrl": {
2628
3426
  "type": "string"
2629
3427
  },
2630
- "title": {
3428
+ "deactivateUrl": {
2631
3429
  "type": "string"
2632
3430
  },
2633
- "descriptionOption": {
2634
- "$ref": "#/components/schemas/option_list`1"
2635
- },
2636
3431
  "description": {
2637
3432
  "type": "array",
2638
3433
  "items": {
@@ -2642,88 +3437,85 @@
2642
3437
  "image": {
2643
3438
  "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2644
3439
  },
2645
- "linksOption": {
2646
- "$ref": "#/components/schemas/option_list`1"
2647
- },
2648
3440
  "links": {
2649
3441
  "type": "array",
2650
3442
  "items": {
2651
3443
  "type": "string"
2652
3444
  }
3445
+ },
3446
+ "remindDaysBefore": {
3447
+ "type": "number",
3448
+ "format": "double"
3449
+ },
3450
+ "sanityCreatedAt": {
3451
+ "type": "string"
3452
+ },
3453
+ "sanityId": {
3454
+ "type": "string"
3455
+ },
3456
+ "sanityRev": {
3457
+ "type": "string"
3458
+ },
3459
+ "sanityUpdatedAt": {
3460
+ "type": "string"
3461
+ },
3462
+ "title": {
3463
+ "type": "string"
2653
3464
  }
2654
3465
  }
2655
3466
  },
2656
3467
  "sanitySystemsInnerDescriptionInner": {
2657
3468
  "type": "object",
2658
3469
  "properties": {
2659
- "sanityType": {
2660
- "enum": [
2661
- 1
2662
- ],
2663
- "type": "integer",
2664
- "format": "int32",
2665
- "default": 1
2666
- },
2667
- "listItemOption": {
2668
- "$ref": "#/components/schemas/option_nullable`1"
2669
- },
2670
3470
  "listItem": {
2671
3471
  "enum": [
2672
- 1,
2673
- 2
3472
+ "bullet",
3473
+ "number"
2674
3474
  ],
2675
- "type": "integer",
2676
- "format": "int32",
2677
- "default": 1,
3475
+ "type": "string",
3476
+ "default": "bullet",
2678
3477
  "nullable": true
2679
3478
  },
2680
- "styleOption": {
2681
- "$ref": "#/components/schemas/option_nullable`1"
3479
+ "sanityType": {
3480
+ "enum": [
3481
+ "block"
3482
+ ],
3483
+ "type": "string",
3484
+ "default": "block"
2682
3485
  },
2683
3486
  "style": {
2684
3487
  "enum": [
2685
- 1,
2686
- 2,
2687
- 3,
2688
- 4,
2689
- 5,
2690
- 6,
2691
- 7,
2692
- 8
3488
+ "blockquote",
3489
+ "h1",
3490
+ "h2",
3491
+ "h3",
3492
+ "h4",
3493
+ "h5",
3494
+ "h6",
3495
+ "normal"
2693
3496
  ],
2694
- "type": "integer",
2695
- "format": "int32",
2696
- "default": 1,
3497
+ "type": "string",
3498
+ "default": "blockquote",
2697
3499
  "nullable": true
2698
3500
  },
2699
- "sanityKey": {
2700
- "type": "string"
2701
- },
2702
- "childrenOption": {
2703
- "$ref": "#/components/schemas/option_list`1"
2704
- },
2705
3501
  "children": {
2706
3502
  "type": "array",
2707
3503
  "items": {
2708
3504
  "$ref": "#/components/schemas/componentBlocksInnerOneOfChildrenInner"
2709
3505
  }
2710
3506
  },
2711
- "levelOption": {
2712
- "$ref": "#/components/schemas/option_nullable`1"
2713
- },
2714
3507
  "level": {
2715
3508
  "type": "number",
2716
- "format": "double",
2717
- "nullable": true
2718
- },
2719
- "markDefsOption": {
2720
- "$ref": "#/components/schemas/option_list`1"
3509
+ "format": "double"
2721
3510
  },
2722
3511
  "markDefs": {
2723
3512
  "type": "array",
2724
3513
  "items": {
2725
3514
  "$ref": "#/components/schemas/componentBlocksInnerOneOfMarkDefsInner"
2726
3515
  }
3516
+ },
3517
+ "sanityKey": {
3518
+ "type": "string"
2727
3519
  }
2728
3520
  }
2729
3521
  },
@@ -2732,12 +3524,25 @@
2732
3524
  "properties": {
2733
3525
  "type": {
2734
3526
  "enum": [
2735
- 1,
2736
- 2
3527
+ "onboarding",
3528
+ "offboarding"
2737
3529
  ],
2738
- "type": "integer",
2739
- "format": "int32",
2740
- "default": 1
3530
+ "type": "string",
3531
+ "default": "onboarding"
3532
+ },
3533
+ "description": {
3534
+ "type": "array",
3535
+ "items": {
3536
+ "type": "object"
3537
+ }
3538
+ },
3539
+ "reminderSlackChannel": {
3540
+ "type": "string"
3541
+ },
3542
+ "reminderWeeksBefore": {
3543
+ "type": "number",
3544
+ "format": "double",
3545
+ "nullable": true
2741
3546
  },
2742
3547
  "sanityCreatedAt": {
2743
3548
  "type": "string"
@@ -2757,38 +3562,23 @@
2757
3562
  "title": {
2758
3563
  "type": "string"
2759
3564
  },
2760
- "description": {
2761
- "type": "array",
2762
- "items": {
2763
- "type": "object"
2764
- }
2765
- },
2766
- "reminderSlackChannel": {
2767
- "type": "string"
2768
- },
2769
- "reminderWeeksBefore": {
2770
- "type": "number",
2771
- "format": "double",
2772
- "nullable": true
2773
- },
2774
3565
  "additionalProperties": {
2775
3566
  "type": "object",
2776
3567
  "additionalProperties": {
2777
- "$ref": "#/components/schemas/jsonElement"
3568
+ "type": "object"
2778
3569
  }
2779
3570
  }
2780
3571
  }
2781
3572
  },
2782
- "sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent": {
3573
+ "sanityTechnologyWithRelationsEmployeesInnerTagsInner": {
2783
3574
  "type": "object",
2784
3575
  "properties": {
2785
3576
  "sanityType": {
2786
3577
  "enum": [
2787
- 1
3578
+ "tag"
2788
3579
  ],
2789
- "type": "integer",
2790
- "format": "int32",
2791
- "default": 1
3580
+ "type": "string",
3581
+ "default": "tag"
2792
3582
  },
2793
3583
  "name": {
2794
3584
  "type": "string"
@@ -2801,32 +3591,15 @@
2801
3591
  }
2802
3592
  }
2803
3593
  },
2804
- "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo": {
2805
- "type": "object",
2806
- "properties": {
2807
- "sanityType": {
2808
- "enum": [
2809
- 1
2810
- ],
2811
- "type": "integer",
2812
- "format": "int32",
2813
- "default": 1
2814
- },
2815
- "asset": {
2816
- "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
2817
- }
2818
- }
2819
- },
2820
3594
  "sanityTvCategoryDashboardsInnerBackgroundImage": {
2821
3595
  "type": "object",
2822
3596
  "properties": {
2823
3597
  "sanityType": {
2824
3598
  "enum": [
2825
- 1
3599
+ "image"
2826
3600
  ],
2827
- "type": "integer",
2828
- "format": "int32",
2829
- "default": 1
3601
+ "type": "string",
3602
+ "default": "image"
2830
3603
  },
2831
3604
  "asset": {
2832
3605
  "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
@@ -2838,22 +3611,21 @@
2838
3611
  "properties": {
2839
3612
  "sanityType": {
2840
3613
  "enum": [
2841
- 1
3614
+ "sanity.imageAsset"
2842
3615
  ],
2843
- "type": "integer",
2844
- "format": "int32",
2845
- "default": 1
3616
+ "type": "string",
3617
+ "default": "sanity.imageAsset"
2846
3618
  },
2847
3619
  "mimeType": {
2848
3620
  "type": "string"
2849
3621
  },
2850
- "sanityId": {
3622
+ "originalFilename": {
2851
3623
  "type": "string"
2852
3624
  },
2853
- "url": {
3625
+ "sanityId": {
2854
3626
  "type": "string"
2855
3627
  },
2856
- "originalFilename": {
3628
+ "url": {
2857
3629
  "type": "string"
2858
3630
  }
2859
3631
  }
@@ -2863,18 +3635,14 @@
2863
3635
  "properties": {
2864
3636
  "sanityType": {
2865
3637
  "enum": [
2866
- 1
3638
+ "slug"
2867
3639
  ],
2868
- "type": "integer",
2869
- "format": "int32",
2870
- "default": 1
3640
+ "type": "string",
3641
+ "default": "slug"
2871
3642
  },
2872
3643
  "current": {
2873
3644
  "type": "string"
2874
3645
  },
2875
- "sourceOption": {
2876
- "$ref": "#/components/schemas/option_string"
2877
- },
2878
3646
  "source": {
2879
3647
  "type": "string"
2880
3648
  }
@@ -2886,14 +3654,19 @@
2886
3654
  "type": "oauth2",
2887
3655
  "flows": {
2888
3656
  "implicit": {
2889
- "authorizationUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/authorize",
2890
- "tokenUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/token",
2891
- "refreshUrl": "https://login.microsoftonline.com/81a4f38d-6712-4b65-868b-c3771f9ba91e/oauth2/v2.0/token",
3657
+ "authorizationUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize",
3658
+ "tokenUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
3659
+ "refreshUrl": "https://login.microsoftonline.com/organizations/oauth2/v2.0/token",
2892
3660
  "scopes": {
2893
- "api://b9f9de6f-132f-4a9a-a583-e9054a46f2fa/.default": "Default function scope"
3661
+ "api://bb21a8d0-366b-4a95-aa59-dbbf708322d1/.default": "Default function scope"
2894
3662
  }
2895
3663
  }
2896
3664
  }
3665
+ },
3666
+ "ApiKey": {
3667
+ "type": "http",
3668
+ "scheme": "bearer",
3669
+ "bearerFormat": "JWT"
2897
3670
  }
2898
3671
  }
2899
3672
  }