@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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
110
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
185
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
237
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
325
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
388
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
450
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
490
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
530
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
570
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
626
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
666
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
703
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
822
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
862
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
902
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
942
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1000
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1072
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1121
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1173
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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,86 +1222,835 @@
1105
1222
  "security": [
1106
1223
  {
1107
1224
  "Implicit": [
1108
- "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1225
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1300
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.default"
1146
1301
  ]
1302
+ },
1303
+ {
1304
+ "ApiKey": []
1147
1305
  }
1148
1306
  ]
1149
1307
  }
1150
- }
1151
- },
1152
- "components": {
1153
- "schemas": {
1154
- "createCandidateInput": {
1155
- "type": "object",
1156
- "properties": {
1157
- "status": {
1158
- "enum": [
1159
- 1,
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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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,
1160
1932
  2,
1161
1933
  3,
1162
1934
  4,
1163
1935
  5,
1164
1936
  6,
1165
1937
  7,
1166
- 8
1938
+ 8,
1939
+ 9,
1940
+ 10
1167
1941
  ],
1168
1942
  "type": "integer",
1169
1943
  "format": "int32",
1170
- "default": 1
1944
+ "default": 0
1945
+ },
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": {
1967
+ "type": "string"
1171
1968
  },
1172
- "track": {
1969
+ "status": {
1970
+ "type": "string"
1971
+ }
1972
+ }
1973
+ },
1974
+ "componentBlocksInnerOneOfChildrenInner": {
1975
+ "type": "object",
1976
+ "properties": {
1977
+ "sanityType": {
1173
1978
  "enum": [
1174
- 1,
1175
- 2
1979
+ "span"
1176
1980
  ],
1177
- "type": "integer",
1178
- "format": "int32",
1179
- "default": 1
1981
+ "type": "string",
1982
+ "default": "span"
1983
+ },
1984
+ "marks": {
1985
+ "type": "array",
1986
+ "items": {
1987
+ "type": "string"
1988
+ }
1989
+ },
1990
+ "sanityKey": {
1991
+ "type": "string"
1992
+ },
1993
+ "text": {
1994
+ "type": "string"
1995
+ }
1996
+ }
1997
+ },
1998
+ "componentBlocksInnerOneOfMarkDefsInner": {
1999
+ "type": "object",
2000
+ "properties": {
2001
+ "sanityType": {
2002
+ "enum": [
2003
+ "link"
2004
+ ],
2005
+ "type": "string",
2006
+ "default": "link"
2007
+ },
2008
+ "href": {
2009
+ "type": "string"
2010
+ },
2011
+ "sanityKey": {
2012
+ "type": "string"
2013
+ }
2014
+ }
2015
+ },
2016
+ "createCandidateInput": {
2017
+ "type": "object",
2018
+ "properties": {
2019
+ "status": {
2020
+ "enum": [
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"
2031
+ ],
2032
+ "type": "string",
2033
+ "default": "CREATED"
2034
+ },
2035
+ "candidate": {
2036
+ "type": "string"
2037
+ },
2038
+ "email": {
2039
+ "type": "string"
2040
+ },
2041
+ "jobPositionId": {
2042
+ "type": "string"
1180
2043
  },
1181
- "candidate": {
2044
+ "recruiter": {
2045
+ "type": "string"
2046
+ },
2047
+ "telephone": {
1182
2048
  "type": "string"
1183
2049
  },
1184
2050
  "additionalProperties": {
1185
2051
  "type": "object",
1186
2052
  "additionalProperties": {
1187
- "$ref": "#/components/schemas/jsonElement"
2053
+ "type": "object"
1188
2054
  }
1189
2055
  }
1190
2056
  }
@@ -1194,51 +2060,41 @@
1194
2060
  "properties": {
1195
2061
  "sanityType": {
1196
2062
  "enum": [
1197
- 1
2063
+ "reference"
1198
2064
  ],
1199
- "type": "integer",
1200
- "format": "int32",
1201
- "default": 1
2065
+ "type": "string",
2066
+ "default": "reference"
1202
2067
  },
1203
2068
  "sanityRef": {
1204
2069
  "type": "string"
1205
2070
  },
1206
- "sanityWeakOption": {
1207
- "$ref": "#/components/schemas/option_nullable`1"
1208
- },
1209
2071
  "sanityWeak": {
1210
- "type": "boolean",
1211
- "nullable": true
2072
+ "type": "boolean"
1212
2073
  }
1213
2074
  }
1214
2075
  },
1215
- "jsonElement": {
2076
+ "eventReference": {
1216
2077
  "type": "object",
1217
2078
  "properties": {
1218
- "valueKind": {
2079
+ "sanityType": {
1219
2080
  "enum": [
1220
- 0,
1221
- 1,
1222
- 2,
1223
- 3,
1224
- 4,
1225
- 5,
1226
- 6,
1227
- 7
2081
+ "reference"
1228
2082
  ],
1229
- "type": "integer",
1230
- "format": "int32",
1231
- "default": 0
2083
+ "type": "string",
2084
+ "default": "reference"
2085
+ },
2086
+ "sanityRef": {
2087
+ "type": "string"
1232
2088
  },
1233
- "item": {
1234
- "$ref": "#/components/schemas/jsonElement"
2089
+ "sanityWeak": {
2090
+ "type": "boolean"
1235
2091
  }
1236
2092
  }
1237
2093
  },
1238
- "onboardingResult": {
2094
+ "integrationHealthResult": {
1239
2095
  "type": "object",
1240
2096
  "properties": {
1241
- "step": {
2097
+ "key": {
1242
2098
  "type": "string"
1243
2099
  },
1244
2100
  "status": {
@@ -1246,130 +2102,351 @@
1246
2102
  },
1247
2103
  "message": {
1248
2104
  "type": "string"
1249
- },
1250
- "preferredEmail": {
1251
- "type": "string"
1252
- },
1253
- "createdAccountId": {
1254
- "type": "string"
1255
- },
1256
- "temporaryPassword": {
1257
- "type": "string"
1258
- }
1259
- }
1260
- },
1261
- "option_employeeReference": {
1262
- "type": "object",
1263
- "properties": {
1264
- "value": {
1265
- "$ref": "#/components/schemas/employeeReference"
1266
2105
  }
1267
2106
  }
1268
2107
  },
1269
- "option_list`1": {
2108
+ "interviewBookingBody": {
1270
2109
  "type": "object",
1271
2110
  "properties": {
1272
- "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": {
1273
2129
  "type": "array",
1274
2130
  "items": {
1275
- "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1276
- }
1277
- }
1278
- }
1279
- },
1280
- "option_nullable`1": {
1281
- "type": "object",
1282
- "properties": {
1283
- "value": {
1284
- "type": "boolean",
2131
+ "$ref": "#/components/schemas/interviewParticipantBody"
2132
+ },
1285
2133
  "nullable": true
1286
2134
  }
1287
- }
1288
- },
1289
- "option_object": {
1290
- "type": "object",
1291
- "properties": {
1292
- "value": {
1293
- "type": "object"
1294
- }
1295
- }
1296
- },
1297
- "option_sanityAssetSourceData": {
1298
- "type": "object",
1299
- "properties": {
1300
- "value": {
1301
- "$ref": "#/components/schemas/sanityAssetSourceData"
1302
- }
1303
- }
2135
+ },
2136
+ "nullable": true
1304
2137
  },
1305
- "option_sanityCandidateAddress": {
2138
+ "interviewParticipantBody": {
1306
2139
  "type": "object",
1307
2140
  "properties": {
1308
- "value": {
1309
- "$ref": "#/components/schemas/sanityCandidateAddress"
2141
+ "sanityId": {
2142
+ "type": "string",
2143
+ "nullable": true
2144
+ },
2145
+ "email": {
2146
+ "type": "string",
2147
+ "nullable": true
1310
2148
  }
1311
2149
  }
1312
2150
  },
1313
- "option_sanityFileAssetReference": {
2151
+ "issueCandidatePinRequest": {
1314
2152
  "type": "object",
1315
2153
  "properties": {
1316
- "value": {
1317
- "$ref": "#/components/schemas/sanityFileAssetReference"
2154
+ "pin": {
2155
+ "type": "string"
1318
2156
  }
1319
2157
  }
1320
2158
  },
1321
- "option_sanityImageAssetReference": {
2159
+ "jobPositionReference": {
1322
2160
  "type": "object",
1323
2161
  "properties": {
1324
- "value": {
1325
- "$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"
1326
2174
  }
1327
2175
  }
1328
2176
  },
1329
- "option_sanityImageCrop": {
2177
+ "licenseAvailability": {
1330
2178
  "type": "object",
1331
2179
  "properties": {
1332
- "value": {
1333
- "$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"
1334
2200
  }
1335
2201
  }
1336
2202
  },
1337
- "option_sanityImageHotspot": {
2203
+ "onboardingResult": {
1338
2204
  "type": "object",
1339
2205
  "properties": {
1340
- "value": {
1341
- "$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"
1342
2223
  }
1343
2224
  }
1344
2225
  },
1345
- "option_sanityPatchCandidateAddress": {
2226
+ "patchCandidateRequestBody": {
1346
2227
  "type": "object",
1347
2228
  "properties": {
1348
- "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": {
1349
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
+ }
1350
2403
  }
1351
2404
  }
1352
2405
  },
1353
- "option_sanityPatchCandidateApplicationLetter": {
2406
+ "rejectCandidateMessage": {
1354
2407
  "type": "object",
1355
2408
  "properties": {
1356
- "value": {
1357
- "$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"
1358
2426
  }
1359
2427
  }
1360
2428
  },
1361
- "option_sanityPatchPageMetaImage": {
2429
+ "rejectionSuggestion": {
1362
2430
  "type": "object",
1363
2431
  "properties": {
1364
- "value": {
1365
- "$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"
1366
2443
  }
1367
2444
  }
1368
2445
  },
1369
- "option_string": {
2446
+ "rejectionSuggestionRequest": {
1370
2447
  "type": "object",
1371
2448
  "properties": {
1372
- "value": {
2449
+ "feedback": {
1373
2450
  "type": "string"
1374
2451
  }
1375
2452
  }
@@ -1379,27 +2456,17 @@
1379
2456
  "properties": {
1380
2457
  "sanityType": {
1381
2458
  "enum": [
1382
- 1
2459
+ "sanity.assetSourceData"
1383
2460
  ],
1384
- "type": "integer",
1385
- "format": "int32",
1386
- "default": 1
1387
- },
1388
- "idOption": {
1389
- "$ref": "#/components/schemas/option_string"
2461
+ "type": "string",
2462
+ "default": "sanity.assetSourceData"
1390
2463
  },
1391
2464
  "id": {
1392
2465
  "type": "string"
1393
2466
  },
1394
- "nameOption": {
1395
- "$ref": "#/components/schemas/option_string"
1396
- },
1397
2467
  "name": {
1398
2468
  "type": "string"
1399
2469
  },
1400
- "urlOption": {
1401
- "$ref": "#/components/schemas/option_string"
1402
- },
1403
2470
  "url": {
1404
2471
  "type": "string"
1405
2472
  }
@@ -1410,17 +2477,24 @@
1410
2477
  "properties": {
1411
2478
  "sanityType": {
1412
2479
  "enum": [
1413
- 1
2480
+ "employee"
1414
2481
  ],
1415
- "type": "integer",
1416
- "format": "int32",
1417
- "default": 1
2482
+ "type": "string",
2483
+ "default": "employee"
1418
2484
  },
1419
2485
  "email": {
1420
2486
  "type": "string"
1421
2487
  },
1422
2488
  "image": {
1423
- "$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
1424
2498
  },
1425
2499
  "name": {
1426
2500
  "type": "string"
@@ -1431,14 +2505,14 @@
1431
2505
  "slug": {
1432
2506
  "$ref": "#/components/schemas/slug"
1433
2507
  },
1434
- "telephone": {
1435
- "type": "string"
1436
- },
1437
2508
  "tags": {
1438
2509
  "type": "array",
1439
2510
  "items": {
1440
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
2511
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1441
2512
  }
2513
+ },
2514
+ "telephone": {
2515
+ "type": "string"
1442
2516
  }
1443
2517
  }
1444
2518
  },
@@ -1447,80 +2521,71 @@
1447
2521
  "properties": {
1448
2522
  "sanityType": {
1449
2523
  "enum": [
1450
- 1
2524
+ "candidate"
1451
2525
  ],
1452
- "type": "integer",
1453
- "format": "int32",
1454
- "default": 1
2526
+ "type": "string",
2527
+ "default": "candidate"
1455
2528
  },
1456
2529
  "status": {
1457
2530
  "enum": [
1458
- 1,
1459
- 2,
1460
- 3,
1461
- 4,
1462
- 5,
1463
- 6,
1464
- 7,
1465
- 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"
1466
2541
  ],
1467
- "type": "integer",
1468
- "format": "int32",
1469
- "default": 1
2542
+ "type": "string",
2543
+ "default": "CREATED"
1470
2544
  },
1471
- "track": {
1472
- "enum": [
1473
- 1,
1474
- 2
1475
- ],
1476
- "type": "integer",
1477
- "format": "int32",
1478
- "default": 1
2545
+ "address": {
2546
+ "$ref": "#/components/schemas/sanityCandidateAddress"
1479
2547
  },
1480
- "candidate": {
1481
- "type": "string"
2548
+ "allergies": {
2549
+ "type": "array",
2550
+ "items": {
2551
+ "type": "string"
2552
+ }
1482
2553
  },
1483
- "sanityCreatedAt": {
1484
- "type": "string"
2554
+ "applicationLetter": {
2555
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1485
2556
  },
1486
- "sanityId": {
2557
+ "applicationOther": {
1487
2558
  "type": "string"
1488
2559
  },
1489
- "sanityRev": {
2560
+ "bankAccount": {
1490
2561
  "type": "string"
1491
2562
  },
1492
- "sanityUpdatedAt": {
2563
+ "birthDate": {
1493
2564
  "type": "string"
1494
2565
  },
1495
- "addressOption": {
1496
- "$ref": "#/components/schemas/option_sanityCandidateAddress"
1497
- },
1498
- "address": {
1499
- "$ref": "#/components/schemas/sanityCandidateAddress"
1500
- },
1501
- "applicationLetter": {
1502
- "$ref": "#/components/schemas/sanityCandidateGrades"
1503
- },
1504
- "applicationOtherOption": {
1505
- "$ref": "#/components/schemas/option_string"
2566
+ "buddy": {
2567
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1506
2568
  },
1507
- "applicationOther": {
2569
+ "candidate": {
1508
2570
  "type": "string"
1509
2571
  },
1510
- "bankAccountOption": {
1511
- "$ref": "#/components/schemas/option_string"
2572
+ "contractPdf": {
2573
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1512
2574
  },
1513
- "bankAccount": {
2575
+ "contractSignDate": {
1514
2576
  "type": "string"
1515
2577
  },
1516
- "buddy": {
2578
+ "contractSigner": {
1517
2579
  "$ref": "#/components/schemas/sanityEmployeeManager"
1518
2580
  },
2581
+ "contractSignerRole": {
2582
+ "type": "string"
2583
+ },
1519
2584
  "cv": {
1520
- "$ref": "#/components/schemas/sanityCandidateGrades"
2585
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1521
2586
  },
1522
- "emailOption": {
1523
- "$ref": "#/components/schemas/option_string"
2587
+ "education": {
2588
+ "type": "string"
1524
2589
  },
1525
2590
  "email": {
1526
2591
  "type": "string"
@@ -1528,24 +2593,26 @@
1528
2593
  "employee": {
1529
2594
  "$ref": "#/components/schemas/sanityEmployeeManager"
1530
2595
  },
1531
- "fromApplicationOption": {
1532
- "$ref": "#/components/schemas/option_nullable`1"
1533
- },
1534
2596
  "fromApplication": {
1535
- "type": "boolean",
1536
- "nullable": true
1537
- },
1538
- "githubUsernameOption": {
1539
- "$ref": "#/components/schemas/option_string"
2597
+ "type": "boolean"
1540
2598
  },
1541
2599
  "githubUsername": {
1542
2600
  "type": "string"
1543
2601
  },
1544
2602
  "grades": {
1545
- "$ref": "#/components/schemas/sanityCandidateGrades"
2603
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
2604
+ },
2605
+ "interviews": {
2606
+ "type": "array",
2607
+ "items": {
2608
+ "$ref": "#/components/schemas/sanityCandidateInterviewsInner"
2609
+ }
2610
+ },
2611
+ "jobPosition": {
2612
+ "$ref": "#/components/schemas/sanityCandidateJobPosition"
1546
2613
  },
1547
- "offboardingChecklistOption": {
1548
- "$ref": "#/components/schemas/option_list`1"
2614
+ "linkedin": {
2615
+ "type": "string"
1549
2616
  },
1550
2617
  "offboardingChecklist": {
1551
2618
  "type": "array",
@@ -1553,8 +2620,8 @@
1553
2620
  "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1554
2621
  }
1555
2622
  },
1556
- "onboardingChecklistOption": {
1557
- "$ref": "#/components/schemas/option_list`1"
2623
+ "offerPdf": {
2624
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
1558
2625
  },
1559
2626
  "onboardingChecklist": {
1560
2627
  "type": "array",
@@ -1562,23 +2629,19 @@
1562
2629
  "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1563
2630
  }
1564
2631
  },
1565
- "ownershipOption": {
1566
- "$ref": "#/components/schemas/option_nullable`1"
1567
- },
1568
2632
  "ownership": {
1569
2633
  "type": "number",
1570
- "format": "double",
1571
- "nullable": true
2634
+ "format": "double"
2635
+ },
2636
+ "personalNumber": {
2637
+ "type": "string"
1572
2638
  },
1573
- "preferredDisplayNameOption": {
1574
- "$ref": "#/components/schemas/option_string"
2639
+ "pin": {
2640
+ "type": "string"
1575
2641
  },
1576
2642
  "preferredDisplayName": {
1577
2643
  "type": "string"
1578
2644
  },
1579
- "preferredEmailOption": {
1580
- "$ref": "#/components/schemas/option_string"
1581
- },
1582
2645
  "preferredEmail": {
1583
2646
  "type": "string"
1584
2647
  },
@@ -1588,36 +2651,45 @@
1588
2651
  "recruiter": {
1589
2652
  "$ref": "#/components/schemas/sanityEmployeeManager"
1590
2653
  },
1591
- "referencesOption": {
1592
- "$ref": "#/components/schemas/option_list`1"
1593
- },
1594
2654
  "references": {
1595
2655
  "type": "array",
1596
2656
  "items": {
1597
2657
  "$ref": "#/components/schemas/sanityCandidateReferencesInner"
1598
2658
  }
1599
2659
  },
1600
- "shortUrlOption": {
1601
- "$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"
1602
2671
  },
1603
2672
  "shortUrl": {
1604
2673
  "type": "string"
1605
2674
  },
2675
+ "signedContract": {
2676
+ "$ref": "#/components/schemas/sanityCandidateApplicationLetter"
2677
+ },
2678
+ "snapchatUsername": {
2679
+ "type": "string"
2680
+ },
2681
+ "startDate": {
2682
+ "type": "string"
2683
+ },
1606
2684
  "systemsActive": {
1607
2685
  "type": "array",
1608
2686
  "items": {
1609
2687
  "$ref": "#/components/schemas/sanitySystemsInner"
1610
2688
  }
1611
2689
  },
1612
- "telephoneOption": {
1613
- "$ref": "#/components/schemas/option_string"
1614
- },
1615
2690
  "telephone": {
1616
2691
  "type": "string"
1617
2692
  },
1618
- "urlOption": {
1619
- "$ref": "#/components/schemas/option_string"
1620
- },
1621
2693
  "url": {
1622
2694
  "type": "string"
1623
2695
  }
@@ -1626,142 +2698,183 @@
1626
2698
  "sanityCandidateAddress": {
1627
2699
  "type": "object",
1628
2700
  "properties": {
1629
- "cityOption": {
1630
- "$ref": "#/components/schemas/option_string"
1631
- },
1632
2701
  "city": {
1633
2702
  "type": "string"
1634
2703
  },
1635
- "postalCodeOption": {
1636
- "$ref": "#/components/schemas/option_string"
1637
- },
1638
2704
  "postalCode": {
1639
2705
  "type": "string"
1640
2706
  },
1641
- "streetOption": {
1642
- "$ref": "#/components/schemas/option_string"
1643
- },
1644
2707
  "street": {
1645
2708
  "type": "string"
1646
2709
  }
1647
2710
  }
1648
2711
  },
1649
- "sanityCandidateGrades": {
2712
+ "sanityCandidateApplicationLetter": {
1650
2713
  "type": "object",
1651
2714
  "properties": {
1652
2715
  "sanityType": {
1653
2716
  "enum": [
1654
- 1
2717
+ "file"
1655
2718
  ],
1656
- "type": "integer",
1657
- "format": "int32",
1658
- "default": 1
2719
+ "type": "string",
2720
+ "default": "file"
1659
2721
  },
1660
2722
  "asset": {
1661
2723
  "$ref": "#/components/schemas/sanityDocFileAsset"
1662
2724
  },
1663
- "mediaOption": {
1664
- "$ref": "#/components/schemas/option_object"
1665
- },
1666
2725
  "media": {
1667
2726
  "type": "object"
1668
2727
  }
1669
2728
  }
1670
2729
  },
1671
- "sanityCandidateOffboardingChecklistInner": {
2730
+ "sanityCandidateInterviewsInner": {
1672
2731
  "type": "object",
1673
2732
  "properties": {
1674
2733
  "sanityType": {
1675
2734
  "enum": [
1676
- 1
2735
+ "interview"
1677
2736
  ],
1678
- "type": "integer",
1679
- "format": "int32",
1680
- "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"
1681
2751
  },
1682
2752
  "sanityKey": {
1683
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"
1684
2766
  },
1685
- "sanityRef": {
2767
+ "askForGrades": {
2768
+ "type": "boolean"
2769
+ },
2770
+ "deadline": {
1686
2771
  "type": "string"
1687
2772
  },
1688
- "sanityWeakOption": {
1689
- "$ref": "#/components/schemas/option_nullable`1"
2773
+ "description": {
2774
+ "type": "array",
2775
+ "items": {
2776
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2777
+ }
1690
2778
  },
1691
- "sanityWeak": {
1692
- "type": "boolean",
1693
- "nullable": true
2779
+ "employeeTitle": {
2780
+ "type": "string"
2781
+ },
2782
+ "image": {
2783
+ "$ref": "#/components/schemas/sanityCreateTvCategoryDashboardsInnerBackgroundImage"
2784
+ },
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"
1694
2805
  }
1695
2806
  }
1696
2807
  },
1697
- "sanityCandidateReferencesInner": {
2808
+ "sanityCandidateOffboardingChecklistInner": {
1698
2809
  "type": "object",
1699
2810
  "properties": {
1700
2811
  "sanityType": {
1701
2812
  "enum": [
1702
- 1
2813
+ "reference"
1703
2814
  ],
1704
- "type": "integer",
1705
- "format": "int32",
1706
- "default": 1
2815
+ "type": "string",
2816
+ "default": "reference"
1707
2817
  },
1708
2818
  "sanityKey": {
1709
2819
  "type": "string"
1710
2820
  },
1711
- "detailsOption": {
1712
- "$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"
1713
2838
  },
1714
2839
  "details": {
1715
2840
  "type": "string"
1716
2841
  },
1717
- "emailOption": {
1718
- "$ref": "#/components/schemas/option_string"
1719
- },
1720
2842
  "email": {
1721
2843
  "type": "string"
1722
2844
  },
1723
- "nameOption": {
1724
- "$ref": "#/components/schemas/option_string"
1725
- },
1726
2845
  "name": {
1727
2846
  "type": "string"
1728
2847
  },
1729
- "phoneOption": {
1730
- "$ref": "#/components/schemas/option_string"
1731
- },
1732
2848
  "phone": {
1733
2849
  "type": "string"
2850
+ },
2851
+ "sanityKey": {
2852
+ "type": "string"
1734
2853
  }
1735
2854
  }
1736
2855
  },
1737
2856
  "sanityCreateSystem": {
1738
2857
  "type": "object",
1739
2858
  "properties": {
1740
- "title": {
1741
- "type": "string"
1742
- },
1743
- "descriptionOption": {
1744
- "$ref": "#/components/schemas/option_list`1"
1745
- },
1746
2859
  "description": {
1747
2860
  "type": "array",
1748
2861
  "items": {
1749
2862
  "type": "object"
1750
2863
  }
1751
2864
  },
1752
- "linksOption": {
1753
- "$ref": "#/components/schemas/option_list`1"
1754
- },
1755
2865
  "links": {
1756
2866
  "type": "array",
1757
2867
  "items": {
1758
2868
  "type": "string"
1759
2869
  }
1760
2870
  },
2871
+ "title": {
2872
+ "type": "string"
2873
+ },
1761
2874
  "additionalProperties": {
1762
2875
  "type": "object",
1763
2876
  "additionalProperties": {
1764
- "$ref": "#/components/schemas/jsonElement"
2877
+ "type": "object"
1765
2878
  }
1766
2879
  }
1767
2880
  }
@@ -1771,18 +2884,11 @@
1771
2884
  "properties": {
1772
2885
  "type": {
1773
2886
  "enum": [
1774
- 1,
1775
- 2
2887
+ "onboarding",
2888
+ "offboarding"
1776
2889
  ],
1777
- "type": "integer",
1778
- "format": "int32",
1779
- "default": 1
1780
- },
1781
- "title": {
1782
- "type": "string"
1783
- },
1784
- "descriptionOption": {
1785
- "$ref": "#/components/schemas/option_list`1"
2890
+ "type": "string",
2891
+ "default": "onboarding"
1786
2892
  },
1787
2893
  "description": {
1788
2894
  "type": "array",
@@ -1790,48 +2896,80 @@
1790
2896
  "type": "object"
1791
2897
  }
1792
2898
  },
1793
- "reminderSlackChannelOption": {
1794
- "$ref": "#/components/schemas/option_string"
1795
- },
1796
2899
  "reminderSlackChannel": {
1797
2900
  "type": "string"
1798
2901
  },
1799
- "reminderWeeksBeforeOption": {
1800
- "$ref": "#/components/schemas/option_nullable`1"
1801
- },
1802
2902
  "reminderWeeksBefore": {
1803
2903
  "type": "number",
1804
2904
  "format": "double",
1805
2905
  "nullable": true
1806
2906
  },
2907
+ "title": {
2908
+ "type": "string"
2909
+ },
1807
2910
  "additionalProperties": {
1808
2911
  "type": "object",
1809
2912
  "additionalProperties": {
1810
- "$ref": "#/components/schemas/jsonElement"
2913
+ "type": "object"
1811
2914
  }
1812
2915
  }
1813
2916
  }
1814
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"
2933
+ },
2934
+ "hotspot": {
2935
+ "$ref": "#/components/schemas/sanityImageHotspot"
2936
+ },
2937
+ "media": {
2938
+ "type": "object"
2939
+ }
2940
+ }
2941
+ },
1815
2942
  "sanityDocFileAsset": {
1816
2943
  "type": "object",
1817
2944
  "properties": {
1818
2945
  "sanityType": {
1819
2946
  "enum": [
1820
- 1
2947
+ "sanity.fileAsset"
1821
2948
  ],
1822
- "type": "integer",
1823
- "format": "int32",
1824
- "default": 1
2949
+ "type": "string",
2950
+ "default": "sanity.fileAsset"
2951
+ },
2952
+ "altText": {
2953
+ "type": "string"
1825
2954
  },
1826
2955
  "assetId": {
1827
2956
  "type": "string"
1828
2957
  },
2958
+ "description": {
2959
+ "type": "string"
2960
+ },
1829
2961
  "extension": {
1830
2962
  "type": "string"
1831
2963
  },
2964
+ "label": {
2965
+ "type": "string"
2966
+ },
1832
2967
  "mimeType": {
1833
2968
  "type": "string"
1834
2969
  },
2970
+ "originalFilename": {
2971
+ "type": "string"
2972
+ },
1835
2973
  "path": {
1836
2974
  "type": "string"
1837
2975
  },
@@ -1854,50 +2992,17 @@
1854
2992
  "type": "number",
1855
2993
  "format": "double"
1856
2994
  },
1857
- "url": {
1858
- "type": "string"
1859
- },
1860
- "altTextOption": {
1861
- "$ref": "#/components/schemas/option_string"
1862
- },
1863
- "altText": {
1864
- "type": "string"
1865
- },
1866
- "descriptionOption": {
1867
- "$ref": "#/components/schemas/option_string"
1868
- },
1869
- "description": {
1870
- "type": "string"
1871
- },
1872
- "labelOption": {
1873
- "$ref": "#/components/schemas/option_string"
1874
- },
1875
- "label": {
1876
- "type": "string"
1877
- },
1878
- "originalFilenameOption": {
1879
- "$ref": "#/components/schemas/option_string"
1880
- },
1881
- "originalFilename": {
1882
- "type": "string"
1883
- },
1884
- "sourceOption": {
1885
- "$ref": "#/components/schemas/option_sanityAssetSourceData"
1886
- },
1887
2995
  "source": {
1888
2996
  "$ref": "#/components/schemas/sanityAssetSourceData"
1889
2997
  },
1890
- "titleOption": {
1891
- "$ref": "#/components/schemas/option_string"
1892
- },
1893
2998
  "title": {
1894
2999
  "type": "string"
1895
3000
  },
1896
- "uploadIdOption": {
1897
- "$ref": "#/components/schemas/option_string"
1898
- },
1899
3001
  "uploadId": {
1900
3002
  "type": "string"
3003
+ },
3004
+ "url": {
3005
+ "type": "string"
1901
3006
  }
1902
3007
  }
1903
3008
  },
@@ -1906,17 +3011,24 @@
1906
3011
  "properties": {
1907
3012
  "sanityType": {
1908
3013
  "enum": [
1909
- 1
3014
+ "employee"
1910
3015
  ],
1911
- "type": "integer",
1912
- "format": "int32",
1913
- "default": 1
3016
+ "type": "string",
3017
+ "default": "employee"
1914
3018
  },
1915
3019
  "email": {
1916
3020
  "type": "string"
1917
3021
  },
1918
3022
  "image": {
1919
- "$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
1920
3032
  },
1921
3033
  "name": {
1922
3034
  "type": "string"
@@ -1927,14 +3039,14 @@
1927
3039
  "slug": {
1928
3040
  "$ref": "#/components/schemas/slug"
1929
3041
  },
1930
- "telephone": {
1931
- "type": "string"
1932
- },
1933
3042
  "tags": {
1934
3043
  "type": "array",
1935
3044
  "items": {
1936
- "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
3045
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsEmployeesInnerTagsInner"
1937
3046
  }
3047
+ },
3048
+ "telephone": {
3049
+ "type": "string"
1938
3050
  }
1939
3051
  }
1940
3052
  },
@@ -1943,21 +3055,16 @@
1943
3055
  "properties": {
1944
3056
  "sanityType": {
1945
3057
  "enum": [
1946
- 1
3058
+ "reference"
1947
3059
  ],
1948
- "type": "integer",
1949
- "format": "int32",
1950
- "default": 1
3060
+ "type": "string",
3061
+ "default": "reference"
1951
3062
  },
1952
3063
  "sanityRef": {
1953
3064
  "type": "string"
1954
3065
  },
1955
- "sanityWeakOption": {
1956
- "$ref": "#/components/schemas/option_nullable`1"
1957
- },
1958
3066
  "sanityWeak": {
1959
- "type": "boolean",
1960
- "nullable": true
3067
+ "type": "boolean"
1961
3068
  }
1962
3069
  }
1963
3070
  },
@@ -1966,21 +3073,16 @@
1966
3073
  "properties": {
1967
3074
  "sanityType": {
1968
3075
  "enum": [
1969
- 1
3076
+ "reference"
1970
3077
  ],
1971
- "type": "integer",
1972
- "format": "int32",
1973
- "default": 1
3078
+ "type": "string",
3079
+ "default": "reference"
1974
3080
  },
1975
3081
  "sanityRef": {
1976
3082
  "type": "string"
1977
3083
  },
1978
- "sanityWeakOption": {
1979
- "$ref": "#/components/schemas/option_nullable`1"
1980
- },
1981
3084
  "sanityWeak": {
1982
- "type": "boolean",
1983
- "nullable": true
3085
+ "type": "boolean"
1984
3086
  }
1985
3087
  }
1986
3088
  },
@@ -1989,11 +3091,10 @@
1989
3091
  "properties": {
1990
3092
  "sanityType": {
1991
3093
  "enum": [
1992
- 1
3094
+ "sanity.imageCrop"
1993
3095
  ],
1994
- "type": "integer",
1995
- "format": "int32",
1996
- "default": 1
3096
+ "type": "string",
3097
+ "default": "sanity.imageCrop"
1997
3098
  },
1998
3099
  "bottom": {
1999
3100
  "type": "number",
@@ -2018,11 +3119,10 @@
2018
3119
  "properties": {
2019
3120
  "sanityType": {
2020
3121
  "enum": [
2021
- 1
3122
+ "sanity.imageHotspot"
2022
3123
  ],
2023
- "type": "integer",
2024
- "format": "int32",
2025
- "default": 1
3124
+ "type": "string",
3125
+ "default": "sanity.imageHotspot"
2026
3126
  },
2027
3127
  "height": {
2028
3128
  "type": "number",
@@ -2047,307 +3147,88 @@
2047
3147
  "properties": {
2048
3148
  "sanityType": {
2049
3149
  "enum": [
2050
- 1
3150
+ "jobPosition"
2051
3151
  ],
2052
- "type": "integer",
2053
- "format": "int32",
2054
- "default": 1
3152
+ "type": "string",
3153
+ "default": "jobPosition"
2055
3154
  },
2056
3155
  "askForGrades": {
2057
3156
  "type": "boolean"
2058
3157
  },
3158
+ "deadline": {
3159
+ "type": "string"
3160
+ },
2059
3161
  "description": {
2060
3162
  "type": "array",
2061
3163
  "items": {
2062
3164
  "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2063
3165
  }
2064
3166
  },
2065
- "metaDescription": {
2066
- "type": "string"
2067
- },
2068
- "sanityCreatedAt": {
2069
- "type": "string"
2070
- },
2071
- "sanityId": {
2072
- "type": "string"
2073
- },
2074
- "sanityRev": {
2075
- "type": "string"
2076
- },
2077
- "sanityUpdatedAt": {
2078
- "type": "string"
2079
- },
2080
- "slug": {
2081
- "$ref": "#/components/schemas/slug"
2082
- },
2083
- "title": {
2084
- "type": "string"
2085
- },
2086
- "deadlineOption": {
2087
- "$ref": "#/components/schemas/option_string"
2088
- },
2089
- "deadline": {
3167
+ "employeeTitle": {
2090
3168
  "type": "string"
2091
3169
  },
2092
3170
  "image": {
2093
3171
  "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2094
- }
2095
- }
2096
- },
2097
- "sanityOnboardingTask": {
2098
- "type": "object",
2099
- "properties": {
2100
- "type": {
2101
- "enum": [
2102
- 1
2103
- ],
2104
- "type": "integer",
2105
- "format": "int32",
2106
- "default": 1
2107
3172
  },
2108
- "reminderSlackChannel": {
3173
+ "metaDescription": {
2109
3174
  "type": "string"
2110
3175
  },
2111
- "reminderWeeksBefore": {
2112
- "type": "number",
2113
- "format": "double"
2114
- },
2115
3176
  "sanityCreatedAt": {
2116
3177
  "type": "string"
2117
3178
  },
2118
3179
  "sanityId": {
2119
- "type": "string"
2120
- },
2121
- "sanityRev": {
2122
- "type": "string"
2123
- },
2124
- "sanityType": {
2125
- "type": "string"
2126
- },
2127
- "sanityUpdatedAt": {
2128
- "type": "string"
2129
- },
2130
- "title": {
2131
- "type": "string"
2132
- },
2133
- "additionalProperties": {
2134
- "type": "object",
2135
- "additionalProperties": {
2136
- "$ref": "#/components/schemas/jsonElement"
2137
- }
2138
- }
2139
- }
2140
- },
2141
- "sanityPatchCandidate": {
2142
- "type": "object",
2143
- "properties": {
2144
- "sanityTypeOption": {
2145
- "$ref": "#/components/schemas/option_nullable`1"
2146
- },
2147
- "sanityType": {
2148
- "enum": [
2149
- 1
2150
- ],
2151
- "type": "integer",
2152
- "format": "int32",
2153
- "default": 1,
2154
- "nullable": true
2155
- },
2156
- "statusOption": {
2157
- "$ref": "#/components/schemas/option_nullable`1"
2158
- },
2159
- "status": {
2160
- "enum": [
2161
- 1,
2162
- 2,
2163
- 3,
2164
- 4,
2165
- 5,
2166
- 6,
2167
- 7,
2168
- 8
2169
- ],
2170
- "type": "integer",
2171
- "format": "int32",
2172
- "default": 1,
2173
- "nullable": true
2174
- },
2175
- "trackOption": {
2176
- "$ref": "#/components/schemas/option_nullable`1"
2177
- },
2178
- "track": {
2179
- "enum": [
2180
- 1,
2181
- 2
2182
- ],
2183
- "type": "integer",
2184
- "format": "int32",
2185
- "default": 1,
2186
- "nullable": true
2187
- },
2188
- "addressOption": {
2189
- "$ref": "#/components/schemas/option_sanityPatchCandidateAddress"
2190
- },
2191
- "address": {
2192
- "$ref": "#/components/schemas/sanityPatchCandidateAddress"
2193
- },
2194
- "applicationLetterOption": {
2195
- "$ref": "#/components/schemas/option_sanityPatchCandidateApplicationLetter"
2196
- },
2197
- "applicationLetter": {
2198
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2199
- },
2200
- "applicationOtherOption": {
2201
- "$ref": "#/components/schemas/option_string"
2202
- },
2203
- "applicationOther": {
2204
- "type": "string"
2205
- },
2206
- "bankAccountOption": {
2207
- "$ref": "#/components/schemas/option_string"
2208
- },
2209
- "bankAccount": {
2210
- "type": "string"
2211
- },
2212
- "buddyOption": {
2213
- "$ref": "#/components/schemas/option_employeeReference"
2214
- },
2215
- "buddy": {
2216
- "$ref": "#/components/schemas/employeeReference"
2217
- },
2218
- "candidateOption": {
2219
- "$ref": "#/components/schemas/option_string"
2220
- },
2221
- "candidate": {
2222
- "type": "string"
2223
- },
2224
- "cvOption": {
2225
- "$ref": "#/components/schemas/option_sanityPatchCandidateApplicationLetter"
2226
- },
2227
- "cv": {
2228
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2229
- },
2230
- "emailOption": {
2231
- "$ref": "#/components/schemas/option_string"
2232
- },
2233
- "email": {
2234
- "type": "string"
2235
- },
2236
- "employeeOption": {
2237
- "$ref": "#/components/schemas/option_employeeReference"
2238
- },
2239
- "employee": {
2240
- "$ref": "#/components/schemas/employeeReference"
2241
- },
2242
- "fromApplicationOption": {
2243
- "$ref": "#/components/schemas/option_nullable`1"
2244
- },
2245
- "fromApplication": {
2246
- "type": "boolean",
2247
- "nullable": true
2248
- },
2249
- "githubUsernameOption": {
2250
- "$ref": "#/components/schemas/option_string"
2251
- },
2252
- "githubUsername": {
2253
- "type": "string"
2254
- },
2255
- "gradesOption": {
2256
- "$ref": "#/components/schemas/option_sanityPatchCandidateApplicationLetter"
2257
- },
2258
- "grades": {
2259
- "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2260
- },
2261
- "offboardingChecklistOption": {
2262
- "$ref": "#/components/schemas/option_list`1"
2263
- },
2264
- "offboardingChecklist": {
2265
- "type": "array",
2266
- "items": {
2267
- "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2268
- }
2269
- },
2270
- "onboardingChecklistOption": {
2271
- "$ref": "#/components/schemas/option_list`1"
2272
- },
2273
- "onboardingChecklist": {
2274
- "type": "array",
2275
- "items": {
2276
- "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2277
- }
2278
- },
2279
- "ownershipOption": {
2280
- "$ref": "#/components/schemas/option_nullable`1"
2281
- },
2282
- "ownership": {
2283
- "type": "number",
2284
- "format": "double",
2285
- "nullable": true
2286
- },
2287
- "preferredDisplayNameOption": {
2288
- "$ref": "#/components/schemas/option_string"
2289
- },
2290
- "preferredDisplayName": {
2291
- "type": "string"
2292
- },
2293
- "preferredEmailOption": {
2294
- "$ref": "#/components/schemas/option_string"
2295
- },
2296
- "preferredEmail": {
2297
- "type": "string"
2298
- },
2299
- "profileImageOption": {
2300
- "$ref": "#/components/schemas/option_sanityPatchPageMetaImage"
2301
- },
2302
- "profileImage": {
2303
- "$ref": "#/components/schemas/sanityPatchPageMetaImage"
2304
- },
2305
- "recruiterOption": {
2306
- "$ref": "#/components/schemas/option_employeeReference"
2307
- },
2308
- "recruiter": {
2309
- "$ref": "#/components/schemas/employeeReference"
3180
+ "type": "string"
2310
3181
  },
2311
- "referencesOption": {
2312
- "$ref": "#/components/schemas/option_list`1"
3182
+ "sanityRev": {
3183
+ "type": "string"
2313
3184
  },
2314
- "references": {
2315
- "type": "array",
2316
- "items": {
2317
- "$ref": "#/components/schemas/sanityCandidateReferencesInner"
2318
- }
3185
+ "sanityUpdatedAt": {
3186
+ "type": "string"
2319
3187
  },
2320
- "shortUrlOption": {
2321
- "$ref": "#/components/schemas/option_string"
3188
+ "slug": {
3189
+ "$ref": "#/components/schemas/slug"
2322
3190
  },
2323
- "shortUrl": {
3191
+ "title": {
2324
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"
2325
3205
  },
2326
- "systemsActiveOption": {
2327
- "$ref": "#/components/schemas/option_list`1"
3206
+ "remindDaysBefore": {
3207
+ "type": "number",
3208
+ "format": "double"
2328
3209
  },
2329
- "systemsActive": {
2330
- "type": "array",
2331
- "items": {
2332
- "$ref": "#/components/schemas/sanityPatchCandidateSystemsActiveInner"
2333
- }
3210
+ "sanityCreatedAt": {
3211
+ "type": "string"
2334
3212
  },
2335
- "telephoneOption": {
2336
- "$ref": "#/components/schemas/option_string"
3213
+ "sanityId": {
3214
+ "type": "string"
2337
3215
  },
2338
- "telephone": {
3216
+ "sanityRev": {
2339
3217
  "type": "string"
2340
3218
  },
2341
- "urlOption": {
2342
- "$ref": "#/components/schemas/option_string"
3219
+ "sanityType": {
3220
+ "type": "string"
2343
3221
  },
2344
- "url": {
3222
+ "sanityUpdatedAt": {
3223
+ "type": "string"
3224
+ },
3225
+ "title": {
2345
3226
  "type": "string"
2346
3227
  },
2347
3228
  "additionalProperties": {
2348
3229
  "type": "object",
2349
3230
  "additionalProperties": {
2350
- "$ref": "#/components/schemas/jsonElement"
3231
+ "type": "object"
2351
3232
  }
2352
3233
  }
2353
3234
  }
@@ -2355,21 +3236,12 @@
2355
3236
  "sanityPatchCandidateAddress": {
2356
3237
  "type": "object",
2357
3238
  "properties": {
2358
- "cityOption": {
2359
- "$ref": "#/components/schemas/option_string"
2360
- },
2361
3239
  "city": {
2362
3240
  "type": "string"
2363
3241
  },
2364
- "postalCodeOption": {
2365
- "$ref": "#/components/schemas/option_string"
2366
- },
2367
3242
  "postalCode": {
2368
3243
  "type": "string"
2369
3244
  },
2370
- "streetOption": {
2371
- "$ref": "#/components/schemas/option_string"
2372
- },
2373
3245
  "street": {
2374
3246
  "type": "string"
2375
3247
  }
@@ -2380,36 +3252,55 @@
2380
3252
  "properties": {
2381
3253
  "sanityType": {
2382
3254
  "enum": [
2383
- 1
3255
+ "file"
2384
3256
  ],
2385
- "type": "integer",
2386
- "format": "int32",
2387
- "default": 1
2388
- },
2389
- "assetOption": {
2390
- "$ref": "#/components/schemas/option_sanityFileAssetReference"
3257
+ "type": "string",
3258
+ "default": "file"
2391
3259
  },
2392
3260
  "asset": {
2393
3261
  "$ref": "#/components/schemas/sanityFileAssetReference"
2394
3262
  },
2395
- "mediaOption": {
2396
- "$ref": "#/components/schemas/option_object"
2397
- },
2398
3263
  "media": {
2399
3264
  "type": "object"
2400
3265
  }
2401
3266
  }
2402
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
+ },
2403
3295
  "sanityPatchCandidateSystemsActiveInner": {
2404
3296
  "type": "object",
2405
3297
  "properties": {
2406
3298
  "sanityType": {
2407
3299
  "enum": [
2408
- 1
3300
+ "reference"
2409
3301
  ],
2410
- "type": "integer",
2411
- "format": "int32",
2412
- "default": 1
3302
+ "type": "string",
3303
+ "default": "reference"
2413
3304
  },
2414
3305
  "sanityKey": {
2415
3306
  "type": "string"
@@ -2417,12 +3308,8 @@
2417
3308
  "sanityRef": {
2418
3309
  "type": "string"
2419
3310
  },
2420
- "sanityWeakOption": {
2421
- "$ref": "#/components/schemas/option_nullable`1"
2422
- },
2423
3311
  "sanityWeak": {
2424
- "type": "boolean",
2425
- "nullable": true
3312
+ "type": "boolean"
2426
3313
  }
2427
3314
  }
2428
3315
  },
@@ -2431,33 +3318,20 @@
2431
3318
  "properties": {
2432
3319
  "sanityType": {
2433
3320
  "enum": [
2434
- 1
3321
+ "image"
2435
3322
  ],
2436
- "type": "integer",
2437
- "format": "int32",
2438
- "default": 1
2439
- },
2440
- "assetOption": {
2441
- "$ref": "#/components/schemas/option_sanityImageAssetReference"
3323
+ "type": "string",
3324
+ "default": "image"
2442
3325
  },
2443
3326
  "asset": {
2444
3327
  "$ref": "#/components/schemas/sanityImageAssetReference"
2445
3328
  },
2446
- "cropOption": {
2447
- "$ref": "#/components/schemas/option_sanityImageCrop"
2448
- },
2449
3329
  "crop": {
2450
3330
  "$ref": "#/components/schemas/sanityImageCrop"
2451
3331
  },
2452
- "hotspotOption": {
2453
- "$ref": "#/components/schemas/option_sanityImageHotspot"
2454
- },
2455
3332
  "hotspot": {
2456
3333
  "$ref": "#/components/schemas/sanityImageHotspot"
2457
3334
  },
2458
- "mediaOption": {
2459
- "$ref": "#/components/schemas/option_object"
2460
- },
2461
3335
  "media": {
2462
3336
  "type": "object"
2463
3337
  }
@@ -2466,34 +3340,25 @@
2466
3340
  "sanityPatchSystem": {
2467
3341
  "type": "object",
2468
3342
  "properties": {
2469
- "descriptionOption": {
2470
- "$ref": "#/components/schemas/option_list`1"
2471
- },
2472
3343
  "description": {
2473
3344
  "type": "array",
2474
3345
  "items": {
2475
3346
  "type": "object"
2476
3347
  }
2477
3348
  },
2478
- "linksOption": {
2479
- "$ref": "#/components/schemas/option_list`1"
2480
- },
2481
3349
  "links": {
2482
3350
  "type": "array",
2483
3351
  "items": {
2484
3352
  "type": "string"
2485
3353
  }
2486
3354
  },
2487
- "titleOption": {
2488
- "$ref": "#/components/schemas/option_string"
2489
- },
2490
3355
  "title": {
2491
3356
  "type": "string"
2492
3357
  },
2493
3358
  "additionalProperties": {
2494
3359
  "type": "object",
2495
3360
  "additionalProperties": {
2496
- "$ref": "#/components/schemas/jsonElement"
3361
+ "type": "object"
2497
3362
  }
2498
3363
  }
2499
3364
  }
@@ -2501,52 +3366,36 @@
2501
3366
  "sanityPatchTask": {
2502
3367
  "type": "object",
2503
3368
  "properties": {
2504
- "typeOption": {
2505
- "$ref": "#/components/schemas/option_nullable`1"
2506
- },
2507
3369
  "type": {
2508
3370
  "enum": [
2509
- 1,
2510
- 2
3371
+ "onboarding",
3372
+ "offboarding"
2511
3373
  ],
2512
- "type": "integer",
2513
- "format": "int32",
2514
- "default": 1,
3374
+ "type": "string",
3375
+ "default": "onboarding",
2515
3376
  "nullable": true
2516
3377
  },
2517
- "descriptionOption": {
2518
- "$ref": "#/components/schemas/option_list`1"
2519
- },
2520
3378
  "description": {
2521
3379
  "type": "array",
2522
3380
  "items": {
2523
3381
  "type": "object"
2524
3382
  }
2525
3383
  },
2526
- "reminderSlackChannelOption": {
2527
- "$ref": "#/components/schemas/option_string"
2528
- },
2529
3384
  "reminderSlackChannel": {
2530
3385
  "type": "string"
2531
3386
  },
2532
- "reminderWeeksBeforeOption": {
2533
- "$ref": "#/components/schemas/option_nullable`1"
2534
- },
2535
3387
  "reminderWeeksBefore": {
2536
3388
  "type": "number",
2537
3389
  "format": "double",
2538
3390
  "nullable": true
2539
3391
  },
2540
- "titleOption": {
2541
- "$ref": "#/components/schemas/option_string"
2542
- },
2543
3392
  "title": {
2544
3393
  "type": "string"
2545
3394
  },
2546
3395
  "additionalProperties": {
2547
3396
  "type": "object",
2548
3397
  "additionalProperties": {
2549
- "$ref": "#/components/schemas/jsonElement"
3398
+ "type": "object"
2550
3399
  }
2551
3400
  }
2552
3401
  }
@@ -2554,32 +3403,31 @@
2554
3403
  "sanitySystemsInner": {
2555
3404
  "type": "object",
2556
3405
  "properties": {
2557
- "sanityType": {
3406
+ "reminderSlackChannel": {
2558
3407
  "enum": [
2559
- 1
3408
+ "#spor-økonomi",
3409
+ "#spor-rekruttering",
3410
+ "#spor-selskapsadmin",
3411
+ "#spor-sosialt",
3412
+ "#spor-utvikling"
2560
3413
  ],
2561
- "type": "integer",
2562
- "format": "int32",
2563
- "default": 1
2564
- },
2565
- "sanityCreatedAt": {
2566
- "type": "string"
2567
- },
2568
- "sanityId": {
2569
- "type": "string"
3414
+ "type": "string",
3415
+ "default": "#spor-økonomi",
3416
+ "nullable": true
2570
3417
  },
2571
- "sanityRev": {
2572
- "type": "string"
3418
+ "sanityType": {
3419
+ "enum": [
3420
+ "system"
3421
+ ],
3422
+ "type": "string",
3423
+ "default": "system"
2573
3424
  },
2574
- "sanityUpdatedAt": {
3425
+ "activateUrl": {
2575
3426
  "type": "string"
2576
3427
  },
2577
- "title": {
3428
+ "deactivateUrl": {
2578
3429
  "type": "string"
2579
3430
  },
2580
- "descriptionOption": {
2581
- "$ref": "#/components/schemas/option_list`1"
2582
- },
2583
3431
  "description": {
2584
3432
  "type": "array",
2585
3433
  "items": {
@@ -2589,155 +3437,112 @@
2589
3437
  "image": {
2590
3438
  "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2591
3439
  },
2592
- "linksOption": {
2593
- "$ref": "#/components/schemas/option_list`1"
2594
- },
2595
3440
  "links": {
2596
3441
  "type": "array",
2597
3442
  "items": {
2598
3443
  "type": "string"
2599
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"
2600
3464
  }
2601
3465
  }
2602
3466
  },
2603
3467
  "sanitySystemsInnerDescriptionInner": {
2604
3468
  "type": "object",
2605
3469
  "properties": {
2606
- "sanityType": {
2607
- "enum": [
2608
- 1
2609
- ],
2610
- "type": "integer",
2611
- "format": "int32",
2612
- "default": 1
2613
- },
2614
- "listItemOption": {
2615
- "$ref": "#/components/schemas/option_nullable`1"
2616
- },
2617
3470
  "listItem": {
2618
3471
  "enum": [
2619
- 1,
2620
- 2
3472
+ "bullet",
3473
+ "number"
2621
3474
  ],
2622
- "type": "integer",
2623
- "format": "int32",
2624
- "default": 1,
3475
+ "type": "string",
3476
+ "default": "bullet",
2625
3477
  "nullable": true
2626
3478
  },
2627
- "styleOption": {
2628
- "$ref": "#/components/schemas/option_nullable`1"
3479
+ "sanityType": {
3480
+ "enum": [
3481
+ "block"
3482
+ ],
3483
+ "type": "string",
3484
+ "default": "block"
2629
3485
  },
2630
3486
  "style": {
2631
3487
  "enum": [
2632
- 1,
2633
- 2,
2634
- 3,
2635
- 4,
2636
- 5,
2637
- 6,
2638
- 7,
2639
- 8
3488
+ "blockquote",
3489
+ "h1",
3490
+ "h2",
3491
+ "h3",
3492
+ "h4",
3493
+ "h5",
3494
+ "h6",
3495
+ "normal"
2640
3496
  ],
2641
- "type": "integer",
2642
- "format": "int32",
2643
- "default": 1,
3497
+ "type": "string",
3498
+ "default": "blockquote",
2644
3499
  "nullable": true
2645
3500
  },
2646
- "sanityKey": {
2647
- "type": "string"
2648
- },
2649
- "childrenOption": {
2650
- "$ref": "#/components/schemas/option_list`1"
2651
- },
2652
3501
  "children": {
2653
3502
  "type": "array",
2654
3503
  "items": {
2655
- "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInnerChildrenInner"
3504
+ "$ref": "#/components/schemas/componentBlocksInnerOneOfChildrenInner"
2656
3505
  }
2657
3506
  },
2658
- "levelOption": {
2659
- "$ref": "#/components/schemas/option_nullable`1"
2660
- },
2661
3507
  "level": {
2662
3508
  "type": "number",
2663
- "format": "double",
2664
- "nullable": true
2665
- },
2666
- "markDefsOption": {
2667
- "$ref": "#/components/schemas/option_list`1"
3509
+ "format": "double"
2668
3510
  },
2669
3511
  "markDefs": {
2670
3512
  "type": "array",
2671
3513
  "items": {
2672
- "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInnerMarkDefsInner"
3514
+ "$ref": "#/components/schemas/componentBlocksInnerOneOfMarkDefsInner"
2673
3515
  }
3516
+ },
3517
+ "sanityKey": {
3518
+ "type": "string"
2674
3519
  }
2675
3520
  }
2676
3521
  },
2677
- "sanitySystemsInnerDescriptionInnerChildrenInner": {
3522
+ "sanityTask": {
2678
3523
  "type": "object",
2679
3524
  "properties": {
2680
- "sanityType": {
3525
+ "type": {
2681
3526
  "enum": [
2682
- 1
3527
+ "onboarding",
3528
+ "offboarding"
2683
3529
  ],
2684
- "type": "integer",
2685
- "format": "int32",
2686
- "default": 1
2687
- },
2688
- "sanityKey": {
2689
- "type": "string"
3530
+ "type": "string",
3531
+ "default": "onboarding"
2690
3532
  },
2691
- "marksOption": {
2692
- "$ref": "#/components/schemas/option_list`1"
2693
- },
2694
- "marks": {
3533
+ "description": {
2695
3534
  "type": "array",
2696
3535
  "items": {
2697
- "type": "string"
3536
+ "type": "object"
2698
3537
  }
2699
3538
  },
2700
- "textOption": {
2701
- "$ref": "#/components/schemas/option_string"
2702
- },
2703
- "text": {
2704
- "type": "string"
2705
- }
2706
- }
2707
- },
2708
- "sanitySystemsInnerDescriptionInnerMarkDefsInner": {
2709
- "type": "object",
2710
- "properties": {
2711
- "sanityType": {
2712
- "enum": [
2713
- 1
2714
- ],
2715
- "type": "integer",
2716
- "format": "int32",
2717
- "default": 1
2718
- },
2719
- "sanityKey": {
3539
+ "reminderSlackChannel": {
2720
3540
  "type": "string"
2721
3541
  },
2722
- "hrefOption": {
2723
- "$ref": "#/components/schemas/option_string"
2724
- },
2725
- "href": {
2726
- "type": "string"
2727
- }
2728
- }
2729
- },
2730
- "sanityTask": {
2731
- "type": "object",
2732
- "properties": {
2733
- "type": {
2734
- "enum": [
2735
- 1,
2736
- 2
2737
- ],
2738
- "type": "integer",
2739
- "format": "int32",
2740
- "default": 1
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/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/authorize",
2890
- "tokenUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
2891
- "refreshUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/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://050da74a-523f-48ba-a9de-e5c8d6805a93/.default": "Default function scope"
3661
+ "api://b2c47b20-df4a-49b5-a7ee-87f3647ab227/.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
  }