{
"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"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
Positions
Change the settings of a position step
Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step’s type (meeting, certo, external_assessment, interview or pre_screening; another type’s object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position’s access list; hiring managers read only.
The step's updated_at as you read it (get_interview_definition with include=process, or an earlier answer of this call). When the step changed since, nothing is written and the answer is 409; read it again and retry. null or left out: not checked.
What changed (or would change in a dry run), as paths: name, advance, kombo.accept_stage_id, meeting.duration_minutes, external_assessment.due_days, scope_types, allow_human_interview, pre_screening.type, ...
{"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.4094","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":"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":"llms-txt-v2","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":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/positions/change-the-settings-of-a-position-step","slug":"/api-reference/positions/change-the-settings-of-a-position-step","pageMetadata":{"title":"Change the settings of a position step","description":"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step's type (meeting, certo, external_assessment, interview or pre_screening; another type's object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position's access list; hiring managers read only.","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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step’s type (meeting, certo, external_assessment, interview or pre_screening; another type’s object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position’s access list; hiring managers read only.\"\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":"Change the settings of a position step","description":"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step's type (meeting, certo, external_assessment, interview or pre_screening; another type's object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position's access list; hiring managers read only.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Positions"],"summary":"Change the settings of a position step","description":"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step's type (meeting, certo, external_assessment, interview or pre_screening; another type's object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position's access list; hiring managers read only.","security":["a2fa7114-7ea2-4bf6-b900-c465fda08a34"],"requestBody":"d6c95a3d-d45a-40a7-b785-b7d2c65f1a53","responses":{"200":"b98a6f91-78bc-47d7-a2af-74faf76d04d4","401":"05c7c40e-e1f7-48a3-8668-7ec811cc9646","403":"6d48ebf5-6ac4-489b-ae4d-86a57596ae98","404":"71a2c1d8-496e-4cca-91ce-dfc14bc70f8a","409":"e65103bc-ccf7-4ff9-96c3-0f0bbfd9d325","422":"088a916a-0182-4fbb-8442-2751e183007a","500":"3427c7da-e4d6-445b-a9d9-36eb9d34721a"},"method":"post","type":"path","servers":["454fcb62-7052-4847-a728-ecf5ade065a6"],"path":"/merchant-position-step-update","baseUrlOptions":["https://cool.jobmojito.com/functions/v1"],"title":"Change the settings of a position step","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"step_id":{"type":"string","format":"uuid","description":"The step (position_def_step.id, from get_interview_definition with include=process or set_position_process).","isRequired":true,"uniqueKey":"step_id","typeLabel":"string\u003cuuid>"},"name":{"oneOf":[{"type":"string","maxLength":300,"description":"New name of the step. null or empty removes the name (the type's default label is shown); left out keeps it.","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":300,"description":"New name of the step. null or empty removes the name (the type's default label is shown); left out keeps it.","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"expected_updated_at":{"oneOf":[{"type":"string","format":"date-time","description":"The step's updated_at as you read it (get_interview_definition with include=process, or an earlier answer of this call). When the step changed since, nothing is written and the answer is 409; read it again and retry. null or left out: not checked.","uniqueKey":"expected_updated_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"The step's updated_at as you read it (get_interview_definition with include=process, or an earlier answer of this call). When the step changed since, nothing is written and the answer is 409; read it again and retry. null or left out: not checked.","uniqueKey":"expected_updated_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"expected_updated_at","typeLabel":"string\u003cdate-time> | null"},"dry_run":{"type":"boolean","default":false,"description":"true: validate and answer what would change and whom it reaches, without writing anything.","uniqueKey":"dry_run","typeLabel":"boolean"},"advance":{"oneOf":[{"type":"string","enum":["auto","manual"],"description":"auto: a candidate who passes moves on by themselves; manual: a recruiter moves them on. null = auto.","uniqueKey":"advance.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["auto","manual"],"description":"auto: a candidate who passes moves on by themselves; manual: a recruiter moves them on. null = auto.","uniqueKey":"advance.oneOf.1","typeLabel":"null"}],"uniqueKey":"advance","typeLabel":"enum\u003cstring> | null"},"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":"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":"kombo.accept_stage_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"kombo.reject_reason_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"kombo.reject_reason_ai_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"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":"meeting.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.duration_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.location.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.conference_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.meeting_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.reschedule_cutoff_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.nudge_after_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"meeting.nudge_after_days","typeLabel":"integer | null"},"interviewer_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"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":"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":"meeting.interviewer_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"meeting.interviewer_profile_ids","typeLabel":"string\u003cuuid>[] | null"},"panel_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"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":"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":"meeting.panel_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.slot_interval_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.min_notice_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.horizon_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"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":"meeting.data_collection.oneOf.0.taxonomy_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.data_collection.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"meeting.email_variant.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"meeting","typeLabel":"object"},"certo":{"type":"object","properties":{"wait_for_identity":{"type":"boolean","description":"Wait until the candidate has verified their identity before the step completes.","uniqueKey":"certo.wait_for_identity","typeLabel":"boolean"},"include_contact":{"type":"boolean","description":"Ask for the contact details of referees.","uniqueKey":"certo.include_contact","typeLabel":"boolean"},"scope_types":{"oneOf":[{"type":"array","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"],"uniqueKey":"certo.scope_types.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"description":"What is verified; null = everything.","uniqueKey":"certo.scope_types.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"type":"null","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"]},"minItems":1,"description":"What is verified; null = everything.","uniqueKey":"certo.scope_types.oneOf.1","typeLabel":"null"}],"uniqueKey":"certo.scope_types","typeLabel":"enum\u003cstring>[] | null"}},"additionalProperties":false,"description":"Settings of a certo.bio verification step.","uniqueKey":"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":"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":"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":"external_assessment.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"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":"external_assessment.pass_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"external_assessment.pass_score","typeLabel":"number | null"}},"additionalProperties":false,"description":"Settings of an external assessment step (the external_assessment feature).","uniqueKey":"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":"interview.allow_human_interview","typeLabel":"boolean"}},"additionalProperties":false,"description":"Settings of an AI interview step.","uniqueKey":"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":"pre_screening.type","typeLabel":"enum\u003cstring>"},"form_fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"pre_screening.form_fields.items.[INDEX].id","typeLabel":"string"}},"required":["id"],"uniqueKey":"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":"pre_screening.form_fields","typeLabel":"object[]"},"assessment_rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"pre_screening.assessment_rules.items.[INDEX].id","typeLabel":"string"}},"required":["id"],"uniqueKey":"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":"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":"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":"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":"pre_screening.candidate_expectations.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"pre_screening.all_rules_fulfilled_auto_approve","typeLabel":"boolean"},"id":{"type":"string","description":"Read only (as job-interview-get answers it); ignored.","uniqueKey":"pre_screening.id","typeLabel":"string"},"status":{"type":"string","description":"Read only (as job-interview-get answers it); ignored.","uniqueKey":"pre_screening.status","typeLabel":"string"}},"additionalProperties":false,"description":"Pre-screening steps: the settings to change, as include=process returns them; that object can be sent back as it is.","uniqueKey":"pre_screening","typeLabel":"object"}},"required":["step_id"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"step_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","expected_updated_at":"2023-11-07T05:31:56Z","dry_run":false,"kombo":{"accept_stage_id":"\u003cstring>","reject_reason_id":"\u003cstring>","reject_reason_ai_id":"\u003cstring>"},"meeting":{"duration_minutes":722,"location":"\u003cstring>","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":{"taxonomy_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"},"email_variant":"\u003cstring>"},"certo":{"wait_for_identity":true,"include_contact":true,"scope_types":[]},"external_assessment":{"provider_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","instructions":"\u003cstring>","due_days":30,"pass_score":123},"interview":{"allow_human_interview":true},"pre_screening":{"form_fields":[{"id":"\u003cstring>"}],"assessment_rules":[{"id":"\u003cstring>"}],"position_country":"\u003cstring>","candidate_expectations":"\u003cstring>","all_rules_fulfilled_auto_approve":true,"id":"\u003cstring>","status":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"b98a6f91-78bc-47d7-a2af-74faf76d04d4":{"description":"The step after the change (or as it would be, in a dry run).","content":{"application/json":{"schema":{"type":"object","properties":{"step":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The step (position_def_step.id).","isRequired":true,"uniqueKey":"step.id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","enum":["pre-screening","interview","meeting","external_assessment","certo_verification"],"description":"Step type: pre-screening, interview (AI interview), meeting, external_assessment or certo_verification.","isRequired":true,"uniqueKey":"step.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"The name recruiters gave the step; null = the type's default label.","isRequired":true,"uniqueKey":"step.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name recruiters gave the step; null = the type's default label.","isRequired":true,"uniqueKey":"step.name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.name","typeLabel":"string | null"},"position_id":{"type":"string","format":"uuid","description":"The position (position_def_set.id).","isRequired":true,"uniqueKey":"step.position_id","typeLabel":"string\u003cuuid>"},"sequence_no":{"type":"number","description":"Place in the process, 1 = first.","isRequired":true,"uniqueKey":"step.sequence_no","typeLabel":"number"},"updated_at":{"type":"string","description":"Version of the step (when it last changed, else when it was made). Send it back as expected_updated_at to refuse a change made by someone else in the meantime.","isRequired":true,"uniqueKey":"step.updated_at","typeLabel":"string"},"advance":{"type":"string","enum":["auto","manual"],"description":"auto or manual (see the request field).","isRequired":true,"uniqueKey":"step.advance","typeLabel":"enum\u003cstring>"},"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":"step.interview_set_id","typeLabel":"string\u003cuuid>"},"interview_pre_screening_id":{"type":"string","format":"uuid","description":"Pre-screening steps: interview_def_pre_screening.id.","uniqueKey":"step.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":"step.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":"step.kombo.accept_stage_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.kombo.reject_reason_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.kombo.reject_reason_ai_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.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":"step.meeting.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.duration_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.location.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.conference_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.meeting_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.reschedule_cutoff_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.nudge_after_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.meeting.nudge_after_days","typeLabel":"integer | null"},"interviewer_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"step.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":"step.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":"step.meeting.interviewer_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.meeting.interviewer_profile_ids","typeLabel":"string\u003cuuid>[] | null"},"panel_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"step.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":"step.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":"step.meeting.panel_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.slot_interval_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.min_notice_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.horizon_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.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":"step.meeting.data_collection.oneOf.0.taxonomy_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.data_collection.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.meeting.email_variant.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.meeting","typeLabel":"object"},"certo":{"type":"object","properties":{"wait_for_identity":{"type":"boolean","description":"See the request field.","isRequired":true,"uniqueKey":"step.certo.wait_for_identity","typeLabel":"boolean"},"include_contact":{"type":"boolean","description":"See the request field.","isRequired":true,"uniqueKey":"step.certo.include_contact","typeLabel":"boolean"},"scope_types":{"oneOf":[{"type":"array","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"],"uniqueKey":"step.certo.scope_types.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"null = everything.","isRequired":true,"uniqueKey":"step.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":"step.certo.scope_types.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"step.certo.scope_types","typeLabel":"enum\u003cstring>[] | null"}},"required":["wait_for_identity","include_contact","scope_types"],"description":"certo_verification steps.","uniqueKey":"step.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":"step.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":"step.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":"step.external_assessment.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.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":"step.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":"step.external_assessment.pass_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.external_assessment.pass_score","typeLabel":"number | null"}},"additionalProperties":false,"description":"Settings of an external assessment step (the external_assessment feature).","uniqueKey":"step.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":"step.interview.allow_human_interview","typeLabel":"boolean"}},"additionalProperties":false,"description":"Settings of an AI interview step.","uniqueKey":"step.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":"step.pre_screening.type","typeLabel":"enum\u003cstring>"},"form_fields":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"step.pre_screening.form_fields.items.[INDEX].id","typeLabel":"string"}},"required":["id"],"uniqueKey":"step.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":"step.pre_screening.form_fields","typeLabel":"object[]"},"assessment_rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"step.pre_screening.assessment_rules.items.[INDEX].id","typeLabel":"string"}},"required":["id"],"uniqueKey":"step.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":"step.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":"step.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":"step.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":"step.pre_screening.candidate_expectations.oneOf.1","typeLabel":"null"}],"uniqueKey":"step.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":"step.pre_screening.all_rules_fulfilled_auto_approve","typeLabel":"boolean"}},"additionalProperties":false,"description":"Settings of the pre-screening step.","uniqueKey":"step.pre_screening","typeLabel":"object"}},"required":["id","type","name","position_id","sequence_no","updated_at","advance"],"description":"A step of a position's process with its settings; only the settings object of the step's own type is present.","isRequired":true,"uniqueKey":"step","typeLabel":"object"},"changed_keys":{"type":"array","items":{"type":"string","uniqueKey":"changed_keys.items.[INDEX]","typeLabel":"string"},"description":"What changed (or would change in a dry run), as paths: name, advance, kombo.accept_stage_id, meeting.duration_minutes, external_assessment.due_days, scope_types, allow_human_interview, pre_screening.type, ...","isRequired":true,"uniqueKey":"changed_keys","typeLabel":"string[]"},"candidates_on_step":{"type":"integer","description":"Applications whose current step is this step (not withdrawn, hired or declined). Settings are read live: a change reaches them at once.","isRequired":true,"uniqueKey":"candidates_on_step","typeLabel":"integer"},"booked_meetings":{"type":"integer","description":"Upcoming booked meetings on this step's slots.","isRequired":true,"uniqueKey":"booked_meetings","typeLabel":"integer"},"warnings":{"type":"array","items":{"type":"string","uniqueKey":"warnings.items.[INDEX]","typeLabel":"string"},"description":"Things to tell the user before or after the change (who it reaches, settings that have no effect yet).","isRequired":true,"uniqueKey":"warnings","typeLabel":"string[]"},"dry_run":{"type":"boolean","description":"true when nothing was written.","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"}},"required":["step","changed_keys","candidates_on_step","booked_meetings","warnings","dry_run"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"step":{"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","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}},"changed_keys":["\u003cstring>"],"candidates_on_step":123,"booked_meetings":123,"warnings":["\u003cstring>"],"dry_run":true}}},"exampleType":"generated"}},"exampleType":"generated"},"05c7c40e-e1f7-48a3-8668-7ec811cc9646":{"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"},"6d48ebf5-6ac4-489b-ae4d-86a57596ae98":{"description":"Not company staff, a hiring manager (read only), another company, or a merchant switch is off (meeting_panels for a panel, meeting_email_variants for an e-mail version; the message names it).","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"},"71a2c1d8-496e-4cca-91ce-dfc14bc70f8a":{"description":"No such step, or its position is not visible to you.","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"},"e65103bc-ccf7-4ff9-96c3-0f0bbfd9d325":{"description":"expected_updated_at is not the step's current version: someone changed it since you read it.","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"},"088a916a-0182-4fbb-8442-2751e183007a":{"description":"Validation error naming the field or setting: a settings object of another step type, an unknown key, a value out of range, a provider, form or user not of this company, or nothing to change.","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"},"3427c7da-e4d6-445b-a9d9-36eb9d34721a":{"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":{"a2fa7114-7ea2-4bf6-b900-c465fda08a34":{"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":"Change the settings of a position step - JobMojito Developer / Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T15:00:44.208Z","originalFileLocation":"api-reference/positions/change-the-settings-of-a-position-step.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=\"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step\u0026#x27;s type (meeting, certo, external_assessment, interview or pre_screening; another type\u0026#x27;s object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position\u0026#x27;s access list; hiring managers read only.\">\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=\"Change the settings of a position step - JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step\u0026#x27;s type (meeting, certo, external_assessment, interview or pre_screening; another type\u0026#x27;s object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position\u0026#x27;s access list; hiring managers read only.\">\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/positions/change-the-settings-of-a-position-step\">\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=Positions\u0026amp;title=Change+the+settings+of+a+position+step\u0026amp;description=Changes+the+name+and+settings+of+one+step+of+a+position%3A+advance+and+kombo+on+every+step%2C+plus+the+one+settings+object+of+the+step%27s+type+%28meeting%2C+certo%2C+exter\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=a6fdf692bd07141df00240118b76e6e05900a0c46b3f6f6e06b64156562ac7bb\">\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=\"Change the settings of a position step - JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step\u0026#x27;s type (meeting, certo, external_assessment, interview or pre_screening; another type\u0026#x27;s object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position\u0026#x27;s access list; hiring managers read only.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jobmojito.mintlify.site/_mintlify/api/og/v2?division=Positions\u0026amp;title=Change+the+settings+of+a+position+step\u0026amp;description=Changes+the+name+and+settings+of+one+step+of+a+position%3A+advance+and+kombo+on+every+step%2C+plus+the+one+settings+object+of+the+step%27s+type+%28meeting%2C+certo%2C+exter\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=a6fdf692bd07141df00240118b76e6e05900a0c46b3f6f6e06b64156562ac7bb\">\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/positions/change-the-settings-of-a-position-step\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/positions/change-the-settings-of-a-position-step.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/positions/change-the-settings-of-a-position-step#webpage\",\"url\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step\",\"name\":\"Change the settings of a position step\",\"description\":\"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step's type (meeting, certo, external_assessment, interview or pre_screening; another type's object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position's access list; hiring managers read only.\",\"dateModified\":\"2026-11-09T15:00:44.208Z\",\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Positions\",\"item\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Change the settings of a position step\",\"item\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step#apireference\",\"headline\":\"Change the settings of a position step\",\"name\":\"Change the settings of a position step\",\"description\":\"Changes the name and settings of one step of a position: advance and kombo on every step, plus the one settings object of the step's type (meeting, certo, external_assessment, interview or pre_screening; another type's object is a 422). Only the keys sent change: nested keys are merged one by one, null removes a key. Works on published positions too (the structure is changed with set_position_process, drafts only). Settings are read live, so candidates already on the step get the new settings at once; nobody is e-mailed by this call. Use dry_run to see changed_keys, candidates_on_step, booked_meetings and warnings first, and expected_updated_at to refuse a stale change. Owners and recruiters on the position's access list; hiring managers read only.\",\"url\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step\",\"mainEntityOfPage\":{\"@id\":\"https://developer.jobmojito.com/api-reference/positions/change-the-settings-of-a-position-step#webpage\"},\"dateModified\":\"2026-11-09T15:00:44.208Z\",\"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\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","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`)","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","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","description":"Adds, removes, renames and reorders the steps of a position (its process), in one change. Draft positions only (409 otherwise; a published position keeps its structure, and its step settings change with update_position_step). At most 20 steps, at most one pre-screening and it comes first. A step candidates already reached cannot be removed (409), nor a meeting step that still has slots (409: delete them with manage_meeting_slot). A new AI interview step copies the settings of the first AI interview of the position (not its questions). Sends no e-mail. Use dry_run to see the resulting process and the diff first. Owners and recruiters on the position's access list; hiring managers read only.","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","description":"One bookable slot of a meeting step, as the admin calendar writes it. create needs step_id and start_at; update and delete need slot_id; fields left out keep their value. A slot is offered in both meeting modes: in availability mode candidates see it next to the times taken from the interviewers' calendars. E-mails: delete cancels every booking on the slot and e-mails each booked candidate a cancellation (and the interviewers); an update of start_at, duration_minutes, location or meeting_url e-mails each booked candidate the booking again with the new details and moves the calendar events; other changes and create send nothing. Run dry_run first: it lists exactly the candidates who would be e-mailed (affected_bookings). Owners and recruiters on the position's access list; hiring managers read only.","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":"Change the settings of a position step - JobMojito Developer / Agent","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}