@snokam/mcp-api 0.28.0 → 0.29.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.
@@ -0,0 +1,2848 @@
1
+ {
2
+ "openapi": "3.0.1",
3
+ "info": {
4
+ "title": "Recruitment API",
5
+ "description": "Recruitment management API",
6
+ "version": "v1.0.0"
7
+ },
8
+ "servers": [
9
+ {
10
+ "url": "https://recruitment.api.test.snokam.no"
11
+ }
12
+ ],
13
+ "paths": {
14
+ "/v1.0/GetHealth": {
15
+ "get": {
16
+ "tags": [
17
+ "Health"
18
+ ],
19
+ "summary": "Health check",
20
+ "description": "Returns a health check response.",
21
+ "operationId": "GetHealth",
22
+ "responses": {
23
+ "200": {
24
+ "description": "Service is healthy",
25
+ "content": {
26
+ "application/json": {
27
+ "schema": {
28
+ "type": "object"
29
+ }
30
+ }
31
+ },
32
+ "x-ms-summary": "Success"
33
+ }
34
+ }
35
+ }
36
+ },
37
+ "/v1.0/protected/candidates": {
38
+ "get": {
39
+ "tags": [
40
+ "Candidates"
41
+ ],
42
+ "summary": "List recruitment candidates",
43
+ "description": "Returns every candidate document in Sanity — pipeline, applications and archived.",
44
+ "operationId": "ListCandidates",
45
+ "responses": {
46
+ "200": {
47
+ "description": "All candidates",
48
+ "content": {
49
+ "application/json": {
50
+ "schema": {
51
+ "type": "array",
52
+ "items": {
53
+ "$ref": "#/components/schemas/sanityCandidate"
54
+ }
55
+ }
56
+ }
57
+ },
58
+ "x-ms-summary": "Success"
59
+ },
60
+ "401": {
61
+ "description": "No description",
62
+ "x-ms-summary": "Unauthorized"
63
+ }
64
+ },
65
+ "security": [
66
+ {
67
+ "Implicit": [
68
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
69
+ ]
70
+ }
71
+ ]
72
+ },
73
+ "post": {
74
+ "tags": [
75
+ "Candidates"
76
+ ],
77
+ "summary": "Create a fresh admin-initiated candidate",
78
+ "description": "Creates a candidate document directly (not via the public application flow). Caller supplies name + status + track.",
79
+ "operationId": "CreateCandidate",
80
+ "parameters": [
81
+ {
82
+ "name": "notify",
83
+ "in": "query",
84
+ "schema": {
85
+ "type": "boolean"
86
+ },
87
+ "x-ms-summary": "If false, suppress the welcome email/SMS even when the candidate has contact info. Defaults to true."
88
+ }
89
+ ],
90
+ "requestBody": {
91
+ "description": "Initial candidate fields",
92
+ "content": {
93
+ "application/json": {
94
+ "schema": {
95
+ "$ref": "#/components/schemas/createCandidateInput"
96
+ }
97
+ }
98
+ },
99
+ "required": true
100
+ },
101
+ "responses": {
102
+ "201": {
103
+ "description": "The created candidate",
104
+ "content": {
105
+ "application/json": {
106
+ "schema": {
107
+ "$ref": "#/components/schemas/sanityCandidate"
108
+ }
109
+ }
110
+ },
111
+ "x-ms-summary": "Created"
112
+ },
113
+ "400": {
114
+ "description": "Payload of Object",
115
+ "content": {
116
+ "application/json": {
117
+ "schema": {
118
+ "type": "object"
119
+ }
120
+ }
121
+ },
122
+ "x-ms-summary": "Bad Request"
123
+ },
124
+ "401": {
125
+ "description": "No description",
126
+ "x-ms-summary": "Unauthorized"
127
+ }
128
+ },
129
+ "security": [
130
+ {
131
+ "Implicit": [
132
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
133
+ ]
134
+ }
135
+ ]
136
+ }
137
+ },
138
+ "/v1.0/protected/candidates/{id}": {
139
+ "get": {
140
+ "tags": [
141
+ "Candidates"
142
+ ],
143
+ "summary": "Get a candidate by id",
144
+ "description": "Returns a fully-hydrated candidate including references, documents, systems and checklists.",
145
+ "operationId": "GetCandidate",
146
+ "parameters": [
147
+ {
148
+ "name": "id",
149
+ "in": "path",
150
+ "required": true,
151
+ "schema": {
152
+ "type": "string"
153
+ },
154
+ "x-ms-summary": "Candidate Sanity id"
155
+ }
156
+ ],
157
+ "responses": {
158
+ "200": {
159
+ "description": "Payload of SanityCandidate",
160
+ "content": {
161
+ "application/json": {
162
+ "schema": {
163
+ "$ref": "#/components/schemas/sanityCandidate"
164
+ }
165
+ }
166
+ },
167
+ "x-ms-summary": "Success"
168
+ },
169
+ "401": {
170
+ "description": "No description",
171
+ "x-ms-summary": "Unauthorized"
172
+ },
173
+ "404": {
174
+ "description": "No description",
175
+ "x-ms-summary": "Not Found"
176
+ }
177
+ },
178
+ "security": [
179
+ {
180
+ "Implicit": [
181
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
182
+ ]
183
+ }
184
+ ]
185
+ },
186
+ "patch": {
187
+ "tags": [
188
+ "Candidates"
189
+ ],
190
+ "summary": "Patch candidate fields",
191
+ "description": "Updates any subset of candidate fields — status, buddy, recruiter, systems, checklists, contact info.",
192
+ "operationId": "PatchCandidate",
193
+ "parameters": [
194
+ {
195
+ "name": "id",
196
+ "in": "path",
197
+ "required": true,
198
+ "schema": {
199
+ "type": "string"
200
+ },
201
+ "x-ms-summary": "Candidate Sanity id"
202
+ },
203
+ {
204
+ "name": "notify",
205
+ "in": "query",
206
+ "schema": {
207
+ "type": "boolean"
208
+ },
209
+ "x-ms-summary": "If true and the patch changes status, send the candidate the email/SMS for the new status"
210
+ }
211
+ ],
212
+ "requestBody": {
213
+ "description": "Partial candidate fields to update",
214
+ "content": {
215
+ "application/json": {
216
+ "schema": {
217
+ "$ref": "#/components/schemas/sanityPatchCandidate"
218
+ }
219
+ }
220
+ },
221
+ "required": true
222
+ },
223
+ "responses": {
224
+ "200": {
225
+ "description": "The patched candidate",
226
+ "content": {
227
+ "application/json": {
228
+ "schema": {
229
+ "$ref": "#/components/schemas/sanityCandidate"
230
+ }
231
+ }
232
+ },
233
+ "x-ms-summary": "Success"
234
+ },
235
+ "400": {
236
+ "description": "Payload of Object",
237
+ "content": {
238
+ "application/json": {
239
+ "schema": {
240
+ "type": "object"
241
+ }
242
+ }
243
+ },
244
+ "x-ms-summary": "Bad Request"
245
+ },
246
+ "401": {
247
+ "description": "No description",
248
+ "x-ms-summary": "Unauthorized"
249
+ },
250
+ "404": {
251
+ "description": "No description",
252
+ "x-ms-summary": "Not Found"
253
+ }
254
+ },
255
+ "security": [
256
+ {
257
+ "Implicit": [
258
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
259
+ ]
260
+ }
261
+ ]
262
+ }
263
+ },
264
+ "/v1.0/protected/candidates/{id}/notification-preview": {
265
+ "get": {
266
+ "tags": [
267
+ "Candidates"
268
+ ],
269
+ "summary": "Preview the email/SMS that would be sent for a candidate event",
270
+ "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.",
271
+ "operationId": "GetCandidateNotificationPreview",
272
+ "parameters": [
273
+ {
274
+ "name": "id",
275
+ "in": "path",
276
+ "required": true,
277
+ "schema": {
278
+ "type": "string"
279
+ },
280
+ "x-ms-summary": "Candidate Sanity id"
281
+ },
282
+ {
283
+ "name": "event",
284
+ "in": "query",
285
+ "required": true,
286
+ "schema": {
287
+ "type": "string"
288
+ },
289
+ "x-ms-summary": "Event name: Created, Introduction, Offer, Signed, Onboarding, UserCreationReview, Offboarding"
290
+ }
291
+ ],
292
+ "responses": {
293
+ "200": {
294
+ "description": "Payload of CandidateNotificationPreview",
295
+ "content": {
296
+ "application/json": {
297
+ "schema": {
298
+ "$ref": "#/components/schemas/candidateNotificationPreview"
299
+ }
300
+ }
301
+ },
302
+ "x-ms-summary": "Success"
303
+ },
304
+ "400": {
305
+ "description": "Payload of Object",
306
+ "content": {
307
+ "application/json": {
308
+ "schema": {
309
+ "type": "object"
310
+ }
311
+ }
312
+ },
313
+ "x-ms-summary": "Bad Request"
314
+ },
315
+ "401": {
316
+ "description": "No description",
317
+ "x-ms-summary": "Unauthorized"
318
+ },
319
+ "404": {
320
+ "description": "No description",
321
+ "x-ms-summary": "Not Found"
322
+ }
323
+ },
324
+ "security": [
325
+ {
326
+ "Implicit": [
327
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
328
+ ]
329
+ }
330
+ ]
331
+ }
332
+ },
333
+ "/v1.0/protected/candidates/notification-preview": {
334
+ "post": {
335
+ "tags": [
336
+ "Candidates"
337
+ ],
338
+ "summary": "Preview a candidate notification before the candidate is created",
339
+ "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.",
340
+ "operationId": "PreviewCandidateNotification",
341
+ "requestBody": {
342
+ "description": "Event + candidate-shaped fields",
343
+ "content": {
344
+ "application/json": {
345
+ "schema": {
346
+ "$ref": "#/components/schemas/candidateNotificationPreviewRequest"
347
+ }
348
+ }
349
+ },
350
+ "required": true
351
+ },
352
+ "responses": {
353
+ "200": {
354
+ "description": "Payload of CandidateNotificationPreview",
355
+ "content": {
356
+ "application/json": {
357
+ "schema": {
358
+ "$ref": "#/components/schemas/candidateNotificationPreview"
359
+ }
360
+ }
361
+ },
362
+ "x-ms-summary": "Success"
363
+ },
364
+ "400": {
365
+ "description": "Payload of Object",
366
+ "content": {
367
+ "application/json": {
368
+ "schema": {
369
+ "type": "object"
370
+ }
371
+ }
372
+ },
373
+ "x-ms-summary": "Bad Request"
374
+ },
375
+ "401": {
376
+ "description": "No description",
377
+ "x-ms-summary": "Unauthorized"
378
+ }
379
+ },
380
+ "security": [
381
+ {
382
+ "Implicit": [
383
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
384
+ ]
385
+ }
386
+ ]
387
+ }
388
+ },
389
+ "/v1.0/protected/candidates/{id}/promote": {
390
+ "post": {
391
+ "tags": [
392
+ "Candidates"
393
+ ],
394
+ "summary": "Promote a public job application to the pipeline",
395
+ "description": "Flips fromApplication=false and bumps status to INTRODUCTION so the candidate appears in the admin pipeline.",
396
+ "operationId": "PromoteApplication",
397
+ "parameters": [
398
+ {
399
+ "name": "id",
400
+ "in": "path",
401
+ "required": true,
402
+ "schema": {
403
+ "type": "string"
404
+ },
405
+ "x-ms-summary": "Candidate Sanity id"
406
+ }
407
+ ],
408
+ "responses": {
409
+ "200": {
410
+ "description": "The promoted candidate",
411
+ "content": {
412
+ "application/json": {
413
+ "schema": {
414
+ "$ref": "#/components/schemas/sanityCandidate"
415
+ }
416
+ }
417
+ },
418
+ "x-ms-summary": "Success"
419
+ },
420
+ "400": {
421
+ "description": "Candidate is not a public job application",
422
+ "content": {
423
+ "application/json": {
424
+ "schema": {
425
+ "type": "object"
426
+ }
427
+ }
428
+ },
429
+ "x-ms-summary": "Bad Request"
430
+ },
431
+ "401": {
432
+ "description": "No description",
433
+ "x-ms-summary": "Unauthorized"
434
+ },
435
+ "404": {
436
+ "description": "No description",
437
+ "x-ms-summary": "Not Found"
438
+ }
439
+ },
440
+ "security": [
441
+ {
442
+ "Implicit": [
443
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
444
+ ]
445
+ }
446
+ ]
447
+ }
448
+ },
449
+ "/v1.0/protected/candidates/{id}/onboard/{system}": {
450
+ "post": {
451
+ "tags": [
452
+ "Candidates"
453
+ ],
454
+ "summary": "Trigger automated onboarding for a single chain step",
455
+ "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.",
456
+ "operationId": "OnboardCandidateSystem",
457
+ "parameters": [
458
+ {
459
+ "name": "id",
460
+ "in": "path",
461
+ "required": true,
462
+ "schema": {
463
+ "type": "string"
464
+ },
465
+ "x-ms-summary": "Candidate Sanity id"
466
+ },
467
+ {
468
+ "name": "system",
469
+ "in": "path",
470
+ "required": true,
471
+ "schema": {
472
+ "type": "string"
473
+ },
474
+ "x-ms-summary": "System slug (e.g. 'microsoft-365')"
475
+ }
476
+ ],
477
+ "responses": {
478
+ "200": {
479
+ "description": "Uniform onboarding result with status + message",
480
+ "content": {
481
+ "application/json": {
482
+ "schema": {
483
+ "$ref": "#/components/schemas/onboardingResult"
484
+ }
485
+ }
486
+ },
487
+ "x-ms-summary": "Success"
488
+ },
489
+ "400": {
490
+ "description": "Payload of Object",
491
+ "content": {
492
+ "application/json": {
493
+ "schema": {
494
+ "type": "object"
495
+ }
496
+ }
497
+ },
498
+ "x-ms-summary": "Bad Request"
499
+ },
500
+ "401": {
501
+ "description": "No description",
502
+ "x-ms-summary": "Unauthorized"
503
+ },
504
+ "404": {
505
+ "description": "No description",
506
+ "x-ms-summary": "Not Found"
507
+ }
508
+ },
509
+ "security": [
510
+ {
511
+ "Implicit": [
512
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
513
+ ]
514
+ }
515
+ ]
516
+ }
517
+ },
518
+ "/v1.0/protected/candidates/{id}/offboard/{system}": {
519
+ "post": {
520
+ "tags": [
521
+ "Candidates"
522
+ ],
523
+ "summary": "Trigger automated offboarding for a single chain step",
524
+ "description": "Mirror of OnboardCandidateSystem for the offboarding chain. Re-runs one named offboarding step (e.g. 'microsoft-365-disable', 'license-revoke', 'github-org-remove').",
525
+ "operationId": "OffboardCandidateSystem",
526
+ "parameters": [
527
+ {
528
+ "name": "id",
529
+ "in": "path",
530
+ "required": true,
531
+ "schema": {
532
+ "type": "string"
533
+ },
534
+ "x-ms-summary": "Candidate Sanity id"
535
+ },
536
+ {
537
+ "name": "system",
538
+ "in": "path",
539
+ "required": true,
540
+ "schema": {
541
+ "type": "string"
542
+ },
543
+ "x-ms-summary": "Step slug (e.g. 'microsoft-365-disable')"
544
+ }
545
+ ],
546
+ "responses": {
547
+ "200": {
548
+ "description": "Uniform onboarding result with status + message",
549
+ "content": {
550
+ "application/json": {
551
+ "schema": {
552
+ "$ref": "#/components/schemas/onboardingResult"
553
+ }
554
+ }
555
+ },
556
+ "x-ms-summary": "Success"
557
+ },
558
+ "400": {
559
+ "description": "Payload of Object",
560
+ "content": {
561
+ "application/json": {
562
+ "schema": {
563
+ "type": "object"
564
+ }
565
+ }
566
+ },
567
+ "x-ms-summary": "Bad Request"
568
+ },
569
+ "401": {
570
+ "description": "No description",
571
+ "x-ms-summary": "Unauthorized"
572
+ },
573
+ "404": {
574
+ "description": "No description",
575
+ "x-ms-summary": "Not Found"
576
+ }
577
+ },
578
+ "security": [
579
+ {
580
+ "Implicit": [
581
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
582
+ ]
583
+ }
584
+ ]
585
+ }
586
+ },
587
+ "/v1.0/protected/candidates/{id}/onboard-full/stream": {
588
+ "post": {
589
+ "tags": [
590
+ "Candidates"
591
+ ],
592
+ "summary": "Run the onboarding chain with a live SSE event feed",
593
+ "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.",
594
+ "operationId": "OnboardCandidateFullStream",
595
+ "parameters": [
596
+ {
597
+ "name": "id",
598
+ "in": "path",
599
+ "required": true,
600
+ "schema": {
601
+ "type": "string"
602
+ }
603
+ }
604
+ ],
605
+ "responses": {
606
+ "200": {
607
+ "description": "No description",
608
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
609
+ }
610
+ },
611
+ "security": [
612
+ {
613
+ "Implicit": [
614
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
615
+ ]
616
+ }
617
+ ]
618
+ }
619
+ },
620
+ "/v1.0/protected/candidates/{id}/onboard-full": {
621
+ "post": {
622
+ "tags": [
623
+ "Candidates"
624
+ ],
625
+ "summary": "Run the full automated onboarding chain",
626
+ "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.",
627
+ "operationId": "OnboardCandidateFull",
628
+ "parameters": [
629
+ {
630
+ "name": "id",
631
+ "in": "path",
632
+ "required": true,
633
+ "schema": {
634
+ "type": "string"
635
+ },
636
+ "x-ms-summary": "Candidate Sanity id"
637
+ }
638
+ ],
639
+ "responses": {
640
+ "200": {
641
+ "description": "Per-step results",
642
+ "content": {
643
+ "application/json": {
644
+ "schema": {
645
+ "type": "array",
646
+ "items": {
647
+ "$ref": "#/components/schemas/onboardingResult"
648
+ }
649
+ }
650
+ }
651
+ },
652
+ "x-ms-summary": "Success"
653
+ },
654
+ "401": {
655
+ "description": "No description",
656
+ "x-ms-summary": "Unauthorized"
657
+ },
658
+ "404": {
659
+ "description": "No description",
660
+ "x-ms-summary": "Not Found"
661
+ }
662
+ },
663
+ "security": [
664
+ {
665
+ "Implicit": [
666
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
667
+ ]
668
+ }
669
+ ]
670
+ }
671
+ },
672
+ "/v1.0/protected/candidates/{id}/offboard-full": {
673
+ "post": {
674
+ "tags": [
675
+ "Candidates"
676
+ ],
677
+ "summary": "Run the full automated offboarding chain",
678
+ "description": "Disables the candidate's Microsoft 365 user and triggers an Azure AD → Sanity sync so the employee doc reflects the disabled state.",
679
+ "operationId": "OffboardCandidateFull",
680
+ "parameters": [
681
+ {
682
+ "name": "id",
683
+ "in": "path",
684
+ "required": true,
685
+ "schema": {
686
+ "type": "string"
687
+ }
688
+ }
689
+ ],
690
+ "responses": {
691
+ "200": {
692
+ "description": "Per-step results",
693
+ "content": {
694
+ "application/json": {
695
+ "schema": {
696
+ "type": "array",
697
+ "items": {
698
+ "$ref": "#/components/schemas/onboardingResult"
699
+ }
700
+ }
701
+ }
702
+ },
703
+ "x-ms-summary": "Success"
704
+ },
705
+ "401": {
706
+ "description": "No description",
707
+ "x-ms-summary": "Unauthorized"
708
+ },
709
+ "404": {
710
+ "description": "No description",
711
+ "x-ms-summary": "Not Found"
712
+ }
713
+ },
714
+ "security": [
715
+ {
716
+ "Implicit": [
717
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
718
+ ]
719
+ }
720
+ ]
721
+ }
722
+ },
723
+ "/v1.0/protected/candidates/{id}/offboard-full/stream": {
724
+ "post": {
725
+ "tags": [
726
+ "Candidates"
727
+ ],
728
+ "summary": "Offboarding chain with a live SSE event feed",
729
+ "description": "Streams the offboarding chain step-by-step as Server-Sent Events. Mirrors /onboard-full/stream.",
730
+ "operationId": "OffboardCandidateFullStream",
731
+ "parameters": [
732
+ {
733
+ "name": "id",
734
+ "in": "path",
735
+ "required": true,
736
+ "schema": {
737
+ "type": "string"
738
+ }
739
+ }
740
+ ],
741
+ "responses": {
742
+ "200": {
743
+ "description": "No description",
744
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
745
+ }
746
+ },
747
+ "security": [
748
+ {
749
+ "Implicit": [
750
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
751
+ ]
752
+ }
753
+ ]
754
+ }
755
+ },
756
+ "/v1.0/protected/candidates/{id}/reject": {
757
+ "post": {
758
+ "tags": [
759
+ "Candidates"
760
+ ],
761
+ "summary": "Reject a candidate",
762
+ "description": "Sets status=REJECTED. Convenience wrapper over PatchCandidate so UIs have a single-action reject button.",
763
+ "operationId": "RejectCandidate",
764
+ "parameters": [
765
+ {
766
+ "name": "id",
767
+ "in": "path",
768
+ "required": true,
769
+ "schema": {
770
+ "type": "string"
771
+ },
772
+ "x-ms-summary": "Candidate Sanity id"
773
+ }
774
+ ],
775
+ "responses": {
776
+ "200": {
777
+ "description": "Payload of SanityCandidate",
778
+ "content": {
779
+ "application/json": {
780
+ "schema": {
781
+ "$ref": "#/components/schemas/sanityCandidate"
782
+ }
783
+ }
784
+ },
785
+ "x-ms-summary": "Success"
786
+ },
787
+ "401": {
788
+ "description": "No description",
789
+ "x-ms-summary": "Unauthorized"
790
+ },
791
+ "404": {
792
+ "description": "No description",
793
+ "x-ms-summary": "Not Found"
794
+ }
795
+ },
796
+ "security": [
797
+ {
798
+ "Implicit": [
799
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
800
+ ]
801
+ }
802
+ ]
803
+ }
804
+ },
805
+ "/v1.0/protected/job-positions": {
806
+ "get": {
807
+ "tags": [
808
+ "JobPositions"
809
+ ],
810
+ "summary": "List published job positions",
811
+ "description": "Returns every job position document. Used by the admin stillinger page.",
812
+ "operationId": "ListJobPositions",
813
+ "responses": {
814
+ "200": {
815
+ "description": "Payload of Array of SanityJobPosition",
816
+ "content": {
817
+ "application/json": {
818
+ "schema": {
819
+ "type": "array",
820
+ "items": {
821
+ "$ref": "#/components/schemas/sanityJobPosition"
822
+ }
823
+ }
824
+ }
825
+ },
826
+ "x-ms-summary": "Success"
827
+ },
828
+ "401": {
829
+ "description": "No description",
830
+ "x-ms-summary": "Unauthorized"
831
+ }
832
+ },
833
+ "security": [
834
+ {
835
+ "Implicit": [
836
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
837
+ ]
838
+ }
839
+ ]
840
+ }
841
+ },
842
+ "/v1.0/protected/systems": {
843
+ "get": {
844
+ "tags": [
845
+ "Systems"
846
+ ],
847
+ "summary": "List systems used for onboarding checklists",
848
+ "description": "Returns every system document. Used by the candidate detail and systems library pages.",
849
+ "operationId": "ListSystems",
850
+ "responses": {
851
+ "200": {
852
+ "description": "Payload of Array of SanitySystemsInner",
853
+ "content": {
854
+ "application/json": {
855
+ "schema": {
856
+ "type": "array",
857
+ "items": {
858
+ "$ref": "#/components/schemas/sanitySystemsInner"
859
+ }
860
+ }
861
+ }
862
+ },
863
+ "x-ms-summary": "Success"
864
+ },
865
+ "401": {
866
+ "description": "No description",
867
+ "x-ms-summary": "Unauthorized"
868
+ }
869
+ },
870
+ "security": [
871
+ {
872
+ "Implicit": [
873
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
874
+ ]
875
+ }
876
+ ]
877
+ },
878
+ "post": {
879
+ "tags": [
880
+ "Systems"
881
+ ],
882
+ "summary": "Create a system",
883
+ "description": "Adds a new system to the onboarding/offboarding system library.",
884
+ "operationId": "CreateSystem",
885
+ "requestBody": {
886
+ "content": {
887
+ "application/json": {
888
+ "schema": {
889
+ "$ref": "#/components/schemas/sanityCreateSystem"
890
+ }
891
+ }
892
+ },
893
+ "required": true
894
+ },
895
+ "responses": {
896
+ "200": {
897
+ "description": "Payload of SanitySystemsInner",
898
+ "content": {
899
+ "application/json": {
900
+ "schema": {
901
+ "$ref": "#/components/schemas/sanitySystemsInner"
902
+ }
903
+ }
904
+ },
905
+ "x-ms-summary": "Success"
906
+ },
907
+ "400": {
908
+ "description": "Payload of Object",
909
+ "content": {
910
+ "application/json": {
911
+ "schema": {
912
+ "type": "object"
913
+ }
914
+ }
915
+ },
916
+ "x-ms-summary": "Bad Request"
917
+ },
918
+ "401": {
919
+ "description": "No description",
920
+ "x-ms-summary": "Unauthorized"
921
+ }
922
+ },
923
+ "security": [
924
+ {
925
+ "Implicit": [
926
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
927
+ ]
928
+ }
929
+ ]
930
+ }
931
+ },
932
+ "/v1.0/protected/onboarding-chain/automated-system-titles": {
933
+ "get": {
934
+ "tags": [
935
+ "Systems"
936
+ ],
937
+ "summary": "List systems handled end-to-end by the onboarding chain",
938
+ "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.",
939
+ "operationId": "GetChainAutomatedSystemTitles",
940
+ "responses": {
941
+ "200": {
942
+ "description": "Payload of Array of ChainAutomatedSystem",
943
+ "content": {
944
+ "application/json": {
945
+ "schema": {
946
+ "type": "array",
947
+ "items": {
948
+ "$ref": "#/components/schemas/chainAutomatedSystem"
949
+ }
950
+ }
951
+ }
952
+ },
953
+ "x-ms-summary": "Success"
954
+ },
955
+ "401": {
956
+ "description": "No description",
957
+ "x-ms-summary": "Unauthorized"
958
+ }
959
+ },
960
+ "security": [
961
+ {
962
+ "Implicit": [
963
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
964
+ ]
965
+ }
966
+ ]
967
+ }
968
+ },
969
+ "/v1.0/protected/onboarding-tasks": {
970
+ "get": {
971
+ "tags": [
972
+ "Tasks"
973
+ ],
974
+ "summary": "List every onboarding task",
975
+ "description": "Returns all onboarding tasks with their Portable Text description so the admin can render an editable checklist with contextual notes.",
976
+ "operationId": "ListOnboardingTasks",
977
+ "responses": {
978
+ "200": {
979
+ "description": "Payload of Array of SanityTask",
980
+ "content": {
981
+ "application/json": {
982
+ "schema": {
983
+ "type": "array",
984
+ "items": {
985
+ "$ref": "#/components/schemas/sanityTask"
986
+ }
987
+ }
988
+ }
989
+ },
990
+ "x-ms-summary": "Success"
991
+ },
992
+ "401": {
993
+ "description": "No description",
994
+ "x-ms-summary": "Unauthorized"
995
+ }
996
+ },
997
+ "security": [
998
+ {
999
+ "Implicit": [
1000
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1001
+ ]
1002
+ }
1003
+ ]
1004
+ }
1005
+ },
1006
+ "/v1.0/protected/offboarding-tasks": {
1007
+ "get": {
1008
+ "tags": [
1009
+ "Tasks"
1010
+ ],
1011
+ "summary": "List every offboarding task",
1012
+ "description": "Returns all offboarding tasks with their Portable Text description for the admin offboarding checklist.",
1013
+ "operationId": "ListOffboardingTasks",
1014
+ "responses": {
1015
+ "200": {
1016
+ "description": "Payload of Array of SanityTask",
1017
+ "content": {
1018
+ "application/json": {
1019
+ "schema": {
1020
+ "type": "array",
1021
+ "items": {
1022
+ "$ref": "#/components/schemas/sanityTask"
1023
+ }
1024
+ }
1025
+ }
1026
+ },
1027
+ "x-ms-summary": "Success"
1028
+ },
1029
+ "401": {
1030
+ "description": "No description",
1031
+ "x-ms-summary": "Unauthorized"
1032
+ }
1033
+ },
1034
+ "security": [
1035
+ {
1036
+ "Implicit": [
1037
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1038
+ ]
1039
+ }
1040
+ ]
1041
+ }
1042
+ },
1043
+ "/v1.0/protected/onboarding-tasks/with-reminder": {
1044
+ "get": {
1045
+ "tags": [
1046
+ "Tasks"
1047
+ ],
1048
+ "summary": "List onboarding tasks with a Slack reminder",
1049
+ "description": "Returns onboarding tasks that have reminderWeeksBefore + reminderSlackChannel set. Used by the admin oppgaver page.",
1050
+ "operationId": "ListOnboardingTasksWithReminder",
1051
+ "responses": {
1052
+ "200": {
1053
+ "description": "Payload of Array of SanityOnboardingTask",
1054
+ "content": {
1055
+ "application/json": {
1056
+ "schema": {
1057
+ "type": "array",
1058
+ "items": {
1059
+ "$ref": "#/components/schemas/sanityOnboardingTask"
1060
+ }
1061
+ }
1062
+ }
1063
+ },
1064
+ "x-ms-summary": "Success"
1065
+ },
1066
+ "401": {
1067
+ "description": "No description",
1068
+ "x-ms-summary": "Unauthorized"
1069
+ }
1070
+ },
1071
+ "security": [
1072
+ {
1073
+ "Implicit": [
1074
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1075
+ ]
1076
+ }
1077
+ ]
1078
+ }
1079
+ },
1080
+ "/v1.0/protected/tasks": {
1081
+ "post": {
1082
+ "tags": [
1083
+ "Tasks"
1084
+ ],
1085
+ "summary": "Create an onboarding or offboarding task",
1086
+ "description": "Adds a new task document to the library with optional Portable Text description and Slack reminder settings.",
1087
+ "operationId": "CreateTask",
1088
+ "requestBody": {
1089
+ "content": {
1090
+ "application/json": {
1091
+ "schema": {
1092
+ "$ref": "#/components/schemas/sanityCreateTask"
1093
+ }
1094
+ }
1095
+ },
1096
+ "required": true
1097
+ },
1098
+ "responses": {
1099
+ "200": {
1100
+ "description": "Payload of SanityTask",
1101
+ "content": {
1102
+ "application/json": {
1103
+ "schema": {
1104
+ "$ref": "#/components/schemas/sanityTask"
1105
+ }
1106
+ }
1107
+ },
1108
+ "x-ms-summary": "Success"
1109
+ },
1110
+ "400": {
1111
+ "description": "Payload of Object",
1112
+ "content": {
1113
+ "application/json": {
1114
+ "schema": {
1115
+ "type": "object"
1116
+ }
1117
+ }
1118
+ },
1119
+ "x-ms-summary": "Bad Request"
1120
+ },
1121
+ "401": {
1122
+ "description": "No description",
1123
+ "x-ms-summary": "Unauthorized"
1124
+ }
1125
+ },
1126
+ "security": [
1127
+ {
1128
+ "Implicit": [
1129
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1130
+ ]
1131
+ }
1132
+ ]
1133
+ }
1134
+ },
1135
+ "/v1.0/protected/tasks/{id}": {
1136
+ "patch": {
1137
+ "tags": [
1138
+ "Tasks"
1139
+ ],
1140
+ "summary": "Update an onboarding or offboarding task",
1141
+ "description": "Partially updates a task. Omitted fields are left unchanged; pass null to clear an optional field.",
1142
+ "operationId": "PatchTask",
1143
+ "parameters": [
1144
+ {
1145
+ "name": "id",
1146
+ "in": "path",
1147
+ "required": true,
1148
+ "schema": {
1149
+ "type": "string"
1150
+ }
1151
+ }
1152
+ ],
1153
+ "requestBody": {
1154
+ "content": {
1155
+ "application/json": {
1156
+ "schema": {
1157
+ "$ref": "#/components/schemas/sanityPatchTask"
1158
+ }
1159
+ }
1160
+ },
1161
+ "required": true
1162
+ },
1163
+ "responses": {
1164
+ "200": {
1165
+ "description": "Payload of SanityTask",
1166
+ "content": {
1167
+ "application/json": {
1168
+ "schema": {
1169
+ "$ref": "#/components/schemas/sanityTask"
1170
+ }
1171
+ }
1172
+ },
1173
+ "x-ms-summary": "Success"
1174
+ },
1175
+ "400": {
1176
+ "description": "Payload of Object",
1177
+ "content": {
1178
+ "application/json": {
1179
+ "schema": {
1180
+ "type": "object"
1181
+ }
1182
+ }
1183
+ },
1184
+ "x-ms-summary": "Bad Request"
1185
+ },
1186
+ "401": {
1187
+ "description": "No description",
1188
+ "x-ms-summary": "Unauthorized"
1189
+ },
1190
+ "404": {
1191
+ "description": "No description",
1192
+ "x-ms-summary": "Not Found"
1193
+ }
1194
+ },
1195
+ "security": [
1196
+ {
1197
+ "Implicit": [
1198
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1199
+ ]
1200
+ }
1201
+ ]
1202
+ },
1203
+ "delete": {
1204
+ "tags": [
1205
+ "Tasks"
1206
+ ],
1207
+ "summary": "Delete a task",
1208
+ "description": "Removes a task from the library. Does not touch candidate checklists that reference it.",
1209
+ "operationId": "DeleteTask",
1210
+ "parameters": [
1211
+ {
1212
+ "name": "id",
1213
+ "in": "path",
1214
+ "required": true,
1215
+ "schema": {
1216
+ "type": "string"
1217
+ }
1218
+ }
1219
+ ],
1220
+ "responses": {
1221
+ "200": {
1222
+ "description": "Payload of SanityTask",
1223
+ "content": {
1224
+ "application/json": {
1225
+ "schema": {
1226
+ "$ref": "#/components/schemas/sanityTask"
1227
+ }
1228
+ }
1229
+ },
1230
+ "x-ms-summary": "Success"
1231
+ },
1232
+ "401": {
1233
+ "description": "No description",
1234
+ "x-ms-summary": "Unauthorized"
1235
+ },
1236
+ "404": {
1237
+ "description": "No description",
1238
+ "x-ms-summary": "Not Found"
1239
+ }
1240
+ },
1241
+ "security": [
1242
+ {
1243
+ "Implicit": [
1244
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1245
+ ]
1246
+ }
1247
+ ]
1248
+ }
1249
+ },
1250
+ "/v1.0/protected/systems/{id}": {
1251
+ "patch": {
1252
+ "tags": [
1253
+ "Systems"
1254
+ ],
1255
+ "summary": "Update a system",
1256
+ "operationId": "PatchSystem",
1257
+ "parameters": [
1258
+ {
1259
+ "name": "id",
1260
+ "in": "path",
1261
+ "required": true,
1262
+ "schema": {
1263
+ "type": "string"
1264
+ }
1265
+ }
1266
+ ],
1267
+ "requestBody": {
1268
+ "content": {
1269
+ "application/json": {
1270
+ "schema": {
1271
+ "$ref": "#/components/schemas/sanityPatchSystem"
1272
+ }
1273
+ }
1274
+ },
1275
+ "required": true
1276
+ },
1277
+ "responses": {
1278
+ "200": {
1279
+ "description": "Payload of SanitySystemsInner",
1280
+ "content": {
1281
+ "application/json": {
1282
+ "schema": {
1283
+ "$ref": "#/components/schemas/sanitySystemsInner"
1284
+ }
1285
+ }
1286
+ },
1287
+ "x-ms-summary": "Success"
1288
+ },
1289
+ "400": {
1290
+ "description": "Payload of Object",
1291
+ "content": {
1292
+ "application/json": {
1293
+ "schema": {
1294
+ "type": "object"
1295
+ }
1296
+ }
1297
+ },
1298
+ "x-ms-summary": "Bad Request"
1299
+ },
1300
+ "401": {
1301
+ "description": "No description",
1302
+ "x-ms-summary": "Unauthorized"
1303
+ },
1304
+ "404": {
1305
+ "description": "No description",
1306
+ "x-ms-summary": "Not Found"
1307
+ }
1308
+ },
1309
+ "security": [
1310
+ {
1311
+ "Implicit": [
1312
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1313
+ ]
1314
+ }
1315
+ ]
1316
+ },
1317
+ "delete": {
1318
+ "tags": [
1319
+ "Systems"
1320
+ ],
1321
+ "summary": "Delete a system",
1322
+ "operationId": "DeleteSystem",
1323
+ "parameters": [
1324
+ {
1325
+ "name": "id",
1326
+ "in": "path",
1327
+ "required": true,
1328
+ "schema": {
1329
+ "type": "string"
1330
+ }
1331
+ }
1332
+ ],
1333
+ "responses": {
1334
+ "200": {
1335
+ "description": "Payload of SanitySystemsInner",
1336
+ "content": {
1337
+ "application/json": {
1338
+ "schema": {
1339
+ "$ref": "#/components/schemas/sanitySystemsInner"
1340
+ }
1341
+ }
1342
+ },
1343
+ "x-ms-summary": "Success"
1344
+ },
1345
+ "401": {
1346
+ "description": "No description",
1347
+ "x-ms-summary": "Unauthorized"
1348
+ },
1349
+ "404": {
1350
+ "description": "No description",
1351
+ "x-ms-summary": "Not Found"
1352
+ }
1353
+ },
1354
+ "security": [
1355
+ {
1356
+ "Implicit": [
1357
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1358
+ ]
1359
+ }
1360
+ ]
1361
+ }
1362
+ },
1363
+ "/v1.0/protected/employees": {
1364
+ "get": {
1365
+ "tags": [
1366
+ "Employees"
1367
+ ],
1368
+ "summary": "List employees for buddy/recruiter assignment",
1369
+ "description": "Lightweight employee list used by the candidate detail page's buddy and recruiter dropdowns.",
1370
+ "operationId": "ListRecruitmentEmployees",
1371
+ "responses": {
1372
+ "200": {
1373
+ "description": "Payload of Array of SanityBasicEmployee",
1374
+ "content": {
1375
+ "application/json": {
1376
+ "schema": {
1377
+ "type": "array",
1378
+ "items": {
1379
+ "$ref": "#/components/schemas/sanityBasicEmployee"
1380
+ }
1381
+ }
1382
+ }
1383
+ },
1384
+ "x-ms-summary": "Success"
1385
+ },
1386
+ "401": {
1387
+ "description": "No description",
1388
+ "x-ms-summary": "Unauthorized"
1389
+ }
1390
+ },
1391
+ "security": [
1392
+ {
1393
+ "Implicit": [
1394
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1395
+ ]
1396
+ }
1397
+ ]
1398
+ }
1399
+ }
1400
+ },
1401
+ "components": {
1402
+ "schemas": {
1403
+ "candidateNotificationPreview": {
1404
+ "type": "object",
1405
+ "properties": {
1406
+ "subject": {
1407
+ "type": "string"
1408
+ },
1409
+ "plainText": {
1410
+ "type": "string"
1411
+ },
1412
+ "htmlBody": {
1413
+ "type": "string"
1414
+ },
1415
+ "smsBody": {
1416
+ "type": "string"
1417
+ },
1418
+ "willSendEmail": {
1419
+ "type": "boolean"
1420
+ },
1421
+ "willSendSms": {
1422
+ "type": "boolean"
1423
+ },
1424
+ "recipientEmail": {
1425
+ "type": "string"
1426
+ },
1427
+ "recipientPhone": {
1428
+ "type": "string"
1429
+ }
1430
+ }
1431
+ },
1432
+ "candidateNotificationPreviewRequest": {
1433
+ "type": "object",
1434
+ "properties": {
1435
+ "ev": {
1436
+ "enum": [
1437
+ 0,
1438
+ 1,
1439
+ 2,
1440
+ 3,
1441
+ 4,
1442
+ 5,
1443
+ 6
1444
+ ],
1445
+ "type": "integer",
1446
+ "format": "int32",
1447
+ "default": 0
1448
+ },
1449
+ "name": {
1450
+ "type": "string"
1451
+ },
1452
+ "email": {
1453
+ "type": "string"
1454
+ },
1455
+ "telephone": {
1456
+ "type": "string"
1457
+ },
1458
+ "recruiterName": {
1459
+ "type": "string"
1460
+ },
1461
+ "recruiterEmail": {
1462
+ "type": "string"
1463
+ }
1464
+ }
1465
+ },
1466
+ "chainAutomatedSystem": {
1467
+ "type": "object",
1468
+ "properties": {
1469
+ "title": {
1470
+ "type": "string"
1471
+ },
1472
+ "status": {
1473
+ "type": "string"
1474
+ }
1475
+ }
1476
+ },
1477
+ "componentBlocksInnerOneOfChildrenInner": {
1478
+ "type": "object",
1479
+ "properties": {
1480
+ "sanityType": {
1481
+ "enum": [
1482
+ "span"
1483
+ ],
1484
+ "type": "string",
1485
+ "default": "span"
1486
+ },
1487
+ "marks": {
1488
+ "type": "array",
1489
+ "items": {
1490
+ "type": "string"
1491
+ }
1492
+ },
1493
+ "sanityKey": {
1494
+ "type": "string"
1495
+ },
1496
+ "text": {
1497
+ "type": "string"
1498
+ }
1499
+ }
1500
+ },
1501
+ "componentBlocksInnerOneOfMarkDefsInner": {
1502
+ "type": "object",
1503
+ "properties": {
1504
+ "sanityType": {
1505
+ "enum": [
1506
+ "link"
1507
+ ],
1508
+ "type": "string",
1509
+ "default": "link"
1510
+ },
1511
+ "href": {
1512
+ "type": "string"
1513
+ },
1514
+ "sanityKey": {
1515
+ "type": "string"
1516
+ }
1517
+ }
1518
+ },
1519
+ "createCandidateInput": {
1520
+ "type": "object",
1521
+ "properties": {
1522
+ "status": {
1523
+ "enum": [
1524
+ "CREATED",
1525
+ "INTRODUCTION",
1526
+ "OFFER",
1527
+ "SIGNED",
1528
+ "ONBOARDING",
1529
+ "USER_CREATION_REVIEW",
1530
+ "OFFBOARDING",
1531
+ "REJECTED"
1532
+ ],
1533
+ "type": "string",
1534
+ "default": "CREATED"
1535
+ },
1536
+ "candidate": {
1537
+ "type": "string"
1538
+ },
1539
+ "email": {
1540
+ "type": "string"
1541
+ },
1542
+ "jobPositionId": {
1543
+ "type": "string"
1544
+ },
1545
+ "recruiter": {
1546
+ "type": "string"
1547
+ },
1548
+ "telephone": {
1549
+ "type": "string"
1550
+ },
1551
+ "additionalProperties": {
1552
+ "type": "object",
1553
+ "additionalProperties": {
1554
+ "type": "object"
1555
+ }
1556
+ }
1557
+ }
1558
+ },
1559
+ "employeeReference": {
1560
+ "type": "object",
1561
+ "properties": {
1562
+ "sanityType": {
1563
+ "enum": [
1564
+ "reference"
1565
+ ],
1566
+ "type": "string",
1567
+ "default": "reference"
1568
+ },
1569
+ "sanityRef": {
1570
+ "type": "string"
1571
+ },
1572
+ "sanityWeak": {
1573
+ "type": "boolean"
1574
+ }
1575
+ }
1576
+ },
1577
+ "jobPositionReference": {
1578
+ "type": "object",
1579
+ "properties": {
1580
+ "sanityType": {
1581
+ "enum": [
1582
+ "reference"
1583
+ ],
1584
+ "type": "string",
1585
+ "default": "reference"
1586
+ },
1587
+ "sanityRef": {
1588
+ "type": "string"
1589
+ },
1590
+ "sanityWeak": {
1591
+ "type": "boolean"
1592
+ }
1593
+ }
1594
+ },
1595
+ "onboardingResult": {
1596
+ "type": "object",
1597
+ "properties": {
1598
+ "step": {
1599
+ "type": "string"
1600
+ },
1601
+ "status": {
1602
+ "type": "string"
1603
+ },
1604
+ "message": {
1605
+ "type": "string"
1606
+ },
1607
+ "preferredEmail": {
1608
+ "type": "string"
1609
+ },
1610
+ "createdAccountId": {
1611
+ "type": "string"
1612
+ },
1613
+ "temporaryPassword": {
1614
+ "type": "string"
1615
+ }
1616
+ }
1617
+ },
1618
+ "pageMetaImage": {
1619
+ "type": "object",
1620
+ "properties": {
1621
+ "sanityType": {
1622
+ "enum": [
1623
+ "image"
1624
+ ],
1625
+ "type": "string",
1626
+ "default": "image"
1627
+ },
1628
+ "asset": {
1629
+ "$ref": "#/components/schemas/sanityImageAssetReference"
1630
+ },
1631
+ "crop": {
1632
+ "$ref": "#/components/schemas/sanityImageCrop"
1633
+ },
1634
+ "hotspot": {
1635
+ "$ref": "#/components/schemas/sanityImageHotspot"
1636
+ },
1637
+ "media": {
1638
+ "type": "object"
1639
+ }
1640
+ }
1641
+ },
1642
+ "sanityAssetSourceData": {
1643
+ "type": "object",
1644
+ "properties": {
1645
+ "sanityType": {
1646
+ "enum": [
1647
+ "sanity.assetSourceData"
1648
+ ],
1649
+ "type": "string",
1650
+ "default": "sanity.assetSourceData"
1651
+ },
1652
+ "id": {
1653
+ "type": "string"
1654
+ },
1655
+ "name": {
1656
+ "type": "string"
1657
+ },
1658
+ "url": {
1659
+ "type": "string"
1660
+ }
1661
+ }
1662
+ },
1663
+ "sanityBasicEmployee": {
1664
+ "type": "object",
1665
+ "properties": {
1666
+ "sanityType": {
1667
+ "enum": [
1668
+ "employee"
1669
+ ],
1670
+ "type": "string",
1671
+ "default": "employee"
1672
+ },
1673
+ "email": {
1674
+ "type": "string"
1675
+ },
1676
+ "image": {
1677
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
1678
+ },
1679
+ "name": {
1680
+ "type": "string"
1681
+ },
1682
+ "sanityId": {
1683
+ "type": "string"
1684
+ },
1685
+ "slug": {
1686
+ "$ref": "#/components/schemas/slug"
1687
+ },
1688
+ "tags": {
1689
+ "type": "array",
1690
+ "items": {
1691
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
1692
+ }
1693
+ },
1694
+ "telephone": {
1695
+ "type": "string"
1696
+ }
1697
+ }
1698
+ },
1699
+ "sanityCandidate": {
1700
+ "type": "object",
1701
+ "properties": {
1702
+ "sanityType": {
1703
+ "enum": [
1704
+ "candidate"
1705
+ ],
1706
+ "type": "string",
1707
+ "default": "candidate"
1708
+ },
1709
+ "status": {
1710
+ "enum": [
1711
+ "CREATED",
1712
+ "INTRODUCTION",
1713
+ "OFFBOARDING",
1714
+ "OFFER",
1715
+ "ONBOARDING",
1716
+ "REJECTED",
1717
+ "SIGNED",
1718
+ "USER_CREATION_REVIEW"
1719
+ ],
1720
+ "type": "string",
1721
+ "default": "CREATED"
1722
+ },
1723
+ "address": {
1724
+ "$ref": "#/components/schemas/sanityCandidateAddress"
1725
+ },
1726
+ "applicationLetter": {
1727
+ "$ref": "#/components/schemas/sanityCandidateGrades"
1728
+ },
1729
+ "applicationOther": {
1730
+ "type": "string"
1731
+ },
1732
+ "bankAccount": {
1733
+ "type": "string"
1734
+ },
1735
+ "buddy": {
1736
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1737
+ },
1738
+ "candidate": {
1739
+ "type": "string"
1740
+ },
1741
+ "cv": {
1742
+ "$ref": "#/components/schemas/sanityCandidateGrades"
1743
+ },
1744
+ "email": {
1745
+ "type": "string"
1746
+ },
1747
+ "employee": {
1748
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1749
+ },
1750
+ "fromApplication": {
1751
+ "type": "boolean"
1752
+ },
1753
+ "githubUsername": {
1754
+ "type": "string"
1755
+ },
1756
+ "grades": {
1757
+ "$ref": "#/components/schemas/sanityCandidateGrades"
1758
+ },
1759
+ "jobPosition": {
1760
+ "$ref": "#/components/schemas/sanityCandidateJobPosition"
1761
+ },
1762
+ "offboardingChecklist": {
1763
+ "type": "array",
1764
+ "items": {
1765
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1766
+ }
1767
+ },
1768
+ "onboardingChecklist": {
1769
+ "type": "array",
1770
+ "items": {
1771
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1772
+ }
1773
+ },
1774
+ "ownership": {
1775
+ "type": "number",
1776
+ "format": "double"
1777
+ },
1778
+ "preferredDisplayName": {
1779
+ "type": "string"
1780
+ },
1781
+ "preferredEmail": {
1782
+ "type": "string"
1783
+ },
1784
+ "profileImage": {
1785
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
1786
+ },
1787
+ "recruiter": {
1788
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1789
+ },
1790
+ "references": {
1791
+ "type": "array",
1792
+ "items": {
1793
+ "$ref": "#/components/schemas/sanityCandidateReferencesInner"
1794
+ }
1795
+ },
1796
+ "sanityCreatedAt": {
1797
+ "type": "string"
1798
+ },
1799
+ "sanityId": {
1800
+ "type": "string"
1801
+ },
1802
+ "sanityRev": {
1803
+ "type": "string"
1804
+ },
1805
+ "sanityUpdatedAt": {
1806
+ "type": "string"
1807
+ },
1808
+ "shortUrl": {
1809
+ "type": "string"
1810
+ },
1811
+ "slipperSize": {
1812
+ "type": "string"
1813
+ },
1814
+ "startDate": {
1815
+ "type": "string"
1816
+ },
1817
+ "systemsActive": {
1818
+ "type": "array",
1819
+ "items": {
1820
+ "$ref": "#/components/schemas/sanitySystemsInner"
1821
+ }
1822
+ },
1823
+ "telephone": {
1824
+ "type": "string"
1825
+ },
1826
+ "url": {
1827
+ "type": "string"
1828
+ }
1829
+ }
1830
+ },
1831
+ "sanityCandidateAddress": {
1832
+ "type": "object",
1833
+ "properties": {
1834
+ "city": {
1835
+ "type": "string"
1836
+ },
1837
+ "postalCode": {
1838
+ "type": "string"
1839
+ },
1840
+ "street": {
1841
+ "type": "string"
1842
+ }
1843
+ }
1844
+ },
1845
+ "sanityCandidateGrades": {
1846
+ "type": "object",
1847
+ "properties": {
1848
+ "sanityType": {
1849
+ "enum": [
1850
+ "file"
1851
+ ],
1852
+ "type": "string",
1853
+ "default": "file"
1854
+ },
1855
+ "asset": {
1856
+ "$ref": "#/components/schemas/sanityDocFileAsset"
1857
+ },
1858
+ "media": {
1859
+ "type": "object"
1860
+ }
1861
+ }
1862
+ },
1863
+ "sanityCandidateJobPosition": {
1864
+ "type": "object",
1865
+ "properties": {
1866
+ "sanityType": {
1867
+ "enum": [
1868
+ "jobPosition"
1869
+ ],
1870
+ "type": "string",
1871
+ "default": "jobPosition"
1872
+ },
1873
+ "askForGrades": {
1874
+ "type": "boolean"
1875
+ },
1876
+ "deadline": {
1877
+ "type": "string"
1878
+ },
1879
+ "description": {
1880
+ "type": "array",
1881
+ "items": {
1882
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
1883
+ }
1884
+ },
1885
+ "image": {
1886
+ "$ref": "#/components/schemas/pageMetaImage"
1887
+ },
1888
+ "metaDescription": {
1889
+ "type": "string"
1890
+ },
1891
+ "sanityCreatedAt": {
1892
+ "type": "string"
1893
+ },
1894
+ "sanityId": {
1895
+ "type": "string"
1896
+ },
1897
+ "sanityRev": {
1898
+ "type": "string"
1899
+ },
1900
+ "sanityUpdatedAt": {
1901
+ "type": "string"
1902
+ },
1903
+ "slug": {
1904
+ "$ref": "#/components/schemas/slug"
1905
+ },
1906
+ "title": {
1907
+ "type": "string"
1908
+ }
1909
+ }
1910
+ },
1911
+ "sanityCandidateOffboardingChecklistInner": {
1912
+ "type": "object",
1913
+ "properties": {
1914
+ "sanityType": {
1915
+ "enum": [
1916
+ "reference"
1917
+ ],
1918
+ "type": "string",
1919
+ "default": "reference"
1920
+ },
1921
+ "sanityKey": {
1922
+ "type": "string"
1923
+ },
1924
+ "sanityRef": {
1925
+ "type": "string"
1926
+ },
1927
+ "sanityWeak": {
1928
+ "type": "boolean"
1929
+ }
1930
+ }
1931
+ },
1932
+ "sanityCandidateReferencesInner": {
1933
+ "type": "object",
1934
+ "properties": {
1935
+ "sanityType": {
1936
+ "enum": [
1937
+ "candidateReference"
1938
+ ],
1939
+ "type": "string",
1940
+ "default": "candidateReference"
1941
+ },
1942
+ "details": {
1943
+ "type": "string"
1944
+ },
1945
+ "email": {
1946
+ "type": "string"
1947
+ },
1948
+ "name": {
1949
+ "type": "string"
1950
+ },
1951
+ "phone": {
1952
+ "type": "string"
1953
+ },
1954
+ "sanityKey": {
1955
+ "type": "string"
1956
+ }
1957
+ }
1958
+ },
1959
+ "sanityCreateSystem": {
1960
+ "type": "object",
1961
+ "properties": {
1962
+ "description": {
1963
+ "type": "array",
1964
+ "items": {
1965
+ "type": "object"
1966
+ }
1967
+ },
1968
+ "links": {
1969
+ "type": "array",
1970
+ "items": {
1971
+ "type": "string"
1972
+ }
1973
+ },
1974
+ "title": {
1975
+ "type": "string"
1976
+ },
1977
+ "additionalProperties": {
1978
+ "type": "object",
1979
+ "additionalProperties": {
1980
+ "type": "object"
1981
+ }
1982
+ }
1983
+ }
1984
+ },
1985
+ "sanityCreateTask": {
1986
+ "type": "object",
1987
+ "properties": {
1988
+ "type": {
1989
+ "enum": [
1990
+ "onboarding",
1991
+ "offboarding"
1992
+ ],
1993
+ "type": "string",
1994
+ "default": "onboarding"
1995
+ },
1996
+ "description": {
1997
+ "type": "array",
1998
+ "items": {
1999
+ "type": "object"
2000
+ }
2001
+ },
2002
+ "reminderSlackChannel": {
2003
+ "type": "string"
2004
+ },
2005
+ "reminderWeeksBefore": {
2006
+ "type": "number",
2007
+ "format": "double",
2008
+ "nullable": true
2009
+ },
2010
+ "title": {
2011
+ "type": "string"
2012
+ },
2013
+ "additionalProperties": {
2014
+ "type": "object",
2015
+ "additionalProperties": {
2016
+ "type": "object"
2017
+ }
2018
+ }
2019
+ }
2020
+ },
2021
+ "sanityDocFileAsset": {
2022
+ "type": "object",
2023
+ "properties": {
2024
+ "sanityType": {
2025
+ "enum": [
2026
+ "sanity.fileAsset"
2027
+ ],
2028
+ "type": "string",
2029
+ "default": "sanity.fileAsset"
2030
+ },
2031
+ "altText": {
2032
+ "type": "string"
2033
+ },
2034
+ "assetId": {
2035
+ "type": "string"
2036
+ },
2037
+ "description": {
2038
+ "type": "string"
2039
+ },
2040
+ "extension": {
2041
+ "type": "string"
2042
+ },
2043
+ "label": {
2044
+ "type": "string"
2045
+ },
2046
+ "mimeType": {
2047
+ "type": "string"
2048
+ },
2049
+ "originalFilename": {
2050
+ "type": "string"
2051
+ },
2052
+ "path": {
2053
+ "type": "string"
2054
+ },
2055
+ "sanityCreatedAt": {
2056
+ "type": "string"
2057
+ },
2058
+ "sanityId": {
2059
+ "type": "string"
2060
+ },
2061
+ "sanityRev": {
2062
+ "type": "string"
2063
+ },
2064
+ "sanityUpdatedAt": {
2065
+ "type": "string"
2066
+ },
2067
+ "sha1hash": {
2068
+ "type": "string"
2069
+ },
2070
+ "size": {
2071
+ "type": "number",
2072
+ "format": "double"
2073
+ },
2074
+ "source": {
2075
+ "$ref": "#/components/schemas/sanityAssetSourceData"
2076
+ },
2077
+ "title": {
2078
+ "type": "string"
2079
+ },
2080
+ "uploadId": {
2081
+ "type": "string"
2082
+ },
2083
+ "url": {
2084
+ "type": "string"
2085
+ }
2086
+ }
2087
+ },
2088
+ "sanityEmployeeManager": {
2089
+ "type": "object",
2090
+ "properties": {
2091
+ "sanityType": {
2092
+ "enum": [
2093
+ "employee"
2094
+ ],
2095
+ "type": "string",
2096
+ "default": "employee"
2097
+ },
2098
+ "email": {
2099
+ "type": "string"
2100
+ },
2101
+ "image": {
2102
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
2103
+ },
2104
+ "name": {
2105
+ "type": "string"
2106
+ },
2107
+ "sanityId": {
2108
+ "type": "string"
2109
+ },
2110
+ "slug": {
2111
+ "$ref": "#/components/schemas/slug"
2112
+ },
2113
+ "tags": {
2114
+ "type": "array",
2115
+ "items": {
2116
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
2117
+ }
2118
+ },
2119
+ "telephone": {
2120
+ "type": "string"
2121
+ }
2122
+ }
2123
+ },
2124
+ "sanityFileAssetReference": {
2125
+ "type": "object",
2126
+ "properties": {
2127
+ "sanityType": {
2128
+ "enum": [
2129
+ "reference"
2130
+ ],
2131
+ "type": "string",
2132
+ "default": "reference"
2133
+ },
2134
+ "sanityRef": {
2135
+ "type": "string"
2136
+ },
2137
+ "sanityWeak": {
2138
+ "type": "boolean"
2139
+ }
2140
+ }
2141
+ },
2142
+ "sanityImageAssetReference": {
2143
+ "type": "object",
2144
+ "properties": {
2145
+ "sanityType": {
2146
+ "enum": [
2147
+ "reference"
2148
+ ],
2149
+ "type": "string",
2150
+ "default": "reference"
2151
+ },
2152
+ "sanityRef": {
2153
+ "type": "string"
2154
+ },
2155
+ "sanityWeak": {
2156
+ "type": "boolean"
2157
+ }
2158
+ }
2159
+ },
2160
+ "sanityImageCrop": {
2161
+ "type": "object",
2162
+ "properties": {
2163
+ "sanityType": {
2164
+ "enum": [
2165
+ "sanity.imageCrop"
2166
+ ],
2167
+ "type": "string",
2168
+ "default": "sanity.imageCrop"
2169
+ },
2170
+ "bottom": {
2171
+ "type": "number",
2172
+ "format": "double"
2173
+ },
2174
+ "left": {
2175
+ "type": "number",
2176
+ "format": "double"
2177
+ },
2178
+ "right": {
2179
+ "type": "number",
2180
+ "format": "double"
2181
+ },
2182
+ "top": {
2183
+ "type": "number",
2184
+ "format": "double"
2185
+ }
2186
+ }
2187
+ },
2188
+ "sanityImageHotspot": {
2189
+ "type": "object",
2190
+ "properties": {
2191
+ "sanityType": {
2192
+ "enum": [
2193
+ "sanity.imageHotspot"
2194
+ ],
2195
+ "type": "string",
2196
+ "default": "sanity.imageHotspot"
2197
+ },
2198
+ "height": {
2199
+ "type": "number",
2200
+ "format": "double"
2201
+ },
2202
+ "width": {
2203
+ "type": "number",
2204
+ "format": "double"
2205
+ },
2206
+ "x": {
2207
+ "type": "number",
2208
+ "format": "double"
2209
+ },
2210
+ "y": {
2211
+ "type": "number",
2212
+ "format": "double"
2213
+ }
2214
+ }
2215
+ },
2216
+ "sanityJobPosition": {
2217
+ "type": "object",
2218
+ "properties": {
2219
+ "sanityType": {
2220
+ "enum": [
2221
+ "jobPosition"
2222
+ ],
2223
+ "type": "string",
2224
+ "default": "jobPosition"
2225
+ },
2226
+ "askForGrades": {
2227
+ "type": "boolean"
2228
+ },
2229
+ "deadline": {
2230
+ "type": "string"
2231
+ },
2232
+ "description": {
2233
+ "type": "array",
2234
+ "items": {
2235
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2236
+ }
2237
+ },
2238
+ "image": {
2239
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2240
+ },
2241
+ "metaDescription": {
2242
+ "type": "string"
2243
+ },
2244
+ "sanityCreatedAt": {
2245
+ "type": "string"
2246
+ },
2247
+ "sanityId": {
2248
+ "type": "string"
2249
+ },
2250
+ "sanityRev": {
2251
+ "type": "string"
2252
+ },
2253
+ "sanityUpdatedAt": {
2254
+ "type": "string"
2255
+ },
2256
+ "slug": {
2257
+ "$ref": "#/components/schemas/slug"
2258
+ },
2259
+ "title": {
2260
+ "type": "string"
2261
+ }
2262
+ }
2263
+ },
2264
+ "sanityOnboardingTask": {
2265
+ "type": "object",
2266
+ "properties": {
2267
+ "type": {
2268
+ "enum": [
2269
+ "onboarding"
2270
+ ],
2271
+ "type": "string",
2272
+ "default": "onboarding"
2273
+ },
2274
+ "remindDaysBefore": {
2275
+ "type": "number",
2276
+ "format": "double"
2277
+ },
2278
+ "sanityCreatedAt": {
2279
+ "type": "string"
2280
+ },
2281
+ "sanityId": {
2282
+ "type": "string"
2283
+ },
2284
+ "sanityRev": {
2285
+ "type": "string"
2286
+ },
2287
+ "sanityType": {
2288
+ "type": "string"
2289
+ },
2290
+ "sanityUpdatedAt": {
2291
+ "type": "string"
2292
+ },
2293
+ "title": {
2294
+ "type": "string"
2295
+ },
2296
+ "additionalProperties": {
2297
+ "type": "object",
2298
+ "additionalProperties": {
2299
+ "type": "object"
2300
+ }
2301
+ }
2302
+ }
2303
+ },
2304
+ "sanityPatchCandidate": {
2305
+ "type": "object",
2306
+ "properties": {
2307
+ "sanityType": {
2308
+ "enum": [
2309
+ "candidate"
2310
+ ],
2311
+ "type": "string",
2312
+ "default": "candidate",
2313
+ "nullable": true
2314
+ },
2315
+ "status": {
2316
+ "enum": [
2317
+ "CREATED",
2318
+ "INTRODUCTION",
2319
+ "OFFER",
2320
+ "SIGNED",
2321
+ "ONBOARDING",
2322
+ "USER_CREATION_REVIEW",
2323
+ "OFFBOARDING",
2324
+ "REJECTED"
2325
+ ],
2326
+ "type": "string",
2327
+ "default": "CREATED",
2328
+ "nullable": true
2329
+ },
2330
+ "address": {
2331
+ "$ref": "#/components/schemas/sanityPatchCandidateAddress"
2332
+ },
2333
+ "applicationLetter": {
2334
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2335
+ },
2336
+ "applicationOther": {
2337
+ "type": "string"
2338
+ },
2339
+ "bankAccount": {
2340
+ "type": "string"
2341
+ },
2342
+ "buddy": {
2343
+ "$ref": "#/components/schemas/employeeReference"
2344
+ },
2345
+ "candidate": {
2346
+ "type": "string"
2347
+ },
2348
+ "cv": {
2349
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2350
+ },
2351
+ "email": {
2352
+ "type": "string"
2353
+ },
2354
+ "employee": {
2355
+ "$ref": "#/components/schemas/employeeReference"
2356
+ },
2357
+ "fromApplication": {
2358
+ "type": "boolean",
2359
+ "nullable": true
2360
+ },
2361
+ "githubUsername": {
2362
+ "type": "string"
2363
+ },
2364
+ "grades": {
2365
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2366
+ },
2367
+ "jobPosition": {
2368
+ "$ref": "#/components/schemas/jobPositionReference"
2369
+ },
2370
+ "offboardingChecklist": {
2371
+ "type": "array",
2372
+ "items": {
2373
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2374
+ }
2375
+ },
2376
+ "onboardingChecklist": {
2377
+ "type": "array",
2378
+ "items": {
2379
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2380
+ }
2381
+ },
2382
+ "ownership": {
2383
+ "type": "number",
2384
+ "format": "double",
2385
+ "nullable": true
2386
+ },
2387
+ "preferredDisplayName": {
2388
+ "type": "string"
2389
+ },
2390
+ "preferredEmail": {
2391
+ "type": "string"
2392
+ },
2393
+ "profileImage": {
2394
+ "$ref": "#/components/schemas/sanityPatchPageMetaImage"
2395
+ },
2396
+ "recruiter": {
2397
+ "$ref": "#/components/schemas/employeeReference"
2398
+ },
2399
+ "references": {
2400
+ "type": "array",
2401
+ "items": {
2402
+ "$ref": "#/components/schemas/sanityCandidateReferencesInner"
2403
+ }
2404
+ },
2405
+ "shortUrl": {
2406
+ "type": "string"
2407
+ },
2408
+ "slipperSize": {
2409
+ "type": "string"
2410
+ },
2411
+ "startDate": {
2412
+ "type": "string"
2413
+ },
2414
+ "systemsActive": {
2415
+ "type": "array",
2416
+ "items": {
2417
+ "$ref": "#/components/schemas/sanityPatchCandidateSystemsActiveInner"
2418
+ }
2419
+ },
2420
+ "telephone": {
2421
+ "type": "string"
2422
+ },
2423
+ "url": {
2424
+ "type": "string"
2425
+ },
2426
+ "additionalProperties": {
2427
+ "type": "object",
2428
+ "additionalProperties": {
2429
+ "type": "object"
2430
+ }
2431
+ }
2432
+ }
2433
+ },
2434
+ "sanityPatchCandidateAddress": {
2435
+ "type": "object",
2436
+ "properties": {
2437
+ "city": {
2438
+ "type": "string"
2439
+ },
2440
+ "postalCode": {
2441
+ "type": "string"
2442
+ },
2443
+ "street": {
2444
+ "type": "string"
2445
+ }
2446
+ }
2447
+ },
2448
+ "sanityPatchCandidateApplicationLetter": {
2449
+ "type": "object",
2450
+ "properties": {
2451
+ "sanityType": {
2452
+ "enum": [
2453
+ "file"
2454
+ ],
2455
+ "type": "string",
2456
+ "default": "file"
2457
+ },
2458
+ "asset": {
2459
+ "$ref": "#/components/schemas/sanityFileAssetReference"
2460
+ },
2461
+ "media": {
2462
+ "type": "object"
2463
+ }
2464
+ }
2465
+ },
2466
+ "sanityPatchCandidateSystemsActiveInner": {
2467
+ "type": "object",
2468
+ "properties": {
2469
+ "sanityType": {
2470
+ "enum": [
2471
+ "reference"
2472
+ ],
2473
+ "type": "string",
2474
+ "default": "reference"
2475
+ },
2476
+ "sanityKey": {
2477
+ "type": "string"
2478
+ },
2479
+ "sanityRef": {
2480
+ "type": "string"
2481
+ },
2482
+ "sanityWeak": {
2483
+ "type": "boolean"
2484
+ }
2485
+ }
2486
+ },
2487
+ "sanityPatchPageMetaImage": {
2488
+ "type": "object",
2489
+ "properties": {
2490
+ "sanityType": {
2491
+ "enum": [
2492
+ "image"
2493
+ ],
2494
+ "type": "string",
2495
+ "default": "image"
2496
+ },
2497
+ "asset": {
2498
+ "$ref": "#/components/schemas/sanityImageAssetReference"
2499
+ },
2500
+ "crop": {
2501
+ "$ref": "#/components/schemas/sanityImageCrop"
2502
+ },
2503
+ "hotspot": {
2504
+ "$ref": "#/components/schemas/sanityImageHotspot"
2505
+ },
2506
+ "media": {
2507
+ "type": "object"
2508
+ }
2509
+ }
2510
+ },
2511
+ "sanityPatchSystem": {
2512
+ "type": "object",
2513
+ "properties": {
2514
+ "description": {
2515
+ "type": "array",
2516
+ "items": {
2517
+ "type": "object"
2518
+ }
2519
+ },
2520
+ "links": {
2521
+ "type": "array",
2522
+ "items": {
2523
+ "type": "string"
2524
+ }
2525
+ },
2526
+ "title": {
2527
+ "type": "string"
2528
+ },
2529
+ "additionalProperties": {
2530
+ "type": "object",
2531
+ "additionalProperties": {
2532
+ "type": "object"
2533
+ }
2534
+ }
2535
+ }
2536
+ },
2537
+ "sanityPatchTask": {
2538
+ "type": "object",
2539
+ "properties": {
2540
+ "type": {
2541
+ "enum": [
2542
+ "onboarding",
2543
+ "offboarding"
2544
+ ],
2545
+ "type": "string",
2546
+ "default": "onboarding",
2547
+ "nullable": true
2548
+ },
2549
+ "description": {
2550
+ "type": "array",
2551
+ "items": {
2552
+ "type": "object"
2553
+ }
2554
+ },
2555
+ "reminderSlackChannel": {
2556
+ "type": "string"
2557
+ },
2558
+ "reminderWeeksBefore": {
2559
+ "type": "number",
2560
+ "format": "double",
2561
+ "nullable": true
2562
+ },
2563
+ "title": {
2564
+ "type": "string"
2565
+ },
2566
+ "additionalProperties": {
2567
+ "type": "object",
2568
+ "additionalProperties": {
2569
+ "type": "object"
2570
+ }
2571
+ }
2572
+ }
2573
+ },
2574
+ "sanitySystemsInner": {
2575
+ "type": "object",
2576
+ "properties": {
2577
+ "reminderSlackChannel": {
2578
+ "enum": [
2579
+ "#spor-økonomi",
2580
+ "#spor-rekruttering",
2581
+ "#spor-selskapsadmin",
2582
+ "#spor-sosialt",
2583
+ "#spor-utvikling"
2584
+ ],
2585
+ "type": "string",
2586
+ "default": "#spor-økonomi",
2587
+ "nullable": true
2588
+ },
2589
+ "sanityType": {
2590
+ "enum": [
2591
+ "system"
2592
+ ],
2593
+ "type": "string",
2594
+ "default": "system"
2595
+ },
2596
+ "description": {
2597
+ "type": "array",
2598
+ "items": {
2599
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2600
+ }
2601
+ },
2602
+ "image": {
2603
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2604
+ },
2605
+ "links": {
2606
+ "type": "array",
2607
+ "items": {
2608
+ "type": "string"
2609
+ }
2610
+ },
2611
+ "remindDaysBefore": {
2612
+ "type": "number",
2613
+ "format": "double"
2614
+ },
2615
+ "sanityCreatedAt": {
2616
+ "type": "string"
2617
+ },
2618
+ "sanityId": {
2619
+ "type": "string"
2620
+ },
2621
+ "sanityRev": {
2622
+ "type": "string"
2623
+ },
2624
+ "sanityUpdatedAt": {
2625
+ "type": "string"
2626
+ },
2627
+ "title": {
2628
+ "type": "string"
2629
+ }
2630
+ }
2631
+ },
2632
+ "sanitySystemsInnerDescriptionInner": {
2633
+ "type": "object",
2634
+ "properties": {
2635
+ "listItem": {
2636
+ "enum": [
2637
+ "bullet",
2638
+ "number"
2639
+ ],
2640
+ "type": "string",
2641
+ "default": "bullet",
2642
+ "nullable": true
2643
+ },
2644
+ "sanityType": {
2645
+ "enum": [
2646
+ "block"
2647
+ ],
2648
+ "type": "string",
2649
+ "default": "block"
2650
+ },
2651
+ "style": {
2652
+ "enum": [
2653
+ "blockquote",
2654
+ "h1",
2655
+ "h2",
2656
+ "h3",
2657
+ "h4",
2658
+ "h5",
2659
+ "h6",
2660
+ "normal"
2661
+ ],
2662
+ "type": "string",
2663
+ "default": "blockquote",
2664
+ "nullable": true
2665
+ },
2666
+ "children": {
2667
+ "type": "array",
2668
+ "items": {
2669
+ "$ref": "#/components/schemas/componentBlocksInnerOneOfChildrenInner"
2670
+ }
2671
+ },
2672
+ "level": {
2673
+ "type": "number",
2674
+ "format": "double"
2675
+ },
2676
+ "markDefs": {
2677
+ "type": "array",
2678
+ "items": {
2679
+ "$ref": "#/components/schemas/componentBlocksInnerOneOfMarkDefsInner"
2680
+ }
2681
+ },
2682
+ "sanityKey": {
2683
+ "type": "string"
2684
+ }
2685
+ }
2686
+ },
2687
+ "sanityTask": {
2688
+ "type": "object",
2689
+ "properties": {
2690
+ "type": {
2691
+ "enum": [
2692
+ "onboarding",
2693
+ "offboarding"
2694
+ ],
2695
+ "type": "string",
2696
+ "default": "onboarding"
2697
+ },
2698
+ "description": {
2699
+ "type": "array",
2700
+ "items": {
2701
+ "type": "object"
2702
+ }
2703
+ },
2704
+ "reminderSlackChannel": {
2705
+ "type": "string"
2706
+ },
2707
+ "reminderWeeksBefore": {
2708
+ "type": "number",
2709
+ "format": "double",
2710
+ "nullable": true
2711
+ },
2712
+ "sanityCreatedAt": {
2713
+ "type": "string"
2714
+ },
2715
+ "sanityId": {
2716
+ "type": "string"
2717
+ },
2718
+ "sanityRev": {
2719
+ "type": "string"
2720
+ },
2721
+ "sanityType": {
2722
+ "type": "string"
2723
+ },
2724
+ "sanityUpdatedAt": {
2725
+ "type": "string"
2726
+ },
2727
+ "title": {
2728
+ "type": "string"
2729
+ },
2730
+ "additionalProperties": {
2731
+ "type": "object",
2732
+ "additionalProperties": {
2733
+ "type": "object"
2734
+ }
2735
+ }
2736
+ }
2737
+ },
2738
+ "sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent": {
2739
+ "type": "object",
2740
+ "properties": {
2741
+ "sanityType": {
2742
+ "enum": [
2743
+ "tag"
2744
+ ],
2745
+ "type": "string",
2746
+ "default": "tag"
2747
+ },
2748
+ "name": {
2749
+ "type": "string"
2750
+ },
2751
+ "sanityId": {
2752
+ "type": "string"
2753
+ },
2754
+ "slug": {
2755
+ "$ref": "#/components/schemas/slug"
2756
+ }
2757
+ }
2758
+ },
2759
+ "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo": {
2760
+ "type": "object",
2761
+ "properties": {
2762
+ "sanityType": {
2763
+ "enum": [
2764
+ "image"
2765
+ ],
2766
+ "type": "string",
2767
+ "default": "image"
2768
+ },
2769
+ "asset": {
2770
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
2771
+ }
2772
+ }
2773
+ },
2774
+ "sanityTvCategoryDashboardsInnerBackgroundImage": {
2775
+ "type": "object",
2776
+ "properties": {
2777
+ "sanityType": {
2778
+ "enum": [
2779
+ "image"
2780
+ ],
2781
+ "type": "string",
2782
+ "default": "image"
2783
+ },
2784
+ "asset": {
2785
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
2786
+ }
2787
+ }
2788
+ },
2789
+ "sanityTvCategoryDashboardsInnerBackgroundImageAsset": {
2790
+ "type": "object",
2791
+ "properties": {
2792
+ "sanityType": {
2793
+ "enum": [
2794
+ "sanity.imageAsset"
2795
+ ],
2796
+ "type": "string",
2797
+ "default": "sanity.imageAsset"
2798
+ },
2799
+ "mimeType": {
2800
+ "type": "string"
2801
+ },
2802
+ "originalFilename": {
2803
+ "type": "string"
2804
+ },
2805
+ "sanityId": {
2806
+ "type": "string"
2807
+ },
2808
+ "url": {
2809
+ "type": "string"
2810
+ }
2811
+ }
2812
+ },
2813
+ "slug": {
2814
+ "type": "object",
2815
+ "properties": {
2816
+ "sanityType": {
2817
+ "enum": [
2818
+ "slug"
2819
+ ],
2820
+ "type": "string",
2821
+ "default": "slug"
2822
+ },
2823
+ "current": {
2824
+ "type": "string"
2825
+ },
2826
+ "source": {
2827
+ "type": "string"
2828
+ }
2829
+ }
2830
+ }
2831
+ },
2832
+ "securitySchemes": {
2833
+ "Implicit": {
2834
+ "type": "oauth2",
2835
+ "flows": {
2836
+ "implicit": {
2837
+ "authorizationUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/authorize",
2838
+ "tokenUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
2839
+ "refreshUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
2840
+ "scopes": {
2841
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default": "Default function scope"
2842
+ }
2843
+ }
2844
+ }
2845
+ }
2846
+ }
2847
+ }
2848
+ }