{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
Interviews
Get interview definition
Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled calc_definition_json, the ordered questions array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, include adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller’s row-level security, so a confidential position you are not on answers 404.
Optional extra sections of a multi-stage position, comma separated: process, slots, team, lifecycle, publishing. Leave it out and the answer is the same size as before. process = the ordered steps with their typed settings (process); slots = also each meeting step's upcoming slots (implies process); team = the hiring team (team); lifecycle = the vacancy lifecycle and openings (lifecycle, openings); publishing = the publishing window (publishing). Ignored for a single-stage interview. A section the company has switched off, or that your account may not read, is left out of the answer.
The interview questions, in the order they are asked, in the same format job-interview-create-from-array accepts — so this array can be edited and sent straight back to job-interview-update, or used to create a copy of this interview. Each id is the question's real identifier: send it back unchanged and the question keeps its existing record (and with it its answer rules and any rendered avatar video). The welcome, thank-you and instructional-video steps are NOT included — they are not questions in this format, and job-interview-update leaves them untouched. Null for multi-stage positions, whose questions live on the individual interview stages.
Type of the linked interview template. interactive_elevenlabs is voice-only; the others (interactive_spatius, interactive_heygen, offline_heygen, offline_elai, offline_synthesia) are avatar-based. Null when the template could not be resolved.
Convenience flag derived from interview_template_type: true when voice-only (interactive_elevenlabs), false when avatar-based, null when the template type could not be resolved.
SMS / WhatsApp candidate notifications: null = off, reminders = with both e-mail reminders, last_reminder = only with the final reminder, all = invitation + reminders + pre-screening accepted.
Free-form tags (interview_def_set.tags, or position_def_set.tags for a multi-stage position). Also the coaching-catalogue mapping key: a catalogue directory lists this session when its tags_interview_set_filter is a subset of these tags. Null when none are set.
Resolved result-scoring config (update field custom_scoring; its max_retries is the update field interview_attempts). Null means the platform defaults apply. Null for multi-stage positions.
The creation parameters recorded at build time (interview_type, interview_tone, interview_length, additional_context, include_rapport_question, include_closing_prompt, knowledge_base_store_id, seniority_level, hiring_for_company).
Portal availability by the candidate's country: {countries_allowed?: string[], countries_allowed_eu?: boolean, countries_blocked?: string[], countries_blocked_eu?: boolean} (ISO 3166-1 alpha-2, EU = EU + EEA + Switzerland; blocked wins), judged by the candidate's IP on the portal; invited candidates keep access. Null = not used, every country. Set it with job-interview-update.
Company-defined fields (key: value) of a multi-stage position, when custom fields are enabled for the company (multi-stage positions only: absent for an interview). Keys are the field keys of the company's custom field definitions; values are text, numbers, YYYY-MM-DD dates, option values (a list for multiple choice), {min, max, currency} ranges or user profile ids.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"JobMojito Developer / Agent","description":"AI Interview and assessment conversational platform documentation","colors":{"primary":"#639C42","light":"#ACCC37","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/jobmojito-light.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=6c00cb5f3104ffb6325dacc0818bba69","dark":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/jobmojito-dark.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=a05ab0ca109d7a225b08ccac00f9c486","href":"https://jobmojito.com"},"favicon":{"light":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/favicon-light.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=f300813ab120824238a790b6905dceee","dark":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/favicon-dark.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=2104ff9e7b9fd23fbe5954886c0aafbe"},"navbar":{"links":[{"href":"https://jobmojito.com/support","label":"Support"},{"href":"https://jobmojito.com","label":"Homepage"},{"href":"https://app.jobmojito.com","label":"App"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.mintlify.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/jobmojito"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"toc"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jobmojito","hasAudioNarration":false,"actualSubdomain":"jobmojito","customDomains":["developer.jobmojito.com"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-jobmojito-fee23398","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af1dfb6ee06d45cdd87d014","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"API Reference","count":82},{"language":"default","tag":"Admin","count":19},{"language":"default","tag":"Cookbooks","count":17},{"language":"default","tag":"Webhooks","count":14},{"language":"default","tag":"MCP","count":13},{"language":"default","tag":"Candidates","count":12},{"language":"default","tag":"Interviews","count":10},{"language":"default","tag":"Connect","count":8},{"language":"default","tag":"Reports","count":7},{"language":"default","tag":"Results","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/interviews/get-interview-definition","slug":"/api-reference/interviews/get-interview-definition","pageMetadata":{"title":"Get interview definition","description":"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled `calc_definition_json`, the ordered `questions` array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, `include` adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller's row-level security, so a confidential position you are not on answers 404.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-get","href":"/api-reference/interviews/get-interview-definition","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled \", _jsx(_components.code, {\n children: \"calc_definition_json\"\n }), \", the ordered \", _jsx(_components.code, {\n children: \"questions\"\n }), \" array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, \", _jsx(_components.code, {\n children: \"include\"\n }), \" adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller’s row-level security, so a confidential position you are not on answers 404.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get interview definition","description":"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled `calc_definition_json`, the ordered `questions` array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, `include` adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller's row-level security, so a confidential position you are not on answers 404.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-get","href":"/api-reference/interviews/get-interview-definition","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Interviews"],"summary":"Get interview definition","description":"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled `calc_definition_json`, the ordered `questions` array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, `include` adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller's row-level security, so a confidential position you are not on answers 404.","security":["c6f2b84b-bb9c-4976-aeab-71410a8534b9"],"parameters":["81b24190-978d-49c3-b430-770850a1836b","1677f360-f3b3-478d-8150-e50561b6738a"],"responses":{"200":"666f31e2-93d0-4596-86cd-c70a6757fdd2","401":"fa5dcde0-021f-443f-b901-34ca6884b4f9","403":"bfebef87-1034-4ae6-aaa1-16b958a1b6f6","404":"0eb6d542-38b6-446d-b259-968be7cb706b","422":"e8b34d8b-56df-46e9-81c4-c29238f8d0df","500":"46641090-d74f-480f-957a-e4fd8aab44a5"},"method":"get","type":"path","servers":["454fcb62-7052-4847-a728-ecf5ade065a6"],"path":"/job-interview-get","baseUrlOptions":["https://cool.jobmojito.com/functions/v1"],"title":"Get interview definition","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"81b24190-978d-49c3-b430-770850a1836b":{"schema":{"type":"string","minLength":1,"format":"uuid","description":"Identifier of either an interview definition (single-stage) or a position definition (multi-stage). The function resolves whichever matches.","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"},"required":true,"name":"position_id","in":"query"},"1677f360-f3b3-478d-8150-e50561b6738a":{"schema":{"type":"string","description":"Optional extra sections of a multi-stage position, comma separated: process, slots, team, lifecycle, publishing. Leave it out and the answer is the same size as before. process = the ordered steps with their typed settings (`process`); slots = also each meeting step's upcoming slots (implies process); team = the hiring team (`team`); lifecycle = the vacancy lifecycle and openings (`lifecycle`, `openings`); publishing = the publishing window (`publishing`). Ignored for a single-stage interview. A section the company has switched off, or that your account may not read, is left out of the answer.","example":"process,team","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"name":"include","in":"query"}},"responses":{"666f31e2-93d0-4596-86cd-c70a6757fdd2":{"description":"The resolved interview definition.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"oneOf":[{"type":"string","description":"Interview or position name.","isRequired":true,"uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Interview or position name.","isRequired":true,"uniqueKey":"name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"name","typeLabel":"string | null"},"created_at":{"oneOf":[{"type":"string","example":"2026-01-15T09:30:00.000Z","isRequired":true,"uniqueKey":"created_at.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-01-15T09:30:00.000Z","isRequired":true,"uniqueKey":"created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"created_at","typeLabel":"string | null"},"updated_at":{"oneOf":[{"type":"string","example":"2026-01-20T14:05:00.000Z","isRequired":true,"uniqueKey":"updated_at.oneOf.0","typeLabel":"string"},{"type":"null","example":"2026-01-20T14:05:00.000Z","isRequired":true,"uniqueKey":"updated_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"updated_at","typeLabel":"string | null"},"questions":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"question":{"type":"string","description":"The question text shown to the candidate.","isRequired":true,"uniqueKey":"questions.oneOf.0.items.[INDEX].question","typeLabel":"string"},"id":{"type":"string","description":"Identifier for this question. job-interview-get returns the question's real id here; send it back to job-interview-update so an unchanged question keeps its existing record (and with it its answer rules and any rendered avatar video). Also the handle another question references via conditional_question_main_id. On job-interview-create-from-array it is a caller-local value, only needed for those references.","uniqueKey":"questions.oneOf.0.items.[INDEX].id","typeLabel":"string"},"duration":{"oneOf":[{"type":"number","description":"Answer duration in seconds for this question.","uniqueKey":"questions.oneOf.0.items.[INDEX].duration.oneOf.0","typeLabel":"number"},{"type":"null","description":"Answer duration in seconds for this question.","uniqueKey":"questions.oneOf.0.items.[INDEX].duration.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].duration","typeLabel":"number | null"},"mojito_language_code":{"oneOf":[{"type":"string","enum":["ar","bg","zh","hr","cs","da","nl","en","fil","fi","fr","de","el","hi","hu","id","it","ja","ko","ms","no","pl","pt","br","ro","ru","sk","es","sv","ta","th","tr","uk","vi"],"description":"Per-question language override (one of the listed codes). Inherits the interview language when omitted.","example":"en","uniqueKey":"questions.oneOf.0.items.[INDEX].mojito_language_code.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ar","bg","zh","hr","cs","da","nl","en","fil","fi","fr","de","el","hi","hu","id","it","ja","ko","ms","no","pl","pt","br","ro","ru","sk","es","sv","ta","th","tr","uk","vi"],"description":"Per-question language override (one of the listed codes). Inherits the interview language when omitted.","example":"en","uniqueKey":"questions.oneOf.0.items.[INDEX].mojito_language_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].mojito_language_code","typeLabel":"enum\u003cstring> | null"},"label":{"oneOf":[{"type":"string","description":"Optional label/tag stored on the question.","uniqueKey":"questions.oneOf.0.items.[INDEX].label.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional label/tag stored on the question.","uniqueKey":"questions.oneOf.0.items.[INDEX].label.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].label","typeLabel":"string | null"},"is_conditional":{"oneOf":[{"type":"boolean","description":"A yes/no question that decides which follow-ups are asked (view 'with listening conditional'). Its follow-ups point at it with conditional_question_main_id.","uniqueKey":"questions.oneOf.0.items.[INDEX].is_conditional.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"A yes/no question that decides which follow-ups are asked (view 'with listening conditional'). Its follow-ups point at it with conditional_question_main_id.","uniqueKey":"questions.oneOf.0.items.[INDEX].is_conditional.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].is_conditional","typeLabel":"boolean | null"},"is_without_scoring":{"oneOf":[{"type":"boolean","description":"Question is asked but not scored (view 'without scoring').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_without_scoring.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Question is asked but not scored (view 'without scoring').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_without_scoring.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].is_without_scoring","typeLabel":"boolean | null"},"is_candidate_asking_recruiter":{"oneOf":[{"type":"boolean","description":"Candidate-asks-recruiter prompt (view 'candidate asking recruiter').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_candidate_asking_recruiter.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Candidate-asks-recruiter prompt (view 'candidate asking recruiter').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_candidate_asking_recruiter.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].is_candidate_asking_recruiter","typeLabel":"boolean | null"},"is_expert":{"oneOf":[{"type":"boolean","description":"Expert listening question (view 'with listening expert').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_expert.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Expert listening question (view 'with listening expert').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_expert.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].is_expert","typeLabel":"boolean | null"},"is_multiple_choice":{"oneOf":[{"type":"boolean","description":"Multiple-choice question (view 'multiple choice').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_multiple_choice.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Multiple-choice question (view 'multiple choice').","uniqueKey":"questions.oneOf.0.items.[INDEX].is_multiple_choice.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].is_multiple_choice","typeLabel":"boolean | null"},"question_alternatives":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"questions.oneOf.0.items.[INDEX].question_alternatives.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Alternative phrasings for the question.","uniqueKey":"questions.oneOf.0.items.[INDEX].question_alternatives.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Alternative phrasings for the question.","uniqueKey":"questions.oneOf.0.items.[INDEX].question_alternatives.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].question_alternatives","typeLabel":"string[] | null"},"conditional_question_main_id":{"oneOf":[{"type":"string","description":"For a follow-up question, the id (the \"id\" field above) of the yes/no question (is_conditional) in this same array that decides whether it is asked. The yes/no question must appear earlier in the array. Use conditional_question_answer to choose the answer that shows it.","uniqueKey":"questions.oneOf.0.items.[INDEX].conditional_question_main_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"For a follow-up question, the id (the \"id\" field above) of the yes/no question (is_conditional) in this same array that decides whether it is asked. The yes/no question must appear earlier in the array. Use conditional_question_answer to choose the answer that shows it.","uniqueKey":"questions.oneOf.0.items.[INDEX].conditional_question_main_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].conditional_question_main_id","typeLabel":"string | null"},"conditional_question_answer":{"oneOf":[{"type":"boolean","description":"With conditional_question_main_id: the answer to the yes/no question that shows this follow-up. `true` (the default) asks it after a yes, `false` after a no, so each answer can lead to its own follow-ups. Ignored on a question without conditional_question_main_id.","example":false,"uniqueKey":"questions.oneOf.0.items.[INDEX].conditional_question_answer.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"With conditional_question_main_id: the answer to the yes/no question that shows this follow-up. `true` (the default) asks it after a yes, `false` after a no, so each answer can lead to its own follow-ups. Ignored on a question without conditional_question_main_id.","example":false,"uniqueKey":"questions.oneOf.0.items.[INDEX].conditional_question_answer.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].conditional_question_answer","typeLabel":"boolean | null"},"is_skippable":{"oneOf":[{"type":"boolean","description":"The candidate may skip this question: the recorded (offline avatar) interview shows a Skip button on it, and a skipped question is saved without an answer. Defaults to false.","example":false,"uniqueKey":"questions.oneOf.0.items.[INDEX].is_skippable.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"The candidate may skip this question: the recorded (offline avatar) interview shows a Skip button on it, and a skipped question is saved without an answer. Defaults to false.","example":false,"uniqueKey":"questions.oneOf.0.items.[INDEX].is_skippable.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].is_skippable","typeLabel":"boolean | null"},"knowledge_base_id":{"oneOf":[{"type":"string","description":"Knowledge-base store id (uuid) the question draws context from.","uniqueKey":"questions.oneOf.0.items.[INDEX].knowledge_base_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Knowledge-base store id (uuid) the question draws context from.","uniqueKey":"questions.oneOf.0.items.[INDEX].knowledge_base_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].knowledge_base_id","typeLabel":"string | null"},"external_id":{"oneOf":[{"type":"string","description":"External identifier stored on the question. job-interview-update matches on this first, so an ATS that owns stable ids can send its own array and have the diff line up without round-tripping our ids.","uniqueKey":"questions.oneOf.0.items.[INDEX].external_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"External identifier stored on the question. job-interview-update matches on this first, so an ATS that owns stable ids can send its own array and have the diff line up without round-tripping our ids.","uniqueKey":"questions.oneOf.0.items.[INDEX].external_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].external_id","typeLabel":"string | null"},"external_data":{"oneOf":[{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"questions.oneOf.0.items.[INDEX].external_data.oneOf.0.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].external_data.oneOf.0.additionalProperties","typeLabel":"null"},"description":"Arbitrary JSON metadata stored on the question.","uniqueKey":"questions.oneOf.0.items.[INDEX].external_data.oneOf.0","typeLabel":"object"},{"type":"null","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"questions.oneOf.0.items.[INDEX].external_data.oneOf.1.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].external_data.oneOf.1.additionalProperties","typeLabel":"null"},"description":"Arbitrary JSON metadata stored on the question.","uniqueKey":"questions.oneOf.0.items.[INDEX].external_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].external_data","typeLabel":"object | null"},"candidate_expectations_json":{"oneOf":[{"type":"object","properties":{"weak":{"type":"array","items":{"type":"string","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0.weak.items.[INDEX]","typeLabel":"string"},"description":"Baseline requirements every viable candidate should meet (table stakes).","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0.weak","typeLabel":"string[]"},"moderate":{"type":"array","items":{"type":"string","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0.moderate.items.[INDEX]","typeLabel":"string"},"description":"Requirements expected of a solid, competent candidate.","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0.moderate","typeLabel":"string[]"},"strong":{"type":"array","items":{"type":"string","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0.strong.items.[INDEX]","typeLabel":"string"},"description":"High-bar requirements only standout candidates clear.","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0.strong","typeLabel":"string[]"}},"description":"Per-question candidate expectations, bucketed by requirement level (weak/moderate/strong). Extra keys are preserved.","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"weak":{"type":"array","items":{"type":"string"},"description":"Baseline requirements every viable candidate should meet (table stakes)."},"moderate":{"type":"array","items":{"type":"string"},"description":"Requirements expected of a solid, competent candidate."},"strong":{"type":"array","items":{"type":"string"},"description":"High-bar requirements only standout candidates clear."}},"description":"Per-question candidate expectations, bucketed by requirement level (weak/moderate/strong). Extra keys are preserved.","uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].candidate_expectations_json","typeLabel":"object | null"}},"required":["question"],"additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"questions.oneOf.0.items.[INDEX].additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"questions.oneOf.0.items.[INDEX].additionalProperties","typeLabel":"null"},"uniqueKey":"questions.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"The interview questions, in the order they are asked, in the same format job-interview-create-from-array accepts — so this array can be edited and sent straight back to job-interview-update, or used to create a copy of this interview. Each `id` is the question's real identifier: send it back unchanged and the question keeps its existing record (and with it its answer rules and any rendered avatar video). The welcome, thank-you and instructional-video steps are NOT included — they are not questions in this format, and job-interview-update leaves them untouched. Null for multi-stage positions, whose questions live on the individual interview stages.","isRequired":true,"uniqueKey":"questions.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"question":{"type":"string","description":"The question text shown to the candidate."},"id":{"type":"string","description":"Identifier for this question. job-interview-get returns the question's real id here; send it back to job-interview-update so an unchanged question keeps its existing record (and with it its answer rules and any rendered avatar video). Also the handle another question references via conditional_question_main_id. On job-interview-create-from-array it is a caller-local value, only needed for those references."},"duration":{"oneOf":[{"type":"number","description":"Answer duration in seconds for this question."},{"type":"null","description":"Answer duration in seconds for this question."}]},"mojito_language_code":{"oneOf":[{"type":"string","enum":["ar","bg","zh","hr","cs","da","nl","en","fil","fi","fr","de","el","hi","hu","id","it","ja","ko","ms","no","pl","pt","br","ro","ru","sk","es","sv","ta","th","tr","uk","vi"],"description":"Per-question language override (one of the listed codes). Inherits the interview language when omitted.","example":"en"},{"type":"null","enum":["ar","bg","zh","hr","cs","da","nl","en","fil","fi","fr","de","el","hi","hu","id","it","ja","ko","ms","no","pl","pt","br","ro","ru","sk","es","sv","ta","th","tr","uk","vi"],"description":"Per-question language override (one of the listed codes). Inherits the interview language when omitted.","example":"en"}]},"label":{"oneOf":[{"type":"string","description":"Optional label/tag stored on the question."},{"type":"null","description":"Optional label/tag stored on the question."}]},"is_conditional":{"oneOf":[{"type":"boolean","description":"A yes/no question that decides which follow-ups are asked (view 'with listening conditional'). Its follow-ups point at it with conditional_question_main_id."},{"type":"null","description":"A yes/no question that decides which follow-ups are asked (view 'with listening conditional'). Its follow-ups point at it with conditional_question_main_id."}]},"is_without_scoring":{"oneOf":[{"type":"boolean","description":"Question is asked but not scored (view 'without scoring')."},{"type":"null","description":"Question is asked but not scored (view 'without scoring')."}]},"is_candidate_asking_recruiter":{"oneOf":[{"type":"boolean","description":"Candidate-asks-recruiter prompt (view 'candidate asking recruiter')."},{"type":"null","description":"Candidate-asks-recruiter prompt (view 'candidate asking recruiter')."}]},"is_expert":{"oneOf":[{"type":"boolean","description":"Expert listening question (view 'with listening expert')."},{"type":"null","description":"Expert listening question (view 'with listening expert')."}]},"is_multiple_choice":{"oneOf":[{"type":"boolean","description":"Multiple-choice question (view 'multiple choice')."},{"type":"null","description":"Multiple-choice question (view 'multiple choice')."}]},"question_alternatives":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"Alternative phrasings for the question."},{"type":"null","items":{"type":"string"},"description":"Alternative phrasings for the question."}]},"conditional_question_main_id":{"oneOf":[{"type":"string","description":"For a follow-up question, the id (the \"id\" field above) of the yes/no question (is_conditional) in this same array that decides whether it is asked. The yes/no question must appear earlier in the array. Use conditional_question_answer to choose the answer that shows it."},{"type":"null","description":"For a follow-up question, the id (the \"id\" field above) of the yes/no question (is_conditional) in this same array that decides whether it is asked. The yes/no question must appear earlier in the array. Use conditional_question_answer to choose the answer that shows it."}]},"conditional_question_answer":{"oneOf":[{"type":"boolean","description":"With conditional_question_main_id: the answer to the yes/no question that shows this follow-up. `true` (the default) asks it after a yes, `false` after a no, so each answer can lead to its own follow-ups. Ignored on a question without conditional_question_main_id.","example":false},{"type":"null","description":"With conditional_question_main_id: the answer to the yes/no question that shows this follow-up. `true` (the default) asks it after a yes, `false` after a no, so each answer can lead to its own follow-ups. Ignored on a question without conditional_question_main_id.","example":false}]},"is_skippable":{"oneOf":[{"type":"boolean","description":"The candidate may skip this question: the recorded (offline avatar) interview shows a Skip button on it, and a skipped question is saved without an answer. Defaults to false.","example":false},{"type":"null","description":"The candidate may skip this question: the recorded (offline avatar) interview shows a Skip button on it, and a skipped question is saved without an answer. Defaults to false.","example":false}]},"knowledge_base_id":{"oneOf":[{"type":"string","description":"Knowledge-base store id (uuid) the question draws context from."},{"type":"null","description":"Knowledge-base store id (uuid) the question draws context from."}]},"external_id":{"oneOf":[{"type":"string","description":"External identifier stored on the question. job-interview-update matches on this first, so an ATS that owns stable ids can send its own array and have the diff line up without round-tripping our ids."},{"type":"null","description":"External identifier stored on the question. job-interview-update matches on this first, so an ATS that owns stable ids can send its own array and have the diff line up without round-tripping our ids."}]},"external_data":{"oneOf":[{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null"}]},"description":"Arbitrary JSON metadata stored on the question."},{"type":"null","additionalProperties":{"oneOf":[{},{"type":"null"}]},"description":"Arbitrary JSON metadata stored on the question."}]},"candidate_expectations_json":{"oneOf":[{"type":"object","properties":{"weak":{"type":"array","items":{"type":"string"},"description":"Baseline requirements every viable candidate should meet (table stakes)."},"moderate":{"type":"array","items":{"type":"string"},"description":"Requirements expected of a solid, competent candidate."},"strong":{"type":"array","items":{"type":"string"},"description":"High-bar requirements only standout candidates clear."}},"description":"Per-question candidate expectations, bucketed by requirement level (weak/moderate/strong). Extra keys are preserved."},{"type":"null","properties":{"weak":{"type":"array","items":{"type":"string"},"description":"Baseline requirements every viable candidate should meet (table stakes)."},"moderate":{"type":"array","items":{"type":"string"},"description":"Requirements expected of a solid, competent candidate."},"strong":{"type":"array","items":{"type":"string"},"description":"High-bar requirements only standout candidates clear."}},"description":"Per-question candidate expectations, bucketed by requirement level (weak/moderate/strong). Extra keys are preserved."}]}},"required":["question"],"additionalProperties":{"oneOf":[{},{"type":"null"}]}},"description":"The interview questions, in the order they are asked, in the same format job-interview-create-from-array accepts — so this array can be edited and sent straight back to job-interview-update, or used to create a copy of this interview. Each `id` is the question's real identifier: send it back unchanged and the question keeps its existing record (and with it its answer rules and any rendered avatar video). The welcome, thank-you and instructional-video steps are NOT included — they are not questions in this format, and job-interview-update leaves them untouched. Null for multi-stage positions, whose questions live on the individual interview stages.","isRequired":true,"uniqueKey":"questions.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"questions","typeLabel":"object[] | null"},"is_multistage":{"type":"boolean","description":"True when the id resolved to a multi-stage position rather than a single interview.","isRequired":true,"uniqueKey":"is_multistage","typeLabel":"boolean"},"status":{"type":"string","enum":["draft","active","archived","deleted","preparing","completed"],"description":"Publication status of the interview/position. The vacancy lifecycle of a position (open, on hold, filled...) is `lifecycle` (include=lifecycle).","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"visibility":{"type":"string","enum":["public","merchant_public","merchant_invite","merchant_unlisted","sub_item"],"description":"Who can see and access the interview/position.","isRequired":true,"uniqueKey":"visibility","typeLabel":"enum\u003cstring>"},"stage":{"oneOf":[{"type":"string","enum":["Interest","Application submitted","Interview 1st planned","Interview 1st completed","Interview 2nd planned","Interview 2nd completed","Interview 3rd planned","Interview 3rd completed","Offer negotiations","Hired","Rejected","Offer declined","Other"],"description":"Hiring-pipeline stage. Null for multi-stage positions.","isRequired":true,"uniqueKey":"stage.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["Interest","Application submitted","Interview 1st planned","Interview 1st completed","Interview 2nd planned","Interview 2nd completed","Interview 3rd planned","Interview 3rd completed","Offer negotiations","Hired","Rejected","Offer declined","Other"],"description":"Hiring-pipeline stage. Null for multi-stage positions.","isRequired":true,"uniqueKey":"stage.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stage","typeLabel":"enum\u003cstring> | null"},"type":{"oneOf":[{"type":"string","enum":["coaching","interview","persona","persona_interview","public_avatar","assessment"],"description":"Interview type. Null for multi-stage positions.","isRequired":true,"uniqueKey":"type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["coaching","interview","persona","persona_interview","public_avatar","assessment"],"description":"Interview type. Null for multi-stage positions.","isRequired":true,"uniqueKey":"type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring> | null"},"environment":{"oneOf":[{"type":"string","enum":["production","uat","development","demo"],"description":"Which webhook environment this interview's results are delivered to. Null for multi-stage positions, whose stages each carry their own.","example":"production","isRequired":true,"uniqueKey":"environment.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["production","uat","development","demo"],"description":"Which webhook environment this interview's results are delivered to. Null for multi-stage positions, whose stages each carry their own.","example":"production","isRequired":true,"uniqueKey":"environment.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"environment","typeLabel":"enum\u003cstring> | null"},"code":{"oneOf":[{"type":"string","description":"Caller-supplied external code/reference.","isRequired":true,"uniqueKey":"code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Caller-supplied external code/reference.","isRequired":true,"uniqueKey":"code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"code","typeLabel":"string | null"},"interview_location":{"oneOf":[{"type":"string","description":"Location (create field `location`).","isRequired":true,"uniqueKey":"interview_location.oneOf.0","typeLabel":"string"},{"type":"null","description":"Location (create field `location`).","isRequired":true,"uniqueKey":"interview_location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_location","typeLabel":"string | null"},"cover_image_url":{"oneOf":[{"type":"string","description":"Cover image URL.","isRequired":true,"uniqueKey":"cover_image_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Cover image URL.","isRequired":true,"uniqueKey":"cover_image_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cover_image_url","typeLabel":"string | null"},"merchant_id":{"oneOf":[{"type":"string","description":"Owning merchant id.","isRequired":true,"uniqueKey":"merchant_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Owning merchant id.","isRequired":true,"uniqueKey":"merchant_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"merchant_id","typeLabel":"string | null"},"interview_template_id":{"oneOf":[{"type":"string","description":"Interview template id. For multi-stage positions this is the first interview step's template.","isRequired":true,"uniqueKey":"interview_template_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Interview template id. For multi-stage positions this is the first interview step's template.","isRequired":true,"uniqueKey":"interview_template_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_template_id","typeLabel":"string | null"},"interview_template_type":{"oneOf":[{"type":"string","enum":["offline_elai","offline_synthesia","interactive_heygen","offline_heygen","interactive_elevenlabs","interactive_spatius"],"description":"Type of the linked interview template. `interactive_elevenlabs` is voice-only; the others (`interactive_spatius`, `interactive_heygen`, `offline_heygen`, `offline_elai`, `offline_synthesia`) are avatar-based. Null when the template could not be resolved.","isRequired":true,"uniqueKey":"interview_template_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["offline_elai","offline_synthesia","interactive_heygen","offline_heygen","interactive_elevenlabs","interactive_spatius"],"description":"Type of the linked interview template. `interactive_elevenlabs` is voice-only; the others (`interactive_spatius`, `interactive_heygen`, `offline_heygen`, `offline_elai`, `offline_synthesia`) are avatar-based. Null when the template could not be resolved.","isRequired":true,"uniqueKey":"interview_template_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_template_type","typeLabel":"enum\u003cstring> | null"},"is_voice_only":{"oneOf":[{"type":"boolean","description":"Convenience flag derived from interview_template_type: true when voice-only (`interactive_elevenlabs`), false when avatar-based, null when the template type could not be resolved.","isRequired":true,"uniqueKey":"is_voice_only.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Convenience flag derived from interview_template_type: true when voice-only (`interactive_elevenlabs`), false when avatar-based, null when the template type could not be resolved.","isRequired":true,"uniqueKey":"is_voice_only.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"is_voice_only","typeLabel":"boolean | null"},"knowledge_base_store_id":{"oneOf":[{"type":"string","description":"Linked knowledge base store id. Null for multi-stage positions.","isRequired":true,"uniqueKey":"knowledge_base_store_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Linked knowledge base store id. Null for multi-stage positions.","isRequired":true,"uniqueKey":"knowledge_base_store_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"knowledge_base_store_id","typeLabel":"string | null"},"mojito_language_code":{"oneOf":[{"type":"string","description":"Platform (mojito) language code.","example":"en","isRequired":true,"uniqueKey":"mojito_language_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Platform (mojito) language code.","example":"en","isRequired":true,"uniqueKey":"mojito_language_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"mojito_language_code","typeLabel":"string | null"},"speech_language_code":{"oneOf":[{"type":"string","description":"Azure speech language code. Null for multi-stage positions.","isRequired":true,"uniqueKey":"speech_language_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Azure speech language code. Null for multi-stage positions.","isRequired":true,"uniqueKey":"speech_language_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"speech_language_code","typeLabel":"string | null"},"speech_language_name":{"oneOf":[{"type":"string","description":"Azure speech language display name. Null for multi-stage positions.","isRequired":true,"uniqueKey":"speech_language_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Azure speech language display name. Null for multi-stage positions.","isRequired":true,"uniqueKey":"speech_language_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"speech_language_name","typeLabel":"string | null"},"recording":{"oneOf":[{"type":"string","enum":["audio_first_5_answers","audio_all","video_all","video_first_5_answers"],"description":"Per-answer recording mode. Null for multi-stage positions.","isRequired":true,"uniqueKey":"recording.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["audio_first_5_answers","audio_all","video_all","video_first_5_answers"],"description":"Per-answer recording mode. Null for multi-stage positions.","isRequired":true,"uniqueKey":"recording.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"recording","typeLabel":"enum\u003cstring> | null"},"recording_full_session":{"oneOf":[{"type":"string","enum":["audio_first_5_answers","audio_all","video_all","video_first_5_answers"],"description":"Full-session recording mode. Null for multi-stage positions.","isRequired":true,"uniqueKey":"recording_full_session.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["audio_first_5_answers","audio_all","video_all","video_first_5_answers"],"description":"Full-session recording mode. Null for multi-stage positions.","isRequired":true,"uniqueKey":"recording_full_session.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"recording_full_session","typeLabel":"enum\u003cstring> | null"},"type_credit":{"oneOf":[{"type":"string","enum":["resume_check","interview_coach_starter","interview_coach_contributor","interview_coach_manager","cover_letter"],"description":"Credit bucket the interview draws from. Null for multi-stage positions.","isRequired":true,"uniqueKey":"type_credit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["resume_check","interview_coach_starter","interview_coach_contributor","interview_coach_manager","cover_letter"],"description":"Credit bucket the interview draws from. Null for multi-stage positions.","isRequired":true,"uniqueKey":"type_credit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"type_credit","typeLabel":"enum\u003cstring> | null"},"result_view":{"oneOf":[{"type":"string","enum":["minimal","advanced","full","full_expand_scores","minimal_with_score","none"],"description":"Result view level. Null for multi-stage positions.","isRequired":true,"uniqueKey":"result_view.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["minimal","advanced","full","full_expand_scores","minimal_with_score","none"],"description":"Result view level. Null for multi-stage positions.","isRequired":true,"uniqueKey":"result_view.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result_view","typeLabel":"enum\u003cstring> | null"},"candidate_video_introduction":{"oneOf":[{"type":"string","enum":["hidden","optional","required"],"description":"Whether a candidate video introduction is hidden/optional/required. Null for multi-stage positions.","isRequired":true,"uniqueKey":"candidate_video_introduction.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["hidden","optional","required"],"description":"Whether a candidate video introduction is hidden/optional/required. Null for multi-stage positions.","isRequired":true,"uniqueKey":"candidate_video_introduction.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"candidate_video_introduction","typeLabel":"enum\u003cstring> | null"},"description":{"oneOf":[{"type":"string","description":"Short description.","isRequired":true,"uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Short description.","isRequired":true,"uniqueKey":"description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"description","typeLabel":"string | null"},"interview_description_long":{"oneOf":[{"type":"string","description":"Long description (create/update field `description_long`). Rendered as Markdown on the candidate-facing position page — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdown","isRequired":true,"uniqueKey":"interview_description_long.oneOf.0","typeLabel":"string"},{"type":"null","description":"Long description (create/update field `description_long`). Rendered as Markdown on the candidate-facing position page — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdown","isRequired":true,"uniqueKey":"interview_description_long.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_description_long","typeLabel":"string | null"},"candidate_expectations":{"oneOf":[{"type":"string","description":"Free-text candidate expectations. Null for multi-stage positions.","isRequired":true,"uniqueKey":"candidate_expectations.oneOf.0","typeLabel":"string"},{"type":"null","description":"Free-text candidate expectations. Null for multi-stage positions.","isRequired":true,"uniqueKey":"candidate_expectations.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"candidate_expectations","typeLabel":"string | null"},"interview_department":{"oneOf":[{"type":"string","description":"Department the position belongs to.","example":"Engineering","isRequired":true,"uniqueKey":"interview_department.oneOf.0","typeLabel":"string"},{"type":"null","description":"Department the position belongs to.","example":"Engineering","isRequired":true,"uniqueKey":"interview_department.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_department","typeLabel":"string | null"},"interview_salary":{"oneOf":[{"type":"string","description":"Salary range shown for the position.","example":"$80k - $100k","isRequired":true,"uniqueKey":"interview_salary.oneOf.0","typeLabel":"string"},{"type":"null","description":"Salary range shown for the position.","example":"$80k - $100k","isRequired":true,"uniqueKey":"interview_salary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_salary","typeLabel":"string | null"},"interview_available_till":{"oneOf":[{"type":"string","description":"ISO date/time after which the interview is no longer available to candidates. Null means always available.","isRequired":true,"uniqueKey":"interview_available_till.oneOf.0","typeLabel":"string"},{"type":"null","description":"ISO date/time after which the interview is no longer available to candidates. Null means always available.","isRequired":true,"uniqueKey":"interview_available_till.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_available_till","typeLabel":"string | null"},"candidate_notification_channel":{"oneOf":[{"type":"string","enum":["reminders","last_reminder","all"],"description":"SMS / WhatsApp candidate notifications: null = off, reminders = with both e-mail reminders, last_reminder = only with the final reminder, all = invitation + reminders + pre-screening accepted.","isRequired":true,"uniqueKey":"candidate_notification_channel.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["reminders","last_reminder","all"],"description":"SMS / WhatsApp candidate notifications: null = off, reminders = with both e-mail reminders, last_reminder = only with the final reminder, all = invitation + reminders + pre-screening accepted.","isRequired":true,"uniqueKey":"candidate_notification_channel.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"candidate_notification_channel","typeLabel":"enum\u003cstring> | null"},"recruiter_profile_id":{"oneOf":[{"type":"string","description":"Profile id of the recruiter owning this interview/position.","isRequired":true,"uniqueKey":"recruiter_profile_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Profile id of the recruiter owning this interview/position.","isRequired":true,"uniqueKey":"recruiter_profile_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"recruiter_profile_id","typeLabel":"string | null"},"slug":{"oneOf":[{"type":"string","description":"URL slug of the public listing, when one was generated.","isRequired":true,"uniqueKey":"slug.oneOf.0","typeLabel":"string"},{"type":"null","description":"URL slug of the public listing, when one was generated.","isRequired":true,"uniqueKey":"slug.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"slug","typeLabel":"string | null"},"tags":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"tags.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Free-form tags (interview_def_set.tags, or position_def_set.tags for a multi-stage position). Also the coaching-catalogue mapping key: a catalogue directory lists this session when its `tags_interview_set_filter` is a subset of these tags. Null when none are set.","example":["interview-practice","sales"],"isRequired":true,"uniqueKey":"tags.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Free-form tags (interview_def_set.tags, or position_def_set.tags for a multi-stage position). Also the coaching-catalogue mapping key: a catalogue directory lists this session when its `tags_interview_set_filter` is a subset of these tags. Null when none are set.","example":["interview-practice","sales"],"isRequired":true,"uniqueKey":"tags.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"tags","typeLabel":"string[] | null"},"coach_plan":{"oneOf":[{"type":"string","enum":["demo","screening","2nd","3rd","closing","job-specific","other"],"description":"Coaching-plan stage this session belongs to. Null for multi-stage positions and for sessions outside any plan.","isRequired":true,"uniqueKey":"coach_plan.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["demo","screening","2nd","3rd","closing","job-specific","other"],"description":"Coaching-plan stage this session belongs to. Null for multi-stage positions and for sessions outside any plan.","isRequired":true,"uniqueKey":"coach_plan.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"coach_plan","typeLabel":"enum\u003cstring> | null"},"interview_conversation_speed":{"oneOf":[{"type":"string","description":"Conversation pace of the AI avatar (slower/normal/faster/fluent). Null keeps the template default. Null for multi-stage positions.","isRequired":true,"uniqueKey":"interview_conversation_speed.oneOf.0","typeLabel":"string"},{"type":"null","description":"Conversation pace of the AI avatar (slower/normal/faster/fluent). Null keeps the template default. Null for multi-stage positions.","isRequired":true,"uniqueKey":"interview_conversation_speed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_conversation_speed","typeLabel":"string | null"},"max_followups":{"oneOf":[{"type":"number","description":"Maximum number of AI follow-up questions; null uses the template default. Null for multi-stage positions.","isRequired":true,"uniqueKey":"max_followups.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum number of AI follow-up questions; null uses the template default. Null for multi-stage positions.","isRequired":true,"uniqueKey":"max_followups.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"max_followups","typeLabel":"number | null"},"max_duration":{"oneOf":[{"type":"number","description":"Live session limit in seconds. Null for multi-stage positions.","isRequired":true,"uniqueKey":"max_duration.oneOf.0","typeLabel":"number"},{"type":"null","description":"Live session limit in seconds. Null for multi-stage positions.","isRequired":true,"uniqueKey":"max_duration.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"max_duration","typeLabel":"number | null"},"questions_random_subset":{"oneOf":[{"type":"number","description":"Fraction of the questions actually asked (0.01-0.9); null asks all of them. Null for multi-stage positions.","isRequired":true,"uniqueKey":"questions_random_subset.oneOf.0","typeLabel":"number"},{"type":"null","description":"Fraction of the questions actually asked (0.01-0.9); null asks all of them. Null for multi-stage positions.","isRequired":true,"uniqueKey":"questions_random_subset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"questions_random_subset","typeLabel":"number | null"},"required_pronunciation":{"oneOf":[{"type":"boolean","description":"Whether a pronunciation assessment is required. Null for multi-stage positions.","isRequired":true,"uniqueKey":"required_pronunciation.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether a pronunciation assessment is required. Null for multi-stage positions.","isRequired":true,"uniqueKey":"required_pronunciation.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"required_pronunciation","typeLabel":"boolean | null"},"result_enable_edit_transcript":{"oneOf":[{"type":"boolean","description":"Whether the candidate may edit the transcript on the result view. Null for multi-stage positions.","isRequired":true,"uniqueKey":"result_enable_edit_transcript.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the candidate may edit the transcript on the result view. Null for multi-stage positions.","isRequired":true,"uniqueKey":"result_enable_edit_transcript.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"result_enable_edit_transcript","typeLabel":"boolean | null"},"interview_category":{"oneOf":[{"type":"string","description":"Job category shown on public listings above the department (free text), e.g. \"Ashore\".","example":"Ashore","isRequired":true,"uniqueKey":"interview_category.oneOf.0","typeLabel":"string"},{"type":"null","description":"Job category shown on public listings above the department (free text), e.g. \"Ashore\".","example":"Ashore","isRequired":true,"uniqueKey":"interview_category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"interview_category","typeLabel":"string | null"},"emoji":{"oneOf":[{"type":"string","description":"Emoji marker used in the admin lists.","isRequired":true,"uniqueKey":"emoji.oneOf.0","typeLabel":"string"},{"type":"null","description":"Emoji marker used in the admin lists.","isRequired":true,"uniqueKey":"emoji.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"emoji","typeLabel":"string | null"},"is_ats":{"type":"boolean","description":"True when the definition is linked to a job in a connected ATS (Kombo).","isRequired":true,"uniqueKey":"is_ats","typeLabel":"boolean"},"collect_resume_cover_letter":{"oneOf":[{"type":"string","enum":["hidden","optional","required"],"description":"Whether a resume / cover letter is asked for: hidden, optional or required. Null for multi-stage positions.","isRequired":true,"uniqueKey":"collect_resume_cover_letter.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["hidden","optional","required"],"description":"Whether a resume / cover letter is asked for: hidden, optional or required. Null for multi-stage positions.","isRequired":true,"uniqueKey":"collect_resume_cover_letter.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"collect_resume_cover_letter","typeLabel":"enum\u003cstring> | null"},"allow_human_interview":{"oneOf":[{"type":"boolean","description":"A recruiter may hold the interview instead of the AI. Null for multi-stage positions (each interview step carries its own, see include=process).","isRequired":true,"uniqueKey":"allow_human_interview.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"A recruiter may hold the interview instead of the AI. Null for multi-stage positions (each interview step carries its own, see include=process).","isRequired":true,"uniqueKey":"allow_human_interview.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"allow_human_interview","typeLabel":"boolean | null"},"target_days_to_fill":{"oneOf":[{"type":"number","description":"Target days to fill the position. Null for single-stage interviews.","isRequired":true,"uniqueKey":"target_days_to_fill.oneOf.0","typeLabel":"number"},{"type":"null","description":"Target days to fill the position. Null for single-stage interviews.","isRequired":true,"uniqueKey":"target_days_to_fill.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"target_days_to_fill","typeLabel":"number | null"},"access_scope":{"oneOf":[{"type":"string","enum":["company","confidential"],"description":"Position access: company (every recruiter) or confidential (its team and owners only). Null for single-stage interviews.","isRequired":true,"uniqueKey":"access_scope.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["company","confidential"],"description":"Position access: company (every recruiter) or confidential (its team and owners only). Null for single-stage interviews.","isRequired":true,"uniqueKey":"access_scope.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"access_scope","typeLabel":"enum\u003cstring> | null"},"calc_definition_json":{"oneOf":[{"description":"The compiled interview definition JSON (structure varies by interview type).","uniqueKey":"calc_definition_json.oneOf.0","typeLabel":"any"},{"description":"The compiled interview definition JSON (structure varies by interview type).","type":"null","uniqueKey":"calc_definition_json.oneOf.1","typeLabel":"null"}],"uniqueKey":"calc_definition_json","typeLabel":"any | null"},"candidate_expectations_json":{"oneOf":[{"description":"Structured candidate expectations JSON — the scoring rubric. Null for multi-stage positions.","uniqueKey":"candidate_expectations_json.oneOf.0","typeLabel":"any"},{"description":"Structured candidate expectations JSON — the scoring rubric. Null for multi-stage positions.","type":"null","uniqueKey":"candidate_expectations_json.oneOf.1","typeLabel":"null"}],"uniqueKey":"candidate_expectations_json","typeLabel":"any | null"},"result_scoring":{"oneOf":[{"description":"Resolved result-scoring config (update field `custom_scoring`; its `max_retries` is the update field `interview_attempts`). Null means the platform defaults apply. Null for multi-stage positions.","uniqueKey":"result_scoring.oneOf.0","typeLabel":"any"},{"description":"Resolved result-scoring config (update field `custom_scoring`; its `max_retries` is the update field `interview_attempts`). Null means the platform defaults apply. Null for multi-stage positions.","type":"null","uniqueKey":"result_scoring.oneOf.1","typeLabel":"null"}],"uniqueKey":"result_scoring","typeLabel":"any | null"},"creation_parameters":{"oneOf":[{"description":"The creation parameters recorded at build time (interview_type, interview_tone, interview_length, additional_context, include_rapport_question, include_closing_prompt, knowledge_base_store_id, seniority_level, hiring_for_company).","uniqueKey":"creation_parameters.oneOf.0","typeLabel":"any"},{"description":"The creation parameters recorded at build time (interview_type, interview_tone, interview_length, additional_context, include_rapport_question, include_closing_prompt, knowledge_base_store_id, seniority_level, hiring_for_company).","type":"null","uniqueKey":"creation_parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"creation_parameters","typeLabel":"any | null"},"country_availability":{"oneOf":[{"description":"Portal availability by the candidate's country: {countries_allowed?: string[], countries_allowed_eu?: boolean, countries_blocked?: string[], countries_blocked_eu?: boolean} (ISO 3166-1 alpha-2, EU = EU + EEA + Switzerland; blocked wins), judged by the candidate's IP on the portal; invited candidates keep access. Null = not used, every country. Set it with job-interview-update.","uniqueKey":"country_availability.oneOf.0","typeLabel":"any"},{"description":"Portal availability by the candidate's country: {countries_allowed?: string[], countries_allowed_eu?: boolean, countries_blocked?: string[], countries_blocked_eu?: boolean} (ISO 3166-1 alpha-2, EU = EU + EEA + Switzerland; blocked wins), judged by the candidate's IP on the portal; invited candidates keep access. Null = not used, every country. Set it with job-interview-update.","type":"null","uniqueKey":"country_availability.oneOf.1","typeLabel":"null"}],"uniqueKey":"country_availability","typeLabel":"any | null"},"pdf_export_auto_config":{"oneOf":[{"description":"Auto-PDF-report options applied when the interview completes; null when auto-export is off. Null for multi-stage positions.","uniqueKey":"pdf_export_auto_config.oneOf.0","typeLabel":"any"},{"description":"Auto-PDF-report options applied when the interview completes; null when auto-export is off. Null for multi-stage positions.","type":"null","uniqueKey":"pdf_export_auto_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"pdf_export_auto_config","typeLabel":"any | null"},"reminder_schedule":{"oneOf":[{"description":"Candidate reminder schedule override (JSON); null uses the company default.","uniqueKey":"reminder_schedule.oneOf.0","typeLabel":"any"},{"description":"Candidate reminder schedule override (JSON); null uses the company default.","type":"null","uniqueKey":"reminder_schedule.oneOf.1","typeLabel":"null"}],"uniqueKey":"reminder_schedule","typeLabel":"any | null"},"process":{"type":"object","properties":{"structure_editable":{"type":"boolean","description":"True while the position is a draft: only then can steps be added, removed or reordered. Step settings can be changed at any time.","isRequired":true,"uniqueKey":"process.structure_editable","typeLabel":"boolean"},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The step (position_def_step.id).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","enum":["pre-screening","interview","invited","meeting","external_assessment","certo_verification"],"description":"Step type: pre-screening, interview (AI interview), meeting, external_assessment, certo_verification, or the legacy invited.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"The name recruiters gave the step; null = the type's default label.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name recruiters gave the step; null = the type's default label.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].name","typeLabel":"string | null"},"position_id":{"type":"string","format":"uuid","description":"The position (position_def_set.id).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].position_id","typeLabel":"string\u003cuuid>"},"sequence_no":{"type":"number","description":"Place in the process, 1 = first.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].sequence_no","typeLabel":"number"},"updated_at":{"type":"string","description":"Version of the step (its last change, else when it was made). Send it back as expected_updated_at to merchant-position-step-update so a concurrent change is refused instead of overwritten.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].updated_at","typeLabel":"string"},"advance":{"type":"string","enum":["auto","manual"],"description":"auto or manual (see the request field).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].advance","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["draft","active","archived","deleted","preparing","completed"],"description":"Publication status of the step.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"candidates_on_step":{"oneOf":[{"type":"number","description":"Candidates in progress on the step (waiting for the candidate or a recruiter, shortlisted, processing, scheduled), test runs left out. Null when your account may not read the position's candidates.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].candidates_on_step.oneOf.0","typeLabel":"number"},{"type":"null","description":"Candidates in progress on the step (waiting for the candidate or a recruiter, shortlisted, processing, scheduled), test runs left out. Null when your account may not read the position's candidates.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].candidates_on_step.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].candidates_on_step","typeLabel":"number | null"},"interview_set_id":{"type":"string","format":"uuid","description":"AI interview steps: the interview (interview_def_set.id); its questions are changed with update_interview.","uniqueKey":"process.steps.items.[INDEX].interview_set_id","typeLabel":"string\u003cuuid>"},"interview_pre_screening_id":{"type":"string","format":"uuid","description":"Pre-screening steps: interview_def_pre_screening.id.","uniqueKey":"process.steps.items.[INDEX].interview_pre_screening_id","typeLabel":"string\u003cuuid>"},"kombo":{"type":"object","properties":{"accept_stage_id":{"oneOf":[{"type":"string","maxLength":200,"description":"ATS stage (Kombo id) a candidate moves to when accepted on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].kombo.accept_stage_id.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"ATS stage (Kombo id) a candidate moves to when accepted on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].kombo.accept_stage_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].kombo.accept_stage_id","typeLabel":"string | null"},"reject_reason_id":{"oneOf":[{"type":"string","maxLength":200,"description":"ATS rejection reason (Kombo id) used when a recruiter rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].kombo.reject_reason_id.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"ATS rejection reason (Kombo id) used when a recruiter rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].kombo.reject_reason_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].kombo.reject_reason_id","typeLabel":"string | null"},"reject_reason_ai_id":{"oneOf":[{"type":"string","maxLength":200,"description":"ATS rejection reason (Kombo id) used when the AI rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].kombo.reject_reason_ai_id.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"ATS rejection reason (Kombo id) used when the AI rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].kombo.reject_reason_ai_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].kombo.reject_reason_ai_id","typeLabel":"string | null"}},"additionalProperties":false,"description":"Mapping of this step to the connected ATS (Kombo). Each key is merged separately.","uniqueKey":"process.steps.items.[INDEX].kombo","typeLabel":"object"},"meeting":{"type":"object","properties":{"mode":{"oneOf":[{"type":"string","enum":["slots","availability"],"description":"How candidates book: slots (hand-made slots, the default; add them with manage_meeting_slot) or availability (free times of the interviewers). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["slots","availability"],"description":"How candidates book: slots (hand-made slots, the default; add them with manage_meeting_slot) or availability (free times of the interviewers). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.mode","typeLabel":"enum\u003cstring> | null"},"duration_minutes":{"oneOf":[{"type":"integer","minimum":5,"maximum":1440,"description":"Meeting length in minutes, 5 to 1440 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.duration_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":5,"maximum":1440,"description":"Meeting length in minutes, 5 to 1440 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.duration_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.duration_minutes","typeLabel":"integer | null"},"location":{"oneOf":[{"type":"string","maxLength":500,"description":"Address or room shown to the candidate when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.location.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":500,"description":"Address or room shown to the candidate when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.location.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.location","typeLabel":"string | null"},"conference_provider":{"oneOf":[{"type":"string","enum":["in_person","fixed","zoom","teams","meet"],"description":"The meeting link: in_person (no link), fixed (meeting_url), zoom / teams / meet (made at booking with the interviewer's own calendar account, meeting_url is the fallback). Absent: fixed when meeting_url is set, else in_person. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.conference_provider.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["in_person","fixed","zoom","teams","meet"],"description":"The meeting link: in_person (no link), fixed (meeting_url), zoom / teams / meet (made at booking with the interviewer's own calendar account, meeting_url is the fallback). Absent: fixed when meeting_url is set, else in_person. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.conference_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.conference_provider","typeLabel":"enum\u003cstring> | null"},"meeting_url":{"oneOf":[{"type":"string","maxLength":2000,"pattern":"^https?:\\/\\/\\S+$","description":"Video link (http or https) used when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.meeting_url.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":2000,"pattern":"^https?:\\/\\/\\S+$","description":"Video link (http or https) used when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.meeting_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.meeting_url","typeLabel":"string | null"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"description":"Instructions shown to the candidate. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":4000,"description":"Instructions shown to the candidate. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.instructions","typeLabel":"string | null"},"reschedule_cutoff_hours":{"oneOf":[{"type":"integer","minimum":0,"maximum":8760,"description":"Hours before the meeting after which the candidate can no longer reschedule or cancel (default 24). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.reschedule_cutoff_hours.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":8760,"description":"Hours before the meeting after which the candidate can no longer reschedule or cancel (default 24). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.reschedule_cutoff_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.reschedule_cutoff_hours","typeLabel":"integer | null"},"nudge_after_days":{"oneOf":[{"type":"integer","minimum":0,"maximum":365,"description":"Days after which a candidate who has not booked gets a reminder; 0 = never (default 3). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.nudge_after_days.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":365,"description":"Days after which a candidate who has not booked gets a reminder; 0 = never (default 3). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.nudge_after_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.nudge_after_days","typeLabel":"integer | null"},"interviewer_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"process.steps.items.[INDEX].meeting.interviewer_profile_ids.oneOf.0.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":50,"description":"Availability mode: the interviewers whose free times are offered (profile.id of users of the company); empty = the position's recruiter. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.interviewer_profile_ids.oneOf.0","typeLabel":"string\u003cuuid>[]"},{"type":"null","items":{"type":"string","format":"uuid"},"maxItems":50,"description":"Availability mode: the interviewers whose free times are offered (profile.id of users of the company); empty = the position's recruiter. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.interviewer_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.interviewer_profile_ids","typeLabel":"string\u003cuuid>[] | null"},"panel_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"process.steps.items.[INDEX].meeting.panel_profile_ids.oneOf.0.items.[INDEX]","typeLabel":"string\u003cuuid>"},"minItems":2,"maxItems":8,"description":"Availability mode, company feature meeting_panels: a panel of 2 to 8 users who all attend (profile.id); the first leads the meeting and cannot be a read-only user. Candidates are offered only times when everyone is free. null = one interviewer. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.panel_profile_ids.oneOf.0","typeLabel":"string\u003cuuid>[]"},{"type":"null","items":{"type":"string","format":"uuid"},"minItems":2,"maxItems":8,"description":"Availability mode, company feature meeting_panels: a panel of 2 to 8 users who all attend (profile.id); the first leads the meeting and cannot be a read-only user. Candidates are offered only times when everyone is free. null = one interviewer. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.panel_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.panel_profile_ids","typeLabel":"string\u003cuuid>[] | null"},"slot_interval_minutes":{"oneOf":[{"type":"integer","minimum":5,"maximum":240,"description":"Availability mode: start times every N minutes, 5 to 240 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.slot_interval_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":5,"maximum":240,"description":"Availability mode: start times every N minutes, 5 to 240 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.slot_interval_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.slot_interval_minutes","typeLabel":"integer | null"},"min_notice_hours":{"oneOf":[{"type":"integer","minimum":0,"maximum":720,"description":"Availability mode: earliest booking, hours from now, 0 to 720 (default 12). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.min_notice_hours.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":720,"description":"Availability mode: earliest booking, hours from now, 0 to 720 (default 12). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.min_notice_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.min_notice_hours","typeLabel":"integer | null"},"horizon_days":{"oneOf":[{"type":"integer","minimum":1,"maximum":365,"description":"Availability mode: latest booking, days from now, 1 to 365 (default 21). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.horizon_days.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":365,"description":"Availability mode: latest booking, days from now, 1 to 365 (default 21). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.horizon_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.horizon_days","typeLabel":"integer | null"},"data_collection":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["none","form","text"],"description":"none, form (a meeting form, taxonomy_id) or text (free notes).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].meeting.data_collection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"taxonomy_id":{"oneOf":[{"type":"string","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form.","uniqueKey":"process.steps.items.[INDEX].meeting.data_collection.oneOf.0.taxonomy_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form.","uniqueKey":"process.steps.items.[INDEX].meeting.data_collection.oneOf.0.taxonomy_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.data_collection.oneOf.0.taxonomy_id","typeLabel":"string\u003cuuid> | null"}},"required":["mode"],"additionalProperties":false,"description":"What the interviewer records after the meeting. Replaced as a whole. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.data_collection.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"mode":{"type":"string","enum":["none","form","text"],"description":"none, form (a meeting form, taxonomy_id) or text (free notes)."},"taxonomy_id":{"oneOf":[{"type":"string","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form."},{"type":"null","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form."}]}},"required":["mode"],"additionalProperties":false,"description":"What the interviewer records after the meeting. Replaced as a whole. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.data_collection.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.data_collection","typeLabel":"object | null"},"email_variant":{"oneOf":[{"type":"string","maxLength":100,"description":"Needs the meeting_email_variants feature: the name of the e-mail version used for this step's meeting e-mails. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.email_variant.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":100,"description":"Needs the meeting_email_variants feature: the name of the e-mail version used for this step's meeting e-mails. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].meeting.email_variant.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].meeting.email_variant","typeLabel":"string | null"}},"additionalProperties":false,"description":"Settings of a meeting step. Each key is merged separately; keys left out keep their value.","uniqueKey":"process.steps.items.[INDEX].meeting","typeLabel":"object"},"certo":{"type":"object","properties":{"wait_for_identity":{"type":"boolean","description":"See the request field.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].certo.wait_for_identity","typeLabel":"boolean"},"include_contact":{"type":"boolean","description":"See the request field.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].certo.include_contact","typeLabel":"boolean"},"scope_types":{"oneOf":[{"type":"array","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"],"uniqueKey":"process.steps.items.[INDEX].certo.scope_types.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"null = everything.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].certo.scope_types.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"type":"null","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"]},"description":"null = everything.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].certo.scope_types.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].certo.scope_types","typeLabel":"enum\u003cstring>[] | null"}},"required":["wait_for_identity","include_contact","scope_types"],"description":"certo_verification steps.","uniqueKey":"process.steps.items.[INDEX].certo","typeLabel":"object"},"external_assessment":{"type":"object","properties":{"provider_id":{"type":"string","format":"uuid","description":"An active assessment provider of this company, set up in the admin (a step's current one is in job-interview-get include=process). Required on a new step.","uniqueKey":"process.steps.items.[INDEX].external_assessment.provider_id","typeLabel":"string\u003cuuid>"},"instructions":{"oneOf":[{"type":"string","maxLength":3000,"description":"Shown to the candidate (falls back to the provider's instructions). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].external_assessment.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":3000,"description":"Shown to the candidate (falls back to the provider's instructions). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].external_assessment.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].external_assessment.instructions","typeLabel":"string | null"},"due_days":{"type":"integer","minimum":1,"maximum":60,"description":"Days the candidate has to finish, 1 to 60 (default 7).","uniqueKey":"process.steps.items.[INDEX].external_assessment.due_days","typeLabel":"integer"},"pass_score":{"oneOf":[{"type":"number","description":"Optional pass mark: a result without a pass flag passes when its score is at least this. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].external_assessment.pass_score.oneOf.0","typeLabel":"number"},{"type":"null","description":"Optional pass mark: a result without a pass flag passes when its score is at least this. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"process.steps.items.[INDEX].external_assessment.pass_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].external_assessment.pass_score","typeLabel":"number | null"}},"additionalProperties":false,"description":"Settings of an external assessment step (the external_assessment feature).","uniqueKey":"process.steps.items.[INDEX].external_assessment","typeLabel":"object"},"interview":{"type":"object","properties":{"allow_human_interview":{"type":"boolean","description":"Let candidates ask for an interview with a person instead of the AI. Question content is changed with update_interview, on the step's interview_set_id.","uniqueKey":"process.steps.items.[INDEX].interview.allow_human_interview","typeLabel":"boolean"}},"additionalProperties":false,"description":"Settings of an AI interview step.","uniqueKey":"process.steps.items.[INDEX].interview","typeLabel":"object"},"pre_screening":{"type":"object","properties":{"type":{"type":"string","enum":["resume","form","resume_with_form"],"description":"What the candidate sends: resume, form, or resume_with_form.","uniqueKey":"process.steps.items.[INDEX].pre_screening.type","typeLabel":"enum\u003cstring>"},"form_fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].pre_screening.form_fields.items.[INDEX].id","typeLabel":"string"}},"required":["id"],"uniqueKey":"process.steps.items.[INDEX].pre_screening.form_fields.items.[INDEX]","typeLabel":"object"},"maxItems":100,"description":"The whole list of form fields (replaced, not merged), each with its own id: standard fields reuse the rule id (e.g. form_education, with mandatory), custom fields use custom_\u003ctimestamp> with title, field_type (text, file, radio), type (required, optional) and, for radio, options (a list of strings), e.g. {\"id\": \"custom_1731100000000\", \"title\": \"Do you have a work permit?\", \"field_type\": \"radio\", \"type\": \"required\", \"options\": [\"Yes\", \"No\"]}. A screening rule on it (assessment_rules) is optional.","uniqueKey":"process.steps.items.[INDEX].pre_screening.form_fields","typeLabel":"object[]"},"assessment_rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].pre_screening.assessment_rules.items.[INDEX].id","typeLabel":"string"}},"required":["id"],"uniqueKey":"process.steps.items.[INDEX].pre_screening.assessment_rules.items.[INDEX]","typeLabel":"object"},"maxItems":100,"description":"The whole list of rules (replaced, not merged), each with its own id: resume_match (resume_score_accept / resume_score_reject, whole numbers 0 to 10), resume_technical_experience, form_* rules with type screening, required or optional and action reject or mark_for_review.","uniqueKey":"process.steps.items.[INDEX].pre_screening.assessment_rules","typeLabel":"object[]"},"position_country":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"ISO country code of the position; stored upper case.","uniqueKey":"process.steps.items.[INDEX].pre_screening.position_country","typeLabel":"string"},"candidate_expectations":{"oneOf":[{"type":"string","maxLength":4000,"description":"What the AI expects of a candidate, in words. null or empty removes it.","uniqueKey":"process.steps.items.[INDEX].pre_screening.candidate_expectations.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":4000,"description":"What the AI expects of a candidate, in words. null or empty removes it.","uniqueKey":"process.steps.items.[INDEX].pre_screening.candidate_expectations.oneOf.1","typeLabel":"null"}],"uniqueKey":"process.steps.items.[INDEX].pre_screening.candidate_expectations","typeLabel":"string | null"},"all_rules_fulfilled_auto_approve":{"type":"boolean","description":"true: when every rule is fulfilled the pre-screening is approved without a recruiter's review. Whether the approved candidate then moves to the next step by themselves is `advance` (auto) or a recruiter's move (manual).","uniqueKey":"process.steps.items.[INDEX].pre_screening.all_rules_fulfilled_auto_approve","typeLabel":"boolean"}},"additionalProperties":false,"description":"Settings of the pre-screening step.","uniqueKey":"process.steps.items.[INDEX].pre_screening","typeLabel":"object"},"slots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Slot id (position_meeting_slot.id).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].id","typeLabel":"string"},"start_at":{"type":"string","description":"Start (ISO 8601).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].start_at","typeLabel":"string"},"duration_minutes":{"type":"number","description":"Length in minutes.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].duration_minutes","typeLabel":"number"},"capacity":{"type":"number","description":"How many candidates can book it.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].capacity","typeLabel":"number"},"booked":{"type":"number","description":"Active bookings (booking_status booked).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].booked","typeLabel":"number"},"location":{"oneOf":[{"type":"string","description":"Place of an in-person meeting.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"type":"null","description":"Place of an in-person meeting.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].location","typeLabel":"string | null"},"meeting_url":{"oneOf":[{"type":"string","description":"Video call link.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].meeting_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Video call link.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].meeting_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].meeting_url","typeLabel":"string | null"},"interviewer_profile_id":{"oneOf":[{"type":"string","description":"Interviewer (profile.id).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].interviewer_profile_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Interviewer (profile.id).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].interviewer_profile_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].interviewer_profile_id","typeLabel":"string | null"},"panel":{"type":"array","items":{"type":"object","properties":{"profile_id":{"type":"string","description":"Panel member (profile.id).","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].panel.items.[INDEX].profile_id","typeLabel":"string"},"role":{"type":"string","enum":["lead","member"],"description":"Panel role: lead or member.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].panel.items.[INDEX].role","typeLabel":"enum\u003cstring>"}},"required":["profile_id","role"],"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].panel.items.[INDEX]","typeLabel":"object"},"description":"Panel interviewers of the slot (position_meeting_slot_interviewer); empty when none.","isRequired":true,"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX].panel","typeLabel":"object[]"}},"required":["id","start_at","duration_minutes","capacity","booked","location","meeting_url","interviewer_profile_id","panel"],"uniqueKey":"process.steps.items.[INDEX].slots.items.[INDEX]","typeLabel":"object"},"description":"include=slots, meeting steps only: the upcoming active slots, earliest first (at most 500 per position).","uniqueKey":"process.steps.items.[INDEX].slots","typeLabel":"object[]"}},"required":["id","type","name","position_id","sequence_no","updated_at","advance","status","candidates_on_step"],"description":"A step with its settings: advance, kombo when mapped, and only the settings object of its own type (meeting, certo, external_assessment, interview, pre_screening).","uniqueKey":"process.steps.items.[INDEX]","typeLabel":"object"},"description":"The live steps, in order (deleted steps left out). Empty for a hiring manager account, which cannot read steps.","isRequired":true,"uniqueKey":"process.steps","typeLabel":"object[]"}},"required":["structure_editable","steps"],"description":"include=process (multi-stage positions): the ordered steps with typed settings.","uniqueKey":"process","typeLabel":"object"},"team":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the company has the hiring team switched on (the hiring_team feature); members is empty while it is off.","isRequired":true,"uniqueKey":"team.enabled","typeLabel":"boolean"},"owner":{"oneOf":[{"type":"object","properties":{"profile_id":{"oneOf":[{"type":"string","description":"Owning recruiter (profile.id).","isRequired":true,"uniqueKey":"team.owner.oneOf.0.profile_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Owning recruiter (profile.id).","isRequired":true,"uniqueKey":"team.owner.oneOf.0.profile_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.owner.oneOf.0.profile_id","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","description":"Name.","isRequired":true,"uniqueKey":"team.owner.oneOf.0.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Name.","isRequired":true,"uniqueKey":"team.owner.oneOf.0.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.owner.oneOf.0.name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"E-mail.","isRequired":true,"uniqueKey":"team.owner.oneOf.0.email.oneOf.0","typeLabel":"string"},{"type":"null","description":"E-mail.","isRequired":true,"uniqueKey":"team.owner.oneOf.0.email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.owner.oneOf.0.email","typeLabel":"string | null"}},"required":["profile_id","name","email"],"description":"The position's recruiter (recruiter_profile_id); null when none.","isRequired":true,"uniqueKey":"team.owner.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"profile_id":{"oneOf":[{"type":"string","description":"Owning recruiter (profile.id)."},{"type":"null","description":"Owning recruiter (profile.id)."}]},"name":{"oneOf":[{"type":"string","description":"Name."},{"type":"null","description":"Name."}]},"email":{"oneOf":[{"type":"string","description":"E-mail."},{"type":"null","description":"E-mail."}]}},"required":["profile_id","name","email"],"description":"The position's recruiter (recruiter_profile_id); null when none.","isRequired":true,"uniqueKey":"team.owner.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.owner","typeLabel":"object | null"},"members":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Membership id (position_team.id).","isRequired":true,"uniqueKey":"team.members.items.[INDEX].id","typeLabel":"string"},"role":{"type":"string","enum":["recruiter","sourcer","coordinator","hiring_manager","interviewer","viewer"],"description":"Role on the hiring team.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"profile_id":{"oneOf":[{"type":"string","description":"A person (profile.id); null for a group.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].profile_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"A person (profile.id); null for a group.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].profile_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.members.items.[INDEX].profile_id","typeLabel":"string | null"},"profile_group_id":{"oneOf":[{"type":"string","description":"A group (profile_group.id); null for a person.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].profile_group_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"A group (profile_group.id); null for a person.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].profile_group_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.members.items.[INDEX].profile_group_id","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","description":"Person or group name.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Person or group name.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.members.items.[INDEX].name","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","description":"E-mail of a person.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].email.oneOf.0","typeLabel":"string"},{"type":"null","description":"E-mail of a person.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.members.items.[INDEX].email","typeLabel":"string | null"},"group_name":{"oneOf":[{"type":"string","description":"Group name.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].group_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Group name.","isRequired":true,"uniqueKey":"team.members.items.[INDEX].group_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.members.items.[INDEX].group_name","typeLabel":"string | null"},"group_member_count":{"oneOf":[{"type":"number","description":"People in a group (with its subgroups).","isRequired":true,"uniqueKey":"team.members.items.[INDEX].group_member_count.oneOf.0","typeLabel":"number"},{"type":"null","description":"People in a group (with its subgroups).","isRequired":true,"uniqueKey":"team.members.items.[INDEX].group_member_count.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"team.members.items.[INDEX].group_member_count","typeLabel":"number | null"}},"required":["id","role","profile_id","profile_group_id","name","email","group_name","group_member_count"],"uniqueKey":"team.members.items.[INDEX]","typeLabel":"object"},"description":"Members by role, then name.","isRequired":true,"uniqueKey":"team.members","typeLabel":"object[]"}},"required":["enabled","owner","members"],"description":"include=team (multi-stage positions): the hiring team.","uniqueKey":"team","typeLabel":"object"},"lifecycle":{"type":"object","properties":{"status":{"type":"string","enum":["draft","pending_approval","open","applications_closed","on_hold","filled","cancelled","closed"],"description":"Vacancy lifecycle. Without a stored lifecycle it follows the publication status: draft/preparing = draft, active = open, archived/completed = closed.","isRequired":true,"uniqueKey":"lifecycle.status","typeLabel":"enum\u003cstring>"},"reason":{"oneOf":[{"type":"string","description":"Label of the reason picked for the last change (position status reasons).","isRequired":true,"uniqueKey":"lifecycle.reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Label of the reason picked for the last change (position status reasons).","isRequired":true,"uniqueKey":"lifecycle.reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"lifecycle.reason","typeLabel":"string | null"},"note":{"oneOf":[{"type":"string","description":"Note given with the last change.","isRequired":true,"uniqueKey":"lifecycle.note.oneOf.0","typeLabel":"string"},{"type":"null","description":"Note given with the last change.","isRequired":true,"uniqueKey":"lifecycle.note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"lifecycle.note","typeLabel":"string | null"},"changed_at":{"oneOf":[{"type":"string","description":"When the lifecycle last changed (ISO 8601).","isRequired":true,"uniqueKey":"lifecycle.changed_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"When the lifecycle last changed (ISO 8601).","isRequired":true,"uniqueKey":"lifecycle.changed_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"lifecycle.changed_at","typeLabel":"string | null"}},"required":["status","reason","note","changed_at"],"description":"include=lifecycle (multi-stage positions, the position_lifecycle feature): the vacancy lifecycle.","uniqueKey":"lifecycle","typeLabel":"object"},"openings":{"type":"object","properties":{"openings_total":{"oneOf":[{"type":"number","description":"Openings to fill; null = not set.","isRequired":true,"uniqueKey":"openings.openings_total.oneOf.0","typeLabel":"number"},{"type":"null","description":"Openings to fill; null = not set.","isRequired":true,"uniqueKey":"openings.openings_total.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"openings.openings_total","typeLabel":"number | null"},"filled":{"type":"number","description":"Openings filled (hired).","isRequired":true,"uniqueKey":"openings.filled","typeLabel":"number"},"remaining":{"oneOf":[{"type":"number","description":"Openings still to fill; null when openings_total is not set.","isRequired":true,"uniqueKey":"openings.remaining.oneOf.0","typeLabel":"number"},{"type":"null","description":"Openings still to fill; null when openings_total is not set.","isRequired":true,"uniqueKey":"openings.remaining.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"openings.remaining","typeLabel":"number | null"},"auto_close":{"type":"boolean","description":"The position closes by itself once every opening is filled.","isRequired":true,"uniqueKey":"openings.auto_close","typeLabel":"boolean"}},"required":["openings_total","filled","remaining","auto_close"],"description":"include=lifecycle (multi-stage positions, the position_bulk_create feature): openings and how many are filled.","uniqueKey":"openings","typeLabel":"object"},"publishing":{"type":"object","properties":{"publish_from":{"oneOf":[{"type":"string","description":"Go-live (ISO 8601); null = now.","isRequired":true,"uniqueKey":"publishing.publish_from.oneOf.0","typeLabel":"string"},{"type":"null","description":"Go-live (ISO 8601); null = now.","isRequired":true,"uniqueKey":"publishing.publish_from.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishing.publish_from","typeLabel":"string | null"},"publish_until":{"oneOf":[{"type":"string","description":"Closing time (ISO 8601); null = open-ended.","isRequired":true,"uniqueKey":"publishing.publish_until.oneOf.0","typeLabel":"string"},{"type":"null","description":"Closing time (ISO 8601); null = open-ended.","isRequired":true,"uniqueKey":"publishing.publish_until.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishing.publish_until","typeLabel":"string | null"},"audience":{"oneOf":[{"type":"string","enum":["external","internal","both"],"description":"Who sees the listing: external, internal (employees), both.","isRequired":true,"uniqueKey":"publishing.audience.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["external","internal","both"],"description":"Who sees the listing: external, internal (employees), both.","isRequired":true,"uniqueKey":"publishing.audience.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishing.audience","typeLabel":"enum\u003cstring> | null"},"internal_until":{"oneOf":[{"type":"string","description":"Audience both: employees only until this time (ISO 8601).","isRequired":true,"uniqueKey":"publishing.internal_until.oneOf.0","typeLabel":"string"},{"type":"null","description":"Audience both: employees only until this time (ISO 8601).","isRequired":true,"uniqueKey":"publishing.internal_until.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishing.internal_until","typeLabel":"string | null"},"internal_days":{"oneOf":[{"type":"number","description":"Audience both: internal-first days (internal_until minus publish_from); null when not computable.","isRequired":true,"uniqueKey":"publishing.internal_days.oneOf.0","typeLabel":"number"},{"type":"null","description":"Audience both: internal-first days (internal_until minus publish_from); null when not computable.","isRequired":true,"uniqueKey":"publishing.internal_days.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishing.internal_days","typeLabel":"number | null"},"state":{"oneOf":[{"type":"string","enum":["scheduled","closed","internal","public"],"description":"What the window means now: scheduled, closed, internal or public.","isRequired":true,"uniqueKey":"publishing.state.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["scheduled","closed","internal","public"],"description":"What the window means now: scheduled, closed, internal or public.","isRequired":true,"uniqueKey":"publishing.state.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"publishing.state","typeLabel":"enum\u003cstring> | null"}},"required":["publish_from","publish_until","audience","internal_until","internal_days","state"],"description":"include=publishing (multi-stage positions, the position_audience feature): the publishing window.","uniqueKey":"publishing","typeLabel":"object"},"custom_fields":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"custom_fields.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"custom_fields.additionalProperties","typeLabel":"null"},"description":"Company-defined fields (key: value) of a multi-stage position, when custom fields are enabled for the company (multi-stage positions only: absent for an interview). Keys are the field keys of the company's custom field definitions; values are text, numbers, YYYY-MM-DD dates, option values (a list for multiple choice), {min, max, currency} ranges or user profile ids.","example":{"cost_centre":"CC-100","contract_type":"permanent"},"uniqueKey":"custom_fields","typeLabel":"object"}},"required":["name","created_at","updated_at","questions","is_multistage","status","visibility","stage","type","environment","code","interview_location","cover_image_url","merchant_id","interview_template_id","interview_template_type","is_voice_only","knowledge_base_store_id","mojito_language_code","speech_language_code","speech_language_name","recording","recording_full_session","type_credit","result_view","candidate_video_introduction","description","interview_description_long","candidate_expectations","interview_department","interview_salary","interview_available_till","candidate_notification_channel","recruiter_profile_id","slug","tags","coach_plan","interview_conversation_speed","max_followups","max_duration","questions_random_subset","required_pronunciation","result_enable_edit_transcript","interview_category","emoji","is_ats","collect_resume_cover_letter","allow_human_interview","target_days_to_fill","access_scope"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","created_at":"2026-01-15T09:30:00.000Z","updated_at":"2026-01-20T14:05:00.000Z","questions":[{"question":"\u003cstring>","id":"\u003cstring>","duration":123,"mojito_language_code":"en","label":"\u003cstring>","is_conditional":true,"is_without_scoring":true,"is_candidate_asking_recruiter":true,"is_expert":true,"is_multiple_choice":true,"question_alternatives":["\u003cstring>"],"conditional_question_main_id":"\u003cstring>","conditional_question_answer":false,"is_skippable":false,"knowledge_base_id":"\u003cstring>","external_id":"\u003cstring>","external_data":{},"candidate_expectations_json":{"weak":["\u003cstring>"],"moderate":["\u003cstring>"],"strong":["\u003cstring>"]}}],"is_multistage":true,"status":"draft","visibility":"public","stage":"Interest","type":"coaching","environment":"production","code":"\u003cstring>","interview_location":"\u003cstring>","cover_image_url":"\u003cstring>","merchant_id":"\u003cstring>","interview_template_id":"\u003cstring>","interview_template_type":"offline_elai","is_voice_only":true,"knowledge_base_store_id":"\u003cstring>","mojito_language_code":"en","speech_language_code":"\u003cstring>","speech_language_name":"\u003cstring>","recording":"audio_first_5_answers","recording_full_session":"audio_first_5_answers","type_credit":"resume_check","result_view":"minimal","candidate_video_introduction":"hidden","description":"\u003cstring>","interview_description_long":"\u003cstring>","candidate_expectations":"\u003cstring>","interview_department":"Engineering","interview_salary":"$80k - $100k","interview_available_till":"\u003cstring>","candidate_notification_channel":"reminders","recruiter_profile_id":"\u003cstring>","slug":"\u003cstring>","tags":["interview-practice","sales"],"coach_plan":"demo","interview_conversation_speed":"\u003cstring>","max_followups":123,"max_duration":123,"questions_random_subset":123,"required_pronunciation":true,"result_enable_edit_transcript":true,"interview_category":"Ashore","emoji":"\u003cstring>","is_ats":true,"collect_resume_cover_letter":"hidden","allow_human_interview":true,"target_days_to_fill":123,"access_scope":"company","calc_definition_json":"\u003cunknown>","candidate_expectations_json":"\u003cunknown>","result_scoring":"\u003cunknown>","creation_parameters":"\u003cunknown>","country_availability":"\u003cunknown>","pdf_export_auto_config":"\u003cunknown>","reminder_schedule":"\u003cunknown>","process":{"structure_editable":true,"steps":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","type":"pre-screening","name":"\u003cstring>","position_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","sequence_no":123,"updated_at":"\u003cstring>","advance":"auto","status":"draft","candidates_on_step":123,"interview_set_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","interview_pre_screening_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","kombo":{"accept_stage_id":"\u003cstring>","reject_reason_id":"\u003cstring>","reject_reason_ai_id":"\u003cstring>"},"meeting":{"mode":"slots","duration_minutes":722,"location":"\u003cstring>","conference_provider":"in_person","meeting_url":"\u003cstring>","instructions":"\u003cstring>","reschedule_cutoff_hours":4380,"nudge_after_days":182,"interviewer_profile_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"panel_profile_ids":["3c90c3cc-0d44-4b50-8888-8dd25736052a"],"slot_interval_minutes":122,"min_notice_hours":360,"horizon_days":183,"data_collection":{"mode":"none","taxonomy_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"},"email_variant":"\u003cstring>"},"certo":{"wait_for_identity":true,"include_contact":true,"scope_types":["employment"]},"external_assessment":{"provider_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","instructions":"\u003cstring>","due_days":30,"pass_score":123},"interview":{"allow_human_interview":true},"pre_screening":{"type":"resume","form_fields":[{"id":"\u003cstring>"}],"assessment_rules":[{"id":"\u003cstring>"}],"position_country":"\u003cstring>","candidate_expectations":"\u003cstring>","all_rules_fulfilled_auto_approve":true},"slots":[{"id":"\u003cstring>","start_at":"\u003cstring>","duration_minutes":123,"capacity":123,"booked":123,"location":"\u003cstring>","meeting_url":"\u003cstring>","interviewer_profile_id":"\u003cstring>","panel":[{"profile_id":"\u003cstring>","role":"lead"}]}]}]},"team":{"enabled":true,"owner":{"profile_id":"\u003cstring>","name":"\u003cstring>","email":"\u003cstring>"},"members":[{"id":"\u003cstring>","role":"recruiter","profile_id":"\u003cstring>","profile_group_id":"\u003cstring>","name":"\u003cstring>","email":"\u003cstring>","group_name":"\u003cstring>","group_member_count":123}]},"lifecycle":{"status":"draft","reason":"\u003cstring>","note":"\u003cstring>","changed_at":"\u003cstring>"},"openings":{"openings_total":123,"filled":123,"remaining":123,"auto_close":true},"publishing":{"publish_from":"\u003cstring>","publish_until":"\u003cstring>","audience":"external","internal_until":"\u003cstring>","internal_days":123,"state":"scheduled"},"custom_fields":{"cost_centre":"CC-100","contract_type":"permanent"}}}},"exampleType":"generated"}},"exampleType":"generated"},"fa5dcde0-021f-443f-b901-34ca6884b4f9":{"description":"Missing, expired or invalid access token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"bfebef87-1034-4ae6-aaa1-16b958a1b6f6":{"description":"Your token is not a company staff token (owner, recruiter, hiring manager or admin).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"0eb6d542-38b6-446d-b259-968be7cb706b":{"description":"No interview or position found for the given id (or hidden by row-level security).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"e8b34d8b-56df-46e9-81c4-c29238f8d0df":{"description":"Validation error (position_id not a uuid, an unknown include value).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"46641090-d74f-480f-957a-e4fd8aab44a5":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c6f2b84b-bb9c-4976-aeab-71410a8534b9":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"454fcb62-7052-4847-a728-ecf5ade065a6":{"url":"https://cool.jobmojito.com/functions/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://cool.jobmojito.com/functions/v1/openapi"},"subdomain":"jobmojito","siteName":"JobMojito Developer / Agent","title":"Get interview definition - JobMojito Developer / Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T15:00:44.134Z","originalFileLocation":"api-reference/interviews/get-interview-definition.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled calc_definition_json, the ordered questions array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, include adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller\u0026#x27;s row-level security, so a confidential position you are not on answers 404.\">\u003cmeta data-mint-head name=\"application-name\" content=\"JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get interview definition - JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled calc_definition_json, the ordered questions array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, include adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller\u0026#x27;s row-level security, so a confidential position you are not on answers 404.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jobmojito.mintlify.site/_mintlify/api/og/v2?division=Interviews\u0026amp;title=Get+interview+definition\u0026amp;description=Retrieves+the+interview+definition+for+a+given+interview-definition+id+or+position+id.+Returns+the+compiled+%60calc_definition_json%60%2C+the+ordered+%60questions%60+arra\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=ed676241234d424f765479c76995d0de8479b81b6b304485ee692d5a2136a714\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get interview definition - JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled calc_definition_json, the ordered questions array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, include adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller\u0026#x27;s row-level security, so a confidential position you are not on answers 404.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jobmojito.mintlify.site/_mintlify/api/og/v2?division=Interviews\u0026amp;title=Get+interview+definition\u0026amp;description=Retrieves+the+interview+definition+for+a+given+interview-definition+id+or+position+id.+Returns+the+compiled+%60calc_definition_json%60%2C+the+ordered+%60questions%60+arra\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=ed676241234d424f765479c76995d0de8479b81b6b304485ee692d5a2136a714\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#639C42\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/interviews/get-interview-definition.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.jobmojito.com/#organization\",\"name\":\"JobMojito Developer / Agent\",\"url\":\"https://developer.jobmojito.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/jobmojito-light.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=6c00cb5f3104ffb6325dacc0818bba69\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.jobmojito.com#website\",\"name\":\"JobMojito Developer / Agent\",\"url\":\"https://developer.jobmojito.com\",\"publisher\":{\"@id\":\"https://developer.jobmojito.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition#webpage\",\"url\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition\",\"name\":\"Get interview definition\",\"description\":\"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled calc_definition_json, the ordered questions array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, include adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller's row-level security, so a confidential position you are not on answers 404.\",\"dateModified\":\"2026-11-09T15:00:44.134Z\",\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Interviews\",\"item\":\"https://developer.jobmojito.com/api-reference/interviews/create-a-new-interview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get interview definition\",\"item\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition#apireference\",\"headline\":\"Get interview definition\",\"name\":\"Get interview definition\",\"description\":\"Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled calc_definition_json, the ordered questions array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. For a multi-stage position, include adds the process steps (with meeting slots), the hiring team, the vacancy lifecycle with openings, and the publishing window. Company staff only (owners, recruiters, hiring managers, admins); access is subject to the caller's row-level security, so a confidential position you are not on answers 404.\",\"url\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition\",\"mainEntityOfPage\":{\"@id\":\"https://developer.jobmojito.com/api-reference/interviews/get-interview-definition#webpage\"},\"dateModified\":\"2026-11-09T15:00:44.134Z\",\"publisher\":{\"@id\":\"https://developer.jobmojito.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"JobMojito Developer / Agent\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"JobMojito Developer / Agent\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/interviews/get-interview-definition.md","siteName":"JobMojito Developer / Agent","nav":{"global":null,"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":"/welcome"}]},{"tab":"API Reference","groups":[{"group":"Interviews","pages":[{"title":"Create a new interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-create","href":"/api-reference/interviews/create-a-new-interview"},{"title":"Create an interview from an array of questions","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-create-from-array","href":"/api-reference/interviews/create-an-interview-from-an-array-of-questions"},{"title":"Create an interview for a candidate and return an access token URL","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-create-for-candidate-with-token","href":"/api-reference/interviews/create-an-interview-for-a-candidate-and-return-an-access-token-url"},{"title":"Create a role-play — coaching persona or interview-portal role-play (choose with `portal`)","description":"FIRST DECIDE `portal`. This endpoint creates two different products and the default is NOT the recruiter one:\n- `portal: \"interview\"` — an INTERVIEW ROLE-PLAY. Use this whenever the goal is to ASSESS or SCREEN candidates: hiring, assessments, sales role-plays for job applicants, anything a recruiter runs. Candidates are invited through the normal invitation flow, results appear in the recruiter's result list, it is billed against merchant credits, and attempts are capped via `interview_attempts` — exactly like an interview.\n- `portal: \"coaching\"` (THE DEFAULT) — a coaching persona for practice/training on the coaching portal. Consumed against the mentee's own coaching credits, self-started from the catalogue, and its results are NOT visible to recruiters. Omitting `portal` gives you this one, so pass `portal: \"interview\"` explicitly for any recruiting/assessment use case.\nThe conversation itself behaves identically in both.\n\nThe avatar plays a defined role in a free-form conversation instead of running a scored Q\u0026A interview. No AI question/description generation runs; the persona role fields ARE the configuration. The session runs as: a welcome message → the avatar's OPENING LINE (the first thing it says, set via `opening_line`) → the candidate replies and the free-form role-play begins → a closing message. Because there is no question list, `opening_line` is how the avatar starts the scene — set it to a concrete in-character line; if omitted it defaults to a generic \"Hello\". Set `welcome_message` and `thank_you_message` too — omitting them leaves the generic platform defaults. Also set `candidate_expectations`: it is the yardstick the session is scored against. The four avatar prompts divide up as: `persona_avatar_who_is` (identity and what drives it), `persona_avatar_knowledge` (the private facts it may use), `persona_avatar_progress` (how the conversation is allowed to move forward, and what gates the later personal details), and `persona_avatar_end_conditions` (when to stop). Without `persona_avatar_progress` the avatar has no defined arc and tends to either concede immediately or never concede at all. Provisions the default conversational steps and optionally an embed key.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /persona-create","href":"/api-reference/interviews/create-a-role-play-—-coaching-persona-or-interview-portal-role-play-choose-with-`portal`"},{"title":"Get interview definition","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-get","href":"/api-reference/interviews/get-interview-definition"},{"title":"Update an interview or position","description":"Updates the configuration of an existing interview (single-stage) or position (multi-stage). Only the fields present in the request body are written — everything else keeps its current value, and sending null clears a nullable field. The question list is only touched when you send `questions`; omit that field and the questions are left exactly as they are. When sent, it must be the complete list and is applied as a diff against what is stored (matched on external_id, then id, then identical content), so unchanged questions keep their existing records, edited ones are unlinked and re-created, and dropped ones are unlinked — and re-sending the array job-interview-get returned changes nothing. See the field description, and `questions_diff` in the response for what was decided. Questions of an interview that is already `active` can only be changed on interactive avatar templates, where re-publishing is instant; on the offline (pre-rendered video) templates set the interview back to `draft` first. The welcome / thank-you messages and the instructional-video screen are stored as steps rather than questions and are never changed here. `mojito_language_code` cannot be changed — the existing questions and rendered videos are in the original language — so create a new interview to change language. A multi-stage position only carries the shared identity fields (name, code, location, description, description_long, cover_image_url, department, salary, available_till, recruiter, status, visibility, hiring_for_company, tags, interview_category, emoji, custom_fields) and its hiring `team`; sending an interview-only field for a position is a 422. The AI interview step of a position can be edited here (questions, settings), but its status and visibility follow the position (422).","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-update","href":"/api-reference/interviews/update-an-interview-or-position"},{"title":"Set interview state","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-set-state","href":"/api-reference/interviews/set-interview-state"},{"title":"Generate a signed interview URL","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-token","href":"/api-reference/interviews/generate-a-signed-interview-url"},{"title":"Register users for an interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-register-users","href":"/api-reference/interviews/register-users-for-an-interview"},{"title":"List interview definitions","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-interview-list","href":"/api-reference/interviews/list-interview-definitions"}]},{"group":"Positions","pages":[{"title":"Set the steps of a draft position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-process-save","href":"/api-reference/positions/set-the-steps-of-a-draft-position"},{"title":"Change the settings of a position step","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-step-update","href":"/api-reference/positions/change-the-settings-of-a-position-step"},{"title":"Create, change or delete a meeting slot","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-meeting-slot-manage","href":"/api-reference/positions/create-change-or-delete-a-meeting-slot"},{"title":"Copy a position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-duplicate","href":"/api-reference/positions/copy-a-position"},{"title":"Copy an interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-interview-duplicate","href":"/api-reference/positions/copy-an-interview"}]},{"group":"Coaching catalogue","pages":[{"title":"Create a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /catalogue-tag-create","href":"/api-reference/coaching-catalogue/create-a-coaching-catalogue-directory"},{"title":"Update a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /catalogue-tag-update","href":"/api-reference/coaching-catalogue/update-a-coaching-catalogue-directory"},{"title":"Get a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /catalogue-tag-get","href":"/api-reference/coaching-catalogue/get-a-coaching-catalogue-directory"},{"title":"List coaching catalogue directories","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /catalogue-tag-list","href":"/api-reference/coaching-catalogue/list-coaching-catalogue-directories"}]},{"group":"Results","pages":[{"title":"Get interview result details with transcript","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-details","href":"/api-reference/results/get-interview-result-details-with-transcript"},{"title":"Generate an interview report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pdf","href":"/api-reference/results/generate-an-interview-report"},{"title":"Request another interview attempt","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-result-request-another-attempt","href":"/api-reference/results/request-another-interview-attempt"},{"title":"Record an external assessment result","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /assessment-result-set","href":"/api-reference/results/record-an-external-assessment-result"},{"title":"List interview results","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-result-list","href":"/api-reference/results/list-interview-results"},{"title":"Get daily event analytics","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-analytics","href":"/api-reference/results/get-daily-event-analytics"},{"title":"Get merchant credit usage","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-analytics-credits-used","href":"/api-reference/results/get-merchant-credit-usage"}]},{"group":"Reports","pages":[{"title":"List report datasets, fields and measures","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-catalog","href":"/api-reference/reports/list-report-datasets-fields-and-measures"},{"title":"List custom reports","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-list","href":"/api-reference/reports/list-custom-reports"},{"title":"Get a custom report definition","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-get","href":"/api-reference/reports/get-a-custom-report-definition"},{"title":"Run a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-run","href":"/api-reference/reports/run-a-custom-report"},{"title":"Check and run an unsaved report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-preview","href":"/api-reference/reports/check-and-run-an-unsaved-report"},{"title":"Create a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-create","href":"/api-reference/reports/create-a-custom-report"},{"title":"Update a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-update","href":"/api-reference/reports/update-a-custom-report"}]},{"group":"Candidates","pages":[{"title":"List candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-list","href":"/api-reference/candidates/list-candidates"},{"title":"Get a candidate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-get","href":"/api-reference/candidates/get-a-candidate"},{"title":"Add a note to a candidate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-note-add","href":"/api-reference/candidates/add-a-note-to-a-candidate"},{"title":"Tag candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-tags-set","href":"/api-reference/candidates/tag-candidates"},{"title":"Create, change or delete a candidate tag","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-tag-manage","href":"/api-reference/candidates/create-change-or-delete-a-candidate-tag"},{"title":"List candidate filter options","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-filter-options","href":"/api-reference/candidates/list-candidate-filter-options"},{"title":"Preview merging two candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-merge-preview","href":"/api-reference/candidates/preview-merging-two-candidates"},{"title":"Merge two candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-merge","href":"/api-reference/candidates/merge-two-candidates"},{"title":"Dismiss a possible duplicate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-duplicate-dismiss","href":"/api-reference/candidates/dismiss-a-possible-duplicate"},{"title":"List candidate segments","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-segment-list","href":"/api-reference/candidates/list-candidate-segments"},{"title":"Create, change or delete a candidate segment","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-segment-manage","href":"/api-reference/candidates/create-change-or-delete-a-candidate-segment"},{"title":"Download a candidate document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-document-download","href":"/api-reference/candidates/download-a-candidate-document"}]},{"group":"Tasks","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-task-list","href":"/api-reference/tasks/list-tasks"},{"title":"Create or change a task","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-task-save","href":"/api-reference/tasks/create-or-change-a-task"}]},{"group":"Document requests","pages":[{"title":"List document requests","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-document-request-list","href":"/api-reference/document-requests/list-document-requests"},{"title":"Ask a candidate for documents","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-document-request-create","href":"/api-reference/document-requests/ask-a-candidate-for-documents"},{"title":"Cancel a document request or mark it reviewed","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-document-request-update","href":"/api-reference/document-requests/cancel-a-document-request-or-mark-it-reviewed"}]},{"group":"Reasons","pages":[{"title":"List the company's reasons","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-reason-list","href":"/api-reference/reasons/list-the-companys-reasons"},{"title":"Get one of the company's reasons","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-reason-get","href":"/api-reference/reasons/get-one-of-the-companys-reasons"},{"title":"Create, change or archive a reason","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-reason-save","href":"/api-reference/reasons/create-change-or-archive-a-reason"}]},{"group":"Knowledge base","pages":[{"title":"Upload a knowledge base document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-document-upload","href":"/api-reference/knowledge-base/upload-a-knowledge-base-document"},{"title":"List knowledge base documents and their interview limits","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /knowledge-base-document-list","href":"/api-reference/knowledge-base/list-knowledge-base-documents-and-their-interview-limits"},{"title":"Change which interviews can use a document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-document-set-interviews","href":"/api-reference/knowledge-base/change-which-interviews-can-use-a-document"},{"title":"List knowledge base stores","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /knowledge-base-store-list","href":"/api-reference/knowledge-base/list-knowledge-base-stores"},{"title":"Create or change a knowledge base store","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-store-save","href":"/api-reference/knowledge-base/create-or-change-a-knowledge-base-store"}]},{"group":"Resume \u0026 Form verification","pages":[{"title":"Create or update a pre-screening position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /pre-screening-create","href":"/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position"},{"title":"Run pre-screening on a plaintext resume","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pre-screening-api-resume-text","href":"/api-reference/resume-\u0026-form-verification/run-pre-screening-on-a-plaintext-resume"},{"title":"Pre-screen a candidate from a binary resume upload","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pre-screening-api-resume-binary","href":"/api-reference/resume-\u0026-form-verification/pre-screen-a-candidate-from-a-binary-resume-upload"}]},{"group":"Admin","pages":[{"title":"Invite admin / merchant-team or coaching users","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /invite-users","href":"/api-reference/admin/invite-admin-merchant-team-or-coaching-users"},{"title":"List sub-merchants","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-sub-merchant-list","href":"/api-reference/admin/list-sub-merchants"},{"title":"List the company's users","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-user-list","href":"/api-reference/admin/list-the-companys-users"},{"title":"List avatar templates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-avatar-list","href":"/api-reference/admin/list-avatar-templates"},{"title":"Get merchant status","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-status","href":"/api-reference/admin/get-merchant-status"},{"title":"List platform languages","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /platform-languages-list","href":"/api-reference/admin/list-platform-languages"},{"title":"Get the portal configuration (branding, portals, brands, pages)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /portal-configuration-get","href":"/api-reference/admin/get-the-portal-configuration-branding-portals-brands-pages"},{"title":"Update the portal configuration (branding, portals, brands, pages)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-configuration-update","href":"/api-reference/admin/update-the-portal-configuration-branding-portals-brands-pages"},{"title":"Publish a brand stylesheet","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-css-publish","href":"/api-reference/admin/publish-a-brand-stylesheet"},{"title":"Get the component style guide","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /portal-component-styles","href":"/api-reference/admin/get-the-component-style-guide"},{"title":"Save a component style","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-component-styles","href":"/api-reference/admin/save-a-component-style"},{"title":"Generate component style alternatives","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-component-styles-generate","href":"/api-reference/admin/generate-component-style-alternatives"},{"title":"List the media library","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /media-list","href":"/api-reference/admin/list-the-media-library"},{"title":"Start uploading a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-upload-start","href":"/api-reference/admin/start-uploading-a-media-file"},{"title":"Finish uploading a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-upload-finish","href":"/api-reference/admin/finish-uploading-a-media-file"},{"title":"Describe a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-update","href":"/api-reference/admin/describe-a-media-file"},{"title":"Delete a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-delete","href":"/api-reference/admin/delete-a-media-file"},{"title":"List the media library folders","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /media-folders","href":"/api-reference/admin/list-the-media-library-folders"},{"title":"Create, rename or delete a media library folder","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-folders","href":"/api-reference/admin/create-rename-or-delete-a-media-library-folder"}]},{"group":"Feedback","pages":[{"title":"Submit a feature request","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-feature-request","href":"/api-reference/feedback/submit-a-feature-request"},{"title":"Report a technical issue","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-technical-issue","href":"/api-reference/feedback/report-a-technical-issue"}]}]},{"tab":"Webhooks","pages":[{"title":"Webhooks","href":"/api-reference/webhooks/interview-result-submitted"}]},{"tab":"Cookbooks","pages":[{"title":"Cookbooks","href":"/cookbooks"}]},{"tab":"Skills","pages":[{"title":"Skills","href":"/skills/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]}]},"basePath":"","title":"Get interview definition - JobMojito Developer / Agent","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","Page-DTNSD-0M.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}