Skip to main content
POST
Update the portal configuration (branding, portals, pages)

Authorizations

Authorization
string
header
required

Supabase JWT — Authorization: Bearer <token>.

Body

application/json
documents
object[]
required

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.

Required array length: 1 - 20 elements
merchant_id
string<uuid>

Optional merchant to configure. Admins and sub-merchant operators only; other callers always use their token's merchant.

Example:

"28106cba-1c27-4e53-b149-32113e5e8e31"

kind
enum<string>

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.

Available options:
branding,
interview-portal,
coaching-portal,
portal-site
portal
enum<string>

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.

Available options:
interview,
consumer
publish
boolean
default:false

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.

dry_run
boolean
default:false

Validate and report what would change (summary, warnings, changes) without writing anything. Use it to preview an import before applying it.

Response

Documents validated and (unless dry_run) applied.

merchant_id
string
required

Merchant that was configured.

Example:

"28106cba-1c27-4e53-b149-32113e5e8e31"

dry_run
boolean
required

True when nothing was written.

documents
object[]
required
changes
object
required

What changed (for a dry run: what would change).