Sets or updates YOUR brand’s display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand’s own terms of service and privacy policy links, and who holds your brand’s consent documents (consent_holder), using your own API key. Send any of display, legal_documents and consent_holder. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, consent_holder must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports patient_readiness naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform’s brand-config validator: a copy key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 version-mismatch and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.
Your brand id (brd_...). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with 400, and an unknown or foreign brand with 404.
the brand whose display identity to set (must match X-Brand-Id).
Pattern: ^brd_[A-Za-z0-9][A-Za-z0-9_-]*$
Body
application/json
The client self-serve write payload. It carries display, legal_documents, consent_holder, or any of them together: the client sets or updates its own brand display-identity block, its own terms of service and privacy policy links, and who holds its consent documents, with its own API key. A legal_documents write is applied only if the configuration has not changed since it was read; otherwise it is refused with 409version-mismatch and nothing is written. There is deliberately no theme, redirect-allowlist, or charge-topology field — those stay platform-controlled; a client cannot set them here (any such key is barred by additionalProperties:false and, at runtime, is never read). Each block is merged onto the existing configuration and validated UNCHANGED by the brand-config validator. A display block cannot carry wording: a copy key is refused with 422, and the validator's issues are returned as given.
Choose who holds your brand's consent documents and identity: purple (Purple's consent documents apply, and your own legal links are not needed) or client (your own legal document links apply). Any other value is refused with 422 and the issue brand.consent_holder. Until it is chosen, your brand is not ready for patients.
Your brand's own terms of service and privacy policy links, set or updated. A slot you send replaces that slot's stored link; a slot you omit keeps its stored link. Each link must be an absolute https URL to the document as your patients should read it; anything else (a relative path, an http: URL, an empty string) is refused with 422 and the issue brand.legal_documents.url, and any other slot is refused with 422 and the issue brand.legal_documents.slot. These links are shown to patients before they consent. You do not need them when you chose consent_holder: purple: Purple's documents apply then.
Show child attributes
Response
the stored configuration (the same projection you read back)
A brand's platform configuration as the platform holds it — clinically inert BY CONSTRUCTION (the validator enforces a top-level allowlist + a recursive clinical-shaped-key denylist). The your readback and the platform staff view return this EXACT shape. Presentation and commercial reach only; never a clinical field. additionalProperties:false mirrors the validator's top-level allowlist.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Purple Label MD","description":"Public API reference for building a patient storefront on the platform. Generated from the platform's own API contracts, and matches the newest staging release.","colors":{"primary":"#6D28D9","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/light.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=3c0569e3f76e49e04d232187908c2e2e","dark":"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/dark.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=c11f42bb461c28528be896c7c1a80efa"},"favicon":"https://mintcdn.com/purplelabelmd/MUdvgTlYoCGY54e8/favicon.svg?fit=max\u0026auto=format\u0026n=MUdvgTlYoCGY54e8\u0026q=85\u0026s=3bd633ab20ff170e0ebebec0406e6972","footer":{"socials":{}},"fonts":{"heading":{"family":"Geist"},"body":{"family":"Geist"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"purplelabelmd","hasAudioNarration":false,"actualSubdomain":"purplelabelmd","customDomains":["docs.purplelabelmd.com"],"gitSource":{"type":"github","owner":"purple-label-md","repo":"purple-doc","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af545312fc9183f3253a260","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API reference","count":50},{"language":"default","tag":"Guides","count":21},{"language":"default","tag":"Offering configuration","count":18},{"language":"default","tag":"Integrate","count":16},{"language":"default","tag":"Brand configuration","count":9},{"language":"default","tag":"Webhooks","count":7},{"language":"default","tag":"Payments","count":4},{"language":"default","tag":"Intake","count":3},{"language":"default","tag":"Onboarding","count":3},{"language":"default","tag":"Sessions \u0026 authentication","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"@media (prefers-reduced-motion: no-preference){.plmd-logo{transform-origin:center;transition:transform 0.12s ease}.plmd-logo .plmd-mark path{transform-box:fill-box;transform-origin:center}.plmd-logo-link:active .plmd-logo{transform:scale(0.85)}.plmd-logo-link:hover .plmd-logo .plmd-mark path:last-child{animation:plmd-carrot-hop 0.55s ease}.plmd-logo-link:hover .plmd-logo .plmd-mark path:nth-child(-n+6){animation:plmd-carrot-twinkle 0.5s ease}.plmd-logo-link:hover .plmd-logo .plmd-mark path:nth-child(even){animation-delay:0.08s}}@keyframes plmd-carrot-hop{0%{transform:translateY(0) rotate(0)}30%{transform:translateY(-14%) rotate(-9deg)}55%{transform:translateY(0) rotate(6deg)}78%{transform:translateY(-5%) rotate(-2deg)}100%{transform:translateY(0) rotate(0)}}@keyframes plmd-carrot-twinkle{0%,100%{transform:scale(1);opacity:1}45%{transform:scale(1.6);opacity:0.7}}"}],"page":{"pagePath":"api-reference/brand-configuration/set-your-brands-display-identity","slug":"/api-reference/brand-configuration/set-your-brands-display-identity","pageMetadata":{"title":"Set your brand's display identity","description":"Sets or updates YOUR brand's display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand's own terms of service and privacy policy links, and who holds your brand's consent documents (`consent_holder`), using your own API key. Send any of `display`, `legal_documents` and `consent_holder`. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, `consent_holder` must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports `patient_readiness` naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform's brand-config validator: a `copy` key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 `version-mismatch` and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/config","href":"/api-reference/brand-configuration/set-your-brands-display-identity","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Sets or updates YOUR brand’s display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand’s own terms of service and privacy policy links, and who holds your brand’s consent documents (\", _jsx(_components.code, {\n children: \"consent_holder\"\n }), \"), using your own API key. Send any of \", _jsx(_components.code, {\n children: \"display\"\n }), \", \", _jsx(_components.code, {\n children: \"legal_documents\"\n }), \" and \", _jsx(_components.code, {\n children: \"consent_holder\"\n }), \". Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, \", _jsx(_components.code, {\n children: \"consent_holder\"\n }), \" must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports \", _jsx(_components.code, {\n children: \"patient_readiness\"\n }), \" naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform’s brand-config validator: a \", _jsx(_components.code, {\n children: \"copy\"\n }), \" key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 \", _jsx(_components.code, {\n children: \"version-mismatch\"\n }), \" and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.\"]\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 your brand's display identity","description":"Sets or updates YOUR brand's display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand's own terms of service and privacy policy links, and who holds your brand's consent documents (`consent_holder`), using your own API key. Send any of `display`, `legal_documents` and `consent_holder`. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, `consent_holder` must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports `patient_readiness` naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform's brand-config validator: a `copy` key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 `version-mismatch` and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/config","href":"/api-reference/brand-configuration/set-your-brands-display-identity","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Sets or updates YOUR brand's display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand's own terms of service and privacy policy links, and who holds your brand's consent documents (`consent_holder`), using your own API key. Send any of `display`, `legal_documents` and `consent_holder`. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, `consent_holder` must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports `patient_readiness` naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform's brand-config validator: a `copy` key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 `version-mismatch` and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.","operationId":"setAccountBrandDisplay","parameters":["6f536661-711a-48c6-b1b5-521b72914e9b","07d9dd98-3ae1-423b-a44c-d397a4f9c3a8","7f50ee98-2722-44ce-83ed-5ec05768430c"],"requestBody":"4b7c7cac-918c-4ff1-8a61-29cb6c6e495f","responses":{"200":"03908035-fe7f-49cc-8dfb-27e321ee20b5","400":"bc76e0f6-8ef1-4235-a2c1-d0c892535bca","401":"6915aaa5-e016-4d66-b3da-1bf91a264d8b","404":"ef114bea-bdf1-400d-ba91-bee38b601c68","409":"1e344b4e-303f-49b4-829a-6eec702a30d0","422":"964921f6-51c1-4d4d-9781-e1ade81d453e","503":"f502f3d7-65f2-4b20-bfd7-421e00852d40"},"security":["504a39f4-baac-4cb2-aeaa-46a00f6f5e6f"],"summary":"Set your brand's display identity","tags":["Brand configuration"],"method":"put","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/brands/{brand_id}/config","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"Set your brand's display identity","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6f536661-711a-48c6-b1b5-521b72914e9b":{"description":"Your brand id (`brd_...`). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with `400`, and an unknown or foreign brand with `404`.","in":"header","name":"X-Brand-Id","required":true,"schema":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"description":"Your brand id (`brd_...`). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with `400`, and an unknown or foreign brand with `404`.","uniqueKey":"","typeLabel":"string"}},"07d9dd98-3ae1-423b-a44c-d397a4f9c3a8":{"description":"Send a unique value on every write. Do not assume that a repeated request with the same key is de-duplicated unless the operation says so.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string","isRequired":false,"description":"Send a unique value on every write. Do not assume that a repeated request with the same key is de-duplicated unless the operation says so.","uniqueKey":"","typeLabel":"string"}},"7f50ee98-2722-44ce-83ed-5ec05768430c":{"description":"the brand whose display identity to set (must match X-Brand-Id).","in":"path","name":"brand_id","required":true,"schema":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"description":"the brand whose display identity to set (must match X-Brand-Id).","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"The client self-serve write payload. It carries `display`, `legal_documents`, `consent_holder`, or any of them together: the client sets or updates its own brand display-identity block, its own terms of service and privacy policy links, and who holds its consent documents, with its own API key. A `legal_documents` write is applied only if the configuration has not changed since it was read; otherwise it is refused with `409` `version-mismatch` and nothing is written. There is deliberately no theme, redirect-allowlist, or charge-topology field — those stay platform-controlled; a client cannot set them here (any such key is barred by additionalProperties:false and, at runtime, is never read). Each block is merged onto the existing configuration and validated UNCHANGED by the brand-config validator. A display block cannot carry wording: a `copy` key is refused with `422`, and the validator's issues are returned as given.","minProperties":1,"properties":{"consent_holder":{"description":"Choose who holds your brand's consent documents and identity: `purple` (Purple's consent documents apply, and your own legal links are not needed) or `client` (your own legal document links apply). Any other value is refused with `422` and the issue `brand.consent_holder`. Until it is chosen, your brand is not ready for patients.","enum":["purple","client"],"type":"string","uniqueKey":"consent_holder","typeLabel":"enum\u003cstring>"},"display":{"type":"object","description":"the per-brand display-identity block to set or update (merged onto the existing config).","required":["display_name"],"properties":{"display_name":{"description":"the brand's display name shown to patients (document titles, login shell).","minLength":1,"type":"string","isRequired":true,"uniqueKey":"display.display_name","typeLabel":"string"},"logo":{"additionalProperties":false,"description":"logo references per mode — each an absolute https URL or a root-relative path ('/…').","properties":{"dark":{"description":"dark-mode logo reference (absolute https URL or root-relative path).","type":"string","uniqueKey":"display.logo.dark","typeLabel":"string"},"light":{"description":"light-mode logo reference (absolute https URL or root-relative path).","type":"string","uniqueKey":"display.logo.light","typeLabel":"string"}},"type":"object","uniqueKey":"display.logo","typeLabel":"object"},"support_email":{"description":"optional brand support email.","format":"email","type":"string","uniqueKey":"display.support_email","typeLabel":"string\u003cemail>"},"support_phone":{"description":"optional brand support phone number, as it should be displayed (digits, with an optional leading +, spaces, parentheses, dots and hyphens). The member support page offers it as a one-tap call. A malformed value is refused with `422`.","maxLength":32,"pattern":"^\\+?[0-9][0-9 ().-]{6,}$","type":"string","uniqueKey":"display.support_phone","typeLabel":"string"},"tokens":{"type":"object","description":"The brand token-set family (colors per mode, base radius, and type families), mirroring the design-system brand-token shape minus name and logo (which are hoisted to display_name and logo). A partial override set: a brand supplies any subset of the known slots; completeness for stylesheet generation is achieved downstream by merging onto the default brand fallback. String leaves only; unknown token slots are refused.","properties":{"colors":{"additionalProperties":false,"description":"semantic color slots per mode — BrandColorSet keys → CSS color strings.","properties":{"dark":{"additionalProperties":{"type":"string","uniqueKey":"display.tokens.colors.dark.additionalProperties","typeLabel":"string"},"description":"dark-mode color slots (BrandColorSet keys → CSS color strings).","type":"object","uniqueKey":"display.tokens.colors.dark","typeLabel":"object"},"light":{"additionalProperties":{"type":"string","uniqueKey":"display.tokens.colors.light.additionalProperties","typeLabel":"string"},"description":"light-mode color slots (BrandColorSet keys → CSS color strings).","type":"object","uniqueKey":"display.tokens.colors.light","typeLabel":"object"}},"type":"object","uniqueKey":"display.tokens.colors","typeLabel":"object"},"radius":{"description":"base corner radius, e.g. '0.625rem'.","type":"string","uniqueKey":"display.tokens.radius","typeLabel":"string"},"typography":{"additionalProperties":false,"properties":{"fontMono":{"type":"string","uniqueKey":"display.tokens.typography.fontMono","typeLabel":"string"},"fontSans":{"type":"string","uniqueKey":"display.tokens.typography.fontSans","typeLabel":"string"}},"type":"object","uniqueKey":"display.tokens.typography","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"display.tokens","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"display","typeLabel":"object"},"legal_documents":{"type":"object","description":"Your brand's own terms of service and privacy policy links, set or updated. A slot you send replaces that slot's stored link; a slot you omit keeps its stored link. Each link must be an absolute https URL to the document as your patients should read it; anything else (a relative path, an `http:` URL, an empty string) is refused with `422` and the issue `brand.legal_documents.url`, and any other slot is refused with `422` and the issue `brand.legal_documents.slot`. These links are shown to patients before they consent. You do not need them when you chose `consent_holder: purple`: Purple's documents apply then.","minProperties":1,"properties":{"privacy":{"description":"your privacy policy (absolute https URL).","format":"uri","pattern":"^https://","type":"string","uniqueKey":"legal_documents.privacy","typeLabel":"string\u003curi>"},"telehealth":{"description":"your telehealth informed consent (absolute https URL). Accepted only when `consent_holder` is `client`.","format":"uri","pattern":"^https://","type":"string","uniqueKey":"legal_documents.telehealth","typeLabel":"string\u003curi>"},"terms":{"description":"your terms of service (absolute https URL).","format":"uri","pattern":"^https://","type":"string","uniqueKey":"legal_documents.terms","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"legal_documents","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"legal_documents":{"privacy":"\u003cstring>","telehealth":"\u003cstring>","terms":"\u003cstring>"}}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"03908035-fe7f-49cc-8dfb-27e321ee20b5":{"content":{"application/json":{"schema":{"properties":{"data":{"additionalProperties":false,"description":"A brand's platform configuration as the platform holds it — clinically inert BY CONSTRUCTION (the validator enforces a top-level allowlist + a recursive clinical-shaped-key denylist). The your readback and the platform staff view return this EXACT shape. Presentation and commercial reach only; never a clinical field. additionalProperties:false mirrors the validator's top-level allowlist.","properties":{"brand_id":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"uniqueKey":"data.brand_id","typeLabel":"string"},"version":{"description":"server-minted monotone version (e.g. v3); the caller never sets it. A write may send it back as `expected_version` so that a save made from this read is refused if the stored version has moved since.","type":"string","isRequired":true,"uniqueKey":"data.version","typeLabel":"string"},"commercial":{"additionalProperties":{"type":"string","uniqueKey":"data.commercial.additionalProperties","typeLabel":"string"},"description":"commercial references (storefront/pricing ids) — references only.","type":"object","uniqueKey":"data.commercial","typeLabel":"object"},"consent_holder":{"description":"Who holds this brand's consent documents and identity. `purple`: Purple's consent documents apply. `client`: the brand's own legal document links apply. Absent means nobody has chosen yet, and the brand is not ready for patients until someone does; there is no default.","enum":["purple","client"],"type":"string","uniqueKey":"data.consent_holder","typeLabel":"enum\u003cstring>"},"copy":{"additionalProperties":{"type":"string","uniqueKey":"data.copy.additionalProperties","typeLabel":"string"},"description":"brand-overridable copy slots (slot id → display string).","type":"object","uniqueKey":"data.copy","typeLabel":"object"},"display":{"type":"object","description":"The per-brand display-identity block (name, logo, token-set), if set. Identity only; never a clinical copy channel. When absent, this brand has no display identity and the brand-display serve returns the explicit purple fallback.","required":["display_name"],"properties":{"display_name":{"description":"the brand's display name shown to patients (document titles, login shell).","minLength":1,"type":"string","isRequired":true,"uniqueKey":"data.display.display_name","typeLabel":"string"},"logo":{"additionalProperties":false,"description":"logo references per mode — each an absolute https URL or a root-relative path ('/…').","properties":{"dark":{"description":"dark-mode logo reference (absolute https URL or root-relative path).","type":"string","uniqueKey":"data.display.logo.dark","typeLabel":"string"},"light":{"description":"light-mode logo reference (absolute https URL or root-relative path).","type":"string","uniqueKey":"data.display.logo.light","typeLabel":"string"}},"type":"object","uniqueKey":"data.display.logo","typeLabel":"object"},"support_email":{"description":"optional brand support email.","format":"email","type":"string","uniqueKey":"data.display.support_email","typeLabel":"string\u003cemail>"},"support_phone":{"description":"optional brand support phone number, as it should be displayed (digits, with an optional leading +, spaces, parentheses, dots and hyphens). The member support page offers it as a one-tap call. A malformed value is refused with `422`.","maxLength":32,"pattern":"^\\+?[0-9][0-9 ().-]{6,}$","type":"string","uniqueKey":"data.display.support_phone","typeLabel":"string"},"tokens":{"type":"object","description":"The brand token-set family (colors per mode, base radius, and type families), mirroring the design-system brand-token shape minus name and logo (which are hoisted to display_name and logo). A partial override set: a brand supplies any subset of the known slots; completeness for stylesheet generation is achieved downstream by merging onto the default brand fallback. String leaves only; unknown token slots are refused.","properties":{"colors":{"additionalProperties":false,"description":"semantic color slots per mode — BrandColorSet keys → CSS color strings.","properties":{"dark":{"additionalProperties":{"type":"string","uniqueKey":"data.display.tokens.colors.dark.additionalProperties","typeLabel":"string"},"description":"dark-mode color slots (BrandColorSet keys → CSS color strings).","type":"object","uniqueKey":"data.display.tokens.colors.dark","typeLabel":"object"},"light":{"additionalProperties":{"type":"string","uniqueKey":"data.display.tokens.colors.light.additionalProperties","typeLabel":"string"},"description":"light-mode color slots (BrandColorSet keys → CSS color strings).","type":"object","uniqueKey":"data.display.tokens.colors.light","typeLabel":"object"}},"type":"object","uniqueKey":"data.display.tokens.colors","typeLabel":"object"},"radius":{"description":"base corner radius, e.g. '0.625rem'.","type":"string","uniqueKey":"data.display.tokens.radius","typeLabel":"string"},"typography":{"additionalProperties":false,"properties":{"fontMono":{"type":"string","uniqueKey":"data.display.tokens.typography.fontMono","typeLabel":"string"},"fontSans":{"type":"string","uniqueKey":"data.display.tokens.typography.fontSans","typeLabel":"string"}},"type":"object","uniqueKey":"data.display.tokens.typography","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"data.display.tokens","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"data.display","typeLabel":"object"},"enabled_therapies":{"description":"therapy references this brand offers (references, never definitions). This is also the field the intake surface reads to decide which questionnaire a patient is served at a journeyless first touch: one enabled therapy serves that therapy's questionnaire always; more than one requires the entry link to name an `offering`; none serves the platform's shared questionnaire. Values must be therapy keys the clinical service currently serves; the vocabulary is not enumerated here — it is clinical's committed roster (`GET /v1/instrument-bundles/roster`), which grows as new shared intakes ship.","items":{"type":"string","uniqueKey":"data.enabled_therapies.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.enabled_therapies","typeLabel":"string[]"},"legal_documents":{"type":"object","description":"The brand's REGISTERED LEGAL DOCUMENTS: the absolute https URLs the render-time brand-identity token channel substitutes into `{brand.legal.telehealth_url}` / `{brand.legal.privacy_url}` / `{brand.legal.terms_url}`. IDENTITY, NEVER COPY — the same class as `display.display_name` and `redirect_allowlist`, and emphatically not a wording channel: a brand still cannot supply one word of clinical question or option text. ONE RECORD SERVES CHECKOUT AND INTAKE (the checkout-scoped consent-docs registry folds into this field), so a brand cannot hold two copies that disagree about which privacy policy it publishes. ABSENT, or a slot absent, is VALID and means the render serves a NAMED copy-gap refusal on that node — never a blank link, never a dead link, never a raw token shown to a member.","properties":{"privacy":{"description":"the brand's privacy policy (absolute https).","format":"uri","type":"string","uniqueKey":"data.legal_documents.privacy","typeLabel":"string\u003curi>"},"telehealth":{"description":"the brand's telehealth informed-consent document (absolute https).","format":"uri","type":"string","uniqueKey":"data.legal_documents.telehealth","typeLabel":"string\u003curi>"},"terms":{"description":"the brand's terms document (absolute https).","format":"uri","type":"string","uniqueKey":"data.legal_documents.terms","typeLabel":"string\u003curi>"}},"additionalProperties":false,"uniqueKey":"data.legal_documents","typeLabel":"object"},"redirect_allowlist":{"description":"absolute-https return-URL prefixes permitted as post-completion redirect targets.","items":{"format":"uri","type":"string","uniqueKey":"data.redirect_allowlist.items.[INDEX]","typeLabel":"string\u003curi>"},"type":"array","uniqueKey":"data.redirect_allowlist","typeLabel":"string\u003curi>[]"},"theme":{"additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"data.theme.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"data.theme.additionalProperties.oneOf.1","typeLabel":"number"}],"uniqueKey":"data.theme.additionalProperties","typeLabel":"string | number"},"description":"presentation theme tokens — scalar leaves only (string or number).","type":"object","uniqueKey":"data.theme","typeLabel":"object"},"updated_at":{"description":"when this configuration was last written.","format":"date-time","type":"string","uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"}},"required":["brand_id","version"],"type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"brand_id":"\u003cstring>","version":"\u003cstring>","commercial":{},"consent_holder":"purple","copy":{},"display":{"display_name":"\u003cstring>","logo":{"dark":"\u003cstring>","light":"\u003cstring>"},"support_email":"[email protected]","support_phone":"\u003cstring>","tokens":{"colors":{"dark":{},"light":{}},"radius":"\u003cstring>","typography":{"fontMono":"\u003cstring>","fontSans":"\u003cstring>"}}},"enabled_therapies":["\u003cstring>"],"legal_documents":{"privacy":"\u003cstring>","telehealth":"\u003cstring>","terms":"\u003cstring>"},"redirect_allowlist":["\u003cstring>"],"theme":{},"updated_at":"2023-11-07T05:31:56Z"}}}},"exampleType":"generated"}},"description":"the stored configuration (the same projection you read back)","exampleType":"generated"},"bc76e0f6-8ef1-4235-a2c1-d0c892535bca":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"malformed or absent X-Brand-Id","exampleType":"generated"},"6915aaa5-e016-4d66-b3da-1bf91a264d8b":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Missing, unknown or revoked API key. The body is the same in every case.","exampleType":"generated"},"ef114bea-bdf1-400d-ba91-bee38b601c68":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Brand not found for your account. An unknown brand and another account's brand get the same `404`, never a `403`.","exampleType":"generated"},"1e344b4e-303f-49b4-829a-6eec702a30d0":{"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json error body.","required":["current_version","saved_at","type","title","status"],"properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"type":"string","format":"uri-reference","enum":["https://purple.md/problems/version-mismatch"],"isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"current_version":{"oneOf":[{"description":"the version stored now; null when nothing versioned is stored","type":"string","isRequired":true,"uniqueKey":"current_version.oneOf.0","typeLabel":"string"},{"description":"the version stored now; null when nothing versioned is stored","type":"null","isRequired":true,"uniqueKey":"current_version.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"current_version","typeLabel":"string | null"},"saved_at":{"oneOf":[{"description":"when the stored version was saved; null when that time is not recorded","format":"date-time","type":"string","isRequired":true,"uniqueKey":"saved_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"when the stored version was saved; null when that time is not recorded","format":"date-time","type":"null","isRequired":true,"uniqueKey":"saved_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"saved_at","typeLabel":"string\u003cdate-time> | null"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"https://purple.md/problems/version-mismatch","current_version":"\u003cstring>","saved_at":"2023-11-07T05:31:56Z","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Conflict. Nothing was written. Either the write carried `expected_version` and the version stored now is not that one (someone saved since the caller read), or, on a brand-configuration write, the stored configuration was saved by another writer after this server last read it. The body carries the version stored now (`current_version`, null when nothing versioned is stored) and when it was saved (`saved_at`, null when that time is not recorded), and never who saved it. Read again, then save from that read. A write without `expected_version` gets this answer only in the second case.","exampleType":"generated"},"964921f6-51c1-4d4d-9781-e1ade81d453e":{"content":{"application/problem+json":{"schema":{"type":"object","description":"The brand-config validator's refusal (422): an RFC-7807 problem carrying the validator's issues VERBATIM (the clinically-inert guarantee's refusal — a clinical-shaped field or a non-absolute-https allowlist entry). Show the issues as given; they are not rephrased.","required":["type","title","status"],"properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"issues":{"description":"the validator issues, verbatim (code · where · message).","items":{"properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].message","typeLabel":"string"},"where":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].where","typeLabel":"string"}},"required":["code","where","message"],"type":"object","uniqueKey":"issues.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>","issues":[{"code":"\u003cstring>","message":"\u003cstring>","where":"\u003cstring>"}]}}},"exampleType":"generated"}},"description":"the display or legal_documents block was refused by the validator (issues verbatim)","exampleType":"generated"},"f502f3d7-65f2-4b20-bfd7-421e00852d40":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"the durable brand-config store did not confirm the write; nothing was activated. If the store answered with a failure, nothing was saved (`account-brand-config-store-unavailable`; retryable). If the store did not answer in time, the outcome is unknown (`account-brand-config-outcome-unknown`): the change may or may not have been saved, so read it again before retrying.","exampleType":"generated"}},"security":{"504a39f4-baac-4cb2-aeaa-46a00f6f5e6f":{"apiKey":{"description":"Per-client API key (M2M). Presented as `Authorization: Bearer \u003ckey>`.","scheme":"bearer","type":"http","scopes":[],"schemeName":"apiKey"}}},"servers":{"76f2c082-b62c-4aea-a087-a046f1378296":{"url":"https://api.staging.purplelabelmd.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"Per-client API key (M2M). Presented as `Authorization: Bearer \u003ckey>`.","scheme":"bearer","type":"http","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Per-client API key (M2M). Presented as `Authorization: Bearer \u003ckey>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"openapi/public-openapi.json"},"subdomain":"purplelabelmd","siteName":"Purple Label MD","title":"Set your brand's display identity - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.489Z","originalFileLocation":"api-reference/brand-configuration/set-your-brands-display-identity.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=\"Sets or updates YOUR brand\u0026#x27;s display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand\u0026#x27;s own terms of service and privacy policy links, and who holds your brand\u0026#x27;s consent documents (consent_holder), using your own API key. Send any of display, legal_documents and consent_holder. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, consent_holder must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports patient_readiness naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform\u0026#x27;s brand-config validator: a copy key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 version-mismatch and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Purple Label MD\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_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/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Set your brand\u0026#x27;s display identity - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sets or updates YOUR brand\u0026#x27;s display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand\u0026#x27;s own terms of service and privacy policy links, and who holds your brand\u0026#x27;s consent documents (consent_holder), using your own API key. Send any of display, legal_documents and consent_holder. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, consent_holder must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports patient_readiness naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform\u0026#x27;s brand-config validator: a copy key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 version-mismatch and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Purple Label MD\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Brand+configuration\u0026amp;title=Set+your+brand%27s+display+identity\u0026amp;description=Sets+or+updates+YOUR+brand%27s+display-identity+block+%E2%80%94+the+display+name%2C+the+logo+references%2C+and+the+token-set+the+platform-controlled+surfaces+render+%E2%80%94+your+br\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=babc5027621ed3d91a0195b33abe4488c19cca97007eee9ef6f8aa1bf2276a03\">\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 your brand\u0026#x27;s display identity - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sets or updates YOUR brand\u0026#x27;s display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand\u0026#x27;s own terms of service and privacy policy links, and who holds your brand\u0026#x27;s consent documents (consent_holder), using your own API key. Send any of display, legal_documents and consent_holder. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, consent_holder must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports patient_readiness naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform\u0026#x27;s brand-config validator: a copy key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 version-mismatch and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Brand+configuration\u0026amp;title=Set+your+brand%27s+display+identity\u0026amp;description=Sets+or+updates+YOUR+brand%27s+display-identity+block+%E2%80%94+the+display+name%2C+the+logo+references%2C+and+the+token-set+the+platform-controlled+surfaces+render+%E2%80%94+your+br\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=babc5027621ed3d91a0195b33abe4488c19cca97007eee9ef6f8aa1bf2276a03\">\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/purplelabelmd/TU4Si8SnCOFGjzcC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Purple Label MD\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6D28D9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/brand-configuration/set-your-brands-display-identity.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.purplelabelmd.com/#organization\",\"name\":\"Purple Label MD\",\"url\":\"https://docs.purplelabelmd.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/light.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=3c0569e3f76e49e04d232187908c2e2e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.purplelabelmd.com#website\",\"name\":\"Purple Label MD\",\"url\":\"https://docs.purplelabelmd.com\",\"publisher\":{\"@id\":\"https://docs.purplelabelmd.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity\",\"name\":\"Set your brand's display identity\",\"description\":\"Sets or updates YOUR brand's display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand's own terms of service and privacy policy links, and who holds your brand's consent documents (consent_holder), using your own API key. Send any of display, legal_documents and consent_holder. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, consent_holder must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports patient_readiness naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform's brand-config validator: a copy key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 version-mismatch and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.\",\"dateModified\":\"2026-11-12T04:48:52.489Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Brand configuration\",\"item\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/read-back-your-brands-platform-configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set your brand's display identity\",\"item\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity#apireference\",\"headline\":\"Set your brand's display identity\",\"name\":\"Set your brand's display identity\",\"description\":\"Sets or updates YOUR brand's display-identity block — the display name, the logo references, and the token-set the platform-controlled surfaces render — your brand's own terms of service and privacy policy links, and who holds your brand's consent documents (consent_holder), using your own API key. Send any of display, legal_documents and consent_holder. Only those are read here, so the theme, the redirect allowlist, and the charge topology stay operator-controlled and cannot be set through this surface. Before patients arrive your display name must be set, consent_holder must be chosen, and every document your served consents link to must be set by the holder you chose. The intake resolve reports patient_readiness naming anything still missing. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403). Validated UNCHANGED by the platform's brand-config validator: a copy key, an unknown display key, a non-https and non-root-relative logo reference, or an unknown token slot is refused (422, issues verbatim). The version is server-minted; the write is durable before it activates and audited (which principal, when). If the saved configuration changed since you loaded it, the write is refused with 409 version-mismatch and nothing is written: reload it and try again. If the durable store did not answer in time, the answer is 503 with the outcome unknown: the change may or may not have been saved, so read it again before retrying.\",\"url\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/brand-configuration/set-your-brands-display-identity#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.489Z\",\"publisher\":{\"@id\":\"https://docs.purplelabelmd.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Purple Label MD\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Purple Label MD\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/brand-configuration/set-your-brands-display-identity.md","siteName":"Purple Label MD","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/pages/overview"}]},{"tab":"API reference","groups":[{"group":"Brand configuration","pages":[{"title":"Read back your brand's platform configuration","description":"Returns a copy of the brand configuration as the platform holds it — your theme, your enabled therapies, and your redirect allowlist — for the brand you pass. Your offerings are not part of this configuration: list them with GET /v1/account/brands/{brand_id}/offerings, which serves each one's name, sku_id, therapy, entry mode, checkout link, price and readiness. This is the client-facing readback promised in the welcome kit. Key-scoped and tenant-isolated: you may read only a brand your API key owns; the brand_id in the path must match the X-Brand-Id you present (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak). A brand with no configuration set yet answers 404.","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/config","href":"/api-reference/brand-configuration/read-back-your-brands-platform-configuration"},{"title":"Set your brand's display identity","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/config","href":"/api-reference/brand-configuration/set-your-brands-display-identity"},{"title":"List your brand's custom domains","description":"Returns your brand's custom-domain rows — the custom login domain and/or member-portal domain you have registered — each with its current provisioning state and the CNAME record to add to your DNS. A brand with no custom domains (the shared-domain default) returns an empty list, and a kind you have not registered is simply absent — a shared-domain brand's flow is never gated by any of this. Key-scoped and tenant-isolated: the brand is the one your API key owns and the brand_id in the path must match your X-Brand-Id (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak).","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains","href":"/api-reference/brand-configuration/list-your-brands-custom-domains"},{"title":"Read the browser origins your storefront may read this brand from","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains/member/browser-origins","href":"/api-reference/brand-configuration/read-the-browser-origins-your-storefront-may-read-this-brand-from"},{"title":"Replace the browser origins your storefront may read this brand from","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/domains/member/browser-origins","href":"/api-reference/brand-configuration/replace-the-browser-origins-your-storefront-may-read-this-brand-from"},{"title":"Read one custom-domain row","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/domains/{kind}","href":"/api-reference/brand-configuration/read-one-custom-domain-row"},{"title":"Choose a custom domain for a kind (client self-serve)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/domains/{kind}","href":"/api-reference/brand-configuration/choose-a-custom-domain-for-a-kind-client-self-serve"},{"title":"Remove a custom domain (revert to the shared domain)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/brands/{brand_id}/domains/{kind}","href":"/api-reference/brand-configuration/remove-a-custom-domain-revert-to-the-shared-domain"},{"title":"Verify a custom domain and advance provisioning","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/domains/{kind}/verify","href":"/api-reference/brand-configuration/verify-a-custom-domain-and-advance-provisioning"}]},{"group":"Offering configuration","pages":[{"title":"List your brand's enabled offerings","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/offerings","href":"/api-reference/offering-configuration/list-your-brands-enabled-offerings"},{"title":"Enable an offering for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/offerings","href":"/api-reference/offering-configuration/enable-an-offering-for-your-brand"},{"title":"Choose the billing cadence of an offering on your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/offerings/{offering_ref}/billing-cadence","href":"/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand"},{"title":"Set your brand's price for an offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/pricing","href":"/api-reference/offering-configuration/set-your-brands-price-for-an-offering"},{"title":"Adopt the starter merchandising pack for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/starter-merchandising","href":"/api-reference/offering-configuration/adopt-the-starter-merchandising-pack-for-your-brand"},{"title":"Read an offering's composed qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/offerings/{offering_ref}/qualification","href":"/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions"},{"title":"Add a library question to an offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification","href":"/api-reference/offering-configuration/add-a-library-question-to-an-offering"},{"title":"Reorder an offering's qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/offerings/{offering_ref}/qualification/order","href":"/api-reference/offering-configuration/reorder-an-offerings-qualification-questions"},{"title":"Publish an offering's qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification/publish","href":"/api-reference/offering-configuration/publish-an-offerings-qualification-questions"},{"title":"Remove an offering's qualification question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/offerings/{offering_ref}/qualification/questions/{question_id}","href":"/api-reference/offering-configuration/remove-an-offerings-qualification-question"},{"title":"Edit an offering's qualification question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/account/offerings/{offering_ref}/qualification/questions/{question_id}","href":"/api-reference/offering-configuration/edit-an-offerings-qualification-question"},{"title":"Set the display name and presentation copy for your offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/offerings/{ref}/merchandising","href":"/api-reference/offering-configuration/set-the-display-name-and-presentation-copy-for-your-offering"},{"title":"List the facts a qualification question may bind","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/question-library/facts","href":"/api-reference/offering-configuration/list-the-facts-a-qualification-question-may-bind"},{"title":"Create a new screening fact for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/question-library/minted-facts","href":"/api-reference/offering-configuration/create-a-new-screening-fact-for-your-brand"},{"title":"List your brand's qualification question library","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/question-library/questions","href":"/api-reference/offering-configuration/list-your-brands-qualification-question-library"},{"title":"Create a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/question-library/questions","href":"/api-reference/offering-configuration/create-a-qualification-library-question"},{"title":"Delete a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/question-library/questions/{question_id}","href":"/api-reference/offering-configuration/delete-a-qualification-library-question"},{"title":"Edit a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/account/question-library/questions/{question_id}","href":"/api-reference/offering-configuration/edit-a-qualification-library-question"}]},{"group":"Onboarding","pages":[{"title":"Check whether your brand is ready to sell","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/readiness","href":"/api-reference/onboarding/check-whether-your-brand-is-ready-to-sell"},{"title":"Read one offering's price and whether your brand can sell it","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/storefront","href":"/api-reference/onboarding/read-one-offerings-price-and-whether-your-brand-can-sell-it"},{"title":"Read a client's onboarding progress","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/onboardings/{onboarding_id}/progress","href":"/api-reference/onboarding/read-a-clients-onboarding-progress"}]},{"group":"Payments","pages":[{"title":"List your orders across all your brands","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/orders","href":"/api-reference/payments/list-your-orders-across-all-your-brands"},{"title":"Read one of your orders by reference","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/orders/{order_ref}","href":"/api-reference/payments/read-one-of-your-orders-by-reference"},{"title":"Start a checkout session and get a token to collect payment","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/payments/checkout-sessions","href":"/api-reference/payments/start-a-checkout-session-and-get-a-token-to-collect-payment"},{"title":"Read the payment status of an order","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/payments/{order_ref}/status","href":"/api-reference/payments/read-the-payment-status-of-an-order"}]},{"group":"Sessions \u0026 authentication","pages":[{"title":"Complete login and start the patient session","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/callback","href":"/api-reference/sessions-\u0026-authentication/complete-login-and-start-the-patient-session"},{"title":"Begin Universal Login and redirect to the login page","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/login","href":"/api-reference/sessions-\u0026-authentication/begin-universal-login-and-redirect-to-the-login-page"},{"title":"Log out and end the patient's session","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/logout","href":"/api-reference/sessions-\u0026-authentication/log-out-and-end-the-patients-session"}]},{"group":"Intake","pages":[{"title":"Record that your patient dropped off the questionnaire","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/instrument/abandon","href":"/api-reference/intake/record-that-your-patient-dropped-off-the-questionnaire"},{"title":"Submit an answer and get the next question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/instrument/next","href":"/api-reference/intake/submit-an-answer-and-get-the-next-question"},{"title":"Start an intake session and get the first question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/resolve","href":"/api-reference/intake/start-an-intake-session-and-get-the-first-question"}]},{"group":"Addresses","pages":[{"title":"Resolve a selected address suggestion to a full address","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/address/retrieve","href":"/api-reference/addresses/resolve-a-selected-address-suggestion-to-a-full-address"},{"title":"Suggest addresses as your patient types","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/address/suggest","href":"/api-reference/addresses/suggest-addresses-as-your-patient-types"}]},{"group":"Enrollment","pages":[{"title":"Read a patient's public enrollment status","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/journeys/{journey_id}/status","href":"/api-reference/enrollment/read-a-patients-public-enrollment-status"}]},{"group":"Webhooks","pages":[{"title":"List the webhook event types you can subscribe to","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/event-types","href":"/api-reference/webhooks/list-the-webhook-event-types-you-can-subscribe-to"},{"title":"List your webhook registrations","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/registrations","href":"/api-reference/webhooks/list-your-webhook-registrations"},{"title":"Register a webhook endpoint (signing secret shown once)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/webhooks/registrations","href":"/api-reference/webhooks/register-a-webhook-endpoint-signing-secret-shown-once"},{"title":"Read one of your webhook registrations","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/read-one-of-your-webhook-registrations"},{"title":"Delete a webhook registration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/delete-a-webhook-registration"},{"title":"Update a registration's URL, events, or enabled flag","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/update-a-registrations-url-events-or-enabled-flag"},{"title":"Send a test event to a registration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/webhooks/registrations/{registration_id}/test","href":"/api-reference/webhooks/send-a-test-event-to-a-registration"}]}]}]},"basePath":"","title":"Set your brand's display identity - Purple Label MD","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}