{
"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": "<string>",
"name": "documents",
"errors": [
"documents[0]: style must be \"bold\" or \"minimal\", got \"dark\".",
"documents[1].pages[0]: slug \"jobs\" is not allowed (reserved)"
]
}
Update the portal configuration (branding, portals, pages)
Imports portal configuration documents in one call: branding (portal name, style, colours, logos, e-mail sender name, speech term boosting), the interview portal (languages, home texts, support / application-tracking / interview-completed texts), the coaching portal (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and portal sites (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with dry_run: true to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless publish is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.
POST
/
portal-configuration-update
Update the portal configuration (branding, portals, pages)
{
"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": "<string>",
"name": "documents",
"errors": [
"documents[0]: style must be \"bold\" or \"minimal\", got \"dark\".",
"documents[1].pages[0]: slug \"jobs\" is not allowed (reserved)"
]
}
1 to 20 documents, applied in order (a later document wins where two set the same thing). Every field a document omits keeps its current value; languages are only ever added, never removed.
Optional: lock the call to one document type, as one admin import tab does. Every document must then be that type (portal-site accepts both portal-site and portal-page formats), and a document that declares neither kind nor format is read as this type with a warning. Without it, every document must declare its own kind or format.
Where portal-site pages and theme CSS go: interview (candidate-facing interview / careers portal) or consumer (coaching portal). Default: the portal-site document's own portal, else interview. A document made for the other portal is imported here with a warning.
Also publish the imported pages and theme CSS (live at once, as the admin's "Publish after import"). Default false: pages land as drafts the company reviews in the admin. Built-in page drafts produced by interview-portal / coaching-portal documents are never published. With page versions switched on, only a company owner or admin may publish.
{"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":""},"chroma":{"collectionId":"bc96785d-c9d3-414f-a33a-c80590c270ab","liveDeploymentHistoryId":"6ae7e8aad4dfc4b4cc5f55c4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae7e8aad4dfc4b4cc5f55c4"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae7e8aad4dfc4b4cc5f55c4","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API Reference","count":43},{"language":"default","tag":"Cookbooks","count":14},{"language":"default","tag":"Webhooks","count":14},{"language":"default","tag":"MCP","count":13},{"language":"default","tag":"Interviews","count":10},{"language":"default","tag":"Connect","count":8},{"language":"default","tag":"Admin","count":7},{"language":"default","tag":"Reports","count":7},{"language":"default","tag":"Results","count":7},{"language":"default","tag":"Welcome","count":5}]},"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/admin/update-the-portal-configuration-branding-portals-pages","slug":"/api-reference/admin/update-the-portal-configuration-branding-portals-pages","pageMetadata":{"title":"Update the portal configuration (branding, portals, pages)","description":"Imports portal configuration documents in one call: **branding** (portal name, style, colours, logos, e-mail sender name, speech term boosting), the **interview portal** (languages, home texts, support / application-tracking / interview-completed texts), the **coaching portal** (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and **portal sites** (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with `dry_run: true` to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless `publish` is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in 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-pages","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Imports portal configuration documents in one call: \", _jsx(_components.strong, {\n children: \"branding\"\n }), \" (portal name, style, colours, logos, e-mail sender name, speech term boosting), the \", _jsx(_components.strong, {\n children: \"interview portal\"\n }), \" (languages, home texts, support / application-tracking / interview-completed texts), the \", _jsx(_components.strong, {\n children: \"coaching portal\"\n }), \" (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and \", _jsx(_components.strong, {\n children: \"portal sites\"\n }), \" (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: \", _jsx(_components.a, {\n href: \"https://developer.jobmojito.com/cookbooks/portal-branding/branding\",\n children: \"https://developer.jobmojito.com/cookbooks/portal-branding/branding\"\n }), \", \", _jsx(_components.a, {\n href: \"https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal\",\n children: \"https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal\"\n }), \", \", _jsx(_components.a, {\n href: \"https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal\",\n children: \"https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal\"\n }), \", \", _jsx(_components.a, {\n href: \"https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages\",\n children: \"https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages\"\n }), \". Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with \", _jsx(_components.code, {\n children: \"dry_run: true\"\n }), \" to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless \", _jsx(_components.code, {\n children: \"publish\"\n }), \" is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.\"]\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":"Update the portal configuration (branding, portals, pages)","description":"Imports portal configuration documents in one call: **branding** (portal name, style, colours, logos, e-mail sender name, speech term boosting), the **interview portal** (languages, home texts, support / application-tracking / interview-completed texts), the **coaching portal** (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and **portal sites** (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with `dry_run: true` to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless `publish` is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in 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-pages","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Admin"],"summary":"Update the portal configuration (branding, portals, pages)","description":"Imports portal configuration documents in one call: **branding** (portal name, style, colours, logos, e-mail sender name, speech term boosting), the **interview portal** (languages, home texts, support / application-tracking / interview-completed texts), the **coaching portal** (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and **portal sites** (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with `dry_run: true` to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless `publish` is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.","security":["0c440b71-6b3c-412c-824c-349173fe5414"],"requestBody":"10f25c53-33e7-4910-91d3-63bbf875c7f2","responses":{"200":"bed1eca4-e143-4906-a7a2-61c2e2821d01","401":"50dbab08-463a-4fa0-bde7-124e9cab40c4","403":"0ed76e9e-bf91-4117-917c-02a0fcfc8699","404":"7affc7d4-6aa5-4666-8f4f-d214d7e38a87","422":"8ea43ed6-1333-4072-a866-7d5b6106f4c4","500":"76aaf3ec-fcc0-4ad6-a115-91a8e38f49b6"},"method":"post","type":"path","servers":["3f7c2f73-5bb2-4f9d-87ea-736d615cea43"],"path":"/portal-configuration-update","baseUrlOptions":["https://cool.jobmojito.com/functions/v1"],"title":"Update the portal configuration (branding, portals, pages)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["branding","interview-portal","coaching-portal"],"description":"Portal configuration document type. `branding`: portal name, style, colours, logos, e-mail sender name, speech term boosting. `interview-portal`: interview portal languages and the per-language home texts. `coaching-portal`: coaching portal vertical (`use_case`), feature toggles, label overrides, coaching plan, catalogue start directory, languages and per-language home blocks. A portal site document declares `format` instead.","example":"branding","uniqueKey":"documents.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"format":{"type":"string","enum":["jobmojito.portal-site","jobmojito.portal-page"],"description":"Portal site document type. `jobmojito.portal-site`: `{ portal, theme: { css }, pages: [Page] }`, a whole site (pages in every language, the menu, the footer and the theme CSS). `jobmojito.portal-page`: `{ page: Page }`, one page. Page = `{ slug, show_in_menu, sort_order, languages: [{ mojito_language_code, title, description, blocks }] }`; slug \"\" is the home page, \"_footer\", \"_support\", \"_jobs\" etc. are the built-in pages.","example":"jobmojito.portal-site","uniqueKey":"documents.items.[INDEX].format","typeLabel":"enum\u003cstring>"},"version":{"oneOf":[{"description":"Document format version. Always 1.","example":1,"uniqueKey":"documents.items.[INDEX].version.oneOf.0","typeLabel":"any"},{"description":"Document format version. Always 1.","example":1,"type":"null","uniqueKey":"documents.items.[INDEX].version.oneOf.1","typeLabel":"null"}],"uniqueKey":"documents.items.[INDEX].version","typeLabel":"any | null"}},"description":"One configuration document: declares either `kind` (branding, interview-portal, coaching-portal) or `format` (jobmojito.portal-site, jobmojito.portal-page), plus that type's fields. Field reference: branding https://developer.jobmojito.com/cookbooks/portal-branding/branding, interview portal https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, coaching portal https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, portal pages https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Unknown fields are ignored with a warning; wrong types and enum values are errors.","additionalProperties":true,"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"minItems":1,"maxItems":20,"description":"1 to 20 documents, applied in order (a later document wins where two set the same thing). Every field a document omits keeps its current value; languages are only ever added, never removed.","isRequired":true,"uniqueKey":"documents","typeLabel":"object[]"},"merchant_id":{"type":"string","format":"uuid","description":"Optional merchant to configure. Admins and sub-merchant operators only; other callers always use their token's merchant.","example":"28106cba-1c27-4e53-b149-32113e5e8e31","uniqueKey":"merchant_id","typeLabel":"string\u003cuuid>"},"kind":{"type":"string","enum":["branding","interview-portal","coaching-portal","portal-site"],"description":"Optional: lock the call to one document type, as one admin import tab does. Every document must then be that type (`portal-site` accepts both portal-site and portal-page formats), and a document that declares neither `kind` nor `format` is read as this type with a warning. Without it, every document must declare its own `kind` or `format`.","uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"portal":{"type":"string","enum":["interview","consumer"],"description":"Where portal-site pages and theme CSS go: `interview` (candidate-facing interview / careers portal) or `consumer` (coaching portal). Default: the portal-site document's own `portal`, else `interview`. A document made for the other portal is imported here with a warning.","uniqueKey":"portal","typeLabel":"enum\u003cstring>"},"publish":{"type":"boolean","default":false,"description":"Also publish the imported pages and theme CSS (live at once, as the admin's \"Publish after import\"). Default false: pages land as drafts the company reviews in the admin. Built-in page drafts produced by interview-portal / coaching-portal documents are never published. With page versions switched on, only a company owner or admin may publish.","uniqueKey":"publish","typeLabel":"boolean"},"dry_run":{"type":"boolean","default":false,"description":"Validate and report what would change (summary, warnings, changes) without writing anything. Use it to preview an import before applying it.","uniqueKey":"dry_run","typeLabel":"boolean"}},"required":["documents"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"documents":[{"kind":"branding","format":"jobmojito.portal-site","version":1}],"merchant_id":"28106cba-1c27-4e53-b149-32113e5e8e31","publish":false,"dry_run":false}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"bed1eca4-e143-4906-a7a2-61c2e2821d01":{"description":"Documents validated and (unless dry_run) applied.","content":{"application/json":{"schema":{"type":"object","properties":{"merchant_id":{"type":"string","description":"Merchant that was configured.","example":"28106cba-1c27-4e53-b149-32113e5e8e31","isRequired":true,"uniqueKey":"merchant_id","typeLabel":"string"},"dry_run":{"type":"boolean","description":"True when nothing was written.","isRequired":true,"uniqueKey":"dry_run","typeLabel":"boolean"},"documents":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","description":"Position of the document in the request.","example":0,"isRequired":true,"uniqueKey":"documents.items.[INDEX].index","typeLabel":"integer"},"kind":{"type":"string","enum":["branding","interview-portal","coaching-portal","portal-site"],"description":"How the document was read.","isRequired":true,"uniqueKey":"documents.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"summary":{"type":"array","items":{"type":"string","uniqueKey":"documents.items.[INDEX].summary.items.[INDEX]","typeLabel":"string"},"description":"What the document sets, in the lines the admin dialog shows (\"+ /slug\" a new page, \"↻ /slug\" a replaced one).","example":["3 colour(s)","style \"minimal\"","portal name"],"isRequired":true,"uniqueKey":"documents.items.[INDEX].summary","typeLabel":"string[]"},"warnings":{"type":"array","items":{"type":"string","uniqueKey":"documents.items.[INDEX].warnings.items.[INDEX]","typeLabel":"string"},"description":"Parts that were ignored or adjusted. Warnings never block the import.","isRequired":true,"uniqueKey":"documents.items.[INDEX].warnings","typeLabel":"string[]"}},"required":["index","kind","summary","warnings"],"uniqueKey":"documents.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"documents","typeLabel":"object[]"},"changes":{"type":"object","properties":{"merchant_fields":{"type":"array","items":{"type":"string","uniqueKey":"changes.merchant_fields.items.[INDEX]","typeLabel":"string"},"description":"Company settings that change: column names, with the key for the branding / feature jsonb and the language for home texts.","example":["homepage_name","template_colors.c_primary","interview_homepage_texts.de"],"isRequired":true,"uniqueKey":"changes.merchant_fields","typeLabel":"string[]"},"pages_created":{"type":"array","items":{"type":"string","uniqueKey":"changes.pages_created.items.[INDEX]","typeLabel":"string"},"description":"Slugs of pages created.","example":["our-history"],"isRequired":true,"uniqueKey":"changes.pages_created","typeLabel":"string[]"},"pages_updated":{"type":"array","items":{"type":"string","uniqueKey":"changes.pages_updated.items.[INDEX]","typeLabel":"string"},"description":"Slugs of existing pages whose draft (or published version) changes.","example":["about","_support"],"isRequired":true,"uniqueKey":"changes.pages_updated","typeLabel":"string[]"},"pages_unchanged":{"type":"array","items":{"type":"string","uniqueKey":"changes.pages_unchanged.items.[INDEX]","typeLabel":"string"},"description":"Slugs of pages the documents carry that already hold the same content (not written).","isRequired":true,"uniqueKey":"changes.pages_unchanged","typeLabel":"string[]"},"theme_css":{"type":"boolean","description":"Whether the theme CSS changes.","isRequired":true,"uniqueKey":"changes.theme_css","typeLabel":"boolean"},"published":{"type":"boolean","description":"Whether anything is published by this call.","isRequired":true,"uniqueKey":"changes.published","typeLabel":"boolean"},"portal":{"type":"string","enum":["interview","consumer"],"description":"Portal the portal-site pages and theme CSS went to.","isRequired":true,"uniqueKey":"changes.portal","typeLabel":"enum\u003cstring>"},"page_changes":{"type":"array","items":{"type":"object","properties":{"portal":{"type":"string","enum":["interview","consumer"],"description":"Portal of the page.","isRequired":true,"uniqueKey":"changes.page_changes.items.[INDEX].portal","typeLabel":"enum\u003cstring>"},"slug":{"type":"string","description":"Page slug (\"\" is the home page).","isRequired":true,"uniqueKey":"changes.page_changes.items.[INDEX].slug","typeLabel":"string"},"action":{"type":"string","enum":["create","update","unchanged"],"description":"What happens to the page.","isRequired":true,"uniqueKey":"changes.page_changes.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"published":{"type":"boolean","description":"Whether this write publishes the page.","isRequired":true,"uniqueKey":"changes.page_changes.items.[INDEX].published","typeLabel":"boolean"}},"required":["portal","slug","action","published"],"uniqueKey":"changes.page_changes.items.[INDEX]","typeLabel":"object"},"description":"Every page touched, with its portal (built-in page drafts from a coaching-portal document go to the consumer portal).","isRequired":true,"uniqueKey":"changes.page_changes","typeLabel":"object[]"}},"required":["merchant_fields","pages_created","pages_updated","pages_unchanged","theme_css","published","portal","page_changes"],"description":"What changed (for a dry run: what would change).","isRequired":true,"uniqueKey":"changes","typeLabel":"object"}},"required":["merchant_id","dry_run","documents","changes"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"merchant_id":"28106cba-1c27-4e53-b149-32113e5e8e31","dry_run":true,"documents":[{"index":0,"kind":"branding","summary":["3 colour(s)","style \"minimal\"","portal name"],"warnings":["\u003cstring>"]}],"changes":{"merchant_fields":["homepage_name","template_colors.c_primary","interview_homepage_texts.de"],"pages_created":["our-history"],"pages_updated":["about","_support"],"pages_unchanged":["\u003cstring>"],"theme_css":true,"published":true,"portal":"interview","page_changes":[{"portal":"interview","slug":"\u003cstring>","action":"create","published":true}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"50dbab08-463a-4fa0-bde7-124e9cab40c4":{"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"},"0ed76e9e-bf91-4117-917c-02a0fcfc8699":{"description":"Your token is not allowed to use this endpoint (it is not a merchant, merchant owner or admin token), or row-level security refused the write.","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"},"7affc7d4-6aa5-4666-8f4f-d214d7e38a87":{"description":"No merchant with this id (or 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"},"8ea43ed6-1333-4072-a866-7d5b6106f4c4":{"description":"Validation error: the request is malformed, or at least one document has an error (all listed in `errors`). Nothing was written.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The first problem, or a count.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"documents","uniqueKey":"name","typeLabel":"string"},"errors":{"type":"array","items":{"type":"string","uniqueKey":"errors.items.[INDEX]","typeLabel":"string"},"description":"Every problem found, each prefixed with the document it is in. Nothing was written.","example":["documents[0]: style must be \"bold\" or \"minimal\", got \"dark\".","documents[1].pages[0]: slug \"jobs\" is not allowed (reserved)"],"uniqueKey":"errors","typeLabel":"string[]"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","name":"documents","errors":["documents[0]: style must be \"bold\" or \"minimal\", got \"dark\".","documents[1].pages[0]: slug \"jobs\" is not allowed (reserved)"]}}},"exampleType":"generated"}},"exampleType":"generated"},"76aaf3ec-fcc0-4ad6-a115-91a8e38f49b6":{"description":"Server error. When some writes succeeded before others failed, `failures` lists the failed writes and `applied` what was written.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"write","uniqueKey":"name","typeLabel":"string"},"failures":{"type":"array","items":{"type":"string","uniqueKey":"failures.items.[INDEX]","typeLabel":"string"},"description":"The writes that failed.","uniqueKey":"failures","typeLabel":"string[]"},"applied":{"type":"object","description":"What was written before / despite the failures.","required":["merchant_fields","pages_created","pages_updated","pages_unchanged","theme_css","published","portal","page_changes"],"properties":{"merchant_fields":{"type":"array","items":{"type":"string","uniqueKey":"applied.merchant_fields.items.[INDEX]","typeLabel":"string"},"description":"Company settings that change: column names, with the key for the branding / feature jsonb and the language for home texts.","example":["homepage_name","template_colors.c_primary","interview_homepage_texts.de"],"isRequired":true,"uniqueKey":"applied.merchant_fields","typeLabel":"string[]"},"pages_created":{"type":"array","items":{"type":"string","uniqueKey":"applied.pages_created.items.[INDEX]","typeLabel":"string"},"description":"Slugs of pages created.","example":["our-history"],"isRequired":true,"uniqueKey":"applied.pages_created","typeLabel":"string[]"},"pages_updated":{"type":"array","items":{"type":"string","uniqueKey":"applied.pages_updated.items.[INDEX]","typeLabel":"string"},"description":"Slugs of existing pages whose draft (or published version) changes.","example":["about","_support"],"isRequired":true,"uniqueKey":"applied.pages_updated","typeLabel":"string[]"},"pages_unchanged":{"type":"array","items":{"type":"string","uniqueKey":"applied.pages_unchanged.items.[INDEX]","typeLabel":"string"},"description":"Slugs of pages the documents carry that already hold the same content (not written).","isRequired":true,"uniqueKey":"applied.pages_unchanged","typeLabel":"string[]"},"theme_css":{"type":"boolean","description":"Whether the theme CSS changes.","isRequired":true,"uniqueKey":"applied.theme_css","typeLabel":"boolean"},"published":{"type":"boolean","description":"Whether anything is published by this call.","isRequired":true,"uniqueKey":"applied.published","typeLabel":"boolean"},"portal":{"type":"string","enum":["interview","consumer"],"description":"Portal the portal-site pages and theme CSS went to.","isRequired":true,"uniqueKey":"applied.portal","typeLabel":"enum\u003cstring>"},"page_changes":{"type":"array","items":{"type":"object","properties":{"portal":{"type":"string","enum":["interview","consumer"],"description":"Portal of the page.","isRequired":true,"uniqueKey":"applied.page_changes.items.[INDEX].portal","typeLabel":"enum\u003cstring>"},"slug":{"type":"string","description":"Page slug (\"\" is the home page).","isRequired":true,"uniqueKey":"applied.page_changes.items.[INDEX].slug","typeLabel":"string"},"action":{"type":"string","enum":["create","update","unchanged"],"description":"What happens to the page.","isRequired":true,"uniqueKey":"applied.page_changes.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"published":{"type":"boolean","description":"Whether this write publishes the page.","isRequired":true,"uniqueKey":"applied.page_changes.items.[INDEX].published","typeLabel":"boolean"}},"required":["portal","slug","action","published"],"uniqueKey":"applied.page_changes.items.[INDEX]","typeLabel":"object"},"description":"Every page touched, with its portal (built-in page drafts from a coaching-portal document go to the consumer portal).","isRequired":true,"uniqueKey":"applied.page_changes","typeLabel":"object[]"}},"uniqueKey":"applied","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","name":"write","failures":["\u003cstring>"],"applied":{"merchant_fields":["homepage_name","template_colors.c_primary","interview_homepage_texts.de"],"pages_created":["our-history"],"pages_updated":["about","_support"],"pages_unchanged":["\u003cstring>"],"theme_css":true,"published":true,"portal":"interview","page_changes":[{"portal":"interview","slug":"\u003cstring>","action":"create","published":true}]}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"0c440b71-6b3c-412c-824c-349173fe5414":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"3f7c2f73-5bb2-4f9d-87ea-736d615cea43":{"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":"Update the portal configuration (branding, portals, pages) - JobMojito Developer / Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T01:34:40.303Z","originalFileLocation":"api-reference/admin/update-the-portal-configuration-branding-portals-pages.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=\"Imports portal configuration documents in one call: branding (portal name, style, colours, logos, e-mail sender name, speech term boosting), the interview portal (languages, home texts, support / application-tracking / interview-completed texts), the coaching portal (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and portal sites (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with dry_run: true to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless publish is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.\">\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=\"Update the portal configuration (branding, portals, pages) - JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"Imports portal configuration documents in one call: branding (portal name, style, colours, logos, e-mail sender name, speech term boosting), the interview portal (languages, home texts, support / application-tracking / interview-completed texts), the coaching portal (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and portal sites (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with dry_run: true to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless publish is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.\">\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/admin/update-the-portal-configuration-branding-portals-pages\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jobmojito.mintlify.app/_mintlify/api/og/v2?division=Admin\u0026amp;title=Update+the+portal+configuration+%28branding%2C+portals%2C+pages%29\u0026amp;description=Imports+portal+configuration+documents+in+one+call%3A+**branding**+%28portal+name%2C+style%2C+colours%2C+logos%2C+e-mail+sender+name%2C+speech+term+boosting%29%2C+the+**interview\u0026amp;theme=8f95634a50c8277f4e6a8e67\u0026amp;signature=2ce0b755839d93fa153482a04d854a3fb0952a26475ec5dcb8116e9fa2e96ffe\">\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=\"Update the portal configuration (branding, portals, pages) - JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Imports portal configuration documents in one call: branding (portal name, style, colours, logos, e-mail sender name, speech term boosting), the interview portal (languages, home texts, support / application-tracking / interview-completed texts), the coaching portal (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and portal sites (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with dry_run: true to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless publish is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jobmojito.mintlify.app/_mintlify/api/og/v2?division=Admin\u0026amp;title=Update+the+portal+configuration+%28branding%2C+portals%2C+pages%29\u0026amp;description=Imports+portal+configuration+documents+in+one+call%3A+**branding**+%28portal+name%2C+style%2C+colours%2C+logos%2C+e-mail+sender+name%2C+speech+term+boosting%29%2C+the+**interview\u0026amp;theme=8f95634a50c8277f4e6a8e67\u0026amp;signature=2ce0b755839d93fa153482a04d854a3fb0952a26475ec5dcb8116e9fa2e96ffe\">\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/admin/update-the-portal-configuration-branding-portals-pages\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/admin/update-the-portal-configuration-branding-portals-pages.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/admin/update-the-portal-configuration-branding-portals-pages#webpage\",\"url\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages\",\"name\":\"Update the portal configuration (branding, portals, pages)\",\"description\":\"Imports portal configuration documents in one call: branding (portal name, style, colours, logos, e-mail sender name, speech term boosting), the interview portal (languages, home texts, support / application-tracking / interview-completed texts), the coaching portal (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and portal sites (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with dry_run: true to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless publish is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.\",\"dateModified\":\"2026-11-02T01:34:40.303Z\",\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Admin\",\"item\":\"https://developer.jobmojito.com/api-reference/admin/invite-admin-merchant-team-or-coaching-users\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update the portal configuration (branding, portals, pages)\",\"item\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages#apireference\",\"headline\":\"Update the portal configuration (branding, portals, pages)\",\"name\":\"Update the portal configuration (branding, portals, pages)\",\"description\":\"Imports portal configuration documents in one call: branding (portal name, style, colours, logos, e-mail sender name, speech term boosting), the interview portal (languages, home texts, support / application-tracking / interview-completed texts), the coaching portal (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and portal sites (pages in every language with their blocks, menu, footer and the theme CSS). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with dry_run: true to preview the summary, warnings and changes, then repeat without it to apply. Validation is all-or-nothing: if any document has an error nothing is written and the 422 lists every error. Pages land as drafts unless publish is true; the support / tracking / completion / signed-in home texts of the portal documents always land as drafts of those built-in pages.\",\"url\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages\",\"mainEntityOfPage\":{\"@id\":\"https://developer.jobmojito.com/api-reference/admin/update-the-portal-configuration-branding-portals-pages#webpage\"},\"dateModified\":\"2026-11-02T01:34:40.303Z\",\"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":"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":"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":"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"}]},{"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 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, pages)","description":"Reads the company's portal configuration as import documents: branding, the interview portal, the coaching portal, and the pages + theme CSS of each portal. Every returned document can be edited and sent back to portal-configuration-update unchanged in shape (preview with `dry_run: true` first). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-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-pages"},{"title":"Update the portal configuration (branding, portals, 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-pages"}]},{"group":"Feedback","pages":[{"title":"Submit a feature request","description":"Sends a feature request to the JobMojito product team. It is posted on the public feature request board under your name (from your account e-mail), where you get status updates and others can vote on it; your company is not named. At most 5 requests per user in 24 hours. Requires a user token (admin console session or MCP sign-in) of a merchant, merchant owner or admin.","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":"Update the portal configuration (branding, portals, pages) - JobMojito Developer / Agent","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}