Choose the billing cadence of an offering on your brand
Chooses how members are billed for one offering on one of your brands: monthly (a charge every month of the medication’s supply) or upfront (one charge for the whole term). Only a cadence that is compatible with the offering’s supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering’s supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand’s audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.
PUT
/
v1
/
account
/
brands
/
{brand_id}
/
offerings
/
{offering_ref}
/
billing-cadence
Choose the billing cadence of an offering on your brand
Required on every mutation. Replaying the same request with the same key returns the original result; reusing the key with a materially different request is rejected 409 with machine code IDEMPOTENCY_CONFLICT.
Your brand id (brd_...). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with 400, and an unknown or foreign brand with 404.
The billing cadence you choose for the offering. Nothing else rides the body: the shipping cadence always follows the offering's supply, and the brand and offering come from the path.
The billing cadence now set for the offering, and the shipping cadence it follows.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Purple Label MD","description":"Public API reference for building a patient storefront on the platform. Generated from the platform's own API contracts, and matches the newest staging release.","colors":{"primary":"#6D28D9","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/light.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=3c0569e3f76e49e04d232187908c2e2e","dark":"https://mintcdn.com/purplelabelmd/1P9p4n7lsNL4z3Jc/logo/dark.svg?fit=max\u0026auto=format\u0026n=1P9p4n7lsNL4z3Jc\u0026q=85\u0026s=c11f42bb461c28528be896c7c1a80efa"},"favicon":"https://mintcdn.com/purplelabelmd/MUdvgTlYoCGY54e8/favicon.svg?fit=max\u0026auto=format\u0026n=MUdvgTlYoCGY54e8\u0026q=85\u0026s=3bd633ab20ff170e0ebebec0406e6972","footer":{"socials":{}},"fonts":{"heading":{"family":"Geist"},"body":{"family":"Geist"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"purplelabelmd","hasAudioNarration":false,"actualSubdomain":"purplelabelmd","customDomains":["docs.purplelabelmd.com"],"gitSource":{"type":"github","owner":"purple-label-md","repo":"purple-doc","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af545312fc9183f3253a260","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API reference","count":50},{"language":"default","tag":"Guides","count":21},{"language":"default","tag":"Offering configuration","count":18},{"language":"default","tag":"Integrate","count":16},{"language":"default","tag":"Brand configuration","count":9},{"language":"default","tag":"Webhooks","count":7},{"language":"default","tag":"Payments","count":4},{"language":"default","tag":"Intake","count":3},{"language":"default","tag":"Onboarding","count":3},{"language":"default","tag":"Sessions \u0026 authentication","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"@media (prefers-reduced-motion: no-preference){.plmd-logo{transform-origin:center;transition:transform 0.12s ease}.plmd-logo .plmd-mark path{transform-box:fill-box;transform-origin:center}.plmd-logo-link:active .plmd-logo{transform:scale(0.85)}.plmd-logo-link:hover .plmd-logo .plmd-mark path:last-child{animation:plmd-carrot-hop 0.55s ease}.plmd-logo-link:hover .plmd-logo .plmd-mark path:nth-child(-n+6){animation:plmd-carrot-twinkle 0.5s ease}.plmd-logo-link:hover .plmd-logo .plmd-mark path:nth-child(even){animation-delay:0.08s}}@keyframes plmd-carrot-hop{0%{transform:translateY(0) rotate(0)}30%{transform:translateY(-14%) rotate(-9deg)}55%{transform:translateY(0) rotate(6deg)}78%{transform:translateY(-5%) rotate(-2deg)}100%{transform:translateY(0) rotate(0)}}@keyframes plmd-carrot-twinkle{0%,100%{transform:scale(1);opacity:1}45%{transform:scale(1.6);opacity:0.7}}"}],"page":{"pagePath":"api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand","slug":"/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand","pageMetadata":{"title":"Choose the billing cadence of an offering on your brand","description":"Chooses how members are billed for one offering on one of your brands: `monthly` (a charge every month of the medication's supply) or `upfront` (one charge for the whole term). Only a cadence that is compatible with the offering's supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering's supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand's audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.","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","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Chooses how members are billed for one offering on one of your brands: \", _jsx(_components.code, {\n children: \"monthly\"\n }), \" (a charge every month of the medication’s supply) or \", _jsx(_components.code, {\n children: \"upfront\"\n }), \" (one charge for the whole term). Only a cadence that is compatible with the offering’s supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering’s supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand’s audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.\"]\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":"Choose the billing cadence of an offering on your brand","description":"Chooses how members are billed for one offering on one of your brands: `monthly` (a charge every month of the medication's supply) or `upfront` (one charge for the whole term). Only a cadence that is compatible with the offering's supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering's supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand's audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.","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","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/purplelabelmd/3b4d4a495cd0c48d/brand.js"],"openApiReferenceData":{"operation":{"description":"Chooses how members are billed for one offering on one of your brands: `monthly` (a charge every month of the medication's supply) or `upfront` (one charge for the whole term). Only a cadence that is compatible with the offering's supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering's supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand's audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.","operationId":"setOwnBillingCadence","parameters":["36792ad1-990c-4023-8316-9c23ef5b71ce","a9face21-227f-4af6-a906-01555f082ec1","30374d1a-0e8f-4389-b51b-f935b89582ab","adcb1305-9c26-4fb0-8b6a-b5c170019831"],"requestBody":"43d1efa3-420a-4112-b177-5649604f0c42","responses":{"200":"e6797016-936e-461c-974b-d6e4c0e14e0c","400":"a34c32d3-f8f6-4f07-88c6-3eae05d1a4f9","401":"f2e2347c-9b50-47e1-8de0-f14124293b7a","404":"df325073-675c-45e6-8900-f346cee98bb8","409":"a10a07d5-932f-4885-9619-a8e1b031e0ca","422":"c4277fc8-8ba2-4863-8e31-b2ed26809b45","501":"23cd3a1f-f19b-4bf3-a825-46211ac5092f","503":"358dbc3e-d1a8-4157-b236-9f6c7a968554"},"security":["10f12e80-3b2d-48f7-a46e-3b80a06ae215"],"summary":"Choose the billing cadence of an offering on your brand","tags":["Offering configuration"],"method":"put","type":"path","servers":["76f2c082-b62c-4aea-a087-a046f1378296"],"path":"/v1/account/brands/{brand_id}/offerings/{offering_ref}/billing-cadence","baseUrlOptions":["https://api.staging.purplelabelmd.com"],"title":"Choose the billing cadence of an offering on your brand","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"36792ad1-990c-4023-8316-9c23ef5b71ce":{"description":"The brand the offering is enabled on. Must be one of your account's own brands.","in":"path","name":"brand_id","required":true,"schema":{"type":"string","isRequired":true,"description":"The brand the offering is enabled on. Must be one of your account's own brands.","uniqueKey":"","typeLabel":"string"}},"a9face21-227f-4af6-a906-01555f082ec1":{"description":"The offering code, as listed for your brand.","in":"path","name":"offering_ref","required":true,"schema":{"type":"string","isRequired":true,"description":"The offering code, as listed for your brand.","uniqueKey":"","typeLabel":"string"}},"30374d1a-0e8f-4389-b51b-f935b89582ab":{"description":"Required on every mutation. Replaying the same request with the same key returns the original result; reusing the key with a materially different request is rejected 409 with machine code IDEMPOTENCY_CONFLICT.","in":"header","name":"Idempotency-Key","required":true,"schema":{"minLength":1,"type":"string","isRequired":true,"description":"Required on every mutation. Replaying the same request with the same key returns the original result; reusing the key with a materially different request is rejected 409 with machine code IDEMPOTENCY_CONFLICT.","uniqueKey":"","typeLabel":"string"}},"adcb1305-9c26-4fb0-8b6a-b5c170019831":{"description":"Your brand id (`brd_...`). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with `400`, and an unknown or foreign brand with `404`.","in":"header","name":"X-Brand-Id","required":true,"schema":{"pattern":"^brd_[A-Za-z0-9][A-Za-z0-9_-]*$","type":"string","isRequired":true,"description":"Your brand id (`brd_...`). It must be one of the brands your API key's account owns; with a publishable key it must be the one brand the key was issued for. A missing or malformed value is refused with `400`, and an unknown or foreign brand with `404`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"description":"The billing cadence you choose for the offering. Nothing else rides the body: the shipping cadence always follows the offering's supply, and the brand and offering come from the path.","properties":{"billing":{"description":"`monthly` charges every month of the medication's supply; `upfront` charges once for the whole term.","enum":["monthly","upfront"],"type":"string","isRequired":true,"uniqueKey":"billing","typeLabel":"enum\u003cstring>"}},"required":["billing"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"e6797016-936e-461c-974b-d6e4c0e14e0c":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"The billing cadence now set for the offering, and the shipping cadence it follows.","properties":{"billing":{"enum":["monthly","upfront"],"type":"string","isRequired":true,"uniqueKey":"data.billing","typeLabel":"enum\u003cstring>"},"billing_frequency":{"description":"how often a member is charged","enum":["monthly","quarterly","semiannual","annual"],"type":"string","isRequired":true,"uniqueKey":"data.billing_frequency","typeLabel":"enum\u003cstring>"},"brand_id":{"type":"string","isRequired":true,"uniqueKey":"data.brand_id","typeLabel":"string"},"offering_ref":{"type":"string","isRequired":true,"uniqueKey":"data.offering_ref","typeLabel":"string"},"shipping_frequency":{"description":"how often the offering ships, when its supply matches one of these exactly","enum":["none","weekly","biweekly","monthly","quarterly"],"type":"string","uniqueKey":"data.shipping_frequency","typeLabel":"enum\u003cstring>"},"shipping_interval_days":{"description":"days between shipments (the supply's days), when the offering ships on a schedule","type":"integer","uniqueKey":"data.shipping_interval_days","typeLabel":"integer"}},"required":["brand_id","offering_ref","billing","billing_frequency"],"type":"object","uniqueKey":"data","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"billing":"monthly","billing_frequency":"monthly","brand_id":"\u003cstring>","offering_ref":"\u003cstring>","shipping_frequency":"none","shipping_interval_days":123}}}},"exampleType":"generated"}},"description":"the billing cadence you chose, with the shipping cadence it follows; or an idempotent replay of the original result","exampleType":"generated"},"a34c32d3-f8f6-4f07-88c6-3eae05d1a4f9":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"missing Idempotency-Key, or a malformed body (billing must be monthly or upfront, and nothing else may be sent)","exampleType":"generated"},"f2e2347c-9b50-47e1-8de0-f14124293b7a":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"No verified service identity for this request. Absent, malformed, forged, expired, wrong issuer/audience/alg, an unlisted caller, a missing platform_service scope, and a caller not permitted this route or these identity headers ALL answer this one byte-identical refusal (machine code SERVICE_IDENTITY_REQUIRED). It names no caller and no accepted identity. Only returned when the deployment enforces caller authentication.","exampleType":"generated"},"df325073-675c-45e6-8900-f346cee98bb8":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"no such brand for this account (an unknown brand and another account's brand are one indistinguishable refusal), the offering is not enabled on the brand, or the offering has no copy yet — nothing was set","exampleType":"generated"},"a10a07d5-932f-4885-9619-a8e1b031e0ca":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Idempotency-Key reused with a materially different request (code IDEMPOTENCY_CONFLICT)","exampleType":"generated"},"c4277fc8-8ba2-4863-8e31-b2ed26809b45":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"the billing cadence is not compatible with the offering's supply or its shipping rules (CADENCE_INCOMPATIBLE), its compatibility cannot be measured yet (CADENCE_NOT_MEASURED), or the body names a shipping cadence, which always follows the offering's supply (CADENCE_SHIPPING_DERIVED). The problem carries `compatible_billing`, the cadences you can choose instead. Nothing was set.","exampleType":"generated"},"23cd3a1f-f19b-4bf3-a825-46211ac5092f":{"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","required":["title","status"],"properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"},"collection":{"description":"the document collection the Postgres catalog does not hold","type":"string","uniqueKey":"collection","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>","collection":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Under the Postgres catalog store (PURPLE_CATALOG_STORE=postgres) only: the write would add or change a record the Postgres catalog does not hold yet (machine code CATALOG_COLLECTION_UNAVAILABLE; the `collection` member names it). No change was activated.","exampleType":"generated"},"358dbc3e-d1a8-4157-b236-9f6c7a968554":{"content":{"application/problem+json":{"schema":{"description":"RFC 7807 problem+json (a 409 idempotency conflict carries code=IDEMPOTENCY_CONFLICT)","properties":{"status":{"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"adoption":{"properties":{"applied":{"type":"boolean","isRequired":true,"uniqueKey":"adoption.applied","typeLabel":"boolean"},"counts":{"properties":{"rows_examined":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_examined","typeLabel":"integer"},"rows_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.rows_written","typeLabel":"integer"},"values_written":{"minimum":0,"type":"integer","isRequired":true,"uniqueKey":"adoption.counts.values_written","typeLabel":"integer"}},"required":["rows_examined","rows_written","values_written"],"type":"object","isRequired":true,"uniqueKey":"adoption.counts","typeLabel":"object"},"mode":{"enum":["dry-run","apply"],"type":"string","isRequired":true,"uniqueKey":"adoption.mode","typeLabel":"enum\u003cstring>"},"report_ref":{"properties":{"adoption_run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.adoption_run_id","typeLabel":"string"},"medication_sku":{"type":"string","isRequired":true,"uniqueKey":"adoption.report_ref.medication_sku","typeLabel":"string"}},"required":["medication_sku","adoption_run_id"],"type":"object","isRequired":true,"uniqueKey":"adoption.report_ref","typeLabel":"object"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.run_id","typeLabel":"string"},"receipt":{"additionalProperties":false,"properties":{"at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.at","typeLabel":"string\u003cdate-time>"},"groups_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.groups_digest","typeLabel":"string"},"preview_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.preview_digest","typeLabel":"string"},"request_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.request_digest","typeLabel":"string"},"run_id":{"type":"string","isRequired":true,"uniqueKey":"adoption.receipt.run_id","typeLabel":"string"},"served_digest":{"pattern":"^[a-f0-9]{64}$","type":"string","isRequired":true,"uniqueKey":"adoption.receipt.served_digest","typeLabel":"string"}},"required":["run_id","at","served_digest","request_digest","groups_digest","preview_digest"],"type":"object","uniqueKey":"adoption.receipt","typeLabel":"object"},"refused":{"type":"boolean","uniqueKey":"adoption.refused","typeLabel":"boolean"}},"required":["run_id","mode","applied","report_ref","counts"],"type":"object","uniqueKey":"adoption","typeLabel":"object"},"code":{"description":"machine-readable error code, e.g. IDEMPOTENCY_CONFLICT","type":"string","uniqueKey":"code","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"},"instance":{"type":"string","uniqueKey":"instance","typeLabel":"string"},"reason":{"description":"machine-readable reason beside the code, present only where a refusal has one (a PRICE_FLOOR_UNRESOLVABLE refusal carries the price check's typed reason, e.g. no_platform_price_binding). Key on this member, never on the detail's words.","pattern":"^[a-z][a-z0-9_]{0,63}$","type":"string","uniqueKey":"reason","typeLabel":"string"},"type":{"type":"string","uniqueKey":"type","typeLabel":"string"}},"required":["title","status"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":123,"title":"\u003cstring>","adoption":{"applied":true,"counts":{"rows_examined":1,"rows_written":1,"values_written":1},"mode":"dry-run","report_ref":{"adoption_run_id":"\u003cstring>","medication_sku":"\u003cstring>"},"run_id":"\u003cstring>","receipt":{"at":"2023-11-07T05:31:56Z","groups_digest":"\u003cstring>","preview_digest":"\u003cstring>","request_digest":"\u003cstring>","run_id":"\u003cstring>","served_digest":"\u003cstring>"},"refused":true},"code":"\u003cstring>","detail":"\u003cstring>","instance":"\u003cstring>","reason":"\u003cstring>","type":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Under the Postgres catalog store (PURPLE_CATALOG_STORE=postgres) only, retryable. Machine code CATALOG_STATE_UNCONFIRMED: the per-request check that the served catalog is current could not run; nothing was served or written. Machine code CATALOG_STATE_STALE (writes only): another catalog task wrote first, so this write was derived from a superseded state; no change was activated, and the next request reloads.","exampleType":"generated"}},"security":{"10f12e80-3b2d-48f7-a46e-3b80a06ae215":{"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":"Choose the billing cadence of an offering on your brand - Purple Label MD","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T04:48:52.653Z","originalFileLocation":"api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand.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=\"Chooses how members are billed for one offering on one of your brands: monthly (a charge every month of the medication\u0026#x27;s supply) or upfront (one charge for the whole term). Only a cadence that is compatible with the offering\u0026#x27;s supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering\u0026#x27;s supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand\u0026#x27;s audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.\">\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=\"Choose the billing cadence of an offering on your brand - Purple Label MD\">\u003cmeta data-mint-head property=\"og:description\" content=\"Chooses how members are billed for one offering on one of your brands: monthly (a charge every month of the medication\u0026#x27;s supply) or upfront (one charge for the whole term). Only a cadence that is compatible with the offering\u0026#x27;s supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering\u0026#x27;s supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand\u0026#x27;s audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.\">\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/choose-the-billing-cadence-of-an-offering-on-your-brand\">\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=Choose+the+billing+cadence+of+an+offering+on+your+brand\u0026amp;description=Chooses+how+members+are+billed+for+one+offering+on+one+of+your+brands%3A+%60monthly%60+%28a+charge+every+month+of+the+medication%27s+supply%29+or+%60upfront%60+%28one+charge+for+\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=217cb87455333ea9cf7aa436a77942c730594e8ecc85f1f6a322128a0ec5c468\">\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=\"Choose the billing cadence of an offering on your brand - Purple Label MD\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Chooses how members are billed for one offering on one of your brands: monthly (a charge every month of the medication\u0026#x27;s supply) or upfront (one charge for the whole term). Only a cadence that is compatible with the offering\u0026#x27;s supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering\u0026#x27;s supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand\u0026#x27;s audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://purplelabelmd.mintlify.site/_mintlify/api/og/v2?division=Offering+configuration\u0026amp;title=Choose+the+billing+cadence+of+an+offering+on+your+brand\u0026amp;description=Chooses+how+members+are+billed+for+one+offering+on+one+of+your+brands%3A+%60monthly%60+%28a+charge+every+month+of+the+medication%27s+supply%29+or+%60upfront%60+%28one+charge+for+\u0026amp;theme=1cfc55286f6f85a93657a32a\u0026amp;signature=217cb87455333ea9cf7aa436a77942c730594e8ecc85f1f6a322128a0ec5c468\">\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/choose-the-billing-cadence-of-an-offering-on-your-brand\">\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/choose-the-billing-cadence-of-an-offering-on-your-brand.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/choose-the-billing-cadence-of-an-offering-on-your-brand#webpage\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand\",\"name\":\"Choose the billing cadence of an offering on your brand\",\"description\":\"Chooses how members are billed for one offering on one of your brands: monthly (a charge every month of the medication's supply) or upfront (one charge for the whole term). Only a cadence that is compatible with the offering's supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering's supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand's audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.\",\"dateModified\":\"2026-11-12T04:48:52.653Z\",\"isPartOf\":{\"@id\":\"https://docs.purplelabelmd.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand#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\":\"Choose the billing cadence of an offering on your brand\",\"item\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand#apireference\",\"headline\":\"Choose the billing cadence of an offering on your brand\",\"name\":\"Choose the billing cadence of an offering on your brand\",\"description\":\"Chooses how members are billed for one offering on one of your brands: monthly (a charge every month of the medication's supply) or upfront (one charge for the whole term). Only a cadence that is compatible with the offering's supply and its shipping rules is accepted; any other is refused with the reason and the cadences you can choose instead. You never set the shipping cadence: it always follows the offering's supply, and a body that names one is refused. When exactly one billing cadence is compatible, the platform sets it for you when the offering is enabled and already has its copy, or when its copy is adopted, so this call is needed only when you have a choice. The offering must be enabled on the brand and have its copy (adopt the starter merchandising, or publish your own) before a cadence can be chosen. Choosing again replaces your earlier choice; the platform never overwrites a choice you made. Every change is recorded in your brand's audit trail, attributed to your account. Repeating a completed request with the same Idempotency-Key returns the original result.\",\"url\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand\",\"mainEntityOfPage\":{\"@id\":\"https://docs.purplelabelmd.com/api-reference/offering-configuration/choose-the-billing-cadence-of-an-offering-on-your-brand#webpage\"},\"dateModified\":\"2026-11-12T04:48:52.653Z\",\"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/choose-the-billing-cadence-of-an-offering-on-your-brand.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","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","description":"Sets the price your patients pay for one of your brand's offerings. Send the offering code and the new price in integer minor units (USD cents); the price takes effect immediately — the next checkout for your brand resolves it. Before anything is stored, the price is validated against your account's per-transaction cost floor: a price below the floor is rejected and the response names the floor so you can correct and retry. You can price only brands that belong to your account. A rejected request stores nothing and does not consume the Idempotency-Key, so a corrected retry may reuse the same key; repeating a completed request with the same Idempotency-Key and body returns the original result. Every price change is recorded in your brand's audit trail, attributed to your account.","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":"Choose the billing cadence of an offering on your brand - 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"]}