{
"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
Set the steps of a draft position
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.
The whole process in order (replaces the current one): existing steps by id, new ones without. An existing step left out is removed, unless candidates already reached it (409).
{"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/set-the-steps-of-a-draft-position","slug":"/api-reference/positions/set-the-steps-of-a-draft-position","pageMetadata":{"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","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: \"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.\"\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":"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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Positions"],"summary":"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.","security":["de0102d2-21e1-4bce-9aaa-3f995056f7f6"],"requestBody":"bd04c811-2201-4d08-8aee-b5a6638f8aa0","responses":{"200":"176c9ff7-a820-433f-9815-c36cde17e6fe","401":"ee66f324-1e2f-4283-9891-1e47e4dfb01f","403":"66c9edf2-2d01-4460-bcdc-93d7c51bb45c","404":"9875b352-c0e8-43ee-b8fc-665ed143e280","409":"f39bee02-d0d6-4b8f-acac-2a187261b335","422":"f5b774b2-5c2f-42da-bcba-ca6340a2c036","500":"6596271c-e91b-4195-82ba-818c0c81177a"},"method":"post","type":"path","servers":["454fcb62-7052-4847-a728-ecf5ade065a6"],"path":"/merchant-position-process-save","baseUrlOptions":["https://cool.jobmojito.com/functions/v1"],"title":"Set the steps of a draft position","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"position_id":{"type":"string","format":"uuid","description":"The position (position_def_set.id). It must be a draft.","isRequired":true,"uniqueKey":"position_id","typeLabel":"string\u003cuuid>"},"steps":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["pre-screening","interview","meeting","external_assessment","certo_verification"],"description":"pre-screening (at most one, first), interview (AI interview), meeting, external_assessment (the external_assessment feature) or certo_verification (company connected to certo.bio). An existing step keeps its type.","isRequired":true,"uniqueKey":"steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"id":{"type":"string","format":"uuid","description":"An existing step of this position (position_def_step.id) to keep, in this place. Leave out for a new step.","uniqueKey":"steps.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"name":{"oneOf":[{"type":"string","maxLength":300,"description":"Name of the step. null or empty removes it (the type's default label is shown); left out keeps the current name.","uniqueKey":"steps.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":300,"description":"Name of the step. null or empty removes it (the type's default label is shown); left out keeps the current name.","uniqueKey":"steps.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].name","typeLabel":"string | null"},"interview_template_id":{"type":"string","format":"uuid","description":"New AI interview steps: the avatar (interview_templates.id, from list_avatars). Default: the avatar of the first AI interview of the position. Its settings are copied from that interview; add questions with update_interview.","uniqueKey":"steps.items.[INDEX].interview_template_id","typeLabel":"string\u003cuuid>"},"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":"steps.items.[INDEX].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":"steps.items.[INDEX].advance.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].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":"steps.items.[INDEX].kombo.accept_stage_id.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"ATS stage (Kombo id) a candidate moves to when accepted on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].kombo.accept_stage_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].kombo.accept_stage_id","typeLabel":"string | null"},"reject_reason_id":{"oneOf":[{"type":"string","maxLength":200,"description":"ATS rejection reason (Kombo id) used when a recruiter rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].kombo.reject_reason_id.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"ATS rejection reason (Kombo id) used when a recruiter rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].kombo.reject_reason_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].kombo.reject_reason_id","typeLabel":"string | null"},"reject_reason_ai_id":{"oneOf":[{"type":"string","maxLength":200,"description":"ATS rejection reason (Kombo id) used when the AI rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].kombo.reject_reason_ai_id.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":200,"description":"ATS rejection reason (Kombo id) used when the AI rejects on this step. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].kombo.reject_reason_ai_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].kombo.reject_reason_ai_id","typeLabel":"string | null"}},"additionalProperties":false,"description":"Mapping of this step to the connected ATS (Kombo). Each key is merged separately.","uniqueKey":"steps.items.[INDEX].kombo","typeLabel":"object"},"meeting":{"type":"object","properties":{"mode":{"oneOf":[{"type":"string","enum":["slots","availability"],"description":"How candidates book: slots (hand-made slots, the default; add them with manage_meeting_slot) or availability (free times of the interviewers). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["slots","availability"],"description":"How candidates book: slots (hand-made slots, the default; add them with manage_meeting_slot) or availability (free times of the interviewers). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.mode","typeLabel":"enum\u003cstring> | null"},"duration_minutes":{"oneOf":[{"type":"integer","minimum":5,"maximum":1440,"description":"Meeting length in minutes, 5 to 1440 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.duration_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":5,"maximum":1440,"description":"Meeting length in minutes, 5 to 1440 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.duration_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.duration_minutes","typeLabel":"integer | null"},"location":{"oneOf":[{"type":"string","maxLength":500,"description":"Address or room shown to the candidate when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.location.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":500,"description":"Address or room shown to the candidate when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.location.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.location","typeLabel":"string | null"},"conference_provider":{"oneOf":[{"type":"string","enum":["in_person","fixed","zoom","teams","meet"],"description":"The meeting link: in_person (no link), fixed (meeting_url), zoom / teams / meet (made at booking with the interviewer's own calendar account, meeting_url is the fallback). Absent: fixed when meeting_url is set, else in_person. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.conference_provider.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["in_person","fixed","zoom","teams","meet"],"description":"The meeting link: in_person (no link), fixed (meeting_url), zoom / teams / meet (made at booking with the interviewer's own calendar account, meeting_url is the fallback). Absent: fixed when meeting_url is set, else in_person. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.conference_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.conference_provider","typeLabel":"enum\u003cstring> | null"},"meeting_url":{"oneOf":[{"type":"string","maxLength":2000,"pattern":"^https?:\\/\\/\\S+$","description":"Video link (http or https) used when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.meeting_url.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":2000,"pattern":"^https?:\\/\\/\\S+$","description":"Video link (http or https) used when a slot has none. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.meeting_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.meeting_url","typeLabel":"string | null"},"instructions":{"oneOf":[{"type":"string","maxLength":4000,"description":"Instructions shown to the candidate. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":4000,"description":"Instructions shown to the candidate. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.instructions","typeLabel":"string | null"},"reschedule_cutoff_hours":{"oneOf":[{"type":"integer","minimum":0,"maximum":8760,"description":"Hours before the meeting after which the candidate can no longer reschedule or cancel (default 24). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.reschedule_cutoff_hours.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":8760,"description":"Hours before the meeting after which the candidate can no longer reschedule or cancel (default 24). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.reschedule_cutoff_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.reschedule_cutoff_hours","typeLabel":"integer | null"},"nudge_after_days":{"oneOf":[{"type":"integer","minimum":0,"maximum":365,"description":"Days after which a candidate who has not booked gets a reminder; 0 = never (default 3). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.nudge_after_days.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":365,"description":"Days after which a candidate who has not booked gets a reminder; 0 = never (default 3). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.nudge_after_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.nudge_after_days","typeLabel":"integer | null"},"interviewer_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"steps.items.[INDEX].meeting.interviewer_profile_ids.oneOf.0.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":50,"description":"Availability mode: the interviewers whose free times are offered (profile.id of users of the company); empty = the position's recruiter. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.interviewer_profile_ids.oneOf.0","typeLabel":"string\u003cuuid>[]"},{"type":"null","items":{"type":"string","format":"uuid"},"maxItems":50,"description":"Availability mode: the interviewers whose free times are offered (profile.id of users of the company); empty = the position's recruiter. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.interviewer_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.interviewer_profile_ids","typeLabel":"string\u003cuuid>[] | null"},"panel_profile_ids":{"oneOf":[{"type":"array","items":{"type":"string","format":"uuid","uniqueKey":"steps.items.[INDEX].meeting.panel_profile_ids.oneOf.0.items.[INDEX]","typeLabel":"string\u003cuuid>"},"minItems":2,"maxItems":8,"description":"Availability mode, company feature meeting_panels: a panel of 2 to 8 users who all attend (profile.id); the first leads the meeting and cannot be a read-only user. Candidates are offered only times when everyone is free. null = one interviewer. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.panel_profile_ids.oneOf.0","typeLabel":"string\u003cuuid>[]"},{"type":"null","items":{"type":"string","format":"uuid"},"minItems":2,"maxItems":8,"description":"Availability mode, company feature meeting_panels: a panel of 2 to 8 users who all attend (profile.id); the first leads the meeting and cannot be a read-only user. Candidates are offered only times when everyone is free. null = one interviewer. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.panel_profile_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.panel_profile_ids","typeLabel":"string\u003cuuid>[] | null"},"slot_interval_minutes":{"oneOf":[{"type":"integer","minimum":5,"maximum":240,"description":"Availability mode: start times every N minutes, 5 to 240 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.slot_interval_minutes.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":5,"maximum":240,"description":"Availability mode: start times every N minutes, 5 to 240 (default 30). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.slot_interval_minutes.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.slot_interval_minutes","typeLabel":"integer | null"},"min_notice_hours":{"oneOf":[{"type":"integer","minimum":0,"maximum":720,"description":"Availability mode: earliest booking, hours from now, 0 to 720 (default 12). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.min_notice_hours.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":720,"description":"Availability mode: earliest booking, hours from now, 0 to 720 (default 12). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.min_notice_hours.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.min_notice_hours","typeLabel":"integer | null"},"horizon_days":{"oneOf":[{"type":"integer","minimum":1,"maximum":365,"description":"Availability mode: latest booking, days from now, 1 to 365 (default 21). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.horizon_days.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":1,"maximum":365,"description":"Availability mode: latest booking, days from now, 1 to 365 (default 21). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.horizon_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.horizon_days","typeLabel":"integer | null"},"data_collection":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["none","form","text"],"description":"none, form (a meeting form, taxonomy_id) or text (free notes).","isRequired":true,"uniqueKey":"steps.items.[INDEX].meeting.data_collection.oneOf.0.mode","typeLabel":"enum\u003cstring>"},"taxonomy_id":{"oneOf":[{"type":"string","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form.","uniqueKey":"steps.items.[INDEX].meeting.data_collection.oneOf.0.taxonomy_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form.","uniqueKey":"steps.items.[INDEX].meeting.data_collection.oneOf.0.taxonomy_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.data_collection.oneOf.0.taxonomy_id","typeLabel":"string\u003cuuid> | null"}},"required":["mode"],"additionalProperties":false,"description":"What the interviewer records after the meeting. Replaced as a whole. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.data_collection.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"mode":{"type":"string","enum":["none","form","text"],"description":"none, form (a meeting form, taxonomy_id) or text (free notes)."},"taxonomy_id":{"oneOf":[{"type":"string","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form."},{"type":"null","format":"uuid","description":"A meeting form of this company, made in the admin (the current one is in job-interview-get include=process); required for mode form."}]}},"required":["mode"],"additionalProperties":false,"description":"What the interviewer records after the meeting. Replaced as a whole. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.data_collection.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.data_collection","typeLabel":"object | null"},"email_variant":{"oneOf":[{"type":"string","maxLength":100,"description":"Needs the meeting_email_variants feature: the name of the e-mail version used for this step's meeting e-mails. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.email_variant.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":100,"description":"Needs the meeting_email_variants feature: the name of the e-mail version used for this step's meeting e-mails. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].meeting.email_variant.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].meeting.email_variant","typeLabel":"string | null"}},"additionalProperties":false,"description":"Settings of a meeting step. Each key is merged separately; keys left out keep their value.","uniqueKey":"steps.items.[INDEX].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":"steps.items.[INDEX].certo.wait_for_identity","typeLabel":"boolean"},"include_contact":{"type":"boolean","description":"Ask for the contact details of referees.","uniqueKey":"steps.items.[INDEX].certo.include_contact","typeLabel":"boolean"},"scope_types":{"oneOf":[{"type":"array","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"],"uniqueKey":"steps.items.[INDEX].certo.scope_types.oneOf.0.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"description":"What is verified; null = everything.","uniqueKey":"steps.items.[INDEX].certo.scope_types.oneOf.0","typeLabel":"enum\u003cstring>[]"},{"type":"null","items":{"type":"string","enum":["employment","education","certification","role","language","right_to_work"]},"minItems":1,"description":"What is verified; null = everything.","uniqueKey":"steps.items.[INDEX].certo.scope_types.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].certo.scope_types","typeLabel":"enum\u003cstring>[] | null"}},"additionalProperties":false,"description":"Settings of a certo.bio verification step.","uniqueKey":"steps.items.[INDEX].certo","typeLabel":"object"},"external_assessment":{"type":"object","properties":{"provider_id":{"type":"string","format":"uuid","description":"An active assessment provider of this company, set up in the admin (a step's current one is in job-interview-get include=process). Required on a new step.","uniqueKey":"steps.items.[INDEX].external_assessment.provider_id","typeLabel":"string\u003cuuid>"},"instructions":{"oneOf":[{"type":"string","maxLength":3000,"description":"Shown to the candidate (falls back to the provider's instructions). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].external_assessment.instructions.oneOf.0","typeLabel":"string"},{"type":"null","maxLength":3000,"description":"Shown to the candidate (falls back to the provider's instructions). null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].external_assessment.instructions.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].external_assessment.instructions","typeLabel":"string | null"},"due_days":{"type":"integer","minimum":1,"maximum":60,"description":"Days the candidate has to finish, 1 to 60 (default 7).","uniqueKey":"steps.items.[INDEX].external_assessment.due_days","typeLabel":"integer"},"pass_score":{"oneOf":[{"type":"number","description":"Optional pass mark: a result without a pass flag passes when its score is at least this. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].external_assessment.pass_score.oneOf.0","typeLabel":"number"},{"type":"null","description":"Optional pass mark: a result without a pass flag passes when its score is at least this. null removes the setting (its default applies again); left out keeps it.","uniqueKey":"steps.items.[INDEX].external_assessment.pass_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"steps.items.[INDEX].external_assessment.pass_score","typeLabel":"number | null"}},"additionalProperties":false,"description":"Settings of an external assessment step (the external_assessment feature).","uniqueKey":"steps.items.[INDEX].external_assessment","typeLabel":"object"},"interview":{"type":"object","properties":{"allow_human_interview":{"type":"boolean","description":"Let candidates ask for an interview with a person instead of the AI. Question content is changed with update_interview, on the step's interview_set_id.","uniqueKey":"steps.items.[INDEX].interview.allow_human_interview","typeLabel":"boolean"}},"additionalProperties":false,"description":"Settings of an AI interview step.","uniqueKey":"steps.items.[INDEX].interview","typeLabel":"object"}},"required":["type"],"additionalProperties":false,"description":"One step of the new process. Settings (advance, kombo and the object of the step's type) are for NEW steps only; change those of an existing step with update_position_step.","uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":20,"description":"The whole process in order (replaces the current one): existing steps by id, new ones without. An existing step left out is removed, unless candidates already reached it (409).","isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"dry_run":{"type":"boolean","default":false,"description":"true: run the change in a transaction that is rolled back and answer the result; nothing is written.","uniqueKey":"dry_run","typeLabel":"boolean"}},"required":["position_id","steps"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"position_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","steps":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name":"\u003cstring>","interview_template_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","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}}],"dry_run":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"176c9ff7-a820-433f-9815-c36cde17e6fe":{"description":"The process after the change (or as it would be, in a dry run) and what changed.","content":{"application/json":{"schema":{"type":"object","properties":{"position_id":{"type":"string","format":"uuid","description":"The position (position_def_set.id).","isRequired":true,"uniqueKey":"position_id","typeLabel":"string\u003cuuid>"},"dry_run":{"type":"boolean","description":"true when nothing was written.","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","format":"uuid","description":"The step (position_def_step.id); null for a new step in a dry run.","isRequired":true,"uniqueKey":"steps.items.[INDEX].id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"The step (position_def_step.id); null for a new step in a dry run.","isRequired":true,"uniqueKey":"steps.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].id","typeLabel":"string\u003cuuid> | null"},"type":{"type":"string","enum":["pre-screening","interview","meeting","external_assessment","certo_verification"],"description":"Step type.","isRequired":true,"uniqueKey":"steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"Step name; null = the default label.","isRequired":true,"uniqueKey":"steps.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Step name; null = the default label.","isRequired":true,"uniqueKey":"steps.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].name","typeLabel":"string | null"},"sequence_no":{"type":"number","description":"Place in the process, 1 = first.","isRequired":true,"uniqueKey":"steps.items.[INDEX].sequence_no","typeLabel":"number"},"is_new":{"type":"boolean","description":"true for a step this call adds.","isRequired":true,"uniqueKey":"steps.items.[INDEX].is_new","typeLabel":"boolean"},"interview_set_id":{"oneOf":[{"type":"string","format":"uuid","description":"AI interview steps: interview_def_set.id (null for a new one in a dry run).","isRequired":true,"uniqueKey":"steps.items.[INDEX].interview_set_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"AI interview steps: interview_def_set.id (null for a new one in a dry run).","isRequired":true,"uniqueKey":"steps.items.[INDEX].interview_set_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].interview_set_id","typeLabel":"string\u003cuuid> | null"},"interview_pre_screening_id":{"oneOf":[{"type":"string","format":"uuid","description":"Pre-screening step: interview_def_pre_screening.id (null for a new one in a dry run).","isRequired":true,"uniqueKey":"steps.items.[INDEX].interview_pre_screening_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Pre-screening step: interview_def_pre_screening.id (null for a new one in a dry run).","isRequired":true,"uniqueKey":"steps.items.[INDEX].interview_pre_screening_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"steps.items.[INDEX].interview_pre_screening_id","typeLabel":"string\u003cuuid> | null"}},"required":["id","type","name","sequence_no","is_new","interview_set_id","interview_pre_screening_id"],"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"description":"The process after the change, in order.","isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"added":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["pre-screening","interview","meeting","external_assessment","certo_verification"],"description":"Step type.","isRequired":true,"uniqueKey":"added.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"Step name.","isRequired":true,"uniqueKey":"added.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Step name.","isRequired":true,"uniqueKey":"added.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"added.items.[INDEX].name","typeLabel":"string | null"},"sequence_no":{"type":"number","description":"Its place.","isRequired":true,"uniqueKey":"added.items.[INDEX].sequence_no","typeLabel":"number"}},"required":["type","name","sequence_no"],"uniqueKey":"added.items.[INDEX]","typeLabel":"object"},"description":"Steps added.","isRequired":true,"uniqueKey":"added","typeLabel":"object[]"},"removed":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The removed step (position_def_step.id).","isRequired":true,"uniqueKey":"removed.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","enum":["pre-screening","interview","meeting","external_assessment","certo_verification"],"description":"Step type.","isRequired":true,"uniqueKey":"removed.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"Step name.","isRequired":true,"uniqueKey":"removed.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Step name.","isRequired":true,"uniqueKey":"removed.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"removed.items.[INDEX].name","typeLabel":"string | null"}},"required":["id","type","name"],"uniqueKey":"removed.items.[INDEX]","typeLabel":"object"},"description":"Steps removed (with their AI interview or pre-screening settings).","isRequired":true,"uniqueKey":"removed","typeLabel":"object[]"},"moved":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The step (position_def_step.id).","isRequired":true,"uniqueKey":"moved.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"from":{"type":"number","description":"Old place.","isRequired":true,"uniqueKey":"moved.items.[INDEX].from","typeLabel":"number"},"to":{"type":"number","description":"New place.","isRequired":true,"uniqueKey":"moved.items.[INDEX].to","typeLabel":"number"}},"required":["id","from","to"],"uniqueKey":"moved.items.[INDEX]","typeLabel":"object"},"description":"Kept steps whose place changed.","isRequired":true,"uniqueKey":"moved","typeLabel":"object[]"},"changed":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The step (position_def_step.id).","isRequired":true,"uniqueKey":"changed.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"name_changed":{"type":"boolean","description":"The name changed.","isRequired":true,"uniqueKey":"changed.items.[INDEX].name_changed","typeLabel":"boolean"},"settings_changed":{"type":"boolean","description":"The settings changed.","isRequired":true,"uniqueKey":"changed.items.[INDEX].settings_changed","typeLabel":"boolean"}},"required":["id","name_changed","settings_changed"],"uniqueKey":"changed.items.[INDEX]","typeLabel":"object"},"description":"Kept steps whose name or settings changed.","isRequired":true,"uniqueKey":"changed","typeLabel":"object[]"}},"required":["position_id","dry_run","steps","added","removed","moved","changed"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"position_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","dry_run":true,"steps":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","type":"pre-screening","name":"\u003cstring>","sequence_no":123,"is_new":true,"interview_set_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","interview_pre_screening_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}],"added":[{"type":"pre-screening","name":"\u003cstring>","sequence_no":123}],"removed":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","type":"pre-screening","name":"\u003cstring>"}],"moved":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","from":123,"to":123}],"changed":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","name_changed":true,"settings_changed":true}]}}},"exampleType":"generated"}},"exampleType":"generated"},"ee66f324-1e2f-4283-9891-1e47e4dfb01f":{"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"},"66c9edf2-2d01-4460-bcdc-93d7c51bb45c":{"description":"Not company staff, a hiring manager (read only), another company, or the external_assessment feature is off for such a step.","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"},"9875b352-c0e8-43ee-b8fc-665ed143e280":{"description":"No such position, or it 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"},"f39bee02-d0d6-4b8f-acac-2a187261b335":{"description":"The position is not a draft, a removed step was already reached by candidates, or a removed meeting step still has slots.","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"},"f5b774b2-5c2f-42da-bcba-ca6340a2c036":{"description":"Validation error: an unknown or repeated step id, a changed type, a misplaced or second pre-screening, settings on an existing step or of another type, invalid settings, no avatar for a new AI interview.","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"},"6596271c-e91b-4195-82ba-818c0c81177a":{"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":{"de0102d2-21e1-4bce-9aaa-3f995056f7f6":{"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":"Set the steps of a draft position - JobMojito Developer / Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T15:00:44.198Z","originalFileLocation":"api-reference/positions/set-the-steps-of-a-draft-position.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=\"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\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=\"Set the steps of a draft position - JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"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\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/set-the-steps-of-a-draft-position\">\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=Set+the+steps+of+a+draft+position\u0026amp;description=Adds%2C+removes%2C+renames+and+reorders+the+steps+of+a+position+%28its+process%29%2C+in+one+change.+Draft+positions+only+%28409+otherwise%3B+a+published+position+keeps+its+st\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=5dd589cb062eb5e4d458de1cc5ffcf28023c361942b7608751223de6b1b9b540\">\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=\"Set the steps of a draft position - JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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\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=Set+the+steps+of+a+draft+position\u0026amp;description=Adds%2C+removes%2C+renames+and+reorders+the+steps+of+a+position+%28its+process%29%2C+in+one+change.+Draft+positions+only+%28409+otherwise%3B+a+published+position+keeps+its+st\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=5dd589cb062eb5e4d458de1cc5ffcf28023c361942b7608751223de6b1b9b540\">\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/set-the-steps-of-a-draft-position\">\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/set-the-steps-of-a-draft-position.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/set-the-steps-of-a-draft-position#webpage\",\"url\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position\",\"name\":\"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.\",\"dateModified\":\"2026-11-09T15:00:44.198Z\",\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"JobMojito Developer / Agent\",\"item\":\"https://developer.jobmojito.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set the steps of a draft position\",\"item\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position#apireference\",\"headline\":\"Set the steps of a draft position\",\"name\":\"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.\",\"url\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position\",\"mainEntityOfPage\":{\"@id\":\"https://developer.jobmojito.com/api-reference/positions/set-the-steps-of-a-draft-position#webpage\"},\"dateModified\":\"2026-11-09T15:00:44.198Z\",\"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","description":"Paginated list of a merchant's interview definitions and multi-stage positions (the admin-portal interview list), scoped to your token's merchant (or a merchant_id override). Capped at 1000 records per page. Each item also carries its job category, tags and owning recruiter, and a position its vacancy lifecycle and step count. Filter by lifecycle, recruiter_profile_id or interview_category. Row security applies: confidential positions you are not on are not listed.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-interview-list","href":"/api-reference/interviews/list-interview-definitions"}]},{"group":"Positions","pages":[{"title":"Set the steps of a draft position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-process-save","href":"/api-reference/positions/set-the-steps-of-a-draft-position"},{"title":"Change the settings of a position step","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"},{"title":"Create, change or delete a meeting slot","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-meeting-slot-manage","href":"/api-reference/positions/create-change-or-delete-a-meeting-slot"},{"title":"Copy a position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-duplicate","href":"/api-reference/positions/copy-a-position"},{"title":"Copy an interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-interview-duplicate","href":"/api-reference/positions/copy-an-interview"}]},{"group":"Coaching catalogue","pages":[{"title":"Create a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /catalogue-tag-create","href":"/api-reference/coaching-catalogue/create-a-coaching-catalogue-directory"},{"title":"Update a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /catalogue-tag-update","href":"/api-reference/coaching-catalogue/update-a-coaching-catalogue-directory"},{"title":"Get a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /catalogue-tag-get","href":"/api-reference/coaching-catalogue/get-a-coaching-catalogue-directory"},{"title":"List coaching catalogue directories","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /catalogue-tag-list","href":"/api-reference/coaching-catalogue/list-coaching-catalogue-directories"}]},{"group":"Results","pages":[{"title":"Get interview result details with transcript","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-details","href":"/api-reference/results/get-interview-result-details-with-transcript"},{"title":"Generate an interview report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pdf","href":"/api-reference/results/generate-an-interview-report"},{"title":"Request another interview attempt","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-result-request-another-attempt","href":"/api-reference/results/request-another-interview-attempt"},{"title":"Record an external assessment result","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /assessment-result-set","href":"/api-reference/results/record-an-external-assessment-result"},{"title":"List interview results","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-result-list","href":"/api-reference/results/list-interview-results"},{"title":"Get daily event analytics","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-analytics","href":"/api-reference/results/get-daily-event-analytics"},{"title":"Get merchant credit usage","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-analytics-credits-used","href":"/api-reference/results/get-merchant-credit-usage"}]},{"group":"Reports","pages":[{"title":"List report datasets, fields and measures","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-catalog","href":"/api-reference/reports/list-report-datasets-fields-and-measures"},{"title":"List custom reports","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-list","href":"/api-reference/reports/list-custom-reports"},{"title":"Get a custom report definition","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-get","href":"/api-reference/reports/get-a-custom-report-definition"},{"title":"Run a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-run","href":"/api-reference/reports/run-a-custom-report"},{"title":"Check and run an unsaved report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-preview","href":"/api-reference/reports/check-and-run-an-unsaved-report"},{"title":"Create a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-create","href":"/api-reference/reports/create-a-custom-report"},{"title":"Update a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-update","href":"/api-reference/reports/update-a-custom-report"}]},{"group":"Candidates","pages":[{"title":"List candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-list","href":"/api-reference/candidates/list-candidates"},{"title":"Get a candidate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-get","href":"/api-reference/candidates/get-a-candidate"},{"title":"Add a note to a candidate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-note-add","href":"/api-reference/candidates/add-a-note-to-a-candidate"},{"title":"Tag candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-tags-set","href":"/api-reference/candidates/tag-candidates"},{"title":"Create, change or delete a candidate tag","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-tag-manage","href":"/api-reference/candidates/create-change-or-delete-a-candidate-tag"},{"title":"List candidate filter options","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-filter-options","href":"/api-reference/candidates/list-candidate-filter-options"},{"title":"Preview merging two candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-merge-preview","href":"/api-reference/candidates/preview-merging-two-candidates"},{"title":"Merge two candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-merge","href":"/api-reference/candidates/merge-two-candidates"},{"title":"Dismiss a possible duplicate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-duplicate-dismiss","href":"/api-reference/candidates/dismiss-a-possible-duplicate"},{"title":"List candidate segments","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-segment-list","href":"/api-reference/candidates/list-candidate-segments"},{"title":"Create, change or delete a candidate segment","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-segment-manage","href":"/api-reference/candidates/create-change-or-delete-a-candidate-segment"},{"title":"Download a candidate document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-document-download","href":"/api-reference/candidates/download-a-candidate-document"}]},{"group":"Tasks","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-task-list","href":"/api-reference/tasks/list-tasks"},{"title":"Create or change a task","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-task-save","href":"/api-reference/tasks/create-or-change-a-task"}]},{"group":"Document requests","pages":[{"title":"List document requests","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-document-request-list","href":"/api-reference/document-requests/list-document-requests"},{"title":"Ask a candidate for documents","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-document-request-create","href":"/api-reference/document-requests/ask-a-candidate-for-documents"},{"title":"Cancel a document request or mark it reviewed","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-document-request-update","href":"/api-reference/document-requests/cancel-a-document-request-or-mark-it-reviewed"}]},{"group":"Reasons","pages":[{"title":"List the company's reasons","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-reason-list","href":"/api-reference/reasons/list-the-companys-reasons"},{"title":"Get one of the company's reasons","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-reason-get","href":"/api-reference/reasons/get-one-of-the-companys-reasons"},{"title":"Create, change or archive a reason","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-reason-save","href":"/api-reference/reasons/create-change-or-archive-a-reason"}]},{"group":"Knowledge base","pages":[{"title":"Upload a knowledge base document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-document-upload","href":"/api-reference/knowledge-base/upload-a-knowledge-base-document"},{"title":"List knowledge base documents and their interview limits","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /knowledge-base-document-list","href":"/api-reference/knowledge-base/list-knowledge-base-documents-and-their-interview-limits"},{"title":"Change which interviews can use a document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-document-set-interviews","href":"/api-reference/knowledge-base/change-which-interviews-can-use-a-document"},{"title":"List knowledge base stores","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /knowledge-base-store-list","href":"/api-reference/knowledge-base/list-knowledge-base-stores"},{"title":"Create or change a knowledge base store","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-store-save","href":"/api-reference/knowledge-base/create-or-change-a-knowledge-base-store"}]},{"group":"Resume \u0026 Form verification","pages":[{"title":"Create or update a pre-screening position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /pre-screening-create","href":"/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position"},{"title":"Run pre-screening on a plaintext resume","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pre-screening-api-resume-text","href":"/api-reference/resume-\u0026-form-verification/run-pre-screening-on-a-plaintext-resume"},{"title":"Pre-screen a candidate from a binary resume upload","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pre-screening-api-resume-binary","href":"/api-reference/resume-\u0026-form-verification/pre-screen-a-candidate-from-a-binary-resume-upload"}]},{"group":"Admin","pages":[{"title":"Invite admin / merchant-team or coaching users","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /invite-users","href":"/api-reference/admin/invite-admin-merchant-team-or-coaching-users"},{"title":"List sub-merchants","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-sub-merchant-list","href":"/api-reference/admin/list-sub-merchants"},{"title":"List the company's users","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-user-list","href":"/api-reference/admin/list-the-companys-users"},{"title":"List avatar templates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-avatar-list","href":"/api-reference/admin/list-avatar-templates"},{"title":"Get merchant status","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-status","href":"/api-reference/admin/get-merchant-status"},{"title":"List platform languages","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /platform-languages-list","href":"/api-reference/admin/list-platform-languages"},{"title":"Get the portal configuration (branding, portals, brands, pages)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /portal-configuration-get","href":"/api-reference/admin/get-the-portal-configuration-branding-portals-brands-pages"},{"title":"Update the portal configuration (branding, portals, brands, pages)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-configuration-update","href":"/api-reference/admin/update-the-portal-configuration-branding-portals-brands-pages"},{"title":"Publish a brand stylesheet","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-css-publish","href":"/api-reference/admin/publish-a-brand-stylesheet"},{"title":"Get the component style guide","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /portal-component-styles","href":"/api-reference/admin/get-the-component-style-guide"},{"title":"Save a component style","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-component-styles","href":"/api-reference/admin/save-a-component-style"},{"title":"Generate component style alternatives","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-component-styles-generate","href":"/api-reference/admin/generate-component-style-alternatives"},{"title":"List the media library","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /media-list","href":"/api-reference/admin/list-the-media-library"},{"title":"Start uploading a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-upload-start","href":"/api-reference/admin/start-uploading-a-media-file"},{"title":"Finish uploading a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-upload-finish","href":"/api-reference/admin/finish-uploading-a-media-file"},{"title":"Describe a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-update","href":"/api-reference/admin/describe-a-media-file"},{"title":"Delete a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-delete","href":"/api-reference/admin/delete-a-media-file"},{"title":"List the media library folders","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /media-folders","href":"/api-reference/admin/list-the-media-library-folders"},{"title":"Create, rename or delete a media library folder","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-folders","href":"/api-reference/admin/create-rename-or-delete-a-media-library-folder"}]},{"group":"Feedback","pages":[{"title":"Submit a feature request","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-feature-request","href":"/api-reference/feedback/submit-a-feature-request"},{"title":"Report a technical issue","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-technical-issue","href":"/api-reference/feedback/report-a-technical-issue"}]}]},{"tab":"Webhooks","pages":[{"title":"Webhooks","href":"/api-reference/webhooks/interview-result-submitted"}]},{"tab":"Cookbooks","pages":[{"title":"Cookbooks","href":"/cookbooks"}]},{"tab":"Skills","pages":[{"title":"Skills","href":"/skills/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]}]},"basePath":"","title":"Set the steps of a draft position - 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"]}