@snokam/mcp-api 0.24.3 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2699 @@
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 given system",
455
+ "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.",
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}/onboard-full/stream": {
519
+ "post": {
520
+ "tags": [
521
+ "Candidates"
522
+ ],
523
+ "summary": "Run the onboarding chain with a live SSE event feed",
524
+ "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.",
525
+ "operationId": "OnboardCandidateFullStream",
526
+ "parameters": [
527
+ {
528
+ "name": "id",
529
+ "in": "path",
530
+ "required": true,
531
+ "schema": {
532
+ "type": "string"
533
+ }
534
+ }
535
+ ],
536
+ "responses": {
537
+ "200": {
538
+ "description": "No description",
539
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
540
+ }
541
+ },
542
+ "security": [
543
+ {
544
+ "Implicit": [
545
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
546
+ ]
547
+ }
548
+ ]
549
+ }
550
+ },
551
+ "/v1.0/protected/candidates/{id}/onboard-full": {
552
+ "post": {
553
+ "tags": [
554
+ "Candidates"
555
+ ],
556
+ "summary": "Run the full automated onboarding chain",
557
+ "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.",
558
+ "operationId": "OnboardCandidateFull",
559
+ "parameters": [
560
+ {
561
+ "name": "id",
562
+ "in": "path",
563
+ "required": true,
564
+ "schema": {
565
+ "type": "string"
566
+ },
567
+ "x-ms-summary": "Candidate Sanity id"
568
+ }
569
+ ],
570
+ "responses": {
571
+ "200": {
572
+ "description": "Per-step results",
573
+ "content": {
574
+ "application/json": {
575
+ "schema": {
576
+ "type": "array",
577
+ "items": {
578
+ "$ref": "#/components/schemas/onboardingResult"
579
+ }
580
+ }
581
+ }
582
+ },
583
+ "x-ms-summary": "Success"
584
+ },
585
+ "401": {
586
+ "description": "No description",
587
+ "x-ms-summary": "Unauthorized"
588
+ },
589
+ "404": {
590
+ "description": "No description",
591
+ "x-ms-summary": "Not Found"
592
+ }
593
+ },
594
+ "security": [
595
+ {
596
+ "Implicit": [
597
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
598
+ ]
599
+ }
600
+ ]
601
+ }
602
+ },
603
+ "/v1.0/protected/candidates/{id}/offboard-full": {
604
+ "post": {
605
+ "tags": [
606
+ "Candidates"
607
+ ],
608
+ "summary": "Run the full automated offboarding chain",
609
+ "description": "Disables the candidate's Microsoft 365 user and triggers an Azure AD → Sanity sync so the employee doc reflects the disabled state.",
610
+ "operationId": "OffboardCandidateFull",
611
+ "parameters": [
612
+ {
613
+ "name": "id",
614
+ "in": "path",
615
+ "required": true,
616
+ "schema": {
617
+ "type": "string"
618
+ }
619
+ }
620
+ ],
621
+ "responses": {
622
+ "200": {
623
+ "description": "Per-step results",
624
+ "content": {
625
+ "application/json": {
626
+ "schema": {
627
+ "type": "array",
628
+ "items": {
629
+ "$ref": "#/components/schemas/onboardingResult"
630
+ }
631
+ }
632
+ }
633
+ },
634
+ "x-ms-summary": "Success"
635
+ },
636
+ "401": {
637
+ "description": "No description",
638
+ "x-ms-summary": "Unauthorized"
639
+ },
640
+ "404": {
641
+ "description": "No description",
642
+ "x-ms-summary": "Not Found"
643
+ }
644
+ },
645
+ "security": [
646
+ {
647
+ "Implicit": [
648
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
649
+ ]
650
+ }
651
+ ]
652
+ }
653
+ },
654
+ "/v1.0/protected/candidates/{id}/offboard-full/stream": {
655
+ "post": {
656
+ "tags": [
657
+ "Candidates"
658
+ ],
659
+ "summary": "Offboarding chain with a live SSE event feed",
660
+ "description": "Streams the offboarding chain step-by-step as Server-Sent Events. Mirrors /onboard-full/stream.",
661
+ "operationId": "OffboardCandidateFullStream",
662
+ "parameters": [
663
+ {
664
+ "name": "id",
665
+ "in": "path",
666
+ "required": true,
667
+ "schema": {
668
+ "type": "string"
669
+ }
670
+ }
671
+ ],
672
+ "responses": {
673
+ "200": {
674
+ "description": "No description",
675
+ "x-ms-summary": "SSE stream of OnboardingResult frames"
676
+ }
677
+ },
678
+ "security": [
679
+ {
680
+ "Implicit": [
681
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
682
+ ]
683
+ }
684
+ ]
685
+ }
686
+ },
687
+ "/v1.0/protected/candidates/{id}/reject": {
688
+ "post": {
689
+ "tags": [
690
+ "Candidates"
691
+ ],
692
+ "summary": "Reject a candidate",
693
+ "description": "Sets status=REJECTED. Convenience wrapper over PatchCandidate so UIs have a single-action reject button.",
694
+ "operationId": "RejectCandidate",
695
+ "parameters": [
696
+ {
697
+ "name": "id",
698
+ "in": "path",
699
+ "required": true,
700
+ "schema": {
701
+ "type": "string"
702
+ },
703
+ "x-ms-summary": "Candidate Sanity id"
704
+ }
705
+ ],
706
+ "responses": {
707
+ "200": {
708
+ "description": "Payload of SanityCandidate",
709
+ "content": {
710
+ "application/json": {
711
+ "schema": {
712
+ "$ref": "#/components/schemas/sanityCandidate"
713
+ }
714
+ }
715
+ },
716
+ "x-ms-summary": "Success"
717
+ },
718
+ "401": {
719
+ "description": "No description",
720
+ "x-ms-summary": "Unauthorized"
721
+ },
722
+ "404": {
723
+ "description": "No description",
724
+ "x-ms-summary": "Not Found"
725
+ }
726
+ },
727
+ "security": [
728
+ {
729
+ "Implicit": [
730
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
731
+ ]
732
+ }
733
+ ]
734
+ }
735
+ },
736
+ "/v1.0/protected/job-positions": {
737
+ "get": {
738
+ "tags": [
739
+ "JobPositions"
740
+ ],
741
+ "summary": "List published job positions",
742
+ "description": "Returns every job position document. Used by the admin stillinger page.",
743
+ "operationId": "ListJobPositions",
744
+ "responses": {
745
+ "200": {
746
+ "description": "Payload of Array of SanityJobPosition",
747
+ "content": {
748
+ "application/json": {
749
+ "schema": {
750
+ "type": "array",
751
+ "items": {
752
+ "$ref": "#/components/schemas/sanityJobPosition"
753
+ }
754
+ }
755
+ }
756
+ },
757
+ "x-ms-summary": "Success"
758
+ },
759
+ "401": {
760
+ "description": "No description",
761
+ "x-ms-summary": "Unauthorized"
762
+ }
763
+ },
764
+ "security": [
765
+ {
766
+ "Implicit": [
767
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
768
+ ]
769
+ }
770
+ ]
771
+ }
772
+ },
773
+ "/v1.0/protected/systems": {
774
+ "get": {
775
+ "tags": [
776
+ "Systems"
777
+ ],
778
+ "summary": "List systems used for onboarding checklists",
779
+ "description": "Returns every system document. Used by the candidate detail and systems library pages.",
780
+ "operationId": "ListSystems",
781
+ "responses": {
782
+ "200": {
783
+ "description": "Payload of Array of SanitySystemsInner",
784
+ "content": {
785
+ "application/json": {
786
+ "schema": {
787
+ "type": "array",
788
+ "items": {
789
+ "$ref": "#/components/schemas/sanitySystemsInner"
790
+ }
791
+ }
792
+ }
793
+ },
794
+ "x-ms-summary": "Success"
795
+ },
796
+ "401": {
797
+ "description": "No description",
798
+ "x-ms-summary": "Unauthorized"
799
+ }
800
+ },
801
+ "security": [
802
+ {
803
+ "Implicit": [
804
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
805
+ ]
806
+ }
807
+ ]
808
+ },
809
+ "post": {
810
+ "tags": [
811
+ "Systems"
812
+ ],
813
+ "summary": "Create a system",
814
+ "description": "Adds a new system to the onboarding/offboarding system library.",
815
+ "operationId": "CreateSystem",
816
+ "requestBody": {
817
+ "content": {
818
+ "application/json": {
819
+ "schema": {
820
+ "$ref": "#/components/schemas/sanityCreateSystem"
821
+ }
822
+ }
823
+ },
824
+ "required": true
825
+ },
826
+ "responses": {
827
+ "200": {
828
+ "description": "Payload of SanitySystemsInner",
829
+ "content": {
830
+ "application/json": {
831
+ "schema": {
832
+ "$ref": "#/components/schemas/sanitySystemsInner"
833
+ }
834
+ }
835
+ },
836
+ "x-ms-summary": "Success"
837
+ },
838
+ "400": {
839
+ "description": "Payload of Object",
840
+ "content": {
841
+ "application/json": {
842
+ "schema": {
843
+ "type": "object"
844
+ }
845
+ }
846
+ },
847
+ "x-ms-summary": "Bad Request"
848
+ },
849
+ "401": {
850
+ "description": "No description",
851
+ "x-ms-summary": "Unauthorized"
852
+ }
853
+ },
854
+ "security": [
855
+ {
856
+ "Implicit": [
857
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
858
+ ]
859
+ }
860
+ ]
861
+ }
862
+ },
863
+ "/v1.0/protected/onboarding-chain/automated-system-titles": {
864
+ "get": {
865
+ "tags": [
866
+ "Systems"
867
+ ],
868
+ "summary": "List systems handled end-to-end by the onboarding chain",
869
+ "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.",
870
+ "operationId": "GetChainAutomatedSystemTitles",
871
+ "responses": {
872
+ "200": {
873
+ "description": "Payload of Array of ChainAutomatedSystem",
874
+ "content": {
875
+ "application/json": {
876
+ "schema": {
877
+ "type": "array",
878
+ "items": {
879
+ "$ref": "#/components/schemas/chainAutomatedSystem"
880
+ }
881
+ }
882
+ }
883
+ },
884
+ "x-ms-summary": "Success"
885
+ },
886
+ "401": {
887
+ "description": "No description",
888
+ "x-ms-summary": "Unauthorized"
889
+ }
890
+ },
891
+ "security": [
892
+ {
893
+ "Implicit": [
894
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
895
+ ]
896
+ }
897
+ ]
898
+ }
899
+ },
900
+ "/v1.0/protected/onboarding-tasks": {
901
+ "get": {
902
+ "tags": [
903
+ "Tasks"
904
+ ],
905
+ "summary": "List every onboarding task",
906
+ "description": "Returns all onboarding tasks with their Portable Text description so the admin can render an editable checklist with contextual notes.",
907
+ "operationId": "ListOnboardingTasks",
908
+ "responses": {
909
+ "200": {
910
+ "description": "Payload of Array of SanityTask",
911
+ "content": {
912
+ "application/json": {
913
+ "schema": {
914
+ "type": "array",
915
+ "items": {
916
+ "$ref": "#/components/schemas/sanityTask"
917
+ }
918
+ }
919
+ }
920
+ },
921
+ "x-ms-summary": "Success"
922
+ },
923
+ "401": {
924
+ "description": "No description",
925
+ "x-ms-summary": "Unauthorized"
926
+ }
927
+ },
928
+ "security": [
929
+ {
930
+ "Implicit": [
931
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
932
+ ]
933
+ }
934
+ ]
935
+ }
936
+ },
937
+ "/v1.0/protected/offboarding-tasks": {
938
+ "get": {
939
+ "tags": [
940
+ "Tasks"
941
+ ],
942
+ "summary": "List every offboarding task",
943
+ "description": "Returns all offboarding tasks with their Portable Text description for the admin offboarding checklist.",
944
+ "operationId": "ListOffboardingTasks",
945
+ "responses": {
946
+ "200": {
947
+ "description": "Payload of Array of SanityTask",
948
+ "content": {
949
+ "application/json": {
950
+ "schema": {
951
+ "type": "array",
952
+ "items": {
953
+ "$ref": "#/components/schemas/sanityTask"
954
+ }
955
+ }
956
+ }
957
+ },
958
+ "x-ms-summary": "Success"
959
+ },
960
+ "401": {
961
+ "description": "No description",
962
+ "x-ms-summary": "Unauthorized"
963
+ }
964
+ },
965
+ "security": [
966
+ {
967
+ "Implicit": [
968
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
969
+ ]
970
+ }
971
+ ]
972
+ }
973
+ },
974
+ "/v1.0/protected/onboarding-tasks/with-reminder": {
975
+ "get": {
976
+ "tags": [
977
+ "Tasks"
978
+ ],
979
+ "summary": "List onboarding tasks with a Slack reminder",
980
+ "description": "Returns onboarding tasks that have reminderWeeksBefore + reminderSlackChannel set. Used by the admin oppgaver page.",
981
+ "operationId": "ListOnboardingTasksWithReminder",
982
+ "responses": {
983
+ "200": {
984
+ "description": "Payload of Array of SanityOnboardingTask",
985
+ "content": {
986
+ "application/json": {
987
+ "schema": {
988
+ "type": "array",
989
+ "items": {
990
+ "$ref": "#/components/schemas/sanityOnboardingTask"
991
+ }
992
+ }
993
+ }
994
+ },
995
+ "x-ms-summary": "Success"
996
+ },
997
+ "401": {
998
+ "description": "No description",
999
+ "x-ms-summary": "Unauthorized"
1000
+ }
1001
+ },
1002
+ "security": [
1003
+ {
1004
+ "Implicit": [
1005
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1006
+ ]
1007
+ }
1008
+ ]
1009
+ }
1010
+ },
1011
+ "/v1.0/protected/tasks": {
1012
+ "post": {
1013
+ "tags": [
1014
+ "Tasks"
1015
+ ],
1016
+ "summary": "Create an onboarding or offboarding task",
1017
+ "description": "Adds a new task document to the library with optional Portable Text description and Slack reminder settings.",
1018
+ "operationId": "CreateTask",
1019
+ "requestBody": {
1020
+ "content": {
1021
+ "application/json": {
1022
+ "schema": {
1023
+ "$ref": "#/components/schemas/sanityCreateTask"
1024
+ }
1025
+ }
1026
+ },
1027
+ "required": true
1028
+ },
1029
+ "responses": {
1030
+ "200": {
1031
+ "description": "Payload of SanityTask",
1032
+ "content": {
1033
+ "application/json": {
1034
+ "schema": {
1035
+ "$ref": "#/components/schemas/sanityTask"
1036
+ }
1037
+ }
1038
+ },
1039
+ "x-ms-summary": "Success"
1040
+ },
1041
+ "400": {
1042
+ "description": "Payload of Object",
1043
+ "content": {
1044
+ "application/json": {
1045
+ "schema": {
1046
+ "type": "object"
1047
+ }
1048
+ }
1049
+ },
1050
+ "x-ms-summary": "Bad Request"
1051
+ },
1052
+ "401": {
1053
+ "description": "No description",
1054
+ "x-ms-summary": "Unauthorized"
1055
+ }
1056
+ },
1057
+ "security": [
1058
+ {
1059
+ "Implicit": [
1060
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1061
+ ]
1062
+ }
1063
+ ]
1064
+ }
1065
+ },
1066
+ "/v1.0/protected/tasks/{id}": {
1067
+ "patch": {
1068
+ "tags": [
1069
+ "Tasks"
1070
+ ],
1071
+ "summary": "Update an onboarding or offboarding task",
1072
+ "description": "Partially updates a task. Omitted fields are left unchanged; pass null to clear an optional field.",
1073
+ "operationId": "PatchTask",
1074
+ "parameters": [
1075
+ {
1076
+ "name": "id",
1077
+ "in": "path",
1078
+ "required": true,
1079
+ "schema": {
1080
+ "type": "string"
1081
+ }
1082
+ }
1083
+ ],
1084
+ "requestBody": {
1085
+ "content": {
1086
+ "application/json": {
1087
+ "schema": {
1088
+ "$ref": "#/components/schemas/sanityPatchTask"
1089
+ }
1090
+ }
1091
+ },
1092
+ "required": true
1093
+ },
1094
+ "responses": {
1095
+ "200": {
1096
+ "description": "Payload of SanityTask",
1097
+ "content": {
1098
+ "application/json": {
1099
+ "schema": {
1100
+ "$ref": "#/components/schemas/sanityTask"
1101
+ }
1102
+ }
1103
+ },
1104
+ "x-ms-summary": "Success"
1105
+ },
1106
+ "400": {
1107
+ "description": "Payload of Object",
1108
+ "content": {
1109
+ "application/json": {
1110
+ "schema": {
1111
+ "type": "object"
1112
+ }
1113
+ }
1114
+ },
1115
+ "x-ms-summary": "Bad Request"
1116
+ },
1117
+ "401": {
1118
+ "description": "No description",
1119
+ "x-ms-summary": "Unauthorized"
1120
+ },
1121
+ "404": {
1122
+ "description": "No description",
1123
+ "x-ms-summary": "Not Found"
1124
+ }
1125
+ },
1126
+ "security": [
1127
+ {
1128
+ "Implicit": [
1129
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1130
+ ]
1131
+ }
1132
+ ]
1133
+ },
1134
+ "delete": {
1135
+ "tags": [
1136
+ "Tasks"
1137
+ ],
1138
+ "summary": "Delete a task",
1139
+ "description": "Removes a task from the library. Does not touch candidate checklists that reference it.",
1140
+ "operationId": "DeleteTask",
1141
+ "parameters": [
1142
+ {
1143
+ "name": "id",
1144
+ "in": "path",
1145
+ "required": true,
1146
+ "schema": {
1147
+ "type": "string"
1148
+ }
1149
+ }
1150
+ ],
1151
+ "responses": {
1152
+ "200": {
1153
+ "description": "Payload of SanityTask",
1154
+ "content": {
1155
+ "application/json": {
1156
+ "schema": {
1157
+ "$ref": "#/components/schemas/sanityTask"
1158
+ }
1159
+ }
1160
+ },
1161
+ "x-ms-summary": "Success"
1162
+ },
1163
+ "401": {
1164
+ "description": "No description",
1165
+ "x-ms-summary": "Unauthorized"
1166
+ },
1167
+ "404": {
1168
+ "description": "No description",
1169
+ "x-ms-summary": "Not Found"
1170
+ }
1171
+ },
1172
+ "security": [
1173
+ {
1174
+ "Implicit": [
1175
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1176
+ ]
1177
+ }
1178
+ ]
1179
+ }
1180
+ },
1181
+ "/v1.0/protected/systems/{id}": {
1182
+ "patch": {
1183
+ "tags": [
1184
+ "Systems"
1185
+ ],
1186
+ "summary": "Update a system",
1187
+ "operationId": "PatchSystem",
1188
+ "parameters": [
1189
+ {
1190
+ "name": "id",
1191
+ "in": "path",
1192
+ "required": true,
1193
+ "schema": {
1194
+ "type": "string"
1195
+ }
1196
+ }
1197
+ ],
1198
+ "requestBody": {
1199
+ "content": {
1200
+ "application/json": {
1201
+ "schema": {
1202
+ "$ref": "#/components/schemas/sanityPatchSystem"
1203
+ }
1204
+ }
1205
+ },
1206
+ "required": true
1207
+ },
1208
+ "responses": {
1209
+ "200": {
1210
+ "description": "Payload of SanitySystemsInner",
1211
+ "content": {
1212
+ "application/json": {
1213
+ "schema": {
1214
+ "$ref": "#/components/schemas/sanitySystemsInner"
1215
+ }
1216
+ }
1217
+ },
1218
+ "x-ms-summary": "Success"
1219
+ },
1220
+ "400": {
1221
+ "description": "Payload of Object",
1222
+ "content": {
1223
+ "application/json": {
1224
+ "schema": {
1225
+ "type": "object"
1226
+ }
1227
+ }
1228
+ },
1229
+ "x-ms-summary": "Bad Request"
1230
+ },
1231
+ "401": {
1232
+ "description": "No description",
1233
+ "x-ms-summary": "Unauthorized"
1234
+ },
1235
+ "404": {
1236
+ "description": "No description",
1237
+ "x-ms-summary": "Not Found"
1238
+ }
1239
+ },
1240
+ "security": [
1241
+ {
1242
+ "Implicit": [
1243
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1244
+ ]
1245
+ }
1246
+ ]
1247
+ },
1248
+ "delete": {
1249
+ "tags": [
1250
+ "Systems"
1251
+ ],
1252
+ "summary": "Delete a system",
1253
+ "operationId": "DeleteSystem",
1254
+ "parameters": [
1255
+ {
1256
+ "name": "id",
1257
+ "in": "path",
1258
+ "required": true,
1259
+ "schema": {
1260
+ "type": "string"
1261
+ }
1262
+ }
1263
+ ],
1264
+ "responses": {
1265
+ "200": {
1266
+ "description": "Payload of SanitySystemsInner",
1267
+ "content": {
1268
+ "application/json": {
1269
+ "schema": {
1270
+ "$ref": "#/components/schemas/sanitySystemsInner"
1271
+ }
1272
+ }
1273
+ },
1274
+ "x-ms-summary": "Success"
1275
+ },
1276
+ "401": {
1277
+ "description": "No description",
1278
+ "x-ms-summary": "Unauthorized"
1279
+ },
1280
+ "404": {
1281
+ "description": "No description",
1282
+ "x-ms-summary": "Not Found"
1283
+ }
1284
+ },
1285
+ "security": [
1286
+ {
1287
+ "Implicit": [
1288
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1289
+ ]
1290
+ }
1291
+ ]
1292
+ }
1293
+ },
1294
+ "/v1.0/protected/employees": {
1295
+ "get": {
1296
+ "tags": [
1297
+ "Employees"
1298
+ ],
1299
+ "summary": "List employees for buddy/recruiter assignment",
1300
+ "description": "Lightweight employee list used by the candidate detail page's buddy and recruiter dropdowns.",
1301
+ "operationId": "ListRecruitmentEmployees",
1302
+ "responses": {
1303
+ "200": {
1304
+ "description": "Payload of Array of SanityBasicEmployee",
1305
+ "content": {
1306
+ "application/json": {
1307
+ "schema": {
1308
+ "type": "array",
1309
+ "items": {
1310
+ "$ref": "#/components/schemas/sanityBasicEmployee"
1311
+ }
1312
+ }
1313
+ }
1314
+ },
1315
+ "x-ms-summary": "Success"
1316
+ },
1317
+ "401": {
1318
+ "description": "No description",
1319
+ "x-ms-summary": "Unauthorized"
1320
+ }
1321
+ },
1322
+ "security": [
1323
+ {
1324
+ "Implicit": [
1325
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default"
1326
+ ]
1327
+ }
1328
+ ]
1329
+ }
1330
+ }
1331
+ },
1332
+ "components": {
1333
+ "schemas": {
1334
+ "candidateNotificationPreview": {
1335
+ "type": "object",
1336
+ "properties": {
1337
+ "subject": {
1338
+ "type": "string"
1339
+ },
1340
+ "plainText": {
1341
+ "type": "string"
1342
+ },
1343
+ "htmlBody": {
1344
+ "type": "string"
1345
+ },
1346
+ "smsBody": {
1347
+ "type": "string"
1348
+ },
1349
+ "willSendEmail": {
1350
+ "type": "boolean"
1351
+ },
1352
+ "willSendSms": {
1353
+ "type": "boolean"
1354
+ },
1355
+ "recipientEmail": {
1356
+ "type": "string"
1357
+ },
1358
+ "recipientPhone": {
1359
+ "type": "string"
1360
+ }
1361
+ }
1362
+ },
1363
+ "candidateNotificationPreviewRequest": {
1364
+ "type": "object",
1365
+ "properties": {
1366
+ "ev": {
1367
+ "enum": [
1368
+ 0,
1369
+ 1,
1370
+ 2,
1371
+ 3,
1372
+ 4,
1373
+ 5,
1374
+ 6
1375
+ ],
1376
+ "type": "integer",
1377
+ "format": "int32",
1378
+ "default": 0
1379
+ },
1380
+ "name": {
1381
+ "type": "string"
1382
+ },
1383
+ "email": {
1384
+ "type": "string"
1385
+ },
1386
+ "telephone": {
1387
+ "type": "string"
1388
+ },
1389
+ "recruiterName": {
1390
+ "type": "string"
1391
+ },
1392
+ "recruiterEmail": {
1393
+ "type": "string"
1394
+ }
1395
+ }
1396
+ },
1397
+ "chainAutomatedSystem": {
1398
+ "type": "object",
1399
+ "properties": {
1400
+ "title": {
1401
+ "type": "string"
1402
+ },
1403
+ "status": {
1404
+ "type": "string"
1405
+ }
1406
+ }
1407
+ },
1408
+ "componentBlocksInnerOneOfChildrenInner": {
1409
+ "type": "object",
1410
+ "properties": {
1411
+ "sanityType": {
1412
+ "enum": [
1413
+ "span"
1414
+ ],
1415
+ "type": "string",
1416
+ "default": "span"
1417
+ },
1418
+ "marks": {
1419
+ "type": "array",
1420
+ "items": {
1421
+ "type": "string"
1422
+ }
1423
+ },
1424
+ "sanityKey": {
1425
+ "type": "string"
1426
+ },
1427
+ "text": {
1428
+ "type": "string"
1429
+ }
1430
+ }
1431
+ },
1432
+ "componentBlocksInnerOneOfMarkDefsInner": {
1433
+ "type": "object",
1434
+ "properties": {
1435
+ "sanityType": {
1436
+ "enum": [
1437
+ "link"
1438
+ ],
1439
+ "type": "string",
1440
+ "default": "link"
1441
+ },
1442
+ "href": {
1443
+ "type": "string"
1444
+ },
1445
+ "sanityKey": {
1446
+ "type": "string"
1447
+ }
1448
+ }
1449
+ },
1450
+ "createCandidateInput": {
1451
+ "type": "object",
1452
+ "properties": {
1453
+ "status": {
1454
+ "enum": [
1455
+ "CREATED",
1456
+ "INTRODUCTION",
1457
+ "OFFER",
1458
+ "SIGNED",
1459
+ "ONBOARDING",
1460
+ "USER_CREATION_REVIEW",
1461
+ "OFFBOARDING",
1462
+ "REJECTED"
1463
+ ],
1464
+ "type": "string",
1465
+ "default": "CREATED"
1466
+ },
1467
+ "track": {
1468
+ "enum": [
1469
+ "developer",
1470
+ "data_engineer"
1471
+ ],
1472
+ "type": "string",
1473
+ "default": "developer"
1474
+ },
1475
+ "candidate": {
1476
+ "type": "string"
1477
+ },
1478
+ "email": {
1479
+ "type": "string"
1480
+ },
1481
+ "recruiter": {
1482
+ "type": "string"
1483
+ },
1484
+ "telephone": {
1485
+ "type": "string"
1486
+ },
1487
+ "additionalProperties": {
1488
+ "type": "object",
1489
+ "additionalProperties": {
1490
+ "type": "object"
1491
+ }
1492
+ }
1493
+ }
1494
+ },
1495
+ "employeeReference": {
1496
+ "type": "object",
1497
+ "properties": {
1498
+ "sanityType": {
1499
+ "enum": [
1500
+ "reference"
1501
+ ],
1502
+ "type": "string",
1503
+ "default": "reference"
1504
+ },
1505
+ "sanityRef": {
1506
+ "type": "string"
1507
+ },
1508
+ "sanityWeak": {
1509
+ "type": "boolean"
1510
+ }
1511
+ }
1512
+ },
1513
+ "onboardingResult": {
1514
+ "type": "object",
1515
+ "properties": {
1516
+ "step": {
1517
+ "type": "string"
1518
+ },
1519
+ "status": {
1520
+ "type": "string"
1521
+ },
1522
+ "message": {
1523
+ "type": "string"
1524
+ },
1525
+ "preferredEmail": {
1526
+ "type": "string"
1527
+ },
1528
+ "createdAccountId": {
1529
+ "type": "string"
1530
+ },
1531
+ "temporaryPassword": {
1532
+ "type": "string"
1533
+ }
1534
+ }
1535
+ },
1536
+ "sanityAssetSourceData": {
1537
+ "type": "object",
1538
+ "properties": {
1539
+ "sanityType": {
1540
+ "enum": [
1541
+ "sanity.assetSourceData"
1542
+ ],
1543
+ "type": "string",
1544
+ "default": "sanity.assetSourceData"
1545
+ },
1546
+ "id": {
1547
+ "type": "string"
1548
+ },
1549
+ "name": {
1550
+ "type": "string"
1551
+ },
1552
+ "url": {
1553
+ "type": "string"
1554
+ }
1555
+ }
1556
+ },
1557
+ "sanityBasicEmployee": {
1558
+ "type": "object",
1559
+ "properties": {
1560
+ "sanityType": {
1561
+ "enum": [
1562
+ "employee"
1563
+ ],
1564
+ "type": "string",
1565
+ "default": "employee"
1566
+ },
1567
+ "email": {
1568
+ "type": "string"
1569
+ },
1570
+ "image": {
1571
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
1572
+ },
1573
+ "name": {
1574
+ "type": "string"
1575
+ },
1576
+ "sanityId": {
1577
+ "type": "string"
1578
+ },
1579
+ "slug": {
1580
+ "$ref": "#/components/schemas/slug"
1581
+ },
1582
+ "tags": {
1583
+ "type": "array",
1584
+ "items": {
1585
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
1586
+ }
1587
+ },
1588
+ "telephone": {
1589
+ "type": "string"
1590
+ }
1591
+ }
1592
+ },
1593
+ "sanityCandidate": {
1594
+ "type": "object",
1595
+ "properties": {
1596
+ "sanityType": {
1597
+ "enum": [
1598
+ "candidate"
1599
+ ],
1600
+ "type": "string",
1601
+ "default": "candidate"
1602
+ },
1603
+ "status": {
1604
+ "enum": [
1605
+ "CREATED",
1606
+ "INTRODUCTION",
1607
+ "OFFBOARDING",
1608
+ "OFFER",
1609
+ "ONBOARDING",
1610
+ "REJECTED",
1611
+ "SIGNED",
1612
+ "USER_CREATION_REVIEW"
1613
+ ],
1614
+ "type": "string",
1615
+ "default": "CREATED"
1616
+ },
1617
+ "track": {
1618
+ "enum": [
1619
+ "data_engineer",
1620
+ "developer"
1621
+ ],
1622
+ "type": "string",
1623
+ "default": "data_engineer"
1624
+ },
1625
+ "address": {
1626
+ "$ref": "#/components/schemas/sanityCandidateAddress"
1627
+ },
1628
+ "applicationLetter": {
1629
+ "$ref": "#/components/schemas/sanityCandidateGrades"
1630
+ },
1631
+ "applicationOther": {
1632
+ "type": "string"
1633
+ },
1634
+ "bankAccount": {
1635
+ "type": "string"
1636
+ },
1637
+ "buddy": {
1638
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1639
+ },
1640
+ "candidate": {
1641
+ "type": "string"
1642
+ },
1643
+ "cv": {
1644
+ "$ref": "#/components/schemas/sanityCandidateGrades"
1645
+ },
1646
+ "email": {
1647
+ "type": "string"
1648
+ },
1649
+ "employee": {
1650
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1651
+ },
1652
+ "fromApplication": {
1653
+ "type": "boolean"
1654
+ },
1655
+ "githubUsername": {
1656
+ "type": "string"
1657
+ },
1658
+ "grades": {
1659
+ "$ref": "#/components/schemas/sanityCandidateGrades"
1660
+ },
1661
+ "offboardingChecklist": {
1662
+ "type": "array",
1663
+ "items": {
1664
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1665
+ }
1666
+ },
1667
+ "onboardingChecklist": {
1668
+ "type": "array",
1669
+ "items": {
1670
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
1671
+ }
1672
+ },
1673
+ "ownership": {
1674
+ "type": "number",
1675
+ "format": "double"
1676
+ },
1677
+ "preferredDisplayName": {
1678
+ "type": "string"
1679
+ },
1680
+ "preferredEmail": {
1681
+ "type": "string"
1682
+ },
1683
+ "profileImage": {
1684
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
1685
+ },
1686
+ "recruiter": {
1687
+ "$ref": "#/components/schemas/sanityEmployeeManager"
1688
+ },
1689
+ "references": {
1690
+ "type": "array",
1691
+ "items": {
1692
+ "$ref": "#/components/schemas/sanityCandidateReferencesInner"
1693
+ }
1694
+ },
1695
+ "sanityCreatedAt": {
1696
+ "type": "string"
1697
+ },
1698
+ "sanityId": {
1699
+ "type": "string"
1700
+ },
1701
+ "sanityRev": {
1702
+ "type": "string"
1703
+ },
1704
+ "sanityUpdatedAt": {
1705
+ "type": "string"
1706
+ },
1707
+ "shortUrl": {
1708
+ "type": "string"
1709
+ },
1710
+ "startDate": {
1711
+ "type": "string"
1712
+ },
1713
+ "systemsActive": {
1714
+ "type": "array",
1715
+ "items": {
1716
+ "$ref": "#/components/schemas/sanitySystemsInner"
1717
+ }
1718
+ },
1719
+ "telephone": {
1720
+ "type": "string"
1721
+ },
1722
+ "url": {
1723
+ "type": "string"
1724
+ }
1725
+ }
1726
+ },
1727
+ "sanityCandidateAddress": {
1728
+ "type": "object",
1729
+ "properties": {
1730
+ "city": {
1731
+ "type": "string"
1732
+ },
1733
+ "postalCode": {
1734
+ "type": "string"
1735
+ },
1736
+ "street": {
1737
+ "type": "string"
1738
+ }
1739
+ }
1740
+ },
1741
+ "sanityCandidateGrades": {
1742
+ "type": "object",
1743
+ "properties": {
1744
+ "sanityType": {
1745
+ "enum": [
1746
+ "file"
1747
+ ],
1748
+ "type": "string",
1749
+ "default": "file"
1750
+ },
1751
+ "asset": {
1752
+ "$ref": "#/components/schemas/sanityDocFileAsset"
1753
+ },
1754
+ "media": {
1755
+ "type": "object"
1756
+ }
1757
+ }
1758
+ },
1759
+ "sanityCandidateOffboardingChecklistInner": {
1760
+ "type": "object",
1761
+ "properties": {
1762
+ "sanityType": {
1763
+ "enum": [
1764
+ "reference"
1765
+ ],
1766
+ "type": "string",
1767
+ "default": "reference"
1768
+ },
1769
+ "sanityKey": {
1770
+ "type": "string"
1771
+ },
1772
+ "sanityRef": {
1773
+ "type": "string"
1774
+ },
1775
+ "sanityWeak": {
1776
+ "type": "boolean"
1777
+ }
1778
+ }
1779
+ },
1780
+ "sanityCandidateReferencesInner": {
1781
+ "type": "object",
1782
+ "properties": {
1783
+ "sanityType": {
1784
+ "enum": [
1785
+ "candidateReference"
1786
+ ],
1787
+ "type": "string",
1788
+ "default": "candidateReference"
1789
+ },
1790
+ "details": {
1791
+ "type": "string"
1792
+ },
1793
+ "email": {
1794
+ "type": "string"
1795
+ },
1796
+ "name": {
1797
+ "type": "string"
1798
+ },
1799
+ "phone": {
1800
+ "type": "string"
1801
+ },
1802
+ "sanityKey": {
1803
+ "type": "string"
1804
+ }
1805
+ }
1806
+ },
1807
+ "sanityCreateSystem": {
1808
+ "type": "object",
1809
+ "properties": {
1810
+ "description": {
1811
+ "type": "array",
1812
+ "items": {
1813
+ "type": "object"
1814
+ }
1815
+ },
1816
+ "links": {
1817
+ "type": "array",
1818
+ "items": {
1819
+ "type": "string"
1820
+ }
1821
+ },
1822
+ "title": {
1823
+ "type": "string"
1824
+ },
1825
+ "additionalProperties": {
1826
+ "type": "object",
1827
+ "additionalProperties": {
1828
+ "type": "object"
1829
+ }
1830
+ }
1831
+ }
1832
+ },
1833
+ "sanityCreateTask": {
1834
+ "type": "object",
1835
+ "properties": {
1836
+ "type": {
1837
+ "enum": [
1838
+ "onboarding",
1839
+ "offboarding"
1840
+ ],
1841
+ "type": "string",
1842
+ "default": "onboarding"
1843
+ },
1844
+ "description": {
1845
+ "type": "array",
1846
+ "items": {
1847
+ "type": "object"
1848
+ }
1849
+ },
1850
+ "reminderSlackChannel": {
1851
+ "type": "string"
1852
+ },
1853
+ "reminderWeeksBefore": {
1854
+ "type": "number",
1855
+ "format": "double",
1856
+ "nullable": true
1857
+ },
1858
+ "title": {
1859
+ "type": "string"
1860
+ },
1861
+ "additionalProperties": {
1862
+ "type": "object",
1863
+ "additionalProperties": {
1864
+ "type": "object"
1865
+ }
1866
+ }
1867
+ }
1868
+ },
1869
+ "sanityDocFileAsset": {
1870
+ "type": "object",
1871
+ "properties": {
1872
+ "sanityType": {
1873
+ "enum": [
1874
+ "sanity.fileAsset"
1875
+ ],
1876
+ "type": "string",
1877
+ "default": "sanity.fileAsset"
1878
+ },
1879
+ "altText": {
1880
+ "type": "string"
1881
+ },
1882
+ "assetId": {
1883
+ "type": "string"
1884
+ },
1885
+ "description": {
1886
+ "type": "string"
1887
+ },
1888
+ "extension": {
1889
+ "type": "string"
1890
+ },
1891
+ "label": {
1892
+ "type": "string"
1893
+ },
1894
+ "mimeType": {
1895
+ "type": "string"
1896
+ },
1897
+ "originalFilename": {
1898
+ "type": "string"
1899
+ },
1900
+ "path": {
1901
+ "type": "string"
1902
+ },
1903
+ "sanityCreatedAt": {
1904
+ "type": "string"
1905
+ },
1906
+ "sanityId": {
1907
+ "type": "string"
1908
+ },
1909
+ "sanityRev": {
1910
+ "type": "string"
1911
+ },
1912
+ "sanityUpdatedAt": {
1913
+ "type": "string"
1914
+ },
1915
+ "sha1hash": {
1916
+ "type": "string"
1917
+ },
1918
+ "size": {
1919
+ "type": "number",
1920
+ "format": "double"
1921
+ },
1922
+ "source": {
1923
+ "$ref": "#/components/schemas/sanityAssetSourceData"
1924
+ },
1925
+ "title": {
1926
+ "type": "string"
1927
+ },
1928
+ "uploadId": {
1929
+ "type": "string"
1930
+ },
1931
+ "url": {
1932
+ "type": "string"
1933
+ }
1934
+ }
1935
+ },
1936
+ "sanityEmployeeManager": {
1937
+ "type": "object",
1938
+ "properties": {
1939
+ "sanityType": {
1940
+ "enum": [
1941
+ "employee"
1942
+ ],
1943
+ "type": "string",
1944
+ "default": "employee"
1945
+ },
1946
+ "email": {
1947
+ "type": "string"
1948
+ },
1949
+ "image": {
1950
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo"
1951
+ },
1952
+ "name": {
1953
+ "type": "string"
1954
+ },
1955
+ "sanityId": {
1956
+ "type": "string"
1957
+ },
1958
+ "slug": {
1959
+ "$ref": "#/components/schemas/slug"
1960
+ },
1961
+ "tags": {
1962
+ "type": "array",
1963
+ "items": {
1964
+ "$ref": "#/components/schemas/sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent"
1965
+ }
1966
+ },
1967
+ "telephone": {
1968
+ "type": "string"
1969
+ }
1970
+ }
1971
+ },
1972
+ "sanityFileAssetReference": {
1973
+ "type": "object",
1974
+ "properties": {
1975
+ "sanityType": {
1976
+ "enum": [
1977
+ "reference"
1978
+ ],
1979
+ "type": "string",
1980
+ "default": "reference"
1981
+ },
1982
+ "sanityRef": {
1983
+ "type": "string"
1984
+ },
1985
+ "sanityWeak": {
1986
+ "type": "boolean"
1987
+ }
1988
+ }
1989
+ },
1990
+ "sanityImageAssetReference": {
1991
+ "type": "object",
1992
+ "properties": {
1993
+ "sanityType": {
1994
+ "enum": [
1995
+ "reference"
1996
+ ],
1997
+ "type": "string",
1998
+ "default": "reference"
1999
+ },
2000
+ "sanityRef": {
2001
+ "type": "string"
2002
+ },
2003
+ "sanityWeak": {
2004
+ "type": "boolean"
2005
+ }
2006
+ }
2007
+ },
2008
+ "sanityImageCrop": {
2009
+ "type": "object",
2010
+ "properties": {
2011
+ "sanityType": {
2012
+ "enum": [
2013
+ "sanity.imageCrop"
2014
+ ],
2015
+ "type": "string",
2016
+ "default": "sanity.imageCrop"
2017
+ },
2018
+ "bottom": {
2019
+ "type": "number",
2020
+ "format": "double"
2021
+ },
2022
+ "left": {
2023
+ "type": "number",
2024
+ "format": "double"
2025
+ },
2026
+ "right": {
2027
+ "type": "number",
2028
+ "format": "double"
2029
+ },
2030
+ "top": {
2031
+ "type": "number",
2032
+ "format": "double"
2033
+ }
2034
+ }
2035
+ },
2036
+ "sanityImageHotspot": {
2037
+ "type": "object",
2038
+ "properties": {
2039
+ "sanityType": {
2040
+ "enum": [
2041
+ "sanity.imageHotspot"
2042
+ ],
2043
+ "type": "string",
2044
+ "default": "sanity.imageHotspot"
2045
+ },
2046
+ "height": {
2047
+ "type": "number",
2048
+ "format": "double"
2049
+ },
2050
+ "width": {
2051
+ "type": "number",
2052
+ "format": "double"
2053
+ },
2054
+ "x": {
2055
+ "type": "number",
2056
+ "format": "double"
2057
+ },
2058
+ "y": {
2059
+ "type": "number",
2060
+ "format": "double"
2061
+ }
2062
+ }
2063
+ },
2064
+ "sanityJobPosition": {
2065
+ "type": "object",
2066
+ "properties": {
2067
+ "sanityType": {
2068
+ "enum": [
2069
+ "jobPosition"
2070
+ ],
2071
+ "type": "string",
2072
+ "default": "jobPosition"
2073
+ },
2074
+ "askForGrades": {
2075
+ "type": "boolean"
2076
+ },
2077
+ "deadline": {
2078
+ "type": "string"
2079
+ },
2080
+ "description": {
2081
+ "type": "array",
2082
+ "items": {
2083
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2084
+ }
2085
+ },
2086
+ "image": {
2087
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2088
+ },
2089
+ "metaDescription": {
2090
+ "type": "string"
2091
+ },
2092
+ "sanityCreatedAt": {
2093
+ "type": "string"
2094
+ },
2095
+ "sanityId": {
2096
+ "type": "string"
2097
+ },
2098
+ "sanityRev": {
2099
+ "type": "string"
2100
+ },
2101
+ "sanityUpdatedAt": {
2102
+ "type": "string"
2103
+ },
2104
+ "slug": {
2105
+ "$ref": "#/components/schemas/slug"
2106
+ },
2107
+ "title": {
2108
+ "type": "string"
2109
+ }
2110
+ }
2111
+ },
2112
+ "sanityOnboardingTask": {
2113
+ "type": "object",
2114
+ "properties": {
2115
+ "type": {
2116
+ "enum": [
2117
+ "onboarding"
2118
+ ],
2119
+ "type": "string",
2120
+ "default": "onboarding"
2121
+ },
2122
+ "remindDaysBefore": {
2123
+ "type": "number",
2124
+ "format": "double"
2125
+ },
2126
+ "sanityCreatedAt": {
2127
+ "type": "string"
2128
+ },
2129
+ "sanityId": {
2130
+ "type": "string"
2131
+ },
2132
+ "sanityRev": {
2133
+ "type": "string"
2134
+ },
2135
+ "sanityType": {
2136
+ "type": "string"
2137
+ },
2138
+ "sanityUpdatedAt": {
2139
+ "type": "string"
2140
+ },
2141
+ "title": {
2142
+ "type": "string"
2143
+ },
2144
+ "additionalProperties": {
2145
+ "type": "object",
2146
+ "additionalProperties": {
2147
+ "type": "object"
2148
+ }
2149
+ }
2150
+ }
2151
+ },
2152
+ "sanityPatchCandidate": {
2153
+ "type": "object",
2154
+ "properties": {
2155
+ "sanityType": {
2156
+ "enum": [
2157
+ "candidate"
2158
+ ],
2159
+ "type": "string",
2160
+ "default": "candidate",
2161
+ "nullable": true
2162
+ },
2163
+ "status": {
2164
+ "enum": [
2165
+ "CREATED",
2166
+ "INTRODUCTION",
2167
+ "OFFER",
2168
+ "SIGNED",
2169
+ "ONBOARDING",
2170
+ "USER_CREATION_REVIEW",
2171
+ "OFFBOARDING",
2172
+ "REJECTED"
2173
+ ],
2174
+ "type": "string",
2175
+ "default": "CREATED",
2176
+ "nullable": true
2177
+ },
2178
+ "track": {
2179
+ "enum": [
2180
+ "developer",
2181
+ "data_engineer"
2182
+ ],
2183
+ "type": "string",
2184
+ "default": "developer",
2185
+ "nullable": true
2186
+ },
2187
+ "address": {
2188
+ "$ref": "#/components/schemas/sanityPatchCandidateAddress"
2189
+ },
2190
+ "applicationLetter": {
2191
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2192
+ },
2193
+ "applicationOther": {
2194
+ "type": "string"
2195
+ },
2196
+ "bankAccount": {
2197
+ "type": "string"
2198
+ },
2199
+ "buddy": {
2200
+ "$ref": "#/components/schemas/employeeReference"
2201
+ },
2202
+ "candidate": {
2203
+ "type": "string"
2204
+ },
2205
+ "cv": {
2206
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2207
+ },
2208
+ "email": {
2209
+ "type": "string"
2210
+ },
2211
+ "employee": {
2212
+ "$ref": "#/components/schemas/employeeReference"
2213
+ },
2214
+ "fromApplication": {
2215
+ "type": "boolean",
2216
+ "nullable": true
2217
+ },
2218
+ "githubUsername": {
2219
+ "type": "string"
2220
+ },
2221
+ "grades": {
2222
+ "$ref": "#/components/schemas/sanityPatchCandidateApplicationLetter"
2223
+ },
2224
+ "offboardingChecklist": {
2225
+ "type": "array",
2226
+ "items": {
2227
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2228
+ }
2229
+ },
2230
+ "onboardingChecklist": {
2231
+ "type": "array",
2232
+ "items": {
2233
+ "$ref": "#/components/schemas/sanityCandidateOffboardingChecklistInner"
2234
+ }
2235
+ },
2236
+ "ownership": {
2237
+ "type": "number",
2238
+ "format": "double",
2239
+ "nullable": true
2240
+ },
2241
+ "preferredDisplayName": {
2242
+ "type": "string"
2243
+ },
2244
+ "preferredEmail": {
2245
+ "type": "string"
2246
+ },
2247
+ "profileImage": {
2248
+ "$ref": "#/components/schemas/sanityPatchPageMetaImage"
2249
+ },
2250
+ "recruiter": {
2251
+ "$ref": "#/components/schemas/employeeReference"
2252
+ },
2253
+ "references": {
2254
+ "type": "array",
2255
+ "items": {
2256
+ "$ref": "#/components/schemas/sanityCandidateReferencesInner"
2257
+ }
2258
+ },
2259
+ "shortUrl": {
2260
+ "type": "string"
2261
+ },
2262
+ "startDate": {
2263
+ "type": "string"
2264
+ },
2265
+ "systemsActive": {
2266
+ "type": "array",
2267
+ "items": {
2268
+ "$ref": "#/components/schemas/sanityPatchCandidateSystemsActiveInner"
2269
+ }
2270
+ },
2271
+ "telephone": {
2272
+ "type": "string"
2273
+ },
2274
+ "url": {
2275
+ "type": "string"
2276
+ },
2277
+ "additionalProperties": {
2278
+ "type": "object",
2279
+ "additionalProperties": {
2280
+ "type": "object"
2281
+ }
2282
+ }
2283
+ }
2284
+ },
2285
+ "sanityPatchCandidateAddress": {
2286
+ "type": "object",
2287
+ "properties": {
2288
+ "city": {
2289
+ "type": "string"
2290
+ },
2291
+ "postalCode": {
2292
+ "type": "string"
2293
+ },
2294
+ "street": {
2295
+ "type": "string"
2296
+ }
2297
+ }
2298
+ },
2299
+ "sanityPatchCandidateApplicationLetter": {
2300
+ "type": "object",
2301
+ "properties": {
2302
+ "sanityType": {
2303
+ "enum": [
2304
+ "file"
2305
+ ],
2306
+ "type": "string",
2307
+ "default": "file"
2308
+ },
2309
+ "asset": {
2310
+ "$ref": "#/components/schemas/sanityFileAssetReference"
2311
+ },
2312
+ "media": {
2313
+ "type": "object"
2314
+ }
2315
+ }
2316
+ },
2317
+ "sanityPatchCandidateSystemsActiveInner": {
2318
+ "type": "object",
2319
+ "properties": {
2320
+ "sanityType": {
2321
+ "enum": [
2322
+ "reference"
2323
+ ],
2324
+ "type": "string",
2325
+ "default": "reference"
2326
+ },
2327
+ "sanityKey": {
2328
+ "type": "string"
2329
+ },
2330
+ "sanityRef": {
2331
+ "type": "string"
2332
+ },
2333
+ "sanityWeak": {
2334
+ "type": "boolean"
2335
+ }
2336
+ }
2337
+ },
2338
+ "sanityPatchPageMetaImage": {
2339
+ "type": "object",
2340
+ "properties": {
2341
+ "sanityType": {
2342
+ "enum": [
2343
+ "image"
2344
+ ],
2345
+ "type": "string",
2346
+ "default": "image"
2347
+ },
2348
+ "asset": {
2349
+ "$ref": "#/components/schemas/sanityImageAssetReference"
2350
+ },
2351
+ "crop": {
2352
+ "$ref": "#/components/schemas/sanityImageCrop"
2353
+ },
2354
+ "hotspot": {
2355
+ "$ref": "#/components/schemas/sanityImageHotspot"
2356
+ },
2357
+ "media": {
2358
+ "type": "object"
2359
+ }
2360
+ }
2361
+ },
2362
+ "sanityPatchSystem": {
2363
+ "type": "object",
2364
+ "properties": {
2365
+ "description": {
2366
+ "type": "array",
2367
+ "items": {
2368
+ "type": "object"
2369
+ }
2370
+ },
2371
+ "links": {
2372
+ "type": "array",
2373
+ "items": {
2374
+ "type": "string"
2375
+ }
2376
+ },
2377
+ "title": {
2378
+ "type": "string"
2379
+ },
2380
+ "additionalProperties": {
2381
+ "type": "object",
2382
+ "additionalProperties": {
2383
+ "type": "object"
2384
+ }
2385
+ }
2386
+ }
2387
+ },
2388
+ "sanityPatchTask": {
2389
+ "type": "object",
2390
+ "properties": {
2391
+ "type": {
2392
+ "enum": [
2393
+ "onboarding",
2394
+ "offboarding"
2395
+ ],
2396
+ "type": "string",
2397
+ "default": "onboarding",
2398
+ "nullable": true
2399
+ },
2400
+ "description": {
2401
+ "type": "array",
2402
+ "items": {
2403
+ "type": "object"
2404
+ }
2405
+ },
2406
+ "reminderSlackChannel": {
2407
+ "type": "string"
2408
+ },
2409
+ "reminderWeeksBefore": {
2410
+ "type": "number",
2411
+ "format": "double",
2412
+ "nullable": true
2413
+ },
2414
+ "title": {
2415
+ "type": "string"
2416
+ },
2417
+ "additionalProperties": {
2418
+ "type": "object",
2419
+ "additionalProperties": {
2420
+ "type": "object"
2421
+ }
2422
+ }
2423
+ }
2424
+ },
2425
+ "sanitySystemsInner": {
2426
+ "type": "object",
2427
+ "properties": {
2428
+ "reminderSlackChannel": {
2429
+ "enum": [
2430
+ "#spor-økonomi",
2431
+ "#spor-rekruttering",
2432
+ "#spor-selskapsadmin",
2433
+ "#spor-sosialt",
2434
+ "#spor-utvikling"
2435
+ ],
2436
+ "type": "string",
2437
+ "default": "#spor-økonomi",
2438
+ "nullable": true
2439
+ },
2440
+ "sanityType": {
2441
+ "enum": [
2442
+ "system"
2443
+ ],
2444
+ "type": "string",
2445
+ "default": "system"
2446
+ },
2447
+ "description": {
2448
+ "type": "array",
2449
+ "items": {
2450
+ "$ref": "#/components/schemas/sanitySystemsInnerDescriptionInner"
2451
+ }
2452
+ },
2453
+ "image": {
2454
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImage"
2455
+ },
2456
+ "links": {
2457
+ "type": "array",
2458
+ "items": {
2459
+ "type": "string"
2460
+ }
2461
+ },
2462
+ "remindDaysBefore": {
2463
+ "type": "number",
2464
+ "format": "double"
2465
+ },
2466
+ "sanityCreatedAt": {
2467
+ "type": "string"
2468
+ },
2469
+ "sanityId": {
2470
+ "type": "string"
2471
+ },
2472
+ "sanityRev": {
2473
+ "type": "string"
2474
+ },
2475
+ "sanityUpdatedAt": {
2476
+ "type": "string"
2477
+ },
2478
+ "title": {
2479
+ "type": "string"
2480
+ }
2481
+ }
2482
+ },
2483
+ "sanitySystemsInnerDescriptionInner": {
2484
+ "type": "object",
2485
+ "properties": {
2486
+ "listItem": {
2487
+ "enum": [
2488
+ "bullet",
2489
+ "number"
2490
+ ],
2491
+ "type": "string",
2492
+ "default": "bullet",
2493
+ "nullable": true
2494
+ },
2495
+ "sanityType": {
2496
+ "enum": [
2497
+ "block"
2498
+ ],
2499
+ "type": "string",
2500
+ "default": "block"
2501
+ },
2502
+ "style": {
2503
+ "enum": [
2504
+ "blockquote",
2505
+ "h1",
2506
+ "h2",
2507
+ "h3",
2508
+ "h4",
2509
+ "h5",
2510
+ "h6",
2511
+ "normal"
2512
+ ],
2513
+ "type": "string",
2514
+ "default": "blockquote",
2515
+ "nullable": true
2516
+ },
2517
+ "children": {
2518
+ "type": "array",
2519
+ "items": {
2520
+ "$ref": "#/components/schemas/componentBlocksInnerOneOfChildrenInner"
2521
+ }
2522
+ },
2523
+ "level": {
2524
+ "type": "number",
2525
+ "format": "double"
2526
+ },
2527
+ "markDefs": {
2528
+ "type": "array",
2529
+ "items": {
2530
+ "$ref": "#/components/schemas/componentBlocksInnerOneOfMarkDefsInner"
2531
+ }
2532
+ },
2533
+ "sanityKey": {
2534
+ "type": "string"
2535
+ }
2536
+ }
2537
+ },
2538
+ "sanityTask": {
2539
+ "type": "object",
2540
+ "properties": {
2541
+ "type": {
2542
+ "enum": [
2543
+ "onboarding",
2544
+ "offboarding"
2545
+ ],
2546
+ "type": "string",
2547
+ "default": "onboarding"
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
+ "sanityCreatedAt": {
2564
+ "type": "string"
2565
+ },
2566
+ "sanityId": {
2567
+ "type": "string"
2568
+ },
2569
+ "sanityRev": {
2570
+ "type": "string"
2571
+ },
2572
+ "sanityType": {
2573
+ "type": "string"
2574
+ },
2575
+ "sanityUpdatedAt": {
2576
+ "type": "string"
2577
+ },
2578
+ "title": {
2579
+ "type": "string"
2580
+ },
2581
+ "additionalProperties": {
2582
+ "type": "object",
2583
+ "additionalProperties": {
2584
+ "type": "object"
2585
+ }
2586
+ }
2587
+ }
2588
+ },
2589
+ "sanityTechnologyWithRelationsProjectsInnerTechnologiesInnerParent": {
2590
+ "type": "object",
2591
+ "properties": {
2592
+ "sanityType": {
2593
+ "enum": [
2594
+ "tag"
2595
+ ],
2596
+ "type": "string",
2597
+ "default": "tag"
2598
+ },
2599
+ "name": {
2600
+ "type": "string"
2601
+ },
2602
+ "sanityId": {
2603
+ "type": "string"
2604
+ },
2605
+ "slug": {
2606
+ "$ref": "#/components/schemas/slug"
2607
+ }
2608
+ }
2609
+ },
2610
+ "sanityTechnologyWithRelationsProjectsInnerTestimonialsInnerCustomerLogo": {
2611
+ "type": "object",
2612
+ "properties": {
2613
+ "sanityType": {
2614
+ "enum": [
2615
+ "image"
2616
+ ],
2617
+ "type": "string",
2618
+ "default": "image"
2619
+ },
2620
+ "asset": {
2621
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
2622
+ }
2623
+ }
2624
+ },
2625
+ "sanityTvCategoryDashboardsInnerBackgroundImage": {
2626
+ "type": "object",
2627
+ "properties": {
2628
+ "sanityType": {
2629
+ "enum": [
2630
+ "image"
2631
+ ],
2632
+ "type": "string",
2633
+ "default": "image"
2634
+ },
2635
+ "asset": {
2636
+ "$ref": "#/components/schemas/sanityTvCategoryDashboardsInnerBackgroundImageAsset"
2637
+ }
2638
+ }
2639
+ },
2640
+ "sanityTvCategoryDashboardsInnerBackgroundImageAsset": {
2641
+ "type": "object",
2642
+ "properties": {
2643
+ "sanityType": {
2644
+ "enum": [
2645
+ "sanity.imageAsset"
2646
+ ],
2647
+ "type": "string",
2648
+ "default": "sanity.imageAsset"
2649
+ },
2650
+ "mimeType": {
2651
+ "type": "string"
2652
+ },
2653
+ "originalFilename": {
2654
+ "type": "string"
2655
+ },
2656
+ "sanityId": {
2657
+ "type": "string"
2658
+ },
2659
+ "url": {
2660
+ "type": "string"
2661
+ }
2662
+ }
2663
+ },
2664
+ "slug": {
2665
+ "type": "object",
2666
+ "properties": {
2667
+ "sanityType": {
2668
+ "enum": [
2669
+ "slug"
2670
+ ],
2671
+ "type": "string",
2672
+ "default": "slug"
2673
+ },
2674
+ "current": {
2675
+ "type": "string"
2676
+ },
2677
+ "source": {
2678
+ "type": "string"
2679
+ }
2680
+ }
2681
+ }
2682
+ },
2683
+ "securitySchemes": {
2684
+ "Implicit": {
2685
+ "type": "oauth2",
2686
+ "flows": {
2687
+ "implicit": {
2688
+ "authorizationUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/authorize",
2689
+ "tokenUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
2690
+ "refreshUrl": "https://login.microsoftonline.com/a8533784-aa3c-403b-a61a-1533ecc6e3ed/oauth2/v2.0/token",
2691
+ "scopes": {
2692
+ "api://050da74a-523f-48ba-a9de-e5c8d6805a93/.default": "Default function scope"
2693
+ }
2694
+ }
2695
+ }
2696
+ }
2697
+ }
2698
+ }
2699
+ }