Read an offering's composed qualification questions
Returns the offering’s qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.
GET
/
v1
/
account
/
offerings
/
{offering_ref}
/
qualification
Read an offering's composed qualification questions
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/read-an-offerings-composed-qualification-questions","slug":"/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions","pageMetadata":{"title":"Read an offering's composed qualification questions","description":"Returns the offering's qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.","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","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: \"Returns the offering’s qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.\"\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":"Read an offering's composed qualification questions","description":"Returns the offering's qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Returns the offering's qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.","operationId":"getQualificationOverlay","parameters":["1d951c87-95ef-405c-aa5d-5f4f72846bf8","50db8af7-97c3-43b3-ac27-2ea3348b536d","f079312d-1c29-4c9c-93d7-46ca7f1dafd7"],"responses":{"200":"2b0bb688-893b-4f76-8b1d-c921ffe06fa5","400":"e80af9f8-7fc1-4506-91e1-114f2a87c101","404":"56b4bce6-1270-4255-8746-f95ffe920044","503":"4d0d8a3d-caca-49f7-bd93-05ec38644480"},"security":["46c3ba63-834b-48bc-b9f0-f1cba30b4156"],"summary":"Read an offering's composed qualification questions","tags":["Offering configuration"],"method":"get","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/offerings/{offering_ref}/qualification","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"Read an offering's composed qualification questions","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"1d951c87-95ef-405c-aa5d-5f4f72846bf8":{"in":"path","name":"offering_ref","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"50db8af7-97c3-43b3-ac27-2ea3348b536d":{"in":"query","name":"mode","required":true,"schema":{"enum":["initial","refill"],"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"enum\u003cstring>"}},"f079312d-1c29-4c9c-93d7-46ca7f1dafd7":{"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"}}},"responses":{"2b0bb688-893b-4f76-8b1d-c921ffe06fa5":{"content":{"application/json":{"schema":{"description":"the offering's questions under `data`, in the order a patient will meet them","properties":{"data":{"items":{"description":"A client-authored screening question — a library definition or an offering-local copy. It binds a fact by its stable code (the code must resolve in your authoring fact catalog) and a display control, and carries your own wording. Copy and option labels are yours to author.","properties":{"control":{"enum":["single_select_cards","multi_select_cards","scale","number","number_pair","date","text","long_text","file_capture","address","phone","email","search_select"],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].control","typeLabel":"enum\u003cstring>"},"fact":{"description":"the stable code of the catalog fact this question collects (must resolve)","type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].fact","typeLabel":"string"},"id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].id","typeLabel":"string"},"copy":{"additionalProperties":{"type":"string","uniqueKey":"data.items.[INDEX].copy.additionalProperties","typeLabel":"string"},"description":"your display copy (the question prompt rides the `prompt` slot)","type":"object","uniqueKey":"data.items.[INDEX].copy","typeLabel":"object"},"option_labels":{"additionalProperties":{"type":"string","uniqueKey":"data.items.[INDEX].option_labels.additionalProperties","typeLabel":"string"},"description":"your per-option labels, keyed by option code (labels never bind logic)","type":"object","uniqueKey":"data.items.[INDEX].option_labels","typeLabel":"object"},"options":{"description":"stable option codes offered as answers — a subset of the bound fact's own codes","items":{"type":"string","uniqueKey":"data.items.[INDEX].options.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.items.[INDEX].options","typeLabel":"string[]"},"required":{"type":"boolean","uniqueKey":"data.items.[INDEX].required","typeLabel":"boolean"},"when":{"type":"object","description":"an optional condition — show this question only when an earlier screening answer calls for it (for example, ask \"how long have you used one?\" only after \"have you used one?\" is yes). A condition may use only facts collected by questions shown EARLIER in this offering; never a medical-intake answer or another brand's fact. When the condition is not met the question is skipped; with no condition the question is always shown. Accepted and validated at authoring now; conditional serving activates in a coming release (see the changelog).","required":["kind"],"properties":{"kind":{"description":"the kind of condition node (comparison, presence check, boolean combination, or if/else)","enum":["compare","null","bool","cond"],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].when.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":true,"uniqueKey":"data.items.[INDEX].when","typeLabel":"object"}},"required":["id","fact","control"],"type":"object","uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"data","typeLabel":"object[]"}},"required":["data"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":[{"control":"single_select_cards","fact":"\u003cstring>","id":"\u003cstring>","copy":{},"option_labels":{},"options":["\u003cstring>"],"required":true,"when":{"kind":"compare"}}]}}},"exampleType":"generated"}},"description":"the composed qualification overlay for the offering","exampleType":"generated"},"e80af9f8-7fc1-4506-91e1-114f2a87c101":{"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"},"56b4bce6-1270-4255-8746-f95ffe920044":{"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"},"4d0d8a3d-caca-49f7-bd93-05ec38644480":{"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":{"46c3ba63-834b-48bc-b9f0-f1cba30b4156":{"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":"Read an offering's composed qualification questions - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.734Z","originalFileLocation":"api-reference/offering-configuration/read-an-offerings-composed-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=\"Returns the offering\u0026#x27;s qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.\">\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=\"Read an offering\u0026#x27;s composed qualification questions - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the offering\u0026#x27;s qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.\">\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/read-an-offerings-composed-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=Read+an+offering%27s+composed+qualification+questions\u0026amp;description=Returns+the+offering%27s+qualification+questions+in+order%2C+with+non-blocking+notes+where+a+question+overlaps+one+the+medical+intake+also+collects+%28the+patient+ans\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=3f4ea6bbfda4da38126f9bc1dce8dea527c812602bd1272788889494a73909d7\">\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=\"Read an offering\u0026#x27;s composed qualification questions - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the offering\u0026#x27;s qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Offering+configuration\u0026amp;title=Read+an+offering%27s+composed+qualification+questions\u0026amp;description=Returns+the+offering%27s+qualification+questions+in+order%2C+with+non-blocking+notes+where+a+question+overlaps+one+the+medical+intake+also+collects+%28the+patient+ans\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=3f4ea6bbfda4da38126f9bc1dce8dea527c812602bd1272788889494a73909d7\">\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/read-an-offerings-composed-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/read-an-offerings-composed-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/read-an-offerings-composed-qualification-questions#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions\",\"name\":\"Read an offering's composed qualification questions\",\"description\":\"Returns the offering's qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.\",\"dateModified\":\"2026-11-12T04:48:52.734Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-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\":\"Read an offering's composed qualification questions\",\"item\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions#apireference\",\"headline\":\"Read an offering's composed qualification questions\",\"name\":\"Read an offering's composed qualification questions\",\"description\":\"Returns the offering's qualification questions in order, with non-blocking notes where a question overlaps one the medical intake also collects (the patient answers it once). The storefront kit renders this before checkout.\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.734Z\",\"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/read-an-offerings-composed-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","description":"Adopts the starter merchandising pack for one of your brands in a single call. For every offering enabled on the brand that has no merchandising yet, this writes the pack's template copy — a starting display name, description, and included-items bullets — as your brand's own merchandising, exactly as if you had written it yourself. Where the pack has clinically-approved copy for that specific offering, you get that copy; otherwise you get the compliance-safe copy for the offering's therapy class. Offerings you have already merchandised are never touched (they are listed in the response as skipped), and offerings the pack has no template for are listed as skipped too. Send the pack version stated in your welcome pack; the response returns the pack's content hash so you can verify you adopted exactly the templates you reviewed. Adoption is optional and repeatable: calling again adopts nothing new, and repeating a completed request with the same Idempotency-Key returns the original result. Every adopted offering is recorded in your brand's audit trail, attributed to your account. You can adopt only for brands that belong to your account.","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","description":"Adds a library question to the offering as a clean, editable copy. Editing that copy never changes the library original or another offering's copy. Adding a question that duplicates a fact already on the offering still succeeds — the response carries a warning, and nothing is blocked. No mode is sent; the platform resolves the offering's intake itself.","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":"Read an offering's composed 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"]}