Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit “no price yet”, and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering’s not_measured, and the offering itself is still listed. This read changes nothing and moves no money.
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/list-your-brands-enabled-offerings","slug":"/api-reference/offering-configuration/list-your-brands-enabled-offerings","pageMetadata":{"title":"List your brand's enabled offerings","description":"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \"no price yet\", and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering's not_measured, and the offering itself is still listed. This read changes nothing and moves no money.","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","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: \"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit “no price yet”, and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering’s not_measured, and the offering itself is still listed. This read changes nothing and moves no money.\"\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":"List your brand's enabled offerings","description":"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \"no price yet\", and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering's not_measured, and the offering itself is still listed. This read changes nothing and moves no money.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \"no price yet\", and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering's not_measured, and the offering itself is still listed. This read changes nothing and moves no money.","operationId":"listAccountBrandOfferings","parameters":["42b82b35-1da9-4fe0-8aea-e23a3584401f","ffbc59ed-82a3-4232-8ccf-e9fa636aad6f"],"responses":{"200":"dc6fdab9-94ce-4fdc-a433-7abe248186e5","401":"d8a358f4-b229-4f78-8d5e-839138f0dd7f","404":"e4e35aa6-76a3-4ee8-8d0e-075bf668c905","502":"881c2bed-eb0b-4897-aead-9638df7bc16b","503":"bfd58452-531b-4ba2-be29-908e9ea6dbc5"},"security":["79eb86c8-e96f-48cb-866c-694770136212"],"summary":"List your brand's enabled offerings","tags":["Offering configuration"],"method":"get","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/brands/{brand_id}/offerings","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"List your brand's enabled offerings","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"42b82b35-1da9-4fe0-8aea-e23a3584401f":{"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"}},"ffbc59ed-82a3-4232-8ccf-e9fa636aad6f":{"description":"the brand whose offerings to list (must match X-Brand-Id).","in":"path","name":"brand_id","required":true,"schema":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"description":"the brand whose offerings to list (must match X-Brand-Id).","uniqueKey":"","typeLabel":"string"}}},"responses":{"dc6fdab9-94ce-4fdc-a433-7abe248186e5":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"description":"One enabled offering on your brand, with what a storefront needs to show and link it. A field that could not be read right now is null and named in not_measured; null with its name absent from not_measured means the platform holds no value for it.","properties":{"display_name":{"oneOf":[{"description":"the name to show for the offering: the name your brand published for it, else the platform's name for the product. Present for an offering whose price is not set yet, too.","type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].display_name.oneOf.0","typeLabel":"string"},{"description":"the name to show for the offering: the name your brand published for it, else the platform's name for the product. Present for an offering whose price is not set yet, too.","type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].display_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].display_name","typeLabel":"string | null"},"entry_link":{"oneOf":[{"description":"the checkout link for this offering on your member portal address. A questions-first link carries `{journey_id}` where the patient's journey id goes; your storefront does not open it itself (the checkout door sends the patient there). Null when it is not available; entry_link_unavailable says why.","format":"uri","type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].entry_link.oneOf.0","typeLabel":"string\u003curi>"},{"description":"the checkout link for this offering on your member portal address. A questions-first link carries `{journey_id}` where the patient's journey id goes; your storefront does not open it itself (the checkout door sends the patient there). Null when it is not available; entry_link_unavailable says why.","format":"uri","type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].entry_link.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].entry_link","typeLabel":"string\u003curi> | null"},"entry_mode":{"oneOf":[{"description":"how a patient starts this offering: questions-first (the health questions come before payment) or checkout-first (payment first, the questions after).","enum":["questions-first","checkout-first",null],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].entry_mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"how a patient starts this offering: questions-first (the health questions come before payment) or checkout-first (payment first, the questions after).","enum":["questions-first","checkout-first",null],"type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].entry_mode.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].entry_mode","typeLabel":"enum\u003cstring> | null"},"not_measured":{"description":"the names of the fields above that could not be read right now (empty when every read answered).","items":{"enum":["display_name","therapy","therapy_key","entry_mode","entry_link","price"],"type":"string","uniqueKey":"data.items.[INDEX].not_measured.items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","isRequired":true,"uniqueKey":"data.items.[INDEX].not_measured","typeLabel":"enum\u003cstring>[]"},"offering_ref":{"description":"the offering's code — the identifier the checkout link and every offering call carry.","type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].offering_ref","typeLabel":"string"},"price":{"description":"The price shown for the offering — the same price the checkout charges, read from the same source, never computed here. status available carries the amount and its terms. no_price_yet means the price or its terms are not set up yet; no amount is given rather than a guessed one, and a checkout for it is refused. not_measured means the price could not be read right now. Amounts are whole numbers in the smallest unit of currency (cents for USD).","properties":{"status":{"enum":["available","no_price_yet","not_measured"],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].price.status","typeLabel":"enum\u003cstring>"},"amount_minor":{"description":"present exactly when status is available.","type":"integer","uniqueKey":"data.items.[INDEX].price.amount_minor","typeLabel":"integer"},"billing_frequency":{"description":"how often the amount bills; present exactly when status is available.","enum":["one_time","monthly","quarterly","semiannual","annual"],"type":"string","uniqueKey":"data.items.[INDEX].price.billing_frequency","typeLabel":"enum\u003cstring>"},"currency":{"description":"present exactly when status is available (USD only for now).","enum":["USD"],"type":"string","uniqueKey":"data.items.[INDEX].price.currency","typeLabel":"enum\u003cstring>"},"renewal_interval_days":{"description":"how many days apart it bills, when the schedule follows the medication's supply.","minimum":1,"type":"integer","uniqueKey":"data.items.[INDEX].price.renewal_interval_days","typeLabel":"integer"},"shipping_frequency":{"description":"how often it ships, when the schedule is one of these values.","enum":["none","weekly","biweekly","monthly","quarterly"],"type":"string","uniqueKey":"data.items.[INDEX].price.shipping_frequency","typeLabel":"enum\u003cstring>"},"shipping_interval_days":{"description":"how many days apart it ships, when the schedule follows the medication's supply.","minimum":1,"type":"integer","uniqueKey":"data.items.[INDEX].price.shipping_interval_days","typeLabel":"integer"}},"required":["status"],"type":"object","isRequired":true,"uniqueKey":"data.items.[INDEX].price","typeLabel":"object"},"readiness":{"description":"Whether the offering can be sold yet, exactly as the catalog reports it: status (enabled_pending_activation or active), the lifecycle (live, setting_up or paused) when the catalog has one, and the activation checks behind the status.","properties":{"checks":{"items":{"description":"One row of the activation report. kind=performed carries a definitive result; kind=unverifiable means the check's source was unconfigured or unreachable, so activation is withheld rather than assumed; kind=named_pending names a check that is not yet ruled on (never fabricated, and never silently blocking).","properties":{"check":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness.checks.items.[INDEX].check","typeLabel":"string"},"detail":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness.checks.items.[INDEX].detail","typeLabel":"string"},"kind":{"enum":["performed","unverifiable","named_pending"],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness.checks.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"blocking":{"description":"present exactly when kind=named_pending","type":"boolean","uniqueKey":"data.items.[INDEX].readiness.checks.items.[INDEX].blocking","typeLabel":"boolean"},"result":{"description":"present exactly when kind=performed","enum":["pass","fail"],"type":"string","uniqueKey":"data.items.[INDEX].readiness.checks.items.[INDEX].result","typeLabel":"enum\u003cstring>"}},"required":["check","kind","detail"],"type":"object","uniqueKey":"data.items.[INDEX].readiness.checks.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness.checks","typeLabel":"object[]"},"status":{"enum":["enabled_pending_activation","active"],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness.status","typeLabel":"enum\u003cstring>"},"lifecycle":{"properties":{"status":{"enum":["live","setting_up","paused"],"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness.lifecycle.status","typeLabel":"enum\u003cstring>"},"live_since":{"format":"date-time","type":"string","uniqueKey":"data.items.[INDEX].readiness.lifecycle.live_since","typeLabel":"string\u003cdate-time>"},"pause_reasons":{"items":{"type":"string","uniqueKey":"data.items.[INDEX].readiness.lifecycle.pause_reasons.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.items.[INDEX].readiness.lifecycle.pause_reasons","typeLabel":"string[]"},"paused_at":{"format":"date-time","type":"string","uniqueKey":"data.items.[INDEX].readiness.lifecycle.paused_at","typeLabel":"string\u003cdate-time>"}},"required":["status"],"type":"object","uniqueKey":"data.items.[INDEX].readiness.lifecycle","typeLabel":"object"}},"required":["status","checks"],"type":"object","isRequired":true,"uniqueKey":"data.items.[INDEX].readiness","typeLabel":"object"},"sku_id":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].sku_id","typeLabel":"string"},"therapy":{"oneOf":[{"description":"the offering's therapy as the catalog names it (for grouping and placement).","type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].therapy.oneOf.0","typeLabel":"string"},{"description":"the offering's therapy as the catalog names it (for grouping and placement).","type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].therapy.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].therapy","typeLabel":"string | null"},"therapy_key":{"oneOf":[{"description":"the therapy key a checkout-first link carries. Null when the catalog maps no key for the offering's therapy; a checkout-first link is then not available.","type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].therapy_key.oneOf.0","typeLabel":"string"},{"description":"the therapy key a checkout-first link carries. Null when the catalog maps no key for the offering's therapy; a checkout-first link is then not available.","type":"null","isRequired":true,"uniqueKey":"data.items.[INDEX].therapy_key.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.items.[INDEX].therapy_key","typeLabel":"string | null"},"display_name_source":{"description":"whose name display_name is; omitted when display_name is null.","enum":["brand","platform"],"type":"string","uniqueKey":"data.items.[INDEX].display_name_source","typeLabel":"enum\u003cstring>"},"entry_link_unavailable":{"description":"present exactly when entry_link is null: no_member_address (your brand has no active member portal address yet), no_therapy_key (a checkout-first link needs a therapy key the catalog does not map), offering_id_not_accepted (the sku_id is not one the checkout accepts), or not_measured (a part the link depends on could not be read right now).","enum":["no_member_address","no_therapy_key","offering_id_not_accepted","not_measured"],"type":"string","uniqueKey":"data.items.[INDEX].entry_link_unavailable","typeLabel":"enum\u003cstring>"}},"required":["offering_ref","sku_id","display_name","therapy","therapy_key","entry_mode","entry_link","price","readiness","not_measured"],"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":[{"display_name":"\u003cstring>","entry_link":"\u003cstring>","entry_mode":"questions-first","not_measured":["display_name"],"offering_ref":"\u003cstring>","price":{"status":"available","amount_minor":123,"billing_frequency":"one_time","currency":"USD","renewal_interval_days":2,"shipping_frequency":"none","shipping_interval_days":2},"readiness":{"checks":[{"check":"\u003cstring>","detail":"\u003cstring>","kind":"performed","blocking":true,"result":"pass"}],"status":"enabled_pending_activation","lifecycle":{"status":"live","live_since":"2023-11-07T05:31:56Z","pause_reasons":["\u003cstring>"],"paused_at":"2023-11-07T05:31:56Z"}},"sku_id":"\u003cstring>","therapy":"\u003cstring>","therapy_key":"\u003cstring>","display_name_source":"brand","entry_link_unavailable":"no_member_address"}]}}},"exampleType":"generated"}},"description":"the brand's enabled offerings, in the catalog's order; an empty list when there are none","exampleType":"generated"},"d8a358f4-b229-4f78-8d5e-839138f0dd7f":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Missing, unknown or revoked API key. The body is the same in every case.","exampleType":"generated"},"e4e35aa6-76a3-4ee8-8d0e-075bf668c905":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"unknown or foreign brand (identical for both — 404, never 403; no cross-tenant existence leak)","exampleType":"generated"},"881c2bed-eb0b-4897-aead-9638df7bc16b":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"the catalog service is temporarily unavailable (nothing listed; retryable)","exampleType":"generated"},"bfd58452-531b-4ba2-be29-908e9ea6dbc5":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json error body.","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"format":"uri-reference","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string\u003curi-reference>"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["type","title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","type":"\u003cstring>","detail":"\u003cstring>"}}},"exampleType":"generated"}},"description":"the platform could not reach the catalog right now (nothing listed; retryable)","exampleType":"generated"}},"security":{"79eb86c8-e96f-48cb-866c-694770136212":{"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":"List your brand's enabled offerings - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.615Z","originalFileLocation":"api-reference/offering-configuration/list-your-brands-enabled-offerings.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=\"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \u0026quot;no price yet\u0026quot;, and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering\u0026#x27;s not_measured, and the offering itself is still listed. This read changes nothing and moves no money.\">\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=\"List your brand\u0026#x27;s enabled offerings - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \u0026quot;no price yet\u0026quot;, and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering\u0026#x27;s not_measured, and the offering itself is still listed. This read changes nothing and moves no money.\">\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/list-your-brands-enabled-offerings\">\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=List+your+brand%27s+enabled+offerings\u0026amp;description=Lists+every+offering+enabled+for+YOUR+brand%2C+with+what+a+storefront+needs+to+show+and+link+each+one%3A+its+name%2C+its+sku_id%2C+its+therapy%2C+its+entry+mode+%28question\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=c0f1e8b7c00474226784f86a6474acb39e1f0737ab50d8e94b0d8bd1177518df\">\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=\"List your brand\u0026#x27;s enabled offerings - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \u0026quot;no price yet\u0026quot;, and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering\u0026#x27;s not_measured, and the offering itself is still listed. This read changes nothing and moves no money.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Offering+configuration\u0026amp;title=List+your+brand%27s+enabled+offerings\u0026amp;description=Lists+every+offering+enabled+for+YOUR+brand%2C+with+what+a+storefront+needs+to+show+and+link+each+one%3A+its+name%2C+its+sku_id%2C+its+therapy%2C+its+entry+mode+%28question\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=c0f1e8b7c00474226784f86a6474acb39e1f0737ab50d8e94b0d8bd1177518df\">\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/list-your-brands-enabled-offerings\">\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/list-your-brands-enabled-offerings.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/list-your-brands-enabled-offerings#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings\",\"name\":\"List your brand's enabled offerings\",\"description\":\"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \\\"no price yet\\\", and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering's not_measured, and the offering itself is still listed. This read changes nothing and moves no money.\",\"dateModified\":\"2026-11-12T04:48:52.615Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Purple Label MD\",\"item\":\"https://docs.purplelabelmd.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List your brand's enabled offerings\",\"item\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings#apireference\",\"headline\":\"List your brand's enabled offerings\",\"name\":\"List your brand's enabled offerings\",\"description\":\"Lists every offering enabled for YOUR brand, with what a storefront needs to show and link each one: its name, its sku_id, its therapy, its entry mode (questions-first or checkout-first), its checkout link, the price shown for it or an explicit \\\"no price yet\\\", and its readiness. Use your own API key. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403, exactly as enabling an offering does). A brand with no enabled offerings answers 200 with an empty list, never an error. Each field is read from the part of the platform that owns it, never recomputed here; when a part could not be read, the field is null and its name is listed in that offering's not_measured, and the offering itself is still listed. This read changes nothing and moves no money.\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/list-your-brands-enabled-offerings#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.615Z\",\"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/list-your-brands-enabled-offerings.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","description":"Verifies the CNAME you added and advances the domain toward serving: a login domain proceeds through certificate issuance to active; a member-portal domain stops at the certificate-request state — the serving activation itself (certificate attach + host routing, cert_issued → active) is performed by the platform operator once your certificate is issued, never by this call. Call this once you have added the CNAME record from the register step. If verification or the certificate is not ready yet the row stays where it is and a retryable 409 is returned. Idempotent at (or past) the state this call drives to. The brand is the one your key owns (path brand_id must match your X-Brand-Id).","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","description":"Enables an offering for YOUR brand using your own API key — records the intent \"enable offering Y for my brand\" and answers with the enablement and its computed activation report. The brand is the one your key owns (resolved from X-Brand-Id); the brand_id in the path must match it (any mismatch, foreign, or unknown brand answers 404, never 403 — no cross-tenant existence leak). The offering_ref must already exist in the canonical catalog: an unknown offering is 404, never auto-created (nothing invented, nothing derived from the SKU code). Idempotency-Key is carried through — replay of the same request returns the original result. This is enablement configuration, NOT a price path (no money moves; pricing self-serve is a separate surface).","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/offerings","href":"/api-reference/offering-configuration/enable-an-offering-for-your-brand"},{"title":"Choose the billing cadence of an offering on your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/offerings/{offering_ref}/billing-cadence","href":"/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand"},{"title":"Set your brand's price for an offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/brands/{brand_id}/pricing","href":"/api-reference/offering-configuration/set-your-brands-price-for-an-offering"},{"title":"Adopt the starter merchandising pack for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/brands/{brand_id}/starter-merchandising","href":"/api-reference/offering-configuration/adopt-the-starter-merchandising-pack-for-your-brand"},{"title":"Read an offering's composed qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/offerings/{offering_ref}/qualification","href":"/api-reference/offering-configuration/read-an-offerings-composed-qualification-questions"},{"title":"Add a library question to an offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification","href":"/api-reference/offering-configuration/add-a-library-question-to-an-offering"},{"title":"Reorder an offering's qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/offerings/{offering_ref}/qualification/order","href":"/api-reference/offering-configuration/reorder-an-offerings-qualification-questions"},{"title":"Publish an offering's qualification questions","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/offerings/{offering_ref}/qualification/publish","href":"/api-reference/offering-configuration/publish-an-offerings-qualification-questions"},{"title":"Remove an offering's qualification question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/offerings/{offering_ref}/qualification/questions/{question_id}","href":"/api-reference/offering-configuration/remove-an-offerings-qualification-question"},{"title":"Edit an offering's qualification question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/account/offerings/{offering_ref}/qualification/questions/{question_id}","href":"/api-reference/offering-configuration/edit-an-offerings-qualification-question"},{"title":"Set the display name and presentation copy for your offering","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json put /v1/account/offerings/{ref}/merchandising","href":"/api-reference/offering-configuration/set-the-display-name-and-presentation-copy-for-your-offering"},{"title":"List the facts a qualification question may bind","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/question-library/facts","href":"/api-reference/offering-configuration/list-the-facts-a-qualification-question-may-bind"},{"title":"Create a new screening fact for your brand","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/question-library/minted-facts","href":"/api-reference/offering-configuration/create-a-new-screening-fact-for-your-brand"},{"title":"List your brand's qualification question library","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/question-library/questions","href":"/api-reference/offering-configuration/list-your-brands-qualification-question-library"},{"title":"Create a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/account/question-library/questions","href":"/api-reference/offering-configuration/create-a-qualification-library-question"},{"title":"Delete a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/account/question-library/questions/{question_id}","href":"/api-reference/offering-configuration/delete-a-qualification-library-question"},{"title":"Edit a qualification library question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/account/question-library/questions/{question_id}","href":"/api-reference/offering-configuration/edit-a-qualification-library-question"}]},{"group":"Onboarding","pages":[{"title":"Check whether your brand is ready to sell","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/readiness","href":"/api-reference/onboarding/check-whether-your-brand-is-ready-to-sell"},{"title":"Read one offering's price and whether your brand can sell it","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/brands/{brand_id}/storefront","href":"/api-reference/onboarding/read-one-offerings-price-and-whether-your-brand-can-sell-it"},{"title":"Read a client's onboarding progress","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/onboardings/{onboarding_id}/progress","href":"/api-reference/onboarding/read-a-clients-onboarding-progress"}]},{"group":"Payments","pages":[{"title":"List your orders across all your brands","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/orders","href":"/api-reference/payments/list-your-orders-across-all-your-brands"},{"title":"Read one of your orders by reference","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/account/orders/{order_ref}","href":"/api-reference/payments/read-one-of-your-orders-by-reference"},{"title":"Start a checkout session and get a token to collect payment","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/payments/checkout-sessions","href":"/api-reference/payments/start-a-checkout-session-and-get-a-token-to-collect-payment"},{"title":"Read the payment status of an order","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/payments/{order_ref}/status","href":"/api-reference/payments/read-the-payment-status-of-an-order"}]},{"group":"Sessions \u0026 authentication","pages":[{"title":"Complete login and start the patient session","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/callback","href":"/api-reference/sessions-\u0026-authentication/complete-login-and-start-the-patient-session"},{"title":"Begin Universal Login and redirect to the login page","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/login","href":"/api-reference/sessions-\u0026-authentication/begin-universal-login-and-redirect-to-the-login-page"},{"title":"Log out and end the patient's session","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/auth/logout","href":"/api-reference/sessions-\u0026-authentication/log-out-and-end-the-patients-session"}]},{"group":"Intake","pages":[{"title":"Record that your patient dropped off the questionnaire","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/instrument/abandon","href":"/api-reference/intake/record-that-your-patient-dropped-off-the-questionnaire"},{"title":"Submit an answer and get the next question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/instrument/next","href":"/api-reference/intake/submit-an-answer-and-get-the-next-question"},{"title":"Start an intake session and get the first question","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/resolve","href":"/api-reference/intake/start-an-intake-session-and-get-the-first-question"}]},{"group":"Addresses","pages":[{"title":"Resolve a selected address suggestion to a full address","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/address/retrieve","href":"/api-reference/addresses/resolve-a-selected-address-suggestion-to-a-full-address"},{"title":"Suggest addresses as your patient types","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/instrument/address/suggest","href":"/api-reference/addresses/suggest-addresses-as-your-patient-types"}]},{"group":"Enrollment","pages":[{"title":"Read a patient's public enrollment status","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/journeys/{journey_id}/status","href":"/api-reference/enrollment/read-a-patients-public-enrollment-status"}]},{"group":"Webhooks","pages":[{"title":"List the webhook event types you can subscribe to","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/event-types","href":"/api-reference/webhooks/list-the-webhook-event-types-you-can-subscribe-to"},{"title":"List your webhook registrations","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/registrations","href":"/api-reference/webhooks/list-your-webhook-registrations"},{"title":"Register a webhook endpoint (signing secret shown once)","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/webhooks/registrations","href":"/api-reference/webhooks/register-a-webhook-endpoint-signing-secret-shown-once"},{"title":"Read one of your webhook registrations","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json get /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/read-one-of-your-webhook-registrations"},{"title":"Delete a webhook registration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json delete /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/delete-a-webhook-registration"},{"title":"Update a registration's URL, events, or enabled flag","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json patch /v1/webhooks/registrations/{registration_id}","href":"/api-reference/webhooks/update-a-registrations-url-events-or-enabled-flag"},{"title":"Send a test event to a registration","deprecated":null,"version":null,"openapi":"/openapi/public-openapi.json post /v1/webhooks/registrations/{registration_id}/test","href":"/api-reference/webhooks/send-a-test-event-to-a-registration"}]}]}]},"basePath":"","title":"List your brand's enabled offerings - 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"]}