Compiles and publishes the offering’s qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.
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.
{"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/offering-configuration/publish-an-offerings-qualification-questions","slug":"/api-reference/offering-configuration/publish-an-offerings-qualification-questions","pageMetadata":{"title":"Publish an offering's qualification questions","description":"Compiles and publishes the offering's qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.","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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Compiles and publishes the offering’s qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.\"\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":"Publish an offering's qualification questions","description":"Compiles and publishes the offering's qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Compiles and publishes the offering's qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.","operationId":"publishQualificationOverlay","parameters":["3b71eb6b-aaf0-45d6-b81e-96797c8b9fae","e2244f7c-8bcf-44f9-9e0e-00dd1c5b5d24"],"requestBody":"142824c0-3649-407a-aa5a-bd801a3625f8","responses":{"201":"bdb160bd-ffc9-4233-9429-d885bc45c493","400":"5deada24-8821-4f53-86a2-c3518d9bc04a","404":"4cb409c3-c399-41b5-b24a-62e246825ffc","422":"11eafaa4-4aba-43fa-85f2-4747ba34c228","503":"2dbc93d6-046a-4290-96fa-120b7c4f495d"},"security":["1da96809-f72f-4c86-b9f5-a76e67ecece6"],"summary":"Publish an offering's qualification questions","tags":["Offering configuration"],"method":"post","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/offerings/{offering_ref}/qualification/publish","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"Publish an offering's qualification questions","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"3b71eb6b-aaf0-45d6-b81e-96797c8b9fae":{"in":"path","name":"offering_ref","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"e2244f7c-8bcf-44f9-9e0e-00dd1c5b5d24":{"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"}}},"requestBody":{"content":{"application/json":{"schema":{"properties":{"mode":{"enum":["initial","refill"],"type":"string","isRequired":true,"uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"actor":{"type":"string","uniqueKey":"actor","typeLabel":"string"}},"required":["mode"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"actor":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"bdb160bd-ffc9-4233-9429-d885bc45c493":{"content":{"application/json":{"schema":{"properties":{"value":{"properties":{"bundle_hash":{"pattern":"^sha256:[0-9a-f]{64}$","type":"string","isRequired":true,"uniqueKey":"value.bundle_hash","typeLabel":"string"},"activation":{"oneOf":[{"description":"the append-only activation audit row for this (brand, offering, mode) flip","properties":{"actor":{"type":"string","uniqueKey":"value.activation.oneOf.0.actor","typeLabel":"string"},"at":{"type":"string","uniqueKey":"value.activation.oneOf.0.at","typeLabel":"string"},"from":{"oneOf":[{"type":"string","uniqueKey":"value.activation.oneOf.0.from.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"value.activation.oneOf.0.from.oneOf.1","typeLabel":"null"}],"uniqueKey":"value.activation.oneOf.0.from","typeLabel":"string | null"},"mode":{"type":"string","uniqueKey":"value.activation.oneOf.0.mode","typeLabel":"string"},"offering_ref":{"type":"string","uniqueKey":"value.activation.oneOf.0.offering_ref","typeLabel":"string"},"to":{"type":"string","uniqueKey":"value.activation.oneOf.0.to","typeLabel":"string"}},"type":"object","uniqueKey":"value.activation.oneOf.0","typeLabel":"object"},{"description":"the append-only activation audit row for this (brand, offering, mode) flip","properties":{"actor":{"type":"string"},"at":{"type":"string"},"from":{"oneOf":[{"type":"string"},{"type":"null"}]},"mode":{"type":"string"},"offering_ref":{"type":"string"},"to":{"type":"string"}},"type":"null","uniqueKey":"value.activation.oneOf.1","typeLabel":"null"}],"uniqueKey":"value.activation","typeLabel":"object | null"}},"required":["bundle_hash"],"type":"object","isRequired":true,"uniqueKey":"value","typeLabel":"object"}},"required":["value"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"value":{"bundle_hash":"\u003cstring>","activation":{"actor":"\u003cstring>","at":"\u003cstring>","from":"\u003cstring>","mode":"\u003cstring>","offering_ref":"\u003cstring>","to":"\u003cstring>"}}}}},"exampleType":"generated"}},"description":"the overlay artifact was compiled and activated","exampleType":"generated"},"5deada24-8821-4f53-86a2-c3518d9bc04a":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem, extended with the structured compile issue list","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"code":{"description":"Present only on a refusal that shares its `type` with another condition and needs a finer name, e.g. the decision refusals `decision.bundle_intake_disagrees`, `decision.bundle_unknown`, `decision.bundle_mismatch` and `decision.bundle_unprojectable`. Branch on `type` first.","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation of this occurrence. PROSE — never parse it to discriminate a condition; use `type`.","type":"string","uniqueKey":"detail","typeLabel":"string"},"issues":{"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"},"already_asked":{"description":"Present ONLY on question.fact_already_asked and question.ask_again_alias_only, absent on every other issue. On ask_again_alias_only, `asked_as` is the other spelling the intake asks the fact under. The question (or communications consent) that already asks the fact, as data, so a consumer words the refusal from it instead of parsing `message` (prose, unchanged). `asked_by` and `asked_as` mean what they mean on QualificationAskAgain: the asking node's id, and the fact spelling it asks under (equal to the requested fact, or another spelling of the same fact). `section_id` is the section it is asked in (for a shared-shell section, the section that includes the shell); `section_title` is that section's authored title, absent when it has none. `prompt` is the words a member is shown for that node (a question's `copy.prompt`, a consent's `text_ref.headline`), absent when it carries none. Definitions only, never a member's answer.","example":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"properties":{"asked_as":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_as","typeLabel":"string"},"asked_by":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_by","typeLabel":"string"},"section_id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.section_id","typeLabel":"string"},"prompt":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.prompt","typeLabel":"string"},"section_title":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.section_title","typeLabel":"string"}},"required":["asked_by","asked_as","section_id"],"type":"object","uniqueKey":"issues.items.[INDEX].already_asked","typeLabel":"object"},"missing_values":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are a declared list of option codes, absent on every other issue. The option codes the fact can hold that the question does not offer, in catalog order; never empty.","example":["US-AL","US-AK"],"items":{"type":"string","uniqueKey":"issues.items.[INDEX].missing_values.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"issues.items.[INDEX].missing_values","typeLabel":"string[]"},"readers":{"description":"WI-INTAKE-QUESTION-EDITOR-01 acceptance 2 / Amendments 8 and 10 — present ONLY on remove.answer_has_readers and when.answer_has_readers, absent on every other issue. The reader that issue names, as data, so a consumer names it in words from the bundle content it already holds instead of parsing `message` (prose, unchanged). Those refusals carry one issue per reader, so this array holds exactly one entry; issue order is the walk's (rules in ruleset order, then conditions and displays in document order, then rule-decided facts, then the registration). `id` resolves in the served bundle content (GET /instrument-bundles/current `content`): rule → `ruleset.rules[].id` (words: `rationale`); condition → the gated node's id in `instrument.sections[].items[]` or `shells.components[].items[]` (words: a question's `copy.prompt`, a display's `content.headline`, a consent's `text_ref.headline`); display → that display node's id (same lookup); derivation → `overlay.derivations[].produces` (words: `rationale`); registration → always `prescriber_patient_registration`, which has NO bundle-resident words — the consumer words it itself (\"the prescriber's patient record\").","items":{"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].id","typeLabel":"string"},"kind":{"enum":["rule","condition","display","registration","derivation"],"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["kind","id"],"type":"object","uniqueKey":"issues.items.[INDEX].readers.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues.items.[INDEX].readers","typeLabel":"object[]"},"refresh_policy":{"description":"Present ONLY on question.ask_again_suppressed and question.ask_again_collects_blank, absent on every other issue. The fact's refresh policy as served (static, confirm_if_stale, never_prefill, or any other value the catalog holds), so a consumer can say why the ask-again would not be shown as a confirm without parsing `message`.","example":"static","type":"string","uniqueKey":"issues.items.[INDEX].refresh_policy","typeLabel":"string"},"value_type":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are NOT a declared list (free text, a number, a date), absent on every other issue. The fact's value type; no list of choices can cover it. Exactly one of `missing_values` and `value_type` rides that refusal.","example":"string","type":"string","uniqueKey":"issues.items.[INDEX].value_type","typeLabel":"string"}},"required":["code","where","message"],"type":"object","uniqueKey":"issues.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues","typeLabel":"object[]"},"landed_first":{"description":"WI-INTAKE-QUESTION-EDITOR-01 S1b (acceptance 3) — on a qualification-sets 409 set.base_hash_stale only: the change that moved the intake off the base the refused write was edited against, so the screen can say whose change landed first and when. Read from the activation history (every publish path); `source: current_pointer` means only the current version's author is known (\"most recently\", never \"first\"). Absent when nothing could be read. Operator identities and section/question codes only — never patient data.","properties":{"actor":{"description":"the verified operator identity","or clinical-boot-seed for the starting content":null,"type":"string","isRequired":true,"uniqueKey":"landed_first.actor","typeLabel":"string"},"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"landed_first.at","typeLabel":"string\u003cdate-time>"},"bundle_hash":{"type":"string","isRequired":true,"uniqueKey":"landed_first.bundle_hash","typeLabel":"string"},"source":{"enum":["activation_history","current_pointer"],"type":"string","isRequired":true,"uniqueKey":"landed_first.source","typeLabel":"enum\u003cstring>"},"action":{"enum":["set_create","set_rename","set_remove","question_add","question_edit","question_remove","question_reorder","set_move"],"type":"string","uniqueKey":"landed_first.action","typeLabel":"enum\u003cstring>"},"question_id":{"type":"string","uniqueKey":"landed_first.question_id","typeLabel":"string"},"section_id":{"type":"string","uniqueKey":"landed_first.section_id","typeLabel":"string"}},"required":["actor","at","bundle_hash","source"],"type":"object","uniqueKey":"landed_first","typeLabel":"object"},"mdi_case_id":{"deprecated":true,"description":"DEPRECATED — the former name of `prescriber_case_id`, sent alongside it with the same value while the rename completes. Read `prescriber_case_id`; this field is removed in a following release.","type":"string","uniqueKey":"mdi_case_id","typeLabel":"string"},"prescriber_case_id":{"description":"The prescriber's own reference for the case, present only when a case was created at the prescriber and the handover did not finish. Quote it when resolving the case directly with the prescriber. Absent is meaningful: it means no case was created, so there is nothing to look up. Opaque — an identifier only, never prescriber or patient text, and not patient data.","type":"string","uniqueKey":"prescriber_case_id","typeLabel":"string"},"required_role":{"description":"On a role 403 only: the least operator role that may make this write, so the refusal names the missing role. `admin` on publish.clinical_requires_admin; `staff` on write.read_only_refused.","type":"string","uniqueKey":"required_role","typeLabel":"string"},"type":{"description":"RFC 7807's machine-readable problem identifier, and the field a consumer branches on when two conditions share a status. `about:blank` where the status alone is unambiguous; otherwise a `https://purple.md/problems/\u003cslug>` URI (the estate's existing convention). DECLARED, not new at runtime — every problem this service has ever emitted carries it; the schema simply did not say so, which is what let a second 404 condition become indistinguishable to a contract reader.","type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","code":"\u003cstring>","detail":"\u003cstring>","issues":[{"code":"\u003cstring>","message":"\u003cstring>","where":"\u003cstring>","already_asked":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"missing_values":["US-AL","US-AK"],"readers":[{"id":"\u003cstring>","kind":"rule"}],"refresh_policy":"static","value_type":"string"}],"landed_first":{"actor":"\u003cstring>","at":"2023-11-07T05:31:56Z","bundle_hash":"\u003cstring>","source":"activation_history","action":"set_create","question_id":"\u003cstring>","section_id":"\u003cstring>"},"mdi_case_id":"\u003cstring>","prescriber_case_id":"\u003cstring>","required_role":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"missing or invalid parameters","exampleType":"generated"},"4cb409c3-c399-41b5-b24a-62e246825ffc":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem, extended with the structured compile issue list","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"code":{"description":"Present only on a refusal that shares its `type` with another condition and needs a finer name, e.g. the decision refusals `decision.bundle_intake_disagrees`, `decision.bundle_unknown`, `decision.bundle_mismatch` and `decision.bundle_unprojectable`. Branch on `type` first.","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation of this occurrence. PROSE — never parse it to discriminate a condition; use `type`.","type":"string","uniqueKey":"detail","typeLabel":"string"},"issues":{"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"},"already_asked":{"description":"Present ONLY on question.fact_already_asked and question.ask_again_alias_only, absent on every other issue. On ask_again_alias_only, `asked_as` is the other spelling the intake asks the fact under. The question (or communications consent) that already asks the fact, as data, so a consumer words the refusal from it instead of parsing `message` (prose, unchanged). `asked_by` and `asked_as` mean what they mean on QualificationAskAgain: the asking node's id, and the fact spelling it asks under (equal to the requested fact, or another spelling of the same fact). `section_id` is the section it is asked in (for a shared-shell section, the section that includes the shell); `section_title` is that section's authored title, absent when it has none. `prompt` is the words a member is shown for that node (a question's `copy.prompt`, a consent's `text_ref.headline`), absent when it carries none. Definitions only, never a member's answer.","example":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"properties":{"asked_as":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_as","typeLabel":"string"},"asked_by":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_by","typeLabel":"string"},"section_id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.section_id","typeLabel":"string"},"prompt":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.prompt","typeLabel":"string"},"section_title":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.section_title","typeLabel":"string"}},"required":["asked_by","asked_as","section_id"],"type":"object","uniqueKey":"issues.items.[INDEX].already_asked","typeLabel":"object"},"missing_values":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are a declared list of option codes, absent on every other issue. The option codes the fact can hold that the question does not offer, in catalog order; never empty.","example":["US-AL","US-AK"],"items":{"type":"string","uniqueKey":"issues.items.[INDEX].missing_values.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"issues.items.[INDEX].missing_values","typeLabel":"string[]"},"readers":{"description":"WI-INTAKE-QUESTION-EDITOR-01 acceptance 2 / Amendments 8 and 10 — present ONLY on remove.answer_has_readers and when.answer_has_readers, absent on every other issue. The reader that issue names, as data, so a consumer names it in words from the bundle content it already holds instead of parsing `message` (prose, unchanged). Those refusals carry one issue per reader, so this array holds exactly one entry; issue order is the walk's (rules in ruleset order, then conditions and displays in document order, then rule-decided facts, then the registration). `id` resolves in the served bundle content (GET /instrument-bundles/current `content`): rule → `ruleset.rules[].id` (words: `rationale`); condition → the gated node's id in `instrument.sections[].items[]` or `shells.components[].items[]` (words: a question's `copy.prompt`, a display's `content.headline`, a consent's `text_ref.headline`); display → that display node's id (same lookup); derivation → `overlay.derivations[].produces` (words: `rationale`); registration → always `prescriber_patient_registration`, which has NO bundle-resident words — the consumer words it itself (\"the prescriber's patient record\").","items":{"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].id","typeLabel":"string"},"kind":{"enum":["rule","condition","display","registration","derivation"],"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["kind","id"],"type":"object","uniqueKey":"issues.items.[INDEX].readers.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues.items.[INDEX].readers","typeLabel":"object[]"},"refresh_policy":{"description":"Present ONLY on question.ask_again_suppressed and question.ask_again_collects_blank, absent on every other issue. The fact's refresh policy as served (static, confirm_if_stale, never_prefill, or any other value the catalog holds), so a consumer can say why the ask-again would not be shown as a confirm without parsing `message`.","example":"static","type":"string","uniqueKey":"issues.items.[INDEX].refresh_policy","typeLabel":"string"},"value_type":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are NOT a declared list (free text, a number, a date), absent on every other issue. The fact's value type; no list of choices can cover it. Exactly one of `missing_values` and `value_type` rides that refusal.","example":"string","type":"string","uniqueKey":"issues.items.[INDEX].value_type","typeLabel":"string"}},"required":["code","where","message"],"type":"object","uniqueKey":"issues.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues","typeLabel":"object[]"},"landed_first":{"description":"WI-INTAKE-QUESTION-EDITOR-01 S1b (acceptance 3) — on a qualification-sets 409 set.base_hash_stale only: the change that moved the intake off the base the refused write was edited against, so the screen can say whose change landed first and when. Read from the activation history (every publish path); `source: current_pointer` means only the current version's author is known (\"most recently\", never \"first\"). Absent when nothing could be read. Operator identities and section/question codes only — never patient data.","properties":{"actor":{"description":"the verified operator identity","or clinical-boot-seed for the starting content":null,"type":"string","isRequired":true,"uniqueKey":"landed_first.actor","typeLabel":"string"},"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"landed_first.at","typeLabel":"string\u003cdate-time>"},"bundle_hash":{"type":"string","isRequired":true,"uniqueKey":"landed_first.bundle_hash","typeLabel":"string"},"source":{"enum":["activation_history","current_pointer"],"type":"string","isRequired":true,"uniqueKey":"landed_first.source","typeLabel":"enum\u003cstring>"},"action":{"enum":["set_create","set_rename","set_remove","question_add","question_edit","question_remove","question_reorder","set_move"],"type":"string","uniqueKey":"landed_first.action","typeLabel":"enum\u003cstring>"},"question_id":{"type":"string","uniqueKey":"landed_first.question_id","typeLabel":"string"},"section_id":{"type":"string","uniqueKey":"landed_first.section_id","typeLabel":"string"}},"required":["actor","at","bundle_hash","source"],"type":"object","uniqueKey":"landed_first","typeLabel":"object"},"mdi_case_id":{"deprecated":true,"description":"DEPRECATED — the former name of `prescriber_case_id`, sent alongside it with the same value while the rename completes. Read `prescriber_case_id`; this field is removed in a following release.","type":"string","uniqueKey":"mdi_case_id","typeLabel":"string"},"prescriber_case_id":{"description":"The prescriber's own reference for the case, present only when a case was created at the prescriber and the handover did not finish. Quote it when resolving the case directly with the prescriber. Absent is meaningful: it means no case was created, so there is nothing to look up. Opaque — an identifier only, never prescriber or patient text, and not patient data.","type":"string","uniqueKey":"prescriber_case_id","typeLabel":"string"},"required_role":{"description":"On a role 403 only: the least operator role that may make this write, so the refusal names the missing role. `admin` on publish.clinical_requires_admin; `staff` on write.read_only_refused.","type":"string","uniqueKey":"required_role","typeLabel":"string"},"type":{"description":"RFC 7807's machine-readable problem identifier, and the field a consumer branches on when two conditions share a status. `about:blank` where the status alone is unambiguous; otherwise a `https://purple.md/problems/\u003cslug>` URI (the estate's existing convention). DECLARED, not new at runtime — every problem this service has ever emitted carries it; the schema simply did not say so, which is what let a second 404 condition become indistinguishable to a contract reader.","type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","code":"\u003cstring>","detail":"\u003cstring>","issues":[{"code":"\u003cstring>","message":"\u003cstring>","where":"\u003cstring>","already_asked":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"missing_values":["US-AL","US-AK"],"readers":[{"id":"\u003cstring>","kind":"rule"}],"refresh_policy":"static","value_type":"string"}],"landed_first":{"actor":"\u003cstring>","at":"2023-11-07T05:31:56Z","bundle_hash":"\u003cstring>","source":"activation_history","action":"set_create","question_id":"\u003cstring>","section_id":"\u003cstring>"},"mdi_case_id":"\u003cstring>","prescriber_case_id":"\u003cstring>","required_role":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"no shared clinical bundle for that (therapy|offering, mode), or no such resource","exampleType":"generated"},"11eafaa4-4aba-43fa-85f2-4747ba34c228":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem, extended with the structured compile issue list","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"code":{"description":"Present only on a refusal that shares its `type` with another condition and needs a finer name, e.g. the decision refusals `decision.bundle_intake_disagrees`, `decision.bundle_unknown`, `decision.bundle_mismatch` and `decision.bundle_unprojectable`. Branch on `type` first.","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation of this occurrence. PROSE — never parse it to discriminate a condition; use `type`.","type":"string","uniqueKey":"detail","typeLabel":"string"},"issues":{"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"},"already_asked":{"description":"Present ONLY on question.fact_already_asked and question.ask_again_alias_only, absent on every other issue. On ask_again_alias_only, `asked_as` is the other spelling the intake asks the fact under. The question (or communications consent) that already asks the fact, as data, so a consumer words the refusal from it instead of parsing `message` (prose, unchanged). `asked_by` and `asked_as` mean what they mean on QualificationAskAgain: the asking node's id, and the fact spelling it asks under (equal to the requested fact, or another spelling of the same fact). `section_id` is the section it is asked in (for a shared-shell section, the section that includes the shell); `section_title` is that section's authored title, absent when it has none. `prompt` is the words a member is shown for that node (a question's `copy.prompt`, a consent's `text_ref.headline`), absent when it carries none. Definitions only, never a member's answer.","example":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"properties":{"asked_as":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_as","typeLabel":"string"},"asked_by":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_by","typeLabel":"string"},"section_id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.section_id","typeLabel":"string"},"prompt":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.prompt","typeLabel":"string"},"section_title":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.section_title","typeLabel":"string"}},"required":["asked_by","asked_as","section_id"],"type":"object","uniqueKey":"issues.items.[INDEX].already_asked","typeLabel":"object"},"missing_values":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are a declared list of option codes, absent on every other issue. The option codes the fact can hold that the question does not offer, in catalog order; never empty.","example":["US-AL","US-AK"],"items":{"type":"string","uniqueKey":"issues.items.[INDEX].missing_values.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"issues.items.[INDEX].missing_values","typeLabel":"string[]"},"readers":{"description":"WI-INTAKE-QUESTION-EDITOR-01 acceptance 2 / Amendments 8 and 10 — present ONLY on remove.answer_has_readers and when.answer_has_readers, absent on every other issue. The reader that issue names, as data, so a consumer names it in words from the bundle content it already holds instead of parsing `message` (prose, unchanged). Those refusals carry one issue per reader, so this array holds exactly one entry; issue order is the walk's (rules in ruleset order, then conditions and displays in document order, then rule-decided facts, then the registration). `id` resolves in the served bundle content (GET /instrument-bundles/current `content`): rule → `ruleset.rules[].id` (words: `rationale`); condition → the gated node's id in `instrument.sections[].items[]` or `shells.components[].items[]` (words: a question's `copy.prompt`, a display's `content.headline`, a consent's `text_ref.headline`); display → that display node's id (same lookup); derivation → `overlay.derivations[].produces` (words: `rationale`); registration → always `prescriber_patient_registration`, which has NO bundle-resident words — the consumer words it itself (\"the prescriber's patient record\").","items":{"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].id","typeLabel":"string"},"kind":{"enum":["rule","condition","display","registration","derivation"],"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["kind","id"],"type":"object","uniqueKey":"issues.items.[INDEX].readers.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues.items.[INDEX].readers","typeLabel":"object[]"},"refresh_policy":{"description":"Present ONLY on question.ask_again_suppressed and question.ask_again_collects_blank, absent on every other issue. The fact's refresh policy as served (static, confirm_if_stale, never_prefill, or any other value the catalog holds), so a consumer can say why the ask-again would not be shown as a confirm without parsing `message`.","example":"static","type":"string","uniqueKey":"issues.items.[INDEX].refresh_policy","typeLabel":"string"},"value_type":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are NOT a declared list (free text, a number, a date), absent on every other issue. The fact's value type; no list of choices can cover it. Exactly one of `missing_values` and `value_type` rides that refusal.","example":"string","type":"string","uniqueKey":"issues.items.[INDEX].value_type","typeLabel":"string"}},"required":["code","where","message"],"type":"object","uniqueKey":"issues.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues","typeLabel":"object[]"},"landed_first":{"description":"WI-INTAKE-QUESTION-EDITOR-01 S1b (acceptance 3) — on a qualification-sets 409 set.base_hash_stale only: the change that moved the intake off the base the refused write was edited against, so the screen can say whose change landed first and when. Read from the activation history (every publish path); `source: current_pointer` means only the current version's author is known (\"most recently\", never \"first\"). Absent when nothing could be read. Operator identities and section/question codes only — never patient data.","properties":{"actor":{"description":"the verified operator identity","or clinical-boot-seed for the starting content":null,"type":"string","isRequired":true,"uniqueKey":"landed_first.actor","typeLabel":"string"},"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"landed_first.at","typeLabel":"string\u003cdate-time>"},"bundle_hash":{"type":"string","isRequired":true,"uniqueKey":"landed_first.bundle_hash","typeLabel":"string"},"source":{"enum":["activation_history","current_pointer"],"type":"string","isRequired":true,"uniqueKey":"landed_first.source","typeLabel":"enum\u003cstring>"},"action":{"enum":["set_create","set_rename","set_remove","question_add","question_edit","question_remove","question_reorder","set_move"],"type":"string","uniqueKey":"landed_first.action","typeLabel":"enum\u003cstring>"},"question_id":{"type":"string","uniqueKey":"landed_first.question_id","typeLabel":"string"},"section_id":{"type":"string","uniqueKey":"landed_first.section_id","typeLabel":"string"}},"required":["actor","at","bundle_hash","source"],"type":"object","uniqueKey":"landed_first","typeLabel":"object"},"mdi_case_id":{"deprecated":true,"description":"DEPRECATED — the former name of `prescriber_case_id`, sent alongside it with the same value while the rename completes. Read `prescriber_case_id`; this field is removed in a following release.","type":"string","uniqueKey":"mdi_case_id","typeLabel":"string"},"prescriber_case_id":{"description":"The prescriber's own reference for the case, present only when a case was created at the prescriber and the handover did not finish. Quote it when resolving the case directly with the prescriber. Absent is meaningful: it means no case was created, so there is nothing to look up. Opaque — an identifier only, never prescriber or patient text, and not patient data.","type":"string","uniqueKey":"prescriber_case_id","typeLabel":"string"},"required_role":{"description":"On a role 403 only: the least operator role that may make this write, so the refusal names the missing role. `admin` on publish.clinical_requires_admin; `staff` on write.read_only_refused.","type":"string","uniqueKey":"required_role","typeLabel":"string"},"type":{"description":"RFC 7807's machine-readable problem identifier, and the field a consumer branches on when two conditions share a status. `about:blank` where the status alone is unambiguous; otherwise a `https://purple.md/problems/\u003cslug>` URI (the estate's existing convention). DECLARED, not new at runtime — every problem this service has ever emitted carries it; the schema simply did not say so, which is what let a second 404 condition become indistinguishable to a contract reader.","type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","code":"\u003cstring>","detail":"\u003cstring>","issues":[{"code":"\u003cstring>","message":"\u003cstring>","where":"\u003cstring>","already_asked":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"missing_values":["US-AL","US-AK"],"readers":[{"id":"\u003cstring>","kind":"rule"}],"refresh_policy":"static","value_type":"string"}],"landed_first":{"actor":"\u003cstring>","at":"2023-11-07T05:31:56Z","bundle_hash":"\u003cstring>","source":"activation_history","action":"set_create","question_id":"\u003cstring>","section_id":"\u003cstring>"},"mdi_case_id":"\u003cstring>","prescriber_case_id":"\u003cstring>","required_role":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Validation failed (422): the question does not bind a fact you may use (a shared fact open to qualification, or one your brand created), or the question set could not be compiled. The problem body says which.","exampleType":"generated"},"2dbc93d6-046a-4290-96fa-120b7c4f495d":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem, extended with the structured compile issue list","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"code":{"description":"Present only on a refusal that shares its `type` with another condition and needs a finer name, e.g. the decision refusals `decision.bundle_intake_disagrees`, `decision.bundle_unknown`, `decision.bundle_mismatch` and `decision.bundle_unprojectable`. Branch on `type` first.","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation of this occurrence. PROSE — never parse it to discriminate a condition; use `type`.","type":"string","uniqueKey":"detail","typeLabel":"string"},"issues":{"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"},"already_asked":{"description":"Present ONLY on question.fact_already_asked and question.ask_again_alias_only, absent on every other issue. On ask_again_alias_only, `asked_as` is the other spelling the intake asks the fact under. The question (or communications consent) that already asks the fact, as data, so a consumer words the refusal from it instead of parsing `message` (prose, unchanged). `asked_by` and `asked_as` mean what they mean on QualificationAskAgain: the asking node's id, and the fact spelling it asks under (equal to the requested fact, or another spelling of the same fact). `section_id` is the section it is asked in (for a shared-shell section, the section that includes the shell); `section_title` is that section's authored title, absent when it has none. `prompt` is the words a member is shown for that node (a question's `copy.prompt`, a consent's `text_ref.headline`), absent when it carries none. Definitions only, never a member's answer.","example":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"properties":{"asked_as":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_as","typeLabel":"string"},"asked_by":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.asked_by","typeLabel":"string"},"section_id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].already_asked.section_id","typeLabel":"string"},"prompt":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.prompt","typeLabel":"string"},"section_title":{"type":"string","uniqueKey":"issues.items.[INDEX].already_asked.section_title","typeLabel":"string"}},"required":["asked_by","asked_as","section_id"],"type":"object","uniqueKey":"issues.items.[INDEX].already_asked","typeLabel":"object"},"missing_values":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are a declared list of option codes, absent on every other issue. The option codes the fact can hold that the question does not offer, in catalog order; never empty.","example":["US-AL","US-AK"],"items":{"type":"string","uniqueKey":"issues.items.[INDEX].missing_values.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"issues.items.[INDEX].missing_values","typeLabel":"string[]"},"readers":{"description":"WI-INTAKE-QUESTION-EDITOR-01 acceptance 2 / Amendments 8 and 10 — present ONLY on remove.answer_has_readers and when.answer_has_readers, absent on every other issue. The reader that issue names, as data, so a consumer names it in words from the bundle content it already holds instead of parsing `message` (prose, unchanged). Those refusals carry one issue per reader, so this array holds exactly one entry; issue order is the walk's (rules in ruleset order, then conditions and displays in document order, then rule-decided facts, then the registration). `id` resolves in the served bundle content (GET /instrument-bundles/current `content`): rule → `ruleset.rules[].id` (words: `rationale`); condition → the gated node's id in `instrument.sections[].items[]` or `shells.components[].items[]` (words: a question's `copy.prompt`, a display's `content.headline`, a consent's `text_ref.headline`); display → that display node's id (same lookup); derivation → `overlay.derivations[].produces` (words: `rationale`); registration → always `prescriber_patient_registration`, which has NO bundle-resident words — the consumer words it itself (\"the prescriber's patient record\").","items":{"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].id","typeLabel":"string"},"kind":{"enum":["rule","condition","display","registration","derivation"],"type":"string","isRequired":true,"uniqueKey":"issues.items.[INDEX].readers.items.[INDEX].kind","typeLabel":"enum\u003cstring>"}},"required":["kind","id"],"type":"object","uniqueKey":"issues.items.[INDEX].readers.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues.items.[INDEX].readers","typeLabel":"object[]"},"refresh_policy":{"description":"Present ONLY on question.ask_again_suppressed and question.ask_again_collects_blank, absent on every other issue. The fact's refresh policy as served (static, confirm_if_stale, never_prefill, or any other value the catalog holds), so a consumer can say why the ask-again would not be shown as a confirm without parsing `message`.","example":"static","type":"string","uniqueKey":"issues.items.[INDEX].refresh_policy","typeLabel":"string"},"value_type":{"description":"Present ONLY on question.ask_again_options_incomplete when the fact's values are NOT a declared list (free text, a number, a date), absent on every other issue. The fact's value type; no list of choices can cover it. Exactly one of `missing_values` and `value_type` rides that refusal.","example":"string","type":"string","uniqueKey":"issues.items.[INDEX].value_type","typeLabel":"string"}},"required":["code","where","message"],"type":"object","uniqueKey":"issues.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"issues","typeLabel":"object[]"},"landed_first":{"description":"WI-INTAKE-QUESTION-EDITOR-01 S1b (acceptance 3) — on a qualification-sets 409 set.base_hash_stale only: the change that moved the intake off the base the refused write was edited against, so the screen can say whose change landed first and when. Read from the activation history (every publish path); `source: current_pointer` means only the current version's author is known (\"most recently\", never \"first\"). Absent when nothing could be read. Operator identities and section/question codes only — never patient data.","properties":{"actor":{"description":"the verified operator identity","or clinical-boot-seed for the starting content":null,"type":"string","isRequired":true,"uniqueKey":"landed_first.actor","typeLabel":"string"},"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"landed_first.at","typeLabel":"string\u003cdate-time>"},"bundle_hash":{"type":"string","isRequired":true,"uniqueKey":"landed_first.bundle_hash","typeLabel":"string"},"source":{"enum":["activation_history","current_pointer"],"type":"string","isRequired":true,"uniqueKey":"landed_first.source","typeLabel":"enum\u003cstring>"},"action":{"enum":["set_create","set_rename","set_remove","question_add","question_edit","question_remove","question_reorder","set_move"],"type":"string","uniqueKey":"landed_first.action","typeLabel":"enum\u003cstring>"},"question_id":{"type":"string","uniqueKey":"landed_first.question_id","typeLabel":"string"},"section_id":{"type":"string","uniqueKey":"landed_first.section_id","typeLabel":"string"}},"required":["actor","at","bundle_hash","source"],"type":"object","uniqueKey":"landed_first","typeLabel":"object"},"mdi_case_id":{"deprecated":true,"description":"DEPRECATED — the former name of `prescriber_case_id`, sent alongside it with the same value while the rename completes. Read `prescriber_case_id`; this field is removed in a following release.","type":"string","uniqueKey":"mdi_case_id","typeLabel":"string"},"prescriber_case_id":{"description":"The prescriber's own reference for the case, present only when a case was created at the prescriber and the handover did not finish. Quote it when resolving the case directly with the prescriber. Absent is meaningful: it means no case was created, so there is nothing to look up. Opaque — an identifier only, never prescriber or patient text, and not patient data.","type":"string","uniqueKey":"prescriber_case_id","typeLabel":"string"},"required_role":{"description":"On a role 403 only: the least operator role that may make this write, so the refusal names the missing role. `admin` on publish.clinical_requires_admin; `staff` on write.read_only_refused.","type":"string","uniqueKey":"required_role","typeLabel":"string"},"type":{"description":"RFC 7807's machine-readable problem identifier, and the field a consumer branches on when two conditions share a status. `about:blank` where the status alone is unambiguous; otherwise a `https://purple.md/problems/\u003cslug>` URI (the estate's existing convention). DECLARED, not new at runtime — every problem this service has ever emitted carries it; the schema simply did not say so, which is what let a second 404 condition become indistinguishable to a contract reader.","type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","code":"\u003cstring>","detail":"\u003cstring>","issues":[{"code":"\u003cstring>","message":"\u003cstring>","where":"\u003cstring>","already_asked":{"asked_as":"dob","asked_by":"q_dob","prompt":"What is your date of birth?","section_id":"about_you","section_title":"About you"},"missing_values":["US-AL","US-AK"],"readers":[{"id":"\u003cstring>","kind":"rule"}],"refresh_policy":"static","value_type":"string"}],"landed_first":{"actor":"\u003cstring>","at":"2023-11-07T05:31:56Z","bundle_hash":"\u003cstring>","source":"activation_history","action":"set_create","question_id":"\u003cstring>","section_id":"\u003cstring>"},"mdi_case_id":"\u003cstring>","prescriber_case_id":"\u003cstring>","required_role":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"the durable question store did not answer — nothing was written or changed; safe to retry once the store recovers","exampleType":"generated"}},"security":{"1da96809-f72f-4c86-b9f5-a76e67ecece6":{"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":"Publish an offering's qualification questions - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.793Z","originalFileLocation":"api-reference/offering-configuration/publish-an-offerings-qualification-questions.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=\"Compiles and publishes the offering\u0026#x27;s qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.\">\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=\"Publish an offering\u0026#x27;s qualification questions - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Compiles and publishes the offering\u0026#x27;s qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.\">\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/offering-configuration/publish-an-offerings-qualification-questions\">\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=Offering+configuration\u0026amp;title=Publish+an+offering%27s+qualification+questions\u0026amp;description=Compiles+and+publishes+the+offering%27s+qualification+questions+for+your+brand.+Publishing+checks+that+every+question+is+non-medical+screening+and+carries+no+cons\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=2a666aaf999d7eadec410f848029378bb30109538aef8af8bfec4e81ecbceb66\">\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=\"Publish an offering\u0026#x27;s qualification questions - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Compiles and publishes the offering\u0026#x27;s qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Offering+configuration\u0026amp;title=Publish+an+offering%27s+qualification+questions\u0026amp;description=Compiles+and+publishes+the+offering%27s+qualification+questions+for+your+brand.+Publishing+checks+that+every+question+is+non-medical+screening+and+carries+no+cons\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=2a666aaf999d7eadec410f848029378bb30109538aef8af8bfec4e81ecbceb66\">\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/offering-configuration/publish-an-offerings-qualification-questions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/offering-configuration/publish-an-offerings-qualification-questions.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/offering-configuration/publish-an-offerings-qualification-questions#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions\",\"name\":\"Publish an offering's qualification questions\",\"description\":\"Compiles and publishes the offering's qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.\",\"dateModified\":\"2026-11-12T04:48:52.793Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Offering configuration\",\"item\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publish an offering's qualification questions\",\"item\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions#apireference\",\"headline\":\"Publish an offering's qualification questions\",\"name\":\"Publish an offering's qualification questions\",\"description\":\"Compiles and publishes the offering's qualification questions for your brand. Publishing checks that every question is non-medical screening and carries no consent or medical-intake content; anything medical is rejected. It never changes the shared medical intake.\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/publish-an-offerings-qualification-questions#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.793Z\",\"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/offering-configuration/publish-an-offerings-qualification-questions.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","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","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","description":"Sets the order of the offering's questions. Send `order` — the full list of the offering's question ids in the new order.","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","description":"Removes the offering's copy of a question. The library original is unaffected.","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":"Publish an offering's qualification questions - 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"]}