/** * SmartyMeet Dev03 API REST * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.1 * Contact: developer@smartymeet.com * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ import type { QuestionSchemaOptionsInner } from './QuestionSchemaOptionsInner'; /** * A single assessment question. Eight question types - the optional * fields below are interpreted based on `type`. See * `Question.value` shapes in AnswerSchema for what the candidate * sends back per type. * * SECURITY: `answerKey`, `scoringRubric`, and `options[].isCorrect` * are stripped server-side before responses are returned to candidates * via /v1/guest/attempts/* - they are recruiter-only fields. * @export * @interface QuestionSchema */ export interface QuestionSchema { /** * Stable identifier (e.g. 'q1'). Candidates' answers reference this. * @type {string} * @memberof QuestionSchema */ questionId: string; /** * * @type {QuestionSchemaTypeEnum} * @memberof QuestionSchema */ type: QuestionSchemaTypeEnum; /** * Free-form tag for analytics (e.g. 'soft-skills', 'hard-skills', 'general'). * @type {string} * @memberof QuestionSchema */ category?: string; /** * * @type {QuestionSchemaDifficultyEnum} * @memberof QuestionSchema */ difficulty?: QuestionSchemaDifficultyEnum; /** * Maximum score for this question. Defaults to 1. * @type {number} * @memberof QuestionSchema */ points?: number; /** * * @type {boolean} * @memberof QuestionSchema */ required?: boolean; /** * Multilingual question text. * @type {{ [key: string]: string; }} * @memberof QuestionSchema */ text?: { [key: string]: string; }; /** * Choices for single-choice / multiple-choice / ranking / * situational-judgment. Canonical shape is * `{ id, text: { locale: string }, isCorrect?: bool }`. Bare * locale-map options exist in legacy data but are deprecated. * @type {Array} * @memberof QuestionSchema */ options?: Array; /** * Lower bound for `scale` type questions. * @type {number} * @memberof QuestionSchema */ scaleMin?: number; /** * Upper bound for `scale` type questions. * @type {number} * @memberof QuestionSchema */ scaleMax?: number; /** * Optional labels per step value, multilingual. * `{ "1": { "en-US": "Strongly disagree" }, "5": { "en-US": "Strongly agree" } }`. * @type {{ [key: string]: { [key: string]: string; }; }} * @memberof QuestionSchema */ scaleLabels?: { [key: string]: { [key: string]: string; }; }; /** * Multilingual placeholder text for `open-text` questions. * @type {{ [key: string]: string; }} * @memberof QuestionSchema */ placeholder?: { [key: string]: string; }; /** * Multilingual scenario body for `situational-judgment` questions. * @type {{ [key: string]: string; }} * @memberof QuestionSchema */ scenario?: { [key: string]: string; }; /** * Accepted MIME or extension list for `file-upload` (e.g. ['.pdf', '.png']). * @type {Array} * @memberof QuestionSchema */ acceptedFormats?: Array; /** * Maximum recording length in seconds for `video-recording`. * @type {number} * @memberof QuestionSchema */ maxDuration?: number; /** * Maximum recording retakes the candidate may use on `video-recording`. * @type {number} * @memberof QuestionSchema */ maxAttempts?: number; /** * Multilingual explanation shown post-submission on review screens. * @type {{ [key: string]: string; }} * @memberof QuestionSchema */ explanation?: { [key: string]: string; }; /** * Recruiter-only. Shape depends on questionType: * single-choice -> string (option id) * multiple-choice -> string[] (option ids) * ranking -> string[] (option ids in order) * situational-judgment -> { best: string, worst: string } * scale / open-text -> not used (use scoringRubric) * Type intentionally left unconstrained (Any) - the variant * shapes resist a oneOf wrapper because pydantic's outer * Dict[str, Wrapper] validation rejects raw scalars before * the wrapper's discriminator runs (same issue as the * locale-keyed candidate fields). NEVER returned by * /v1/guest/attempts/* endpoints. * @type {any} * @memberof QuestionSchema */ answerKey?: any | null; /** * Recruiter-only. Free-form scoring rubric the AI evaluator uses * for `open-text`. NEVER returned by guest endpoints. * @type {string} * @memberof QuestionSchema */ scoringRubric?: string; } /** * @export */ export declare const QuestionSchemaTypeEnum: { readonly SingleChoice: "single-choice"; readonly MultipleChoice: "multiple-choice"; readonly Scale: "scale"; readonly OpenText: "open-text"; readonly Ranking: "ranking"; readonly SituationalJudgment: "situational-judgment"; readonly FileUpload: "file-upload"; readonly VideoRecording: "video-recording"; }; export type QuestionSchemaTypeEnum = typeof QuestionSchemaTypeEnum[keyof typeof QuestionSchemaTypeEnum]; /** * @export */ export declare const QuestionSchemaDifficultyEnum: { readonly Easy: "easy"; readonly Medium: "medium"; readonly Hard: "hard"; }; export type QuestionSchemaDifficultyEnum = typeof QuestionSchemaDifficultyEnum[keyof typeof QuestionSchemaDifficultyEnum]; /** * Check if a given object implements the QuestionSchema interface. */ export declare function instanceOfQuestionSchema(value: object): value is QuestionSchema; export declare function QuestionSchemaFromJSON(json: any): QuestionSchema; export declare function QuestionSchemaFromJSONTyped(json: any, ignoreDiscriminator: boolean): QuestionSchema; export declare function QuestionSchemaToJSON(json: any): QuestionSchema; export declare function QuestionSchemaToJSONTyped(value?: QuestionSchema | null, ignoreDiscriminator?: boolean): any; //# sourceMappingURL=QuestionSchema.d.ts.map