@smartytalent/openai-tools 0.1.33-dev.37 → 0.1.33-dev.38
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.
- package/dist/tools.json +591 -15
- package/package.json +1 -1
package/dist/tools.json
CHANGED
|
@@ -16426,12 +16426,14 @@
|
|
|
16426
16426
|
"name": "create_attempt",
|
|
16427
16427
|
"description": "Create Attempt",
|
|
16428
16428
|
"parameters": {
|
|
16429
|
+
"title": "CreateAttemptRequestBody",
|
|
16429
16430
|
"type": "object",
|
|
16430
16431
|
"required": [
|
|
16431
16432
|
"data"
|
|
16432
16433
|
],
|
|
16433
16434
|
"properties": {
|
|
16434
16435
|
"data": {
|
|
16436
|
+
"title": "CreateAttemptRequestBodyData",
|
|
16435
16437
|
"type": "object",
|
|
16436
16438
|
"required": [
|
|
16437
16439
|
"type",
|
|
@@ -16445,35 +16447,354 @@
|
|
|
16445
16447
|
]
|
|
16446
16448
|
},
|
|
16447
16449
|
"attributes": {
|
|
16450
|
+
"title": "AttemptAttributesSchema",
|
|
16448
16451
|
"type": "object",
|
|
16449
16452
|
"properties": {
|
|
16453
|
+
"status": {
|
|
16454
|
+
"type": "string",
|
|
16455
|
+
"description": "Attempt lifecycle. Set server-side; only `submitted` is candidate-writable (via guest PATCH).",
|
|
16456
|
+
"enum": [
|
|
16457
|
+
"pending",
|
|
16458
|
+
"inProgress",
|
|
16459
|
+
"submitted",
|
|
16460
|
+
"evaluated",
|
|
16461
|
+
"reviewed",
|
|
16462
|
+
"anonymized",
|
|
16463
|
+
"failed"
|
|
16464
|
+
]
|
|
16465
|
+
},
|
|
16450
16466
|
"languageCode": {
|
|
16451
|
-
"type": "string"
|
|
16467
|
+
"type": "string",
|
|
16468
|
+
"description": "Locale the candidate is taking the assessment in (e.g. 'en-US')."
|
|
16452
16469
|
},
|
|
16453
|
-
"
|
|
16454
|
-
"type": "
|
|
16470
|
+
"answers": {
|
|
16471
|
+
"type": "array",
|
|
16472
|
+
"description": "Candidate's answers, one per attempted question. See AnswerSchema.",
|
|
16473
|
+
"items": {
|
|
16474
|
+
"title": "AnswerSchema",
|
|
16475
|
+
"description": "A candidate's answer to one question. The `value` shape depends\non the question type - branch on `questionType` to know how to\nread it. File uploads (file-upload / video-recording question\ntypes) live in the separate `files` array, NOT in `value`. This\nmirrors the wire shape used by /v1/guest/attempts/{id} PATCH\nand avoids OpenAPI generator collisions on multiple array\nvariants in a single oneOf.",
|
|
16476
|
+
"type": "object",
|
|
16477
|
+
"required": [
|
|
16478
|
+
"questionId"
|
|
16479
|
+
],
|
|
16480
|
+
"properties": {
|
|
16481
|
+
"questionId": {
|
|
16482
|
+
"type": "string",
|
|
16483
|
+
"description": "References QuestionSchema.questionId."
|
|
16484
|
+
},
|
|
16485
|
+
"questionType": {
|
|
16486
|
+
"type": "string",
|
|
16487
|
+
"description": "Mirror of the question's type for client-side discrimination.",
|
|
16488
|
+
"enum": [
|
|
16489
|
+
"single-choice",
|
|
16490
|
+
"multiple-choice",
|
|
16491
|
+
"scale",
|
|
16492
|
+
"open-text",
|
|
16493
|
+
"ranking",
|
|
16494
|
+
"situational-judgment",
|
|
16495
|
+
"file-upload",
|
|
16496
|
+
"video-recording"
|
|
16497
|
+
]
|
|
16498
|
+
},
|
|
16499
|
+
"value": {
|
|
16500
|
+
"description": "Non-file answer payload. Discriminated by questionType:\n single-choice -> string (option id)\n multiple-choice -> string[] (option ids)\n scale -> number\n open-text -> string\n ranking -> string[] (option ids in order)\n situational-judgment -> { best: string; worst: string }\n file-upload -> usually empty / null (use `files`)\n video-recording -> usually empty / null (use `files`)",
|
|
16501
|
+
"oneOf": [
|
|
16502
|
+
{
|
|
16503
|
+
"type": "string",
|
|
16504
|
+
"description": "single-choice / open-text"
|
|
16505
|
+
},
|
|
16506
|
+
{
|
|
16507
|
+
"type": "number",
|
|
16508
|
+
"description": "scale"
|
|
16509
|
+
},
|
|
16510
|
+
{
|
|
16511
|
+
"type": "array",
|
|
16512
|
+
"items": {
|
|
16513
|
+
"type": "string"
|
|
16514
|
+
},
|
|
16515
|
+
"description": "multiple-choice / ranking - array of option ids"
|
|
16516
|
+
},
|
|
16517
|
+
{
|
|
16518
|
+
"type": "object",
|
|
16519
|
+
"description": "situational-judgment",
|
|
16520
|
+
"properties": {
|
|
16521
|
+
"best": {
|
|
16522
|
+
"type": "string"
|
|
16523
|
+
},
|
|
16524
|
+
"worst": {
|
|
16525
|
+
"type": "string"
|
|
16526
|
+
}
|
|
16527
|
+
}
|
|
16528
|
+
}
|
|
16529
|
+
]
|
|
16530
|
+
},
|
|
16531
|
+
"files": {
|
|
16532
|
+
"type": "array",
|
|
16533
|
+
"description": "File / video uploads for `file-upload` and `video-recording`\nquestion types. Empty for all other types. Files are uploaded\nvia presigned PUT to S3 first; this carries the resulting\nreferences.",
|
|
16534
|
+
"items": {
|
|
16535
|
+
"title": "AnswerFileSchema",
|
|
16536
|
+
"description": "File reference for upload-type answers. fileUrl is the S3 path; FE never writes there directly - server issues presigned PUT.",
|
|
16537
|
+
"type": "object",
|
|
16538
|
+
"properties": {
|
|
16539
|
+
"fileUrl": {
|
|
16540
|
+
"type": "string",
|
|
16541
|
+
"description": "S3 location (s3://bucket/key) - resolves to a presigned download URL on the recruiter review screen."
|
|
16542
|
+
},
|
|
16543
|
+
"originalFilename": {
|
|
16544
|
+
"type": "string"
|
|
16545
|
+
},
|
|
16546
|
+
"contentType": {
|
|
16547
|
+
"type": "string"
|
|
16548
|
+
},
|
|
16549
|
+
"size": {
|
|
16550
|
+
"type": "integer",
|
|
16551
|
+
"description": "Bytes."
|
|
16552
|
+
}
|
|
16553
|
+
}
|
|
16554
|
+
}
|
|
16555
|
+
}
|
|
16556
|
+
}
|
|
16557
|
+
}
|
|
16558
|
+
},
|
|
16559
|
+
"evaluation": {
|
|
16560
|
+
"title": "AttemptEvaluationSchema",
|
|
16561
|
+
"description": "AI scoring output. Populated by the evaluation Step Function\nafter the candidate submits. Hidden from the candidate response\nwhile status is below `evaluated`.",
|
|
16562
|
+
"type": "object",
|
|
16563
|
+
"properties": {
|
|
16564
|
+
"status": {
|
|
16565
|
+
"type": "string",
|
|
16566
|
+
"enum": [
|
|
16567
|
+
"pending",
|
|
16568
|
+
"running",
|
|
16569
|
+
"done",
|
|
16570
|
+
"failed"
|
|
16571
|
+
]
|
|
16572
|
+
},
|
|
16573
|
+
"overallScore": {
|
|
16574
|
+
"type": "number",
|
|
16575
|
+
"description": "Aggregate score 0-100."
|
|
16576
|
+
},
|
|
16577
|
+
"passingScore": {
|
|
16578
|
+
"type": "number",
|
|
16579
|
+
"description": "Threshold copied from the template at evaluation time."
|
|
16580
|
+
},
|
|
16581
|
+
"passed": {
|
|
16582
|
+
"type": "boolean"
|
|
16583
|
+
},
|
|
16584
|
+
"perQuestion": {
|
|
16585
|
+
"type": "array",
|
|
16586
|
+
"items": {
|
|
16587
|
+
"type": "object",
|
|
16588
|
+
"required": [
|
|
16589
|
+
"questionId",
|
|
16590
|
+
"score"
|
|
16591
|
+
],
|
|
16592
|
+
"properties": {
|
|
16593
|
+
"questionId": {
|
|
16594
|
+
"type": "string"
|
|
16595
|
+
},
|
|
16596
|
+
"score": {
|
|
16597
|
+
"type": "number"
|
|
16598
|
+
},
|
|
16599
|
+
"maxScore": {
|
|
16600
|
+
"type": "number"
|
|
16601
|
+
},
|
|
16602
|
+
"feedback": {
|
|
16603
|
+
"type": "string",
|
|
16604
|
+
"description": "1-2 sentence explanation in the candidate's language."
|
|
16605
|
+
},
|
|
16606
|
+
"rubricMatched": {
|
|
16607
|
+
"type": "array",
|
|
16608
|
+
"items": {
|
|
16609
|
+
"type": "string"
|
|
16610
|
+
},
|
|
16611
|
+
"description": "Recruiter-only. Stripped from guest responses."
|
|
16612
|
+
}
|
|
16613
|
+
}
|
|
16614
|
+
}
|
|
16615
|
+
},
|
|
16616
|
+
"summary": {
|
|
16617
|
+
"type": "string",
|
|
16618
|
+
"description": "AI-generated 2-3 paragraph plain-language summary of the candidate's performance."
|
|
16619
|
+
},
|
|
16620
|
+
"evaluatedAt": {
|
|
16621
|
+
"type": "string",
|
|
16622
|
+
"format": "date-time"
|
|
16623
|
+
},
|
|
16624
|
+
"evaluatorVersion": {
|
|
16625
|
+
"type": "string"
|
|
16626
|
+
},
|
|
16627
|
+
"error": {
|
|
16628
|
+
"type": "string",
|
|
16629
|
+
"description": "Set only when status=failed."
|
|
16630
|
+
}
|
|
16631
|
+
}
|
|
16632
|
+
},
|
|
16633
|
+
"proctoring": {
|
|
16634
|
+
"title": "AttemptProctoringSchema",
|
|
16635
|
+
"description": "Anti-cheat telemetry collected by the candidate UI. Not used to block, only to inform recruiters.",
|
|
16636
|
+
"type": "object",
|
|
16637
|
+
"properties": {
|
|
16638
|
+
"tabSwitches": {
|
|
16639
|
+
"type": "integer"
|
|
16640
|
+
},
|
|
16641
|
+
"pasteEvents": {
|
|
16642
|
+
"type": "integer"
|
|
16643
|
+
},
|
|
16644
|
+
"focusLost": {
|
|
16645
|
+
"type": "integer",
|
|
16646
|
+
"description": "Total milliseconds the window was unfocused."
|
|
16647
|
+
},
|
|
16648
|
+
"suspiciousFlags": {
|
|
16649
|
+
"type": "array",
|
|
16650
|
+
"items": {
|
|
16651
|
+
"type": "string"
|
|
16652
|
+
}
|
|
16653
|
+
}
|
|
16654
|
+
}
|
|
16655
|
+
},
|
|
16656
|
+
"startedAt": {
|
|
16657
|
+
"type": "string",
|
|
16658
|
+
"format": "date-time",
|
|
16659
|
+
"description": "When the candidate first opened the attempt link (status pending->inProgress)."
|
|
16660
|
+
},
|
|
16661
|
+
"submittedAt": {
|
|
16662
|
+
"type": "string",
|
|
16663
|
+
"format": "date-time",
|
|
16664
|
+
"description": "When the candidate finalised their answers (status inProgress->submitted)."
|
|
16665
|
+
},
|
|
16666
|
+
"evaluatedAt": {
|
|
16667
|
+
"type": "string",
|
|
16668
|
+
"format": "date-time",
|
|
16669
|
+
"description": "When the AI evaluator wrote the evaluation block (status submitted->evaluated)."
|
|
16455
16670
|
},
|
|
16456
16671
|
"expiresAt": {
|
|
16457
16672
|
"type": "string",
|
|
16458
|
-
"format": "date-time"
|
|
16673
|
+
"format": "date-time",
|
|
16674
|
+
"description": "Hard cutoff for the candidate to start. After this, /v1/guest/attempts rejects with 410-style errors."
|
|
16675
|
+
},
|
|
16676
|
+
"durationMinutes": {
|
|
16677
|
+
"type": "integer",
|
|
16678
|
+
"description": "Time limit for the candidate to complete the attempt. Inherited from the template by default."
|
|
16679
|
+
},
|
|
16680
|
+
"evaluatorVersion": {
|
|
16681
|
+
"type": "string",
|
|
16682
|
+
"description": "Identifier of the AI scorer that produced the evaluation (e.g. 'gpt-5-mini-v1'). Bumped on re-evaluate."
|
|
16683
|
+
},
|
|
16684
|
+
"assessmentId": {
|
|
16685
|
+
"type": "string",
|
|
16686
|
+
"description": "FK to the assessment template - same id as relationships.assessment.data.id, exposed flat for filter convenience."
|
|
16687
|
+
},
|
|
16688
|
+
"candidateId": {
|
|
16689
|
+
"type": "string",
|
|
16690
|
+
"description": "FK to the candidate - same id as relationships.candidate.data.id."
|
|
16691
|
+
},
|
|
16692
|
+
"timestamps": {
|
|
16693
|
+
"title": "ResourceTimestampsSchema",
|
|
16694
|
+
"type": "object",
|
|
16695
|
+
"properties": {
|
|
16696
|
+
"created": {
|
|
16697
|
+
"type": "string",
|
|
16698
|
+
"format": "date-time"
|
|
16699
|
+
},
|
|
16700
|
+
"modified": {
|
|
16701
|
+
"type": "string",
|
|
16702
|
+
"format": "date-time"
|
|
16703
|
+
}
|
|
16704
|
+
}
|
|
16459
16705
|
}
|
|
16460
16706
|
}
|
|
16461
16707
|
},
|
|
16462
16708
|
"relationships": {
|
|
16709
|
+
"title": "AttemptRelationshipsSchema",
|
|
16463
16710
|
"type": "object",
|
|
16464
|
-
"required": [
|
|
16465
|
-
"assessment",
|
|
16466
|
-
"candidate"
|
|
16467
|
-
],
|
|
16468
16711
|
"properties": {
|
|
16469
16712
|
"assessment": {
|
|
16470
|
-
"
|
|
16713
|
+
"title": "AttemptRelationshipsAssessmentSchema",
|
|
16714
|
+
"type": "object",
|
|
16715
|
+
"properties": {
|
|
16716
|
+
"data": {
|
|
16717
|
+
"title": "AttemptRelationshipsAssessmentDataSchema",
|
|
16718
|
+
"type": "object",
|
|
16719
|
+
"properties": {
|
|
16720
|
+
"type": {
|
|
16721
|
+
"type": "string",
|
|
16722
|
+
"enum": [
|
|
16723
|
+
"assessments"
|
|
16724
|
+
]
|
|
16725
|
+
},
|
|
16726
|
+
"id": {
|
|
16727
|
+
"type": "string"
|
|
16728
|
+
}
|
|
16729
|
+
}
|
|
16730
|
+
}
|
|
16731
|
+
},
|
|
16732
|
+
"description": "FK to the template this attempt is a run of."
|
|
16471
16733
|
},
|
|
16472
16734
|
"candidate": {
|
|
16473
|
-
"
|
|
16735
|
+
"title": "AttemptRelationshipsCandidateSchema",
|
|
16736
|
+
"type": "object",
|
|
16737
|
+
"properties": {
|
|
16738
|
+
"data": {
|
|
16739
|
+
"title": "AttemptRelationshipsCandidateDataSchema",
|
|
16740
|
+
"type": "object",
|
|
16741
|
+
"properties": {
|
|
16742
|
+
"type": {
|
|
16743
|
+
"type": "string",
|
|
16744
|
+
"enum": [
|
|
16745
|
+
"candidates"
|
|
16746
|
+
]
|
|
16747
|
+
},
|
|
16748
|
+
"id": {
|
|
16749
|
+
"type": "string"
|
|
16750
|
+
}
|
|
16751
|
+
}
|
|
16752
|
+
}
|
|
16753
|
+
}
|
|
16474
16754
|
},
|
|
16475
16755
|
"job": {
|
|
16476
|
-
"
|
|
16756
|
+
"title": "AttemptRelationshipsJobSchema",
|
|
16757
|
+
"type": "object",
|
|
16758
|
+
"properties": {
|
|
16759
|
+
"data": {
|
|
16760
|
+
"title": "AttemptRelationshipsJobDataSchema",
|
|
16761
|
+
"type": "object",
|
|
16762
|
+
"properties": {
|
|
16763
|
+
"type": {
|
|
16764
|
+
"type": "string",
|
|
16765
|
+
"enum": [
|
|
16766
|
+
"jobs"
|
|
16767
|
+
]
|
|
16768
|
+
},
|
|
16769
|
+
"id": {
|
|
16770
|
+
"type": "string"
|
|
16771
|
+
}
|
|
16772
|
+
}
|
|
16773
|
+
}
|
|
16774
|
+
},
|
|
16775
|
+
"description": "Denormalised from the assessment template - the role this attempt is screening for."
|
|
16776
|
+
},
|
|
16777
|
+
"report": {
|
|
16778
|
+
"title": "AttemptRelationshipsReportSchema",
|
|
16779
|
+
"type": "object",
|
|
16780
|
+
"properties": {
|
|
16781
|
+
"data": {
|
|
16782
|
+
"title": "AttemptRelationshipsReportDataSchema",
|
|
16783
|
+
"type": "object",
|
|
16784
|
+
"properties": {
|
|
16785
|
+
"type": {
|
|
16786
|
+
"type": "string",
|
|
16787
|
+
"enum": [
|
|
16788
|
+
"files"
|
|
16789
|
+
]
|
|
16790
|
+
},
|
|
16791
|
+
"id": {
|
|
16792
|
+
"type": "string"
|
|
16793
|
+
}
|
|
16794
|
+
}
|
|
16795
|
+
}
|
|
16796
|
+
},
|
|
16797
|
+
"description": "Generated PDF report for this attempt's evaluation. Populated post-evaluation."
|
|
16477
16798
|
}
|
|
16478
16799
|
}
|
|
16479
16800
|
}
|
|
@@ -16576,12 +16897,14 @@
|
|
|
16576
16897
|
"name": "update_attempt",
|
|
16577
16898
|
"description": "Update Attempt",
|
|
16578
16899
|
"parameters": {
|
|
16900
|
+
"title": "UpdateAttemptRequestBody",
|
|
16579
16901
|
"type": "object",
|
|
16580
16902
|
"required": [
|
|
16581
16903
|
"data"
|
|
16582
16904
|
],
|
|
16583
16905
|
"properties": {
|
|
16584
16906
|
"data": {
|
|
16907
|
+
"title": "UpdateAttemptRequestBodyData",
|
|
16585
16908
|
"type": "object",
|
|
16586
16909
|
"required": [
|
|
16587
16910
|
"type",
|
|
@@ -16598,10 +16921,263 @@
|
|
|
16598
16921
|
"type": "string"
|
|
16599
16922
|
},
|
|
16600
16923
|
"attributes": {
|
|
16601
|
-
"
|
|
16602
|
-
|
|
16603
|
-
|
|
16604
|
-
|
|
16924
|
+
"title": "AttemptAttributesSchema",
|
|
16925
|
+
"type": "object",
|
|
16926
|
+
"properties": {
|
|
16927
|
+
"status": {
|
|
16928
|
+
"type": "string",
|
|
16929
|
+
"description": "Attempt lifecycle. Set server-side; only `submitted` is candidate-writable (via guest PATCH).",
|
|
16930
|
+
"enum": [
|
|
16931
|
+
"pending",
|
|
16932
|
+
"inProgress",
|
|
16933
|
+
"submitted",
|
|
16934
|
+
"evaluated",
|
|
16935
|
+
"reviewed",
|
|
16936
|
+
"anonymized",
|
|
16937
|
+
"failed"
|
|
16938
|
+
]
|
|
16939
|
+
},
|
|
16940
|
+
"languageCode": {
|
|
16941
|
+
"type": "string",
|
|
16942
|
+
"description": "Locale the candidate is taking the assessment in (e.g. 'en-US')."
|
|
16943
|
+
},
|
|
16944
|
+
"answers": {
|
|
16945
|
+
"type": "array",
|
|
16946
|
+
"description": "Candidate's answers, one per attempted question. See AnswerSchema.",
|
|
16947
|
+
"items": {
|
|
16948
|
+
"title": "AnswerSchema",
|
|
16949
|
+
"description": "A candidate's answer to one question. The `value` shape depends\non the question type - branch on `questionType` to know how to\nread it. File uploads (file-upload / video-recording question\ntypes) live in the separate `files` array, NOT in `value`. This\nmirrors the wire shape used by /v1/guest/attempts/{id} PATCH\nand avoids OpenAPI generator collisions on multiple array\nvariants in a single oneOf.",
|
|
16950
|
+
"type": "object",
|
|
16951
|
+
"required": [
|
|
16952
|
+
"questionId"
|
|
16953
|
+
],
|
|
16954
|
+
"properties": {
|
|
16955
|
+
"questionId": {
|
|
16956
|
+
"type": "string",
|
|
16957
|
+
"description": "References QuestionSchema.questionId."
|
|
16958
|
+
},
|
|
16959
|
+
"questionType": {
|
|
16960
|
+
"type": "string",
|
|
16961
|
+
"description": "Mirror of the question's type for client-side discrimination.",
|
|
16962
|
+
"enum": [
|
|
16963
|
+
"single-choice",
|
|
16964
|
+
"multiple-choice",
|
|
16965
|
+
"scale",
|
|
16966
|
+
"open-text",
|
|
16967
|
+
"ranking",
|
|
16968
|
+
"situational-judgment",
|
|
16969
|
+
"file-upload",
|
|
16970
|
+
"video-recording"
|
|
16971
|
+
]
|
|
16972
|
+
},
|
|
16973
|
+
"value": {
|
|
16974
|
+
"description": "Non-file answer payload. Discriminated by questionType:\n single-choice -> string (option id)\n multiple-choice -> string[] (option ids)\n scale -> number\n open-text -> string\n ranking -> string[] (option ids in order)\n situational-judgment -> { best: string; worst: string }\n file-upload -> usually empty / null (use `files`)\n video-recording -> usually empty / null (use `files`)",
|
|
16975
|
+
"oneOf": [
|
|
16976
|
+
{
|
|
16977
|
+
"type": "string",
|
|
16978
|
+
"description": "single-choice / open-text"
|
|
16979
|
+
},
|
|
16980
|
+
{
|
|
16981
|
+
"type": "number",
|
|
16982
|
+
"description": "scale"
|
|
16983
|
+
},
|
|
16984
|
+
{
|
|
16985
|
+
"type": "array",
|
|
16986
|
+
"items": {
|
|
16987
|
+
"type": "string"
|
|
16988
|
+
},
|
|
16989
|
+
"description": "multiple-choice / ranking - array of option ids"
|
|
16990
|
+
},
|
|
16991
|
+
{
|
|
16992
|
+
"type": "object",
|
|
16993
|
+
"description": "situational-judgment",
|
|
16994
|
+
"properties": {
|
|
16995
|
+
"best": {
|
|
16996
|
+
"type": "string"
|
|
16997
|
+
},
|
|
16998
|
+
"worst": {
|
|
16999
|
+
"type": "string"
|
|
17000
|
+
}
|
|
17001
|
+
}
|
|
17002
|
+
}
|
|
17003
|
+
]
|
|
17004
|
+
},
|
|
17005
|
+
"files": {
|
|
17006
|
+
"type": "array",
|
|
17007
|
+
"description": "File / video uploads for `file-upload` and `video-recording`\nquestion types. Empty for all other types. Files are uploaded\nvia presigned PUT to S3 first; this carries the resulting\nreferences.",
|
|
17008
|
+
"items": {
|
|
17009
|
+
"title": "AnswerFileSchema",
|
|
17010
|
+
"description": "File reference for upload-type answers. fileUrl is the S3 path; FE never writes there directly - server issues presigned PUT.",
|
|
17011
|
+
"type": "object",
|
|
17012
|
+
"properties": {
|
|
17013
|
+
"fileUrl": {
|
|
17014
|
+
"type": "string",
|
|
17015
|
+
"description": "S3 location (s3://bucket/key) - resolves to a presigned download URL on the recruiter review screen."
|
|
17016
|
+
},
|
|
17017
|
+
"originalFilename": {
|
|
17018
|
+
"type": "string"
|
|
17019
|
+
},
|
|
17020
|
+
"contentType": {
|
|
17021
|
+
"type": "string"
|
|
17022
|
+
},
|
|
17023
|
+
"size": {
|
|
17024
|
+
"type": "integer",
|
|
17025
|
+
"description": "Bytes."
|
|
17026
|
+
}
|
|
17027
|
+
}
|
|
17028
|
+
}
|
|
17029
|
+
}
|
|
17030
|
+
}
|
|
17031
|
+
}
|
|
17032
|
+
},
|
|
17033
|
+
"evaluation": {
|
|
17034
|
+
"title": "AttemptEvaluationSchema",
|
|
17035
|
+
"description": "AI scoring output. Populated by the evaluation Step Function\nafter the candidate submits. Hidden from the candidate response\nwhile status is below `evaluated`.",
|
|
17036
|
+
"type": "object",
|
|
17037
|
+
"properties": {
|
|
17038
|
+
"status": {
|
|
17039
|
+
"type": "string",
|
|
17040
|
+
"enum": [
|
|
17041
|
+
"pending",
|
|
17042
|
+
"running",
|
|
17043
|
+
"done",
|
|
17044
|
+
"failed"
|
|
17045
|
+
]
|
|
17046
|
+
},
|
|
17047
|
+
"overallScore": {
|
|
17048
|
+
"type": "number",
|
|
17049
|
+
"description": "Aggregate score 0-100."
|
|
17050
|
+
},
|
|
17051
|
+
"passingScore": {
|
|
17052
|
+
"type": "number",
|
|
17053
|
+
"description": "Threshold copied from the template at evaluation time."
|
|
17054
|
+
},
|
|
17055
|
+
"passed": {
|
|
17056
|
+
"type": "boolean"
|
|
17057
|
+
},
|
|
17058
|
+
"perQuestion": {
|
|
17059
|
+
"type": "array",
|
|
17060
|
+
"items": {
|
|
17061
|
+
"type": "object",
|
|
17062
|
+
"required": [
|
|
17063
|
+
"questionId",
|
|
17064
|
+
"score"
|
|
17065
|
+
],
|
|
17066
|
+
"properties": {
|
|
17067
|
+
"questionId": {
|
|
17068
|
+
"type": "string"
|
|
17069
|
+
},
|
|
17070
|
+
"score": {
|
|
17071
|
+
"type": "number"
|
|
17072
|
+
},
|
|
17073
|
+
"maxScore": {
|
|
17074
|
+
"type": "number"
|
|
17075
|
+
},
|
|
17076
|
+
"feedback": {
|
|
17077
|
+
"type": "string",
|
|
17078
|
+
"description": "1-2 sentence explanation in the candidate's language."
|
|
17079
|
+
},
|
|
17080
|
+
"rubricMatched": {
|
|
17081
|
+
"type": "array",
|
|
17082
|
+
"items": {
|
|
17083
|
+
"type": "string"
|
|
17084
|
+
},
|
|
17085
|
+
"description": "Recruiter-only. Stripped from guest responses."
|
|
17086
|
+
}
|
|
17087
|
+
}
|
|
17088
|
+
}
|
|
17089
|
+
},
|
|
17090
|
+
"summary": {
|
|
17091
|
+
"type": "string",
|
|
17092
|
+
"description": "AI-generated 2-3 paragraph plain-language summary of the candidate's performance."
|
|
17093
|
+
},
|
|
17094
|
+
"evaluatedAt": {
|
|
17095
|
+
"type": "string",
|
|
17096
|
+
"format": "date-time"
|
|
17097
|
+
},
|
|
17098
|
+
"evaluatorVersion": {
|
|
17099
|
+
"type": "string"
|
|
17100
|
+
},
|
|
17101
|
+
"error": {
|
|
17102
|
+
"type": "string",
|
|
17103
|
+
"description": "Set only when status=failed."
|
|
17104
|
+
}
|
|
17105
|
+
}
|
|
17106
|
+
},
|
|
17107
|
+
"proctoring": {
|
|
17108
|
+
"title": "AttemptProctoringSchema",
|
|
17109
|
+
"description": "Anti-cheat telemetry collected by the candidate UI. Not used to block, only to inform recruiters.",
|
|
17110
|
+
"type": "object",
|
|
17111
|
+
"properties": {
|
|
17112
|
+
"tabSwitches": {
|
|
17113
|
+
"type": "integer"
|
|
17114
|
+
},
|
|
17115
|
+
"pasteEvents": {
|
|
17116
|
+
"type": "integer"
|
|
17117
|
+
},
|
|
17118
|
+
"focusLost": {
|
|
17119
|
+
"type": "integer",
|
|
17120
|
+
"description": "Total milliseconds the window was unfocused."
|
|
17121
|
+
},
|
|
17122
|
+
"suspiciousFlags": {
|
|
17123
|
+
"type": "array",
|
|
17124
|
+
"items": {
|
|
17125
|
+
"type": "string"
|
|
17126
|
+
}
|
|
17127
|
+
}
|
|
17128
|
+
}
|
|
17129
|
+
},
|
|
17130
|
+
"startedAt": {
|
|
17131
|
+
"type": "string",
|
|
17132
|
+
"format": "date-time",
|
|
17133
|
+
"description": "When the candidate first opened the attempt link (status pending->inProgress)."
|
|
17134
|
+
},
|
|
17135
|
+
"submittedAt": {
|
|
17136
|
+
"type": "string",
|
|
17137
|
+
"format": "date-time",
|
|
17138
|
+
"description": "When the candidate finalised their answers (status inProgress->submitted)."
|
|
17139
|
+
},
|
|
17140
|
+
"evaluatedAt": {
|
|
17141
|
+
"type": "string",
|
|
17142
|
+
"format": "date-time",
|
|
17143
|
+
"description": "When the AI evaluator wrote the evaluation block (status submitted->evaluated)."
|
|
17144
|
+
},
|
|
17145
|
+
"expiresAt": {
|
|
17146
|
+
"type": "string",
|
|
17147
|
+
"format": "date-time",
|
|
17148
|
+
"description": "Hard cutoff for the candidate to start. After this, /v1/guest/attempts rejects with 410-style errors."
|
|
17149
|
+
},
|
|
17150
|
+
"durationMinutes": {
|
|
17151
|
+
"type": "integer",
|
|
17152
|
+
"description": "Time limit for the candidate to complete the attempt. Inherited from the template by default."
|
|
17153
|
+
},
|
|
17154
|
+
"evaluatorVersion": {
|
|
17155
|
+
"type": "string",
|
|
17156
|
+
"description": "Identifier of the AI scorer that produced the evaluation (e.g. 'gpt-5-mini-v1'). Bumped on re-evaluate."
|
|
17157
|
+
},
|
|
17158
|
+
"assessmentId": {
|
|
17159
|
+
"type": "string",
|
|
17160
|
+
"description": "FK to the assessment template - same id as relationships.assessment.data.id, exposed flat for filter convenience."
|
|
17161
|
+
},
|
|
17162
|
+
"candidateId": {
|
|
17163
|
+
"type": "string",
|
|
17164
|
+
"description": "FK to the candidate - same id as relationships.candidate.data.id."
|
|
17165
|
+
},
|
|
17166
|
+
"timestamps": {
|
|
17167
|
+
"title": "ResourceTimestampsSchema",
|
|
17168
|
+
"type": "object",
|
|
17169
|
+
"properties": {
|
|
17170
|
+
"created": {
|
|
17171
|
+
"type": "string",
|
|
17172
|
+
"format": "date-time"
|
|
17173
|
+
},
|
|
17174
|
+
"modified": {
|
|
17175
|
+
"type": "string",
|
|
17176
|
+
"format": "date-time"
|
|
17177
|
+
}
|
|
17178
|
+
}
|
|
17179
|
+
}
|
|
17180
|
+
}
|
|
16605
17181
|
}
|
|
16606
17182
|
}
|
|
16607
17183
|
}
|