Invoices for this entity (only included when expand=invoices)
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Autumn","colors":{"primary":"#8838ff","light":"#9b5cff","dark":"#8838ff"},"logo":{"light":"https://mintcdn.com/autumn-b9b4c0fb/BOEMpWFJsAdGcii1/assets/logo/autumn-dark.svg?fit=max\u0026auto=format\u0026n=BOEMpWFJsAdGcii1\u0026q=85\u0026s=720bd2227c435e77f2c91cbfcbccd274","dark":"https://mintcdn.com/autumn-b9b4c0fb/BOEMpWFJsAdGcii1/assets/logo/autumn-light.svg?fit=max\u0026auto=format\u0026n=BOEMpWFJsAdGcii1\u0026q=85\u0026s=f700b862e5d0ada8c89a5976d27863fe"},"favicon":"https://mintcdn.com/autumn-b9b4c0fb/ihHX49Ug6NamJ10t/favicon.svg?fit=max\u0026auto=format\u0026n=ihHX49Ug6NamJ10t\u0026q=85\u0026s=b1fd8b3e3086e5a3855a8cf8c45dd57a","api":{"playground":{"display":"interactive"},"examples":{"languages":["typescript","python","bash"]}},"appearance":{"default":"system","strict":false},"background":{"color":{"light":"#FFFFFF","dark":"#0A0A0A"}},"navbar":{"primary":{"type":"button","label":"Dashboard","href":"https://app.useautumn.com"}},"footer":{"socials":{"x":"https://x.com/autumnpricing","github":"https://github.com/useautumn","linkedin":"https://linkedin.com/company/useautumn"}},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"contextual":{"options":["copy","cursor","view"],"display":"header"},"interaction":{"drilldown":true},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/STqxY92zuS"},{"anchor":"GitHub","icon":"github","href":"https://github.com/useautumn/autumn"},{"anchor":"Website","icon":"globe","href":"https://useautumn.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"autumn-b9b4c0fb","hasAudioNarration":false,"actualSubdomain":"autumn-b9b4c0fb","customDomains":["docs.useautumn.com"],"gitSource":{"type":"github","owner":"useautumn","repo":"autumn","deployBranch":"main","contentDirectory":"apps/docs/mintlify","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf70683d6319f7be04488b","collectionId":"51110cc0-1315-435c-8118-95f0c05e3ce4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf70683d6319f7be04488b"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adfc480ca1d3c49d2cf24bc","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":101},{"language":"default","tag":"Documentation","count":64},{"language":"default","tag":"Billing","count":20},{"language":"default","tag":"Configure Pricing","count":19},{"language":"default","tag":"Additional Resources","count":16},{"language":"default","tag":"Customers","count":15},{"language":"default","tag":"Rewards \u0026 Referrals","count":13},{"language":"default","tag":"Balances","count":10},{"language":"default","tag":"Webhook Events","count":10},{"language":"default","tag":"Invoices","count":8}],"searchSettings":{"tuning":{"anchor":{"titleCoverageRelabel":true}}}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":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":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"language-tabs.css","content":""},{"filePath":"style.css","content":".prose>.api-section{display:none!important}"}],"page":{"pagePath":"api-reference/entities/getEntity","slug":"/api-reference/entities/getEntity","pageMetadata":{"title":"Get Entity","openapi":"openapi POST /v1/entities.get","description":"Fetches an entity by its ID.\n\nUse this to read one entity's current state. Pass customerId when you want to scope the lookup to a specific customer.","href":"/api-reference/entities/getEntity"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Fetches an entity by its ID.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Use this to read one entity’s current state. Pass customerId when you want to scope the lookup to a specific customer.\"\n })]\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const DynamicResponseExample=({json,statusCode=`200`})=>{const{CodeBlock,ResponseExample}=_provideComponents()||{};if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);const toCamelCase=str=>{return str.replace(/_([a-z])/g,(_,c)=>c.toUpperCase())};const convertKeysToCamelCase=obj=>{if(Array.isArray(obj)){return obj.map(item=>convertKeysToCamelCase(item))}if(obj!==null\u0026\u0026typeof obj===`object`){return Object.keys(obj).reduce((acc,key)=>{const camelKey=toCamelCase(key);acc[camelKey]=convertKeysToCamelCase(obj[key]);return acc},{})}return obj};const[isTypeScript,setIsTypeScript]=useState(()=>{if(typeof window!==`undefined`){try{const lang=localStorage.getItem(`code`);return JSON.parse(lang)===`typescript`}catch{return true}}return true});useEffect(()=>{const onMintlifyStorage=event=>{if(event.detail?.key===`code`){try{const value=JSON.parse(event.detail.value);setIsTypeScript(value===`typescript`)}catch{}}};const pollInterval=setInterval(()=>{try{const lang=localStorage.getItem(`code`);const value=JSON.parse(lang);setIsTypeScript(value===`typescript`)}catch{}},300);document.addEventListener(`mintlify-localstorage`,onMintlifyStorage);return()=>{document.removeEventListener(`mintlify-localstorage`,onMintlifyStorage);clearInterval(pollInterval)}},[]);const camelCaseJson=useMemo(()=>convertKeysToCamelCase(json),[json]);const snakeCaseString=JSON.stringify(json,null,2);const camelCaseString=JSON.stringify(camelCaseJson,null,2);return _jsx(ResponseExample,{children:isTypeScript?_jsx(CodeBlock,{language:`json`,filename:statusCode,children:camelCaseString}):_jsx(CodeBlock,{language:`json`,filename:statusCode,children:snakeCaseString})})};const DynamicResponseField=({children,name,...props})=>{const{ResponseField}=_provideComponents()||{};if(!ResponseField)_missingMdxReference(`ResponseField`,true);const convertToCamelCase=str=>{if(typeof str!==`string`)return str;return str.replace(/[_-](\\w)/g,(_,c)=>c.toUpperCase())};const[lang,setLang]=useState(()=>{if(typeof window!==`undefined`){const stored=localStorage.getItem(`code`);return stored||`\"typescript\"`}return`\"typescript\"`});useEffect(()=>{const onMintlifyStorage=event=>{const key=event.detail?.key;if(key===`code`){setLang(event.detail.value)}};const pollInterval=setInterval(()=>{const current=localStorage.getItem(`code`);if(current\u0026\u0026current!==lang){setLang(current)}},500);document.addEventListener(`mintlify-localstorage`,onMintlifyStorage);return()=>{document.removeEventListener(`mintlify-localstorage`,onMintlifyStorage);clearInterval(pollInterval)}},[lang]);const resolvedName=useMemo(()=>{try{const value=JSON.parse(lang);const useCamelCase=value===`typescript`;return useCamelCase?convertToCamelCase(name):name}catch{return name}},[name,lang]);return _jsx(ResponseField,{name:resolvedName,...props,children})};const DynamicParamField=({children,body,path,...props})=>{const{ParamField}=_provideComponents()||{};if(!ParamField)_missingMdxReference(`ParamField`,true);const convertToCamelCase=str=>{if(typeof str!==`string`)return str;return str.replace(/[_-](\\w)/g,(_,c)=>c.toUpperCase())};const[lang,setLang]=useState(()=>{if(typeof window!==`undefined`){const stored=localStorage.getItem(`code`);return stored||`\"typescript\"`}return`\"typescript\"`});useEffect(()=>{const onMintlifyStorage=event=>{const key=event.detail?.key;if(key===`code`){setLang(event.detail.value)}};const pollInterval=setInterval(()=>{const current=localStorage.getItem(`code`);if(current\u0026\u0026current!==lang){setLang(current)}},500);document.addEventListener(`mintlify-localstorage`,onMintlifyStorage);return()=>{document.removeEventListener(`mintlify-localstorage`,onMintlifyStorage);clearInterval(pollInterval)}},[lang]);const resolvedBody=useMemo(()=>{try{const value=JSON.parse(lang);const useCamelCase=value===`typescript`;return useCamelCase?convertToCamelCase(body):body}catch{return body}},[body,lang]);const resolvedPath=useMemo(()=>{try{const value=JSON.parse(lang);const useCamelCase=value===`typescript`;return useCamelCase?convertToCamelCase(path):path}catch{return path}},[path,lang]);return _jsx(ParamField,{body:resolvedBody,path:resolvedPath,...props,children})};function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components},{Expandable,Heading,_MdxComponentBoundary}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`3`,id:`body-parameters`,children:`Body Parameters`}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`customer_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the customer to create the entity for.`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicParamField`,children:_jsx(DynamicParamField,{body:`entity_id`,type:`string`,required:true,children:_jsx(_components.p,{children:`The ID of the entity.`})})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string | null`,children:_jsx(_components.p,{children:`The unique identifier of the entity`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string | null`,children:_jsx(_components.p,{children:`The name of the entity`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`customer_id`,type:`string | null`,children:_jsx(_components.p,{children:`The customer ID this entity belongs to`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string | null`,children:_jsx(_components.p,{children:`The feature ID this entity belongs to`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`,children:_jsx(_components.p,{children:`Unix timestamp when the entity was created`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`env`,type:`'sandbox' | 'live'`,children:_jsx(_components.p,{children:`The environment (sandbox/live)`})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`subscriptions`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier of this subscription. If a subscription_id was provided at attach time, it is used; otherwise, falls back to the internal ID.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`plan`,type:`object`,children:[_jsx(_components.p,{children:`The full plan object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`Unique identifier for the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Display name of the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`description`,type:`string | null`,children:_jsx(_components.p,{children:`Optional description of the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`group`,type:`string | null`,children:_jsx(_components.p,{children:`Group identifier for organizing related plans. Plans in the same group are mutually exclusive.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`version`,type:`number`,children:_jsx(_components.p,{children:`Version number of the plan. Incremented when plan configuration changes.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`version_slug`,type:`string | null`,children:_jsx(_components.p,{children:`User-facing version identity. Defaults to v{n} when the version is minted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`active`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this is the active version of the plan. At most one version is active.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add_on`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this is an add-on plan that can be attached alongside a main plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`auto_enable`,type:`boolean`,children:_jsx(_components.p,{children:`If true, this plan is automatically attached when a customer is created. Used for free plans.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Base recurring price for the plan. Null for free plans or usage-only plans.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Base price amount for the plan, in major currency units (e.g. dollars).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Base price amounts in additional currencies. The base ‘amount’ is in the org’s default currency.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval (e.g. ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display text for showing this price in pricing pages.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`primary_text`,type:`string`,children:_jsx(_components.p,{children:`Main display text (e.g. ‘$10’ or ‘100 messages’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`secondary_text`,type:`string`,children:_jsx(_components.p,{children:`Secondary display text (e.g. ‘per month’ or ‘then $0.5 per 100’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Payment processors this base price is connected to. Omitted when unset.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object | null`,children:_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`price_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe price ID. For prepaid with included > 0 this is the V2 price.`})})})})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`items`,type:`object[]`,children:[_jsx(_components.p,{children:`Feature configurations included in this plan. Each item defines included units, pricing, and reset behavior for a feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`threshold_billing`,type:`object | null`,children:[_jsx(_components.p,{children:`Bills this many feature units when outstanding overage reaches it.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature this item configures.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature`,type:`object`,children:[_jsx(_components.p,{children:`The full feature object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature, used to refer to it in other API calls like /track or /check.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string | null`,children:_jsx(_components.p,{children:`The name of the feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`type`,type:`'static' | 'boolean' | 'single_use' | 'continuous_use' | 'credit_system' | 'ai_credit_system'`,children:_jsx(_components.p,{children:`The type of the feature`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object | null`,children:[_jsx(_components.p,{children:`Singular and plural display names for the feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`singular`,type:`string`,children:_jsx(_components.p,{children:`The singular display name for the feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plural`,type:`string`,children:_jsx(_components.p,{children:`The plural display name for the feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object[] | null`,children:[_jsx(_components.p,{children:`Credit cost schema for credit system features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the metered feature (should be a single_use feature).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`The credit cost of the metered feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean | null`,children:_jsx(_components.p,{children:`Whether or not the feature is archived.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Number of free units included. For consumable features, balance resets to this number each interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the customer has unlimited access to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`pooled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether entity-level grants contribute to a shared customer balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object | null`,children:[_jsx(_components.p,{children:`Reset configuration for consumable features. Null for non-consumable features like seats where usage persists across billing cycles.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`The interval at which the feature balance resets (e.g. ‘month’, ‘year’). For consumable features, usage resets to 0 and included units are restored.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets. Defaults to 1.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Pricing configuration for usage beyond included units. Null if feature is entirely free.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price per billing_units after included usage is consumed. Mutually exclusive with tiers.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Amounts in additional currencies for this flat price. The base ‘amount’ is in the org’s default currency. Only valid with ‘amount’, not ‘tiers’ (tiered prices carry per-currency amounts on each tier).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing configuration. Each tier’s ‘to’ INCLUDES the included amount. Either ‘tiers’ or ‘amount’ is required.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Per-unit amount for this tier in this currency.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`,children:_jsx(_components.p,{children:`Flat amount for this tier in this currency, if the tier uses one.`})})})]})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers price usage. ‘graduated’ (default) charges each unit at the rate of the tier it falls in. ‘volume’ picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier’s rate plus its flat_amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval for this price. For consumable features, should match reset.interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of units per price increment. Usage is rounded UP to the nearest billing_units when billed (e.g. billing_units=100 means 101 usage rounds to 200).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`‘prepaid’ for features like seats where customers pay upfront, ‘usage_based’ for pay-as-you-go after included usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum units a customer can purchase beyond included. E.g. if included=100 and max_purchase=300, customer can use up to 400 total before usage is capped. Null for no limit.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Payment processors this item price is connected to. Omitted when unset.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object | null`,children:_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`price_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe price ID. For prepaid with included > 0 this is the V2 price.`})})})})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display text for showing this item in pricing pages.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`primary_text`,type:`string`,children:_jsx(_components.p,{children:`Main display text (e.g. ‘$10’ or ‘100 messages’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`secondary_text`,type:`string`,children:_jsx(_components.p,{children:`Secondary display text (e.g. ‘per month’ or ‘then $0.5 per 100’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollover`,type:`object`,children:[_jsx(_components.p,{children:`Rollover configuration for unused units. If set, unused included units roll over to the next period.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum rollover units. Null for unlimited rollover.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_percentage`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_type`,type:`'month' | 'forever'`,children:_jsx(_components.p,{children:`When rolled over units expire.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of periods before expiry.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`expiry`,type:`object | null`,children:[_jsx(_components.p,{children:`Purchased units expire this long after each purchase. One-off prepaid consumable items only.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration`,type:`'day' | 'week' | 'month' | 'year'`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`length`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_override`,type:`object`,children:[_jsx(_components.p,{children:`Overrides fields of this item’s feature for customers on this plan (e.g. a credit system’s credit_schema).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsxs(_components.p,{children:[`For credit system features: merges into the feature’s credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `,_jsx(_components.code,{children:`excluded: true`}),` removes it, and unlisted features keep the credit system’s rate.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`excluded`,type:`true`,children:_jsx(_components.p,{children:`Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`markups`,type:`object`,children:[_jsx(_components.p,{children:`For AI credit system features: replaces the feature’s markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature’s.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for customers on this plan. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider markup percentages for customers on this plan.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for customers on this plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})})]})]})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Payment processors this plan is connected to. Omitted when unset.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object | null`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe product ID this plan is billed under.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_product_ids`,type:`string[]`,children:_jsx(_components.p,{children:`Extra Stripe product IDs aliased to this plan.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`revenuecat`,type:`object | null`,children:_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`products`,type:`object[]`,children:[_jsx(_components.p,{children:`Every RevenueCat product that maps to this plan. Replaces the current set.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`RevenueCat product ID that grants this plan when purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_quantities`,type:`object[]`,children:[_jsx(_components.p,{children:`Prepaid quantities granted when this specific RevenueCat product is purchased, in feature units.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`})})]})]})})]})]})})})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`free_trial`,type:`object`,children:[_jsx(_components.p,{children:`Free trial configuration. If set, new customers can try this plan before being charged.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of duration_type periods the trial lasts.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_type`,type:`'day' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Unit of time for the trial duration (‘day’, ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`card_required`,type:`boolean`,children:_jsx(_components.p,{children:`Whether a payment method is required to start the trial. If true, customer will be charged after trial ends.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_end`,type:`'bill' | 'revert'`,children:_jsx(_components.p,{children:`Behavior when the trial ends. ‘bill’ charges the customer (default). ‘revert’ expires the trial and restores the customer’s previous plan.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`,children:_jsx(_components.p,{children:`Unix timestamp (ms) when the plan was created.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`env`,type:`'sandbox' | 'live'`,children:_jsx(_components.p,{children:`Environment this plan belongs to (‘sandbox’ or ‘live’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the plan is archived. Archived plans cannot be attached to new customers.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`config`,type:`object`,children:[_jsx(_components.p,{children:`Miscellaneous plan-level configuration flags.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`ignore_past_due`,type:`boolean`,children:_jsx(_components.p,{children:`If true, entitlements attached to this plan will still reset on schedule even when the customer’s product is in a past_due state.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor_to_month_start`,type:`boolean`,children:_jsx(_components.p,{children:`Anchor billing and reset cycles to the 1st of the month (UTC).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`billing_controls`,type:`object`,children:[_jsx(_components.p,{children:`Plan-level billing controls used as customer defaults.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`auto_topups`,type:`object[]`,children:[_jsx(_components.p,{children:`List of auto top-up configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature (credit balance) to auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether auto top-up is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`When the balance drops below this threshold, an auto top-up will be purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`,children:_jsx(_components.p,{children:`Amount of credits to add per auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`purchase_limit`,type:`object`,children:[_jsx(_components.p,{children:`Optional rate limit to cap how often auto top-ups occur.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'hour' | 'day' | 'week' | 'month'`,children:_jsx(_components.p,{children:`The time interval for the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals in the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum number of auto top-ups allowed within the interval.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`invoice_mode`,type:`boolean`,children:_jsx(_components.p,{children:`When true, auto top-up creates a send_invoice invoice instead of auto-charging.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`spend_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage spend limits per feature (caps overage spend).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Optional feature ID this spend limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the overage spend limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit_type`,type:`'absolute' | 'usage_percentage'`,children:_jsx(_components.p,{children:`How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_limit`,type:`number`,children:_jsx(_components.p,{children:`Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`skip_overage_billing`,type:`boolean`,children:_jsx(_components.p,{children:`When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of hard usage caps per feature (max units per interval).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature this usage limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum units allowed per interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'day' | 'week' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Interval for the cap, aligned to the customer’s billing cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor`,type:`'billing_cycle' | 'utc'`,children:_jsx(_components.p,{children:`Window alignment. ‘billing_cycle’ phases the interval to the customer’s renewal time; ‘utc’ aligns to the UTC calendar.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_alerts`,type:`object[]`,children:[_jsx(_components.p,{children:`List of usage alert configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this alert applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage alert is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold_type`,type:`'usage' | 'usage_percentage' | 'remaining' | 'remaining_percentage'`,children:_jsx(_components.p,{children:`Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`basis`,type:`'balance' | 'included' | 'recurring' | 'usage_limit'`,children:_jsx(_components.p,{children:`What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Optional user-defined label to distinguish multiple alerts on the same feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`overage_allowed`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage allowed controls per feature. When enabled, usage can exceed balance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this overage allowed control applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether overage is allowed for this feature.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metadata`,type:`object`,children:_jsx(_components.p,{children:`Arbitrary key-value metadata defined by you for your own use. Shared across all versions of the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`customer_eligibility`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`trial_available`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the trial on this plan is available to this customer. For example, if the customer used the trial in the past, this will be false.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`status`,type:`'active' | 'scheduled'`,children:_jsx(_components.p,{children:`The customer’s current status with this plan. ‘active’ if attached, ‘scheduled’ if pending activation.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`canceling`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the customer’s active instance of this plan is set to cancel.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`trialing`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the customer is currently on a free trial of this plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`attach_action`,type:`'activate' | 'upgrade' | 'downgrade' | 'none' | 'purchase'`,children:_jsx(_components.p,{children:`The action that would occur if this plan were attached to the customer.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`base_variant_id`,type:`string | null`,children:_jsx(_components.p,{children:`Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`variant_details`,type:`object`,children:[_jsx(_components.p,{children:`Details about how this variant relates to its latest base plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`base_plan_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the base plan this variant was derived from.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`customize`,type:`object`,children:[_jsx(_components.p,{children:`The customization that transforms the base plan into this variant.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Base price configuration for a plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Base price amount for the plan, in major currency units (e.g. dollars).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval (e.g. ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Base price amounts in additional currencies. The base ‘amount’ is in the org’s default currency.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`add_items`,type:`object[]`,children:[_jsx(_components.p,{children:`Items to add to the plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`threshold_billing`,type:`object | null`,children:[_jsx(_components.p,{children:`Bills this many feature units when outstanding overage reaches it.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature to configure.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Number of free units included. Balance resets to this each interval for consumable features.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`If true, customer has unlimited access to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`pooled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether entity-level grants contribute to a shared customer balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object`,children:[_jsx(_components.p,{children:`Reset configuration for consumable features. Omit for non-consumable features like seats.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Interval at which balance resets (e.g. ‘month’, ‘year’). For consumable features only.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets. Defaults to 1.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object`,children:[_jsx(_components.p,{children:`Pricing for usage beyond included units. Omit for free features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price per billing_units after included usage. Either ‘amount’ or ‘tiers’ is required.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Amounts in additional currencies for this flat price. The base ‘amount’ is in the org’s default currency. Only valid with ‘amount’, not ‘tiers’.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing. Either ‘amount’ or ‘tiers’ is required.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Per-unit amount for this tier in this currency.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`,children:_jsx(_components.p,{children:`Flat amount for this tier in this currency, if the tier uses one.`})})})]})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers price usage. ‘graduated’ (default) charges each unit at the rate of the tier it falls in. ‘volume’ picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier’s rate plus its flat_amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval. For consumable features, should match reset.interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`‘prepaid’ for upfront payment (seats), ‘usage_based’ for pay-as-you-go.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`proration`,type:`object`,children:[_jsx(_components.p,{children:`Proration settings for prepaid features. Controls mid-cycle quantity change billing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_increase`,type:`'bill_immediately' | 'prorate_immediately' | 'prorate_next_cycle' | 'bill_next_cycle'`,children:_jsx(_components.p,{children:`Billing behavior when quantity increases mid-cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_decrease`,type:`'prorate' | 'prorate_immediately' | 'prorate_next_cycle' | 'none' | 'no_prorations'`,children:_jsx(_components.p,{children:`Credit behavior when quantity decreases mid-cycle.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollover`,type:`object`,children:[_jsx(_components.p,{children:`Rollover config for unused units. If set, unused included units carry over.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max`,type:`number`,children:_jsx(_components.p,{children:`Max rollover units. Omit for unlimited rollover.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_percentage`,type:`number`,children:_jsx(_components.p,{children:`Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_type`,type:`'month' | 'forever'`,children:_jsx(_components.p,{children:`When rolled over units expire.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of periods before expiry.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`expiry`,type:`object`,children:[_jsx(_components.p,{children:`Purchased units expire this long after each purchase. One-off prepaid consumable items only.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration`,type:`'day' | 'week' | 'month' | 'year'`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`length`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_override`,type:`object`,children:[_jsx(_components.p,{children:`Overrides fields of this item’s feature for customers on this plan (e.g. a credit system’s credit_schema).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsxs(_components.p,{children:[`For credit system features: merges into the feature’s credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `,_jsx(_components.code,{children:`excluded: true`}),` removes it, and unlisted features keep the credit system’s rate.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`excluded`,type:`true`,children:_jsx(_components.p,{children:`Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`markups`,type:`object`,children:[_jsx(_components.p,{children:`For AI credit system features: replaces the feature’s markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature’s.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for customers on this plan. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider markup percentages for customers on this plan.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for customers on this plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})})]})]})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`remove_items`,type:`object[]`,children:[_jsx(_components.p,{children:`Filters selecting items to remove from the plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Match items linked to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Match items with this billing method (prepaid or usage_based).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`integer`,children:_jsx(_components.p,{children:`Match items with this interval_count. Disambiguates between items that share an interval but differ in count.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Match items whose grant equals this included usage. Omitted is a wildcard.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`free_trial`,type:`object | null`,children:[_jsx(_components.p,{children:`Free trial configuration for a plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of duration_type periods the trial lasts.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_type`,type:`'day' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Unit of time for the trial (‘day’, ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`card_required`,type:`boolean`,children:_jsx(_components.p,{children:`If true, a payment method is required to start the trial and the customer is charged when it ends. Defaults to false.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_end`,type:`'bill' | 'revert'`,children:_jsx(_components.p,{children:`Behavior when the trial ends. ‘bill’ charges the customer (default). ‘revert’ expires the trial and restores the customer’s previous plan.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`billing_controls`,type:`object`,children:[_jsx(_components.p,{children:`Override the plan’s billing controls (auto top-ups, spend limits, usage limits, usage alerts, overage allowed) for this customer.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`auto_topups`,type:`object[]`,children:[_jsx(_components.p,{children:`List of auto top-up configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature (credit balance) to auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether auto top-up is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`When the balance drops below this threshold, an auto top-up will be purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`,children:_jsx(_components.p,{children:`Amount of credits to add per auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`purchase_limit`,type:`object`,children:[_jsx(_components.p,{children:`Optional rate limit to cap how often auto top-ups occur. Pass count to set the current window’s consumed top-ups.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'hour' | 'day' | 'week' | 'month'`,children:_jsx(_components.p,{children:`The time interval for the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals in the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum number of auto top-ups allowed within the interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`count`,type:`number`,children:_jsx(_components.p,{children:`Set the current window’s consumed auto top-up count. Omit to leave runtime state unchanged.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`invoice_mode`,type:`boolean`,children:_jsx(_components.p,{children:`When true, auto top-up creates a send_invoice invoice instead of auto-charging.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`spend_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage spend limits per feature (caps overage spend).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Optional feature ID this spend limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the overage spend limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit_type`,type:`'absolute' | 'usage_percentage'`,children:_jsx(_components.p,{children:`How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_limit`,type:`number`,children:_jsx(_components.p,{children:`Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`skip_overage_billing`,type:`boolean`,children:_jsx(_components.p,{children:`When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of hard usage caps per feature (max units per interval).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature this usage limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum units allowed per interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'day' | 'week' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Interval for the cap, aligned to the customer’s billing cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor`,type:`'billing_cycle' | 'utc'`,children:_jsx(_components.p,{children:`Window alignment. ‘billing_cycle’ phases the interval to the customer’s renewal time; ‘utc’ aligns to the UTC calendar.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_alerts`,type:`object[]`,children:[_jsx(_components.p,{children:`List of usage alert configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this alert applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage alert is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold_type`,type:`'usage' | 'usage_percentage' | 'remaining' | 'remaining_percentage'`,children:_jsx(_components.p,{children:`Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`basis`,type:`'balance' | 'included' | 'recurring' | 'usage_limit'`,children:_jsx(_components.p,{children:`What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Optional user-defined label to distinguish multiple alerts on the same feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`overage_allowed`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage allowed controls per feature. When enabled, usage can exceed balance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this overage allowed control applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether overage is allowed for this feature.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`upsert_licenses`,type:`object[]`,children:[_jsx(_components.p,{children:`License links to add or override for this customer, keyed by license_plan_id. Omitted fields inherit the plan catalog link (included defaults to 1 when the license is not in the catalog). A bare entry restores the license to pure catalog inheritance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`license_plan_id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`version_slug`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`integer`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`prepaid_only`,type:`boolean`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`customize`,type:`object | null`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Base price configuration for a plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Base price amount for the plan, in major currency units (e.g. dollars).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval (e.g. ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Base price amounts in additional currencies. The base ‘amount’ is in the org’s default currency.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add_items`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`threshold_billing`,type:`object | null`,children:[_jsx(_components.p,{children:`Bills this many feature units when outstanding overage reaches it.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature to configure.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Number of free units included. Balance resets to this each interval for consumable features.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`If true, customer has unlimited access to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`pooled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether entity-level grants contribute to a shared customer balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object`,children:[_jsx(_components.p,{children:`Reset configuration for consumable features. Omit for non-consumable features like seats.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Interval at which balance resets (e.g. ‘month’, ‘year’). For consumable features only.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets. Defaults to 1.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object`,children:[_jsx(_components.p,{children:`Pricing for usage beyond included units. Omit for free features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price per billing_units after included usage. Either ‘amount’ or ‘tiers’ is required.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Amounts in additional currencies for this flat price. The base ‘amount’ is in the org’s default currency. Only valid with ‘amount’, not ‘tiers’.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing. Either ‘amount’ or ‘tiers’ is required.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Per-unit amount for this tier in this currency.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`,children:_jsx(_components.p,{children:`Flat amount for this tier in this currency, if the tier uses one.`})})})]})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers price usage. ‘graduated’ (default) charges each unit at the rate of the tier it falls in. ‘volume’ picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier’s rate plus its flat_amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval. For consumable features, should match reset.interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`‘prepaid’ for upfront payment (seats), ‘usage_based’ for pay-as-you-go.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`proration`,type:`object`,children:[_jsx(_components.p,{children:`Proration settings for prepaid features. Controls mid-cycle quantity change billing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_increase`,type:`'bill_immediately' | 'prorate_immediately' | 'prorate_next_cycle' | 'bill_next_cycle'`,children:_jsx(_components.p,{children:`Billing behavior when quantity increases mid-cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_decrease`,type:`'prorate' | 'prorate_immediately' | 'prorate_next_cycle' | 'none' | 'no_prorations'`,children:_jsx(_components.p,{children:`Credit behavior when quantity decreases mid-cycle.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollover`,type:`object`,children:[_jsx(_components.p,{children:`Rollover config for unused units. If set, unused included units carry over.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max`,type:`number`,children:_jsx(_components.p,{children:`Max rollover units. Omit for unlimited rollover.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_percentage`,type:`number`,children:_jsx(_components.p,{children:`Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_type`,type:`'month' | 'forever'`,children:_jsx(_components.p,{children:`When rolled over units expire.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of periods before expiry.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`expiry`,type:`object`,children:[_jsx(_components.p,{children:`Purchased units expire this long after each purchase. One-off prepaid consumable items only.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration`,type:`'day' | 'week' | 'month' | 'year'`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`length`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_override`,type:`object`,children:[_jsx(_components.p,{children:`Overrides fields of this item’s feature for customers on this plan (e.g. a credit system’s credit_schema).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsxs(_components.p,{children:[`For credit system features: merges into the feature’s credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `,_jsx(_components.code,{children:`excluded: true`}),` removes it, and unlisted features keep the credit system’s rate.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`excluded`,type:`true`,children:_jsx(_components.p,{children:`Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`markups`,type:`object`,children:[_jsx(_components.p,{children:`For AI credit system features: replaces the feature’s markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature’s.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for customers on this plan. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider markup percentages for customers on this plan.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for customers on this plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})})]})]})})]})]})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remove_items`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Match items linked to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Match items with this billing method (prepaid or usage_based).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`integer`,children:_jsx(_components.p,{children:`Match items with this interval_count. Disambiguates between items that share an interval but differ in count.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Match items whose grant equals this included usage. Omitted is a wildcard.`})})})]})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metadata`,type:`object`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`remove_licenses`,type:`object[]`,children:[_jsx(_components.p,{children:`License links to drop, keyed by license_plan_id. Parallel to remove_items.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`license_plan_id`,type:`string`})})})]})})]})]})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier of the subscribed plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`auto_enable`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the plan was automatically enabled for the customer.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add_on`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this is an add-on plan rather than a base subscription.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`status`,type:`'active' | 'scheduled'`,children:_jsx(_components.p,{children:`Current status of the subscription.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`past_due`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the subscription has overdue payments.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`canceled_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the subscription was canceled, or null if not canceled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the subscription will expire, or null if no expiry set.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`trial_ends_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the trial period ends, or null if not on trial.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`started_at`,type:`number`,children:_jsx(_components.p,{children:`Timestamp when the subscription started.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`current_period_start`,type:`number | null`,children:_jsx(_components.p,{children:`Start timestamp of the current billing period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`current_period_end`,type:`number | null`,children:_jsx(_components.p,{children:`End timestamp of the current billing period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`,children:_jsx(_components.p,{children:`Number of units of this subscription (for per-seat plans).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`scope`,type:`'customer' | 'entity'`,children:_jsx(_components.p,{children:`Whether this subscription is attached at the customer level or entity level.`})})})]})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`purchases`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`plan`,type:`object`,children:[_jsx(_components.p,{children:`The full plan object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`Unique identifier for the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Display name of the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`description`,type:`string | null`,children:_jsx(_components.p,{children:`Optional description of the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`group`,type:`string | null`,children:_jsx(_components.p,{children:`Group identifier for organizing related plans. Plans in the same group are mutually exclusive.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`version`,type:`number`,children:_jsx(_components.p,{children:`Version number of the plan. Incremented when plan configuration changes.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`version_slug`,type:`string | null`,children:_jsx(_components.p,{children:`User-facing version identity. Defaults to v{n} when the version is minted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`active`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this is the active version of the plan. At most one version is active.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add_on`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this is an add-on plan that can be attached alongside a main plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`auto_enable`,type:`boolean`,children:_jsx(_components.p,{children:`If true, this plan is automatically attached when a customer is created. Used for free plans.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Base recurring price for the plan. Null for free plans or usage-only plans.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Base price amount for the plan, in major currency units (e.g. dollars).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Base price amounts in additional currencies. The base ‘amount’ is in the org’s default currency.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval (e.g. ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display text for showing this price in pricing pages.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`primary_text`,type:`string`,children:_jsx(_components.p,{children:`Main display text (e.g. ‘$10’ or ‘100 messages’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`secondary_text`,type:`string`,children:_jsx(_components.p,{children:`Secondary display text (e.g. ‘per month’ or ‘then $0.5 per 100’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Payment processors this base price is connected to. Omitted when unset.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object | null`,children:_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`price_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe price ID. For prepaid with included > 0 this is the V2 price.`})})})})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`items`,type:`object[]`,children:[_jsx(_components.p,{children:`Feature configurations included in this plan. Each item defines included units, pricing, and reset behavior for a feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`threshold_billing`,type:`object | null`,children:[_jsx(_components.p,{children:`Bills this many feature units when outstanding overage reaches it.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature this item configures.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature`,type:`object`,children:[_jsx(_components.p,{children:`The full feature object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature, used to refer to it in other API calls like /track or /check.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string | null`,children:_jsx(_components.p,{children:`The name of the feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`type`,type:`'static' | 'boolean' | 'single_use' | 'continuous_use' | 'credit_system' | 'ai_credit_system'`,children:_jsx(_components.p,{children:`The type of the feature`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object | null`,children:[_jsx(_components.p,{children:`Singular and plural display names for the feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`singular`,type:`string`,children:_jsx(_components.p,{children:`The singular display name for the feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plural`,type:`string`,children:_jsx(_components.p,{children:`The plural display name for the feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object[] | null`,children:[_jsx(_components.p,{children:`Credit cost schema for credit system features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the metered feature (should be a single_use feature).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`The credit cost of the metered feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean | null`,children:_jsx(_components.p,{children:`Whether or not the feature is archived.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Number of free units included. For consumable features, balance resets to this number each interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the customer has unlimited access to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`pooled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether entity-level grants contribute to a shared customer balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object | null`,children:[_jsx(_components.p,{children:`Reset configuration for consumable features. Null for non-consumable features like seats where usage persists across billing cycles.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`The interval at which the feature balance resets (e.g. ‘month’, ‘year’). For consumable features, usage resets to 0 and included units are restored.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets. Defaults to 1.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Pricing configuration for usage beyond included units. Null if feature is entirely free.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price per billing_units after included usage is consumed. Mutually exclusive with tiers.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Amounts in additional currencies for this flat price. The base ‘amount’ is in the org’s default currency. Only valid with ‘amount’, not ‘tiers’ (tiered prices carry per-currency amounts on each tier).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing configuration. Each tier’s ‘to’ INCLUDES the included amount. Either ‘tiers’ or ‘amount’ is required.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Per-unit amount for this tier in this currency.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`,children:_jsx(_components.p,{children:`Flat amount for this tier in this currency, if the tier uses one.`})})})]})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers price usage. ‘graduated’ (default) charges each unit at the rate of the tier it falls in. ‘volume’ picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier’s rate plus its flat_amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval for this price. For consumable features, should match reset.interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of units per price increment. Usage is rounded UP to the nearest billing_units when billed (e.g. billing_units=100 means 101 usage rounds to 200).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`‘prepaid’ for features like seats where customers pay upfront, ‘usage_based’ for pay-as-you-go after included usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum units a customer can purchase beyond included. E.g. if included=100 and max_purchase=300, customer can use up to 400 total before usage is capped. Null for no limit.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Payment processors this item price is connected to. Omitted when unset.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object | null`,children:_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`price_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe price ID. For prepaid with included > 0 this is the V2 price.`})})})})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display text for showing this item in pricing pages.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`primary_text`,type:`string`,children:_jsx(_components.p,{children:`Main display text (e.g. ‘$10’ or ‘100 messages’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`secondary_text`,type:`string`,children:_jsx(_components.p,{children:`Secondary display text (e.g. ‘per month’ or ‘then $0.5 per 100’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollover`,type:`object`,children:[_jsx(_components.p,{children:`Rollover configuration for unused units. If set, unused included units roll over to the next period.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum rollover units. Null for unlimited rollover.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_percentage`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_type`,type:`'month' | 'forever'`,children:_jsx(_components.p,{children:`When rolled over units expire.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of periods before expiry.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`expiry`,type:`object | null`,children:[_jsx(_components.p,{children:`Purchased units expire this long after each purchase. One-off prepaid consumable items only.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration`,type:`'day' | 'week' | 'month' | 'year'`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`length`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_override`,type:`object`,children:[_jsx(_components.p,{children:`Overrides fields of this item’s feature for customers on this plan (e.g. a credit system’s credit_schema).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsxs(_components.p,{children:[`For credit system features: merges into the feature’s credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `,_jsx(_components.code,{children:`excluded: true`}),` removes it, and unlisted features keep the credit system’s rate.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`excluded`,type:`true`,children:_jsx(_components.p,{children:`Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`markups`,type:`object`,children:[_jsx(_components.p,{children:`For AI credit system features: replaces the feature’s markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature’s.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for customers on this plan. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider markup percentages for customers on this plan.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for customers on this plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})})]})]})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Payment processors this plan is connected to. Omitted when unset.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object | null`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe product ID this plan is billed under.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_product_ids`,type:`string[]`,children:_jsx(_components.p,{children:`Extra Stripe product IDs aliased to this plan.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`revenuecat`,type:`object | null`,children:_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`products`,type:`object[]`,children:[_jsx(_components.p,{children:`Every RevenueCat product that maps to this plan. Replaces the current set.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`RevenueCat product ID that grants this plan when purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_quantities`,type:`object[]`,children:[_jsx(_components.p,{children:`Prepaid quantities granted when this specific RevenueCat product is purchased, in feature units.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`})})]})]})})]})]})})})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`free_trial`,type:`object`,children:[_jsx(_components.p,{children:`Free trial configuration. If set, new customers can try this plan before being charged.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of duration_type periods the trial lasts.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_type`,type:`'day' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Unit of time for the trial duration (‘day’, ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`card_required`,type:`boolean`,children:_jsx(_components.p,{children:`Whether a payment method is required to start the trial. If true, customer will be charged after trial ends.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_end`,type:`'bill' | 'revert'`,children:_jsx(_components.p,{children:`Behavior when the trial ends. ‘bill’ charges the customer (default). ‘revert’ expires the trial and restores the customer’s previous plan.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`,children:_jsx(_components.p,{children:`Unix timestamp (ms) when the plan was created.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`env`,type:`'sandbox' | 'live'`,children:_jsx(_components.p,{children:`Environment this plan belongs to (‘sandbox’ or ‘live’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the plan is archived. Archived plans cannot be attached to new customers.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`config`,type:`object`,children:[_jsx(_components.p,{children:`Miscellaneous plan-level configuration flags.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`ignore_past_due`,type:`boolean`,children:_jsx(_components.p,{children:`If true, entitlements attached to this plan will still reset on schedule even when the customer’s product is in a past_due state.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor_to_month_start`,type:`boolean`,children:_jsx(_components.p,{children:`Anchor billing and reset cycles to the 1st of the month (UTC).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`billing_controls`,type:`object`,children:[_jsx(_components.p,{children:`Plan-level billing controls used as customer defaults.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`auto_topups`,type:`object[]`,children:[_jsx(_components.p,{children:`List of auto top-up configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature (credit balance) to auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether auto top-up is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`When the balance drops below this threshold, an auto top-up will be purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`,children:_jsx(_components.p,{children:`Amount of credits to add per auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`purchase_limit`,type:`object`,children:[_jsx(_components.p,{children:`Optional rate limit to cap how often auto top-ups occur.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'hour' | 'day' | 'week' | 'month'`,children:_jsx(_components.p,{children:`The time interval for the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals in the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum number of auto top-ups allowed within the interval.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`invoice_mode`,type:`boolean`,children:_jsx(_components.p,{children:`When true, auto top-up creates a send_invoice invoice instead of auto-charging.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`spend_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage spend limits per feature (caps overage spend).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Optional feature ID this spend limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the overage spend limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit_type`,type:`'absolute' | 'usage_percentage'`,children:_jsx(_components.p,{children:`How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_limit`,type:`number`,children:_jsx(_components.p,{children:`Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`skip_overage_billing`,type:`boolean`,children:_jsx(_components.p,{children:`When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of hard usage caps per feature (max units per interval).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature this usage limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum units allowed per interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'day' | 'week' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Interval for the cap, aligned to the customer’s billing cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor`,type:`'billing_cycle' | 'utc'`,children:_jsx(_components.p,{children:`Window alignment. ‘billing_cycle’ phases the interval to the customer’s renewal time; ‘utc’ aligns to the UTC calendar.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_alerts`,type:`object[]`,children:[_jsx(_components.p,{children:`List of usage alert configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this alert applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage alert is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold_type`,type:`'usage' | 'usage_percentage' | 'remaining' | 'remaining_percentage'`,children:_jsx(_components.p,{children:`Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`basis`,type:`'balance' | 'included' | 'recurring' | 'usage_limit'`,children:_jsx(_components.p,{children:`What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Optional user-defined label to distinguish multiple alerts on the same feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`overage_allowed`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage allowed controls per feature. When enabled, usage can exceed balance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this overage allowed control applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether overage is allowed for this feature.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metadata`,type:`object`,children:_jsx(_components.p,{children:`Arbitrary key-value metadata defined by you for your own use. Shared across all versions of the plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`customer_eligibility`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`trial_available`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the trial on this plan is available to this customer. For example, if the customer used the trial in the past, this will be false.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`status`,type:`'active' | 'scheduled'`,children:_jsx(_components.p,{children:`The customer’s current status with this plan. ‘active’ if attached, ‘scheduled’ if pending activation.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`canceling`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the customer’s active instance of this plan is set to cancel.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`trialing`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the customer is currently on a free trial of this plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`attach_action`,type:`'activate' | 'upgrade' | 'downgrade' | 'none' | 'purchase'`,children:_jsx(_components.p,{children:`The action that would occur if this plan were attached to the customer.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`base_variant_id`,type:`string | null`,children:_jsx(_components.p,{children:`Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`variant_details`,type:`object`,children:[_jsx(_components.p,{children:`Details about how this variant relates to its latest base plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`base_plan_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the base plan this variant was derived from.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`customize`,type:`object`,children:[_jsx(_components.p,{children:`The customization that transforms the base plan into this variant.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Base price configuration for a plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Base price amount for the plan, in major currency units (e.g. dollars).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval (e.g. ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Base price amounts in additional currencies. The base ‘amount’ is in the org’s default currency.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`add_items`,type:`object[]`,children:[_jsx(_components.p,{children:`Items to add to the plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`threshold_billing`,type:`object | null`,children:[_jsx(_components.p,{children:`Bills this many feature units when outstanding overage reaches it.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature to configure.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Number of free units included. Balance resets to this each interval for consumable features.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`If true, customer has unlimited access to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`pooled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether entity-level grants contribute to a shared customer balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object`,children:[_jsx(_components.p,{children:`Reset configuration for consumable features. Omit for non-consumable features like seats.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Interval at which balance resets (e.g. ‘month’, ‘year’). For consumable features only.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets. Defaults to 1.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object`,children:[_jsx(_components.p,{children:`Pricing for usage beyond included units. Omit for free features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price per billing_units after included usage. Either ‘amount’ or ‘tiers’ is required.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Amounts in additional currencies for this flat price. The base ‘amount’ is in the org’s default currency. Only valid with ‘amount’, not ‘tiers’.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing. Either ‘amount’ or ‘tiers’ is required.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Per-unit amount for this tier in this currency.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`,children:_jsx(_components.p,{children:`Flat amount for this tier in this currency, if the tier uses one.`})})})]})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers price usage. ‘graduated’ (default) charges each unit at the rate of the tier it falls in. ‘volume’ picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier’s rate plus its flat_amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval. For consumable features, should match reset.interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`‘prepaid’ for upfront payment (seats), ‘usage_based’ for pay-as-you-go.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`proration`,type:`object`,children:[_jsx(_components.p,{children:`Proration settings for prepaid features. Controls mid-cycle quantity change billing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_increase`,type:`'bill_immediately' | 'prorate_immediately' | 'prorate_next_cycle' | 'bill_next_cycle'`,children:_jsx(_components.p,{children:`Billing behavior when quantity increases mid-cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_decrease`,type:`'prorate' | 'prorate_immediately' | 'prorate_next_cycle' | 'none' | 'no_prorations'`,children:_jsx(_components.p,{children:`Credit behavior when quantity decreases mid-cycle.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollover`,type:`object`,children:[_jsx(_components.p,{children:`Rollover config for unused units. If set, unused included units carry over.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max`,type:`number`,children:_jsx(_components.p,{children:`Max rollover units. Omit for unlimited rollover.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_percentage`,type:`number`,children:_jsx(_components.p,{children:`Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_type`,type:`'month' | 'forever'`,children:_jsx(_components.p,{children:`When rolled over units expire.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of periods before expiry.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`expiry`,type:`object`,children:[_jsx(_components.p,{children:`Purchased units expire this long after each purchase. One-off prepaid consumable items only.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration`,type:`'day' | 'week' | 'month' | 'year'`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`length`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_override`,type:`object`,children:[_jsx(_components.p,{children:`Overrides fields of this item’s feature for customers on this plan (e.g. a credit system’s credit_schema).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsxs(_components.p,{children:[`For credit system features: merges into the feature’s credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `,_jsx(_components.code,{children:`excluded: true`}),` removes it, and unlisted features keep the credit system’s rate.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`excluded`,type:`true`,children:_jsx(_components.p,{children:`Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`markups`,type:`object`,children:[_jsx(_components.p,{children:`For AI credit system features: replaces the feature’s markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature’s.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for customers on this plan. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider markup percentages for customers on this plan.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for customers on this plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})})]})]})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`remove_items`,type:`object[]`,children:[_jsx(_components.p,{children:`Filters selecting items to remove from the plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Match items linked to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Match items with this billing method (prepaid or usage_based).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`integer`,children:_jsx(_components.p,{children:`Match items with this interval_count. Disambiguates between items that share an interval but differ in count.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Match items whose grant equals this included usage. Omitted is a wildcard.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`free_trial`,type:`object | null`,children:[_jsx(_components.p,{children:`Free trial configuration for a plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of duration_type periods the trial lasts.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration_type`,type:`'day' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Unit of time for the trial (‘day’, ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`card_required`,type:`boolean`,children:_jsx(_components.p,{children:`If true, a payment method is required to start the trial and the customer is charged when it ends. Defaults to false.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_end`,type:`'bill' | 'revert'`,children:_jsx(_components.p,{children:`Behavior when the trial ends. ‘bill’ charges the customer (default). ‘revert’ expires the trial and restores the customer’s previous plan.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`billing_controls`,type:`object`,children:[_jsx(_components.p,{children:`Override the plan’s billing controls (auto top-ups, spend limits, usage limits, usage alerts, overage allowed) for this customer.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`auto_topups`,type:`object[]`,children:[_jsx(_components.p,{children:`List of auto top-up configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature (credit balance) to auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether auto top-up is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`When the balance drops below this threshold, an auto top-up will be purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`,children:_jsx(_components.p,{children:`Amount of credits to add per auto top-up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`purchase_limit`,type:`object`,children:[_jsx(_components.p,{children:`Optional rate limit to cap how often auto top-ups occur. Pass count to set the current window’s consumed top-ups.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'hour' | 'day' | 'week' | 'month'`,children:_jsx(_components.p,{children:`The time interval for the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals in the purchase limit window.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum number of auto top-ups allowed within the interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`count`,type:`number`,children:_jsx(_components.p,{children:`Set the current window’s consumed auto top-up count. Omit to leave runtime state unchanged.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`invoice_mode`,type:`boolean`,children:_jsx(_components.p,{children:`When true, auto top-up creates a send_invoice invoice instead of auto-charging.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`spend_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage spend limits per feature (caps overage spend).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Optional feature ID this spend limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the overage spend limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit_type`,type:`'absolute' | 'usage_percentage'`,children:_jsx(_components.p,{children:`How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_limit`,type:`number`,children:_jsx(_components.p,{children:`Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`skip_overage_billing`,type:`boolean`,children:_jsx(_components.p,{children:`When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of hard usage caps per feature (max units per interval).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature this usage limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum units allowed per interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'day' | 'week' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Interval for the cap, aligned to the customer’s billing cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor`,type:`'billing_cycle' | 'utc'`,children:_jsx(_components.p,{children:`Window alignment. ‘billing_cycle’ phases the interval to the customer’s renewal time; ‘utc’ aligns to the UTC calendar.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_alerts`,type:`object[]`,children:[_jsx(_components.p,{children:`List of usage alert configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this alert applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage alert is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold_type`,type:`'usage' | 'usage_percentage' | 'remaining' | 'remaining_percentage'`,children:_jsx(_components.p,{children:`Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`basis`,type:`'balance' | 'included' | 'recurring' | 'usage_limit'`,children:_jsx(_components.p,{children:`What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Optional user-defined label to distinguish multiple alerts on the same feature.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`overage_allowed`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage allowed controls per feature. When enabled, usage can exceed balance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this overage allowed control applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether overage is allowed for this feature.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`upsert_licenses`,type:`object[]`,children:[_jsx(_components.p,{children:`License links to add or override for this customer, keyed by license_plan_id. Omitted fields inherit the plan catalog link (included defaults to 1 when the license is not in the catalog). A bare entry restores the license to pure catalog inheritance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`license_plan_id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`version_slug`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`integer`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`prepaid_only`,type:`boolean`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`customize`,type:`object | null`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Base price configuration for a plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Base price amount for the plan, in major currency units (e.g. dollars).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval (e.g. ‘month’, ‘year’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Base price amounts in additional currencies. The base ‘amount’ is in the org’s default currency.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add_items`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`threshold_billing`,type:`object | null`,children:[_jsx(_components.p,{children:`Bills this many feature units when outstanding overage reaches it.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The ID of the feature to configure.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Number of free units included. Balance resets to this each interval for consumable features.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`If true, customer has unlimited access to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`pooled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether entity-level grants contribute to a shared customer balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object`,children:[_jsx(_components.p,{children:`Reset configuration for consumable features. Omit for non-consumable features like seats.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Interval at which balance resets (e.g. ‘month’, ‘year’). For consumable features only.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets. Defaults to 1.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object`,children:[_jsx(_components.p,{children:`Pricing for usage beyond included units. Omit for free features.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price per billing_units after included usage. Either ‘amount’ or ‘tiers’ is required.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:[_jsx(_components.p,{children:`Amounts in additional currencies for this flat price. The base ‘amount’ is in the org’s default currency. Only valid with ‘amount’, not ‘tiers’.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Price amount in this currency. Set explicitly per currency, not converted from the base amount.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing. Either ‘amount’ or ‘tiers’ is required.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`additional_currencies`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`Three-letter Stripe-supported currency code (e.g. ‘eur’, ‘gbp’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`Per-unit amount for this tier in this currency.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`,children:_jsx(_components.p,{children:`Flat amount for this tier in this currency, if the tier uses one.`})})})]})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers price usage. ‘graduated’ (default) charges each unit at the rate of the tier it falls in. ‘volume’ picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier’s rate plus its flat_amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Billing interval. For consumable features, should match reset.interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals per billing cycle. Defaults to 1.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`‘prepaid’ for upfront payment (seats), ‘usage_based’ for pay-as-you-go.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`proration`,type:`object`,children:[_jsx(_components.p,{children:`Proration settings for prepaid features. Controls mid-cycle quantity change billing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_increase`,type:`'bill_immediately' | 'prorate_immediately' | 'prorate_next_cycle' | 'bill_next_cycle'`,children:_jsx(_components.p,{children:`Billing behavior when quantity increases mid-cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`on_decrease`,type:`'prorate' | 'prorate_immediately' | 'prorate_next_cycle' | 'none' | 'no_prorations'`,children:_jsx(_components.p,{children:`Credit behavior when quantity decreases mid-cycle.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollover`,type:`object`,children:[_jsx(_components.p,{children:`Rollover config for unused units. If set, unused included units carry over.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max`,type:`number`,children:_jsx(_components.p,{children:`Max rollover units. Omit for unlimited rollover.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_percentage`,type:`number`,children:_jsx(_components.p,{children:`Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_type`,type:`'month' | 'forever'`,children:_jsx(_components.p,{children:`When rolled over units expire.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expiry_duration_length`,type:`number`,children:_jsx(_components.p,{children:`Number of periods before expiry.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`expiry`,type:`object`,children:[_jsx(_components.p,{children:`Purchased units expire this long after each purchase. One-off prepaid consumable items only.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`duration`,type:`'day' | 'week' | 'month' | 'year'`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`length`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature_override`,type:`object`,children:[_jsx(_components.p,{children:`Overrides fields of this item’s feature for customers on this plan (e.g. a credit system’s credit_schema).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsxs(_components.p,{children:[`For credit system features: merges into the feature’s credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `,_jsx(_components.code,{children:`excluded: true`}),` removes it, and unlisted features keep the credit system’s rate.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`excluded`,type:`true`,children:_jsx(_components.p,{children:`Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`markups`,type:`object`,children:[_jsx(_components.p,{children:`For AI credit system features: replaces the feature’s markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature’s.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for customers on this plan. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider markup percentages for customers on this plan.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for customers on this plan.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})})]})]})})]})]})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remove_items`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Match items linked to this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Match items with this billing method (prepaid or usage_based).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`integer`,children:_jsx(_components.p,{children:`Match items with this interval_count. Disambiguates between items that share an interval but differ in count.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included`,type:`number`,children:_jsx(_components.p,{children:`Match items whose grant equals this included usage. Omitted is a wildcard.`})})})]})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metadata`,type:`object`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`remove_licenses`,type:`object[]`,children:[_jsx(_components.p,{children:`License links to drop, keyed by license_plan_id. Parallel to remove_items.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`license_plan_id`,type:`string`})})})]})})]})]})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier of the purchased plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the purchase expires, or null for lifetime access.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`started_at`,type:`number`,children:_jsx(_components.p,{children:`Timestamp when the purchase was made.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`quantity`,type:`number`,children:_jsx(_components.p,{children:`Number of units purchased.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`scope`,type:`'customer' | 'entity'`,children:_jsx(_components.p,{children:`Whether this purchase is attached at the customer level or entity level.`})})})]})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`balances.{key}`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this balance is for.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature`,type:`object`,children:[_jsx(_components.p,{children:`The full feature object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this feature, used in /check and /track calls.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Human-readable name displayed in the dashboard and billing UI.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`type`,type:`'boolean' | 'metered' | 'credit_system' | 'ai_credit_system'`,children:_jsx(_components.p,{children:`Feature type: ‘boolean’ for on/off access, ‘metered’ for usage-tracked features, ‘credit_system’ for unified credit pools, ‘ai_credit_system’ for model-based token pricing.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`consumable`,type:`boolean`,children:_jsx(_components.p,{children:`For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`combine`,type:`'sum' | 'max' | 'min'`,children:_jsx(_components.p,{children:`How grants of this feature from several plans combine: ‘sum’ adds them up, ‘max’ / ‘min’ keep the highest / lowest grant among plan items with no price. Omitted when ‘sum’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`event_names`,type:`string[]`,children:_jsx(_components.p,{children:`Event names that trigger this feature’s balance. Allows multiple features to respond to a single event.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsx(_components.p,{children:`For classic credit systems: maps metered features to flat or graduated credit costs.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string | any`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for AI credit systems.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for AI credit systems. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider default markup percentages for AI credit systems.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display names for the feature in billing UI and customer-facing components.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`singular`,type:`string | null`,children:_jsx(_components.p,{children:`Singular form for UI display (e.g., ‘API call’, ‘seat’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plural`,type:`string | null`,children:_jsx(_components.p,{children:`Plural form for UI display (e.g., ‘API calls’, ‘seats’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the feature is archived and hidden from the dashboard.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Processor mappings for this feature. Present when a Stripe product or meter is set.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe product ID this feature’s usage prices bill under.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`meter_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe meter ID used to create this feature’s metered price.`})})})]})})})})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`granted`,type:`number`,children:_jsx(_components.p,{children:`Total balance granted (included + prepaid).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remaining`,type:`number`,children:_jsx(_components.p,{children:`Remaining balance available for use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Total usage consumed in the current period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this feature has unlimited usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_allowed`,type:`boolean`,children:_jsx(_components.p,{children:`Whether usage beyond the granted balance is allowed (with overage charges).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum quantity that can be purchased as a top-up, or null for unlimited.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`next_reset_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will reset, or null for no reset.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`breakdown`,type:`object[]`,children:[_jsx(_components.p,{children:`Detailed breakdown of balance sources when stacking multiple plans or grants.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this balance breakdown.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string | null`,children:_jsx(_components.p,{children:`The plan ID this balance originates from, or null for standalone and pooled balances.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`included_grant`,type:`number`,children:_jsx(_components.p,{children:`Amount granted from the plan’s included usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`prepaid_grant`,type:`number`,children:_jsx(_components.p,{children:`Amount granted from prepaid purchases or top-ups.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`remaining`,type:`number`,children:_jsx(_components.p,{children:`Remaining balance available for use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Amount consumed in the current period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this balance has unlimited usage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`reset`,type:`object | null`,children:[_jsx(_components.p,{children:`Reset configuration for this balance, or null if no reset.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'one_off' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'semi_annual' | 'year'`,children:_jsx(_components.p,{children:`The reset interval (hour, day, week, month, etc.) or ‘multiple’ if combined from different intervals.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval_count`,type:`number`,children:_jsx(_components.p,{children:`Number of intervals between resets (eg. 2 for bi-monthly).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`resets_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when the balance will next reset.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`price`,type:`object | null`,children:[_jsx(_components.p,{children:`Pricing configuration if this balance has usage-based pricing.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`The per-unit price amount.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`tiers`,type:`object[]`,children:[_jsx(_components.p,{children:`Tiered pricing configuration if applicable.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flat_amount`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`'graduated' | 'volume'`,children:_jsx(_components.p,{children:`How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`The number of units per billing increment (eg. $9 / 250 units).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_method`,type:`'prepaid' | 'usage_based'`,children:_jsx(_components.p,{children:`Whether usage is prepaid or billed pay-per-use.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`max_purchase`,type:`number | null`,children:_jsx(_components.p,{children:`Maximum quantity that can be purchased, or null for unlimited.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when this balance expires, or null for no expiration.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'entity'`,children:_jsx(_components.p,{children:`Where this row’s credits come from: shared at the customer level, or owned by the entity.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`allocation`,type:`object | null`,children:[_jsx(_components.p,{children:`Set when this row’s numbers are the entity’s allocated share of the customer’s credits.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`amount`,type:`number`,children:_jsx(_components.p,{children:`The amount allocated to this entity.`})})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`contributions`,type:`object`,children:[_jsxs(_components.p,{children:[`The plans funding this shared pooled balance, usually on the customer’s entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `,_jsx(_components.code,{children:`pooled_contributions`}),`.`]}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`list`,type:`object[]`,children:[_jsx(_components.p,{children:`The first 10 plans contributing to the pool, competing shares first, then newest.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_id`,type:`string | null`,children:_jsx(_components.p,{children:`Entity holding the contributing plan. Null for customer-level plans.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`entity_name`,type:`string | null`,children:_jsx(_components.p,{children:`Display name of the contributing entity.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string`,children:_jsx(_components.p,{children:`The plan contributing to the pool.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_name`,type:`string | null`,children:_jsx(_components.p,{children:`Display name of the contributing plan.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`current_contribution`,type:`number`,children:_jsx(_components.p,{children:`Amount this source contributes to the pool this cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`next_cycle_contribution`,type:`number`,children:_jsx(_components.p,{children:`Amount this source will contribute next cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`competes`,type:`boolean`,children:_jsx(_components.p,{children:`True when this source competes under a ‘max’ / ‘min’ feature: only the winning competing share counts, instead of adding up.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unlimited`,type:`boolean`,children:_jsx(_components.p,{children:`True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`total_count`,type:`number`,children:_jsx(_components.p,{children:`Total number of plans contributing to the pool.`})})})]})]})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`rollovers`,type:`object[]`,children:[_jsx(_components.p,{children:`Rollover balances carried over from previous periods.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`granted`,type:`number`,children:_jsx(_components.p,{children:`Amount originally rolled over from a previous period, before any of it was consumed.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`balance`,type:`number`,children:_jsx(_components.p,{children:`Amount of balance rolled over from a previous period.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number`,children:_jsx(_components.p,{children:`Timestamp when the rollover balance expires.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`allocated`,type:`number`,children:_jsx(_components.p,{children:`Shared credits held for entities by allocations; present only when the customer allocates this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`unallocated`,type:`number`,children:_jsx(_components.p,{children:`Remaining shared credits no allocation holds; any entity may use them.`})})})]})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`flags.{key}`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this flag.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_id`,type:`string | null`,children:_jsx(_components.p,{children:`The plan ID this flag originates from, or null for standalone flags.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`expires_at`,type:`number | null`,children:_jsx(_components.p,{children:`Timestamp when this flag expires, or null for no expiration.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this flag is for.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`feature`,type:`object`,children:[_jsx(_components.p,{children:`The full feature object if expanded.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`id`,type:`string`,children:_jsx(_components.p,{children:`The unique identifier for this feature, used in /check and /track calls.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Human-readable name displayed in the dashboard and billing UI.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`type`,type:`'boolean' | 'metered' | 'credit_system' | 'ai_credit_system'`,children:_jsx(_components.p,{children:`Feature type: ‘boolean’ for on/off access, ‘metered’ for usage-tracked features, ‘credit_system’ for unified credit pools, ‘ai_credit_system’ for model-based token pricing.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`consumable`,type:`boolean`,children:_jsx(_components.p,{children:`For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`combine`,type:`'sum' | 'max' | 'min'`,children:_jsx(_components.p,{children:`How grants of this feature from several plans combine: ‘sum’ adds them up, ‘max’ / ‘min’ keep the highest / lowest grant among plan items with no price. Omitted when ‘sum’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`event_names`,type:`string[]`,children:_jsx(_components.p,{children:`Event names that trigger this feature’s balance. Allows multiple features to respond to a single event.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`credit_schema`,type:`object | object | object[]`,children:[_jsx(_components.p,{children:`For classic credit systems: maps metered features to flat or graduated credit costs.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`metered_feature_id`,type:`string | any`,children:_jsx(_components.p,{children:`ID of the metered feature that draws from this credit system.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`billing_units`,type:`number`,children:_jsx(_components.p,{children:`Number of metered-feature units priced together. Defaults to one when omitted.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`dimensions.{key}`,type:`object | object`,children:_jsx(_components.p,{children:`Named rates chosen by event properties. The most specific match sets the rate; with no match the item’s own rate applies.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`multipliers.{key}`,type:`object`,children:[_jsx(_components.p,{children:`Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`match.{key}`,type:`string`,children:_jsx(_components.p,{children:`Event properties this entry applies to. Every key must equal the tracked property, compared as strings.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`factor`,type:`number`,children:_jsx(_components.p,{children:`Multiplies the matched rate. All matching multipliers stack.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`add`,type:`number`,children:_jsx(_components.p,{children:`Added to the rate after every factor is applied, in credits per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tier_behavior`,type:`any`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`tiers`,type:`object[]`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`to`,type:`number`,children:_jsx(_components.p,{children:`Inclusive upper usage boundary for this graduated tier. The final tier must be ‘inf’.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group within this tier.`})})})]})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`credit_cost`,type:`number`,children:_jsx(_components.p,{children:`Credits consumed per billing-unit group.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`model_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-model markup overrides for AI credit systems.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`input_cost`,type:`number`})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`output_cost`,type:`number`})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`default_markup`,type:`number`,children:_jsx(_components.p,{children:`Default percentage markup for AI credit systems. Use -100 to make usage free.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`provider_markups.{key}`,type:`object | null`,children:[_jsx(_components.p,{children:`Per-provider default markup percentages for AI credit systems.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`markup`,type:`number`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`display`,type:`object`,children:[_jsx(_components.p,{children:`Display names for the feature in billing UI and customer-facing components.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`singular`,type:`string | null`,children:_jsx(_components.p,{children:`Singular form for UI display (e.g., ‘API call’, ‘seat’).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plural`,type:`string | null`,children:_jsx(_components.p,{children:`Plural form for UI display (e.g., ‘API calls’, ‘seats’).`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`archived`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the feature is archived and hidden from the dashboard.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`processors`,type:`object`,children:[_jsx(_components.p,{children:`Processor mappings for this feature. Present when a Stripe product or meter is set.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe`,type:`object`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`product_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe product ID this feature’s usage prices bill under.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`meter_id`,type:`string`,children:_jsx(_components.p,{children:`Stripe meter ID used to create this feature’s metered price.`})})})]})})})})]})})]})]})})]})})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`billing_controls`,type:`object`,children:[_jsx(_components.p,{children:`Billing controls for the entity.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`spend_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of spend limits per feature. Each entry caps overage (overage_limit) and/or per-interval usage (usage_limit).`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`Optional feature ID this spend limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether the overage spend limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit_type`,type:`'absolute' | 'usage_percentage'`,children:_jsx(_components.p,{children:`How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`overage_limit`,type:`number`,children:_jsx(_components.p,{children:`Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`skip_overage_billing`,type:`boolean`,children:_jsx(_components.p,{children:`When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'plan'`,children:_jsx(_components.p,{children:`Response-only: whether the entry is a customer-level override or inherited from an attached plan’s defaults.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_limits`,type:`object[]`,children:[_jsx(_components.p,{children:`List of hard usage caps per feature for this entity. An entity entry overrides the customer’s for that feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature this usage limit applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage limit is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`limit`,type:`number`,children:_jsx(_components.p,{children:`Maximum units allowed per interval.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`interval`,type:`'day' | 'week' | 'month' | 'year'`,children:_jsx(_components.p,{children:`Interval for the cap, aligned to the customer’s billing cycle.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`anchor`,type:`'billing_cycle' | 'utc'`,children:_jsx(_components.p,{children:`Window alignment. ‘billing_cycle’ phases the interval to the customer’s renewal time; ‘utc’ aligns to the UTC calendar.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`usage`,type:`number`,children:_jsx(_components.p,{children:`Usage consumed in the active interval, stored in the usage-window counter.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'plan'`,children:_jsx(_components.p,{children:`Response-only: whether the entry is a customer-level override or inherited from an attached plan’s defaults.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`usage_alerts`,type:`object[]`,children:[_jsx(_components.p,{children:`List of usage alert configurations per feature.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this alert applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether this usage alert is enabled.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold`,type:`number`,children:_jsx(_components.p,{children:`The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`threshold_type`,type:`'usage' | 'usage_percentage' | 'remaining' | 'remaining_percentage'`,children:_jsx(_components.p,{children:`Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`basis`,type:`'balance' | 'included' | 'recurring' | 'usage_limit'`,children:_jsx(_components.p,{children:`What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`filter`,type:`object`,children:[_jsx(_components.p,{children:`Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.`}),_jsx(Expandable,{title:`properties`,children:_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`properties.{key}`,type:`string`})})})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`name`,type:`string`,children:_jsx(_components.p,{children:`Optional user-defined label to distinguish multiple alerts on the same feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'plan'`,children:_jsx(_components.p,{children:`Response-only: whether the entry is a customer-level override or inherited from an attached plan’s defaults.`})})})]})]})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`overage_allowed`,type:`object[]`,children:[_jsx(_components.p,{children:`List of overage allowed controls per feature. When enabled, usage can exceed balance.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`feature_id`,type:`string`,children:_jsx(_components.p,{children:`The feature ID this overage allowed control applies to.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`enabled`,type:`boolean`,children:_jsx(_components.p,{children:`Whether overage is allowed for this feature.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`source`,type:`'customer' | 'plan'`,children:_jsx(_components.p,{children:`Response-only: whether the entry is a customer-level override or inherited from an attached plan’s defaults.`})})})]})]})})]})]})}),`\n`,_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsxs(DynamicResponseField,{name:`invoices`,type:`object[]`,children:[_jsx(_components.p,{children:`Invoices for this entity (only included when expand=invoices)`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`plan_ids`,type:`string[]`,children:_jsx(_components.p,{children:`Array of plan IDs included in this invoice`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`stripe_id`,type:`string`,children:_jsx(_components.p,{children:`The Stripe invoice ID`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`processor_type`,type:`'stripe' | 'revenuecat'`,children:_jsx(_components.p,{children:`The billing processor that owns this invoice.`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`status`,type:`string`,children:_jsx(_components.p,{children:`The status of the invoice`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`total`,type:`number`,children:_jsx(_components.p,{children:`The total amount of the invoice`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`currency`,type:`string`,children:_jsx(_components.p,{children:`The currency code for the invoice`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`created_at`,type:`number`,children:_jsx(_components.p,{children:`Timestamp when the invoice was created`})})}),_jsx(_MdxComponentBoundary,{name:`DynamicResponseField`,children:_jsx(DynamicResponseField,{name:`hosted_invoice_url`,type:`string | null`,children:_jsx(_components.p,{children:`URL to the Stripe-hosted invoice page`})})})]})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{DynamicResponseExample,DynamicResponseField,DynamicParamField,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get Entity","openapi":"openapi POST /v1/entities.get","description":"Fetches an entity by its ID.\n\nUse this to read one entity's current state. Pass customerId when you want to scope the lookup to a specific customer.","href":"/api-reference/entities/getEntity"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[158,4333,")=>null;const DynamicResponseField=()=>null;const DynamicParamField=()=>null;fun"],[4401,4500,"pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,ResponseExample,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true)"],[4609,4624,"ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!_MdxComponentBo"],[241522,242012,",`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`200`,numberOfLines:`55`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`55`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"seat_42\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Seat 42\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"customer_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cus_123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"feature_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"seats\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1771409161016`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"env\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"sandbox\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"subscriptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"plan_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pro_plan\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"auto_enable\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"add_on\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"active\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"past_due\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"canceled_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expires_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"trial_ends_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"started_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1771431921437`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"current_period_start\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1771431921437`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"current_period_end\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1771999921437`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"quantity\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"purchases\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"balances\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"feature_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"messages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"granted\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"remaining\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`72`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"usage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`28`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unlimited\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"overage_allowed\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"max_purchase\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"next_reset_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1773851121437`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"breakdown\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cus_ent_39qmLooixXLAqMywgXywjAz96rV\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"plan_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pro_plan\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"included_grant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`100`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"prepaid_grant\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"remaining\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`72`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"usage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`28`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"unlimited\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reset\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"interval\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"month\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"resets_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1773851121437`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expires_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"invoices\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{DynamicResponseExample,DynamicResponseField,DynamicParamField,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}"]]},"mdxExtracts":{"tableOfContents":[{"title":"Body Parameters","slug":"body-parameters","depth":3,"children":[]},{"title":"Response","slug":"response","depth":3,"children":[]}],"codeExamples":{"response":{"type":"ResponseExample","children":[{"filename":"200","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"55\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"seat_42\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Seat 42\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"customer_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cus_123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"feature_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"seats\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1771409161016\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"env\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"sandbox\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"subscriptions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"plan_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"pro_plan\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"auto_enable\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"add_on\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"active\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"past_due\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"canceled_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"expires_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"trial_ends_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"started_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1771431921437\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"current_period_start\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1771431921437\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"current_period_end\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1771999921437\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"quantity\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"purchases\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"balances\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"messages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"feature_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"messages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"granted\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">100\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"remaining\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">72\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"usage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">28\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"unlimited\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"overage_allowed\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"max_purchase\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"next_reset_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1773851121437\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"breakdown\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cus_ent_39qmLooixXLAqMywgXywjAz96rV\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"plan_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"pro_plan\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"included_grant\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">100\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"prepaid_grant\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">0\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"remaining\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">72\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"usage\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">28\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"unlimited\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"reset\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"interval\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"month\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"resets_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1773851121437\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"expires_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"invoices\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: []\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}}},"jsLinks":["/_mintlify/custom/autumn-b9b4c0fb/d78b8c063824141d/dynamic-response.js"],"openApiReferenceData":{"operation":{"operationId":"getEntity","description":"Fetches an entity by its ID.\n\nUse this to read one entity's current state. Pass customerId when you want to scope the lookup to a specific customer.","tags":["entities"],"requestBody":"77cc73c7-11e0-4b1a-98cd-7c20b4394591","responses":{"200":"b4a53e11-5fec-472e-a8b2-c7ad560de45a"},"x-speakeasy-name-override":"get","parameters":["1c967d2d-3ed6-47c3-8597-6ebde316b01f"],"x-codeSamples":[{"lang":"typescript","label":"Typescript (SDK)","source":"import { Autumn } from 'autumn-js'\n\nconst autumn = new Autumn()\n\nconst result = await autumn.entities.get({\n entityId: \"seat_42\",\n});"},{"lang":"python","label":"Python (SDK)","source":"from autumn_sdk import Autumn\n\nautumn = Autumn(secret_key=\"am_sk_test...\")\n\nres = autumn.entities.get(entity_id=\"seat_42\")"}],"method":"post","type":"path","servers":["fe6701f7-be5c-40aa-b244-1a6f83c52f58"],"security":["53876c4e-3cd5-4c7e-b82b-fb98671718cb"],"path":"/v1/entities.get","baseUrlOptions":["https://api.useautumn.com"],"title":"","codeSamples":[{"label":"Typescript (SDK)","lang":"typescript","source":"import { Autumn } from 'autumn-js'\n\nconst autumn = new Autumn()\n\nconst result = await autumn.entities.get({\n entityId: \"seat_42\",\n});"},{"label":"Python (SDK)","lang":"python","source":"from autumn_sdk import Autumn\n\nautumn = Autumn(secret_key=\"am_sk_test...\")\n\nres = autumn.entities.get(entity_id=\"seat_42\")"}],"requestExampleLanguages":["typescript","python","bash"],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExamples":[{"dropdown":false,"language":"json","code":{"type":"pre","key":null,"ref":null,"props":{"className":"shiki shiki-themes github-light-default dark-plus","style":{"backgroundColor":"#ffffff","--shiki-dark-bg":"#0B0C0E","color":"#1f2328","--shiki-dark":"#D4D4D4"},"language":"json","children":{"type":"code","key":null,"ref":null,"props":{"language":"json","numberOfLines":"55","children":[{"type":"span","key":"0","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"{"}}}},"\n",{"type":"span","key":"2","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"seat_42\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"4","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"name\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"Seat 42\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"6","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"customer_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"cus_123\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"8","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"feature_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"seats\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"10","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"created_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1771409161016"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"12","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"env\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"sandbox\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"14","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"subscriptions\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"16","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"18","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"plan_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"pro_plan\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"20","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"auto_enable\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"true"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"22","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"add_on\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"24","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"status\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"active\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"26","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"past_due\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"28","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"canceled_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"30","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"expires_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"32","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"trial_ends_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"34","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"started_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1771431921437"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"36","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"current_period_start\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1771431921437"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"38","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"current_period_end\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1771999921437"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"40","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"quantity\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1"}}]}},"\n",{"type":"span","key":"42","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"44","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ],"}}}},"\n",{"type":"span","key":"46","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"purchases\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": [],"}}]}},"\n",{"type":"span","key":"48","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"balances\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"50","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"messages\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"52","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"feature_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"messages\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"54","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"granted\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"100"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"56","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"remaining\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"72"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"58","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"usage\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"28"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"60","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"unlimited\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"62","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"overage_allowed\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"64","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"max_purchase\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"66","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"next_reset_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1773851121437"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"68","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"breakdown\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": ["}}]}},"\n",{"type":"span","key":"70","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" {"}}}},"\n",{"type":"span","key":"72","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"cus_ent_39qmLooixXLAqMywgXywjAz96rV\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"74","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"plan_id\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"pro_plan\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"76","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"included_grant\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"100"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"78","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"prepaid_grant\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"0"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"80","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"remaining\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"72"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"82","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"usage\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"28"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"84","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"unlimited\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"false"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"86","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"reset\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": {"}}]}},"\n",{"type":"span","key":"88","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"interval\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0A3069","--shiki-dark":"#CE9178"},"children":"\"month\""}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"90","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"resets_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#B5CEA8"},"children":"1773851121437"}}]}},"\n",{"type":"span","key":"92","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"94","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"price\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}},{"type":"span","key":"3","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":","}}]}},"\n",{"type":"span","key":"96","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"expires_at\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": "}},{"type":"span","key":"2","ref":null,"props":{"style":{"color":"#0550AE","--shiki-dark":"#569CD6"},"children":"null"}}]}},"\n",{"type":"span","key":"98","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"100","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" ]"}}}},"\n",{"type":"span","key":"102","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" }"}}}},"\n",{"type":"span","key":"104","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":" },"}}}},"\n",{"type":"span","key":"106","ref":null,"props":{"className":"line","children":[{"type":"span","key":"0","ref":null,"props":{"style":{"color":"#116329","--shiki-dark":"#9CDCFE"},"children":" \"invoices\""}},{"type":"span","key":"1","ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":": []"}}]}},"\n",{"type":"span","key":"108","ref":null,"props":{"className":"line","children":{"type":"span","key":null,"ref":null,"props":{"style":{"color":"#1F2328","--shiki-dark":"#D4D4D4"},"children":"}"}}}},"\n"]}}}},"filename":"200"}],"responseExampleType":"mdx"},"dependencies":{"parameters":{"1c967d2d-3ed6-47c3-8597-6ebde316b01f":{"name":"x-api-version","in":"header","required":true,"schema":{"type":"string","default":"2.6.0","isRequired":true,"uniqueKey":"","typeLabel":"string"},"x-speakeasy-globals-hidden":true}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity_id":{"type":"string","description":"The ID of the entity.","isRequired":true,"uniqueKey":"entity_id","typeLabel":"string"},"customer_id":{"type":"string","description":"The ID of the customer to create the entity for.","uniqueKey":"customer_id","typeLabel":"string"}},"required":["entity_id"],"title":"GetEntityParams","examples":[{"entity_id":"seat_42"},{"customer_id":"cus_123","entity_id":"seat_42"}],"uniqueKey":"","typeLabel":"GetEntityParams · object"},"example":{"entity_id":"seat_42"},"examples":{"Example":{"title":"Example","value":{"entity_id":"seat_42"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"b4a53e11-5fec-472e-a8b2-c7ad560de45a":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","description":"The unique identifier of the entity","isRequired":true,"uniqueKey":"id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The unique identifier of the entity","isRequired":true,"uniqueKey":"id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"id","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","description":"The name of the entity","isRequired":true,"uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name of the entity","isRequired":true,"uniqueKey":"name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"name","typeLabel":"string | null"},"created_at":{"type":"number","description":"Unix timestamp when the entity was created","isRequired":true,"uniqueKey":"created_at","typeLabel":"number"},"env":{"enum":["sandbox","live"],"type":"string","description":"The environment (sandbox/live)","isRequired":true,"uniqueKey":"env","typeLabel":"enum\u003cstring>"},"subscriptions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier of this subscription. If a subscription_id was provided at attach time, it is used; otherwise, falls back to the internal ID.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].id","typeLabel":"string"},"plan_id":{"type":"string","description":"The unique identifier of the subscribed plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan_id","typeLabel":"string"},"auto_enable":{"type":"boolean","description":"Whether the plan was automatically enabled for the customer.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].auto_enable","typeLabel":"boolean"},"add_on":{"type":"boolean","description":"Whether this is an add-on plan rather than a base subscription.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].add_on","typeLabel":"boolean"},"status":{"enum":["active","scheduled"],"type":"string","description":"Current status of the subscription.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"past_due":{"type":"boolean","description":"Whether the subscription has overdue payments.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].past_due","typeLabel":"boolean"},"canceled_at":{"oneOf":[{"type":"number","description":"Timestamp when the subscription was canceled, or null if not canceled.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].canceled_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the subscription was canceled, or null if not canceled.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].canceled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].canceled_at","typeLabel":"number | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when the subscription will expire, or null if no expiry set.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the subscription will expire, or null if no expiry set.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].expires_at","typeLabel":"number | null"},"trial_ends_at":{"oneOf":[{"type":"number","description":"Timestamp when the trial period ends, or null if not on trial.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].trial_ends_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the trial period ends, or null if not on trial.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].trial_ends_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].trial_ends_at","typeLabel":"number | null"},"started_at":{"type":"number","description":"Timestamp when the subscription started.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].started_at","typeLabel":"number"},"current_period_start":{"oneOf":[{"type":"number","description":"Start timestamp of the current billing period.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].current_period_start.oneOf.0","typeLabel":"number"},{"type":"null","description":"Start timestamp of the current billing period.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].current_period_start.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].current_period_start","typeLabel":"number | null"},"current_period_end":{"oneOf":[{"type":"number","description":"End timestamp of the current billing period.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].current_period_end.oneOf.0","typeLabel":"number"},{"type":"null","description":"End timestamp of the current billing period.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].current_period_end.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].current_period_end","typeLabel":"number | null"},"quantity":{"type":"number","description":"Number of units of this subscription (for per-seat plans).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].quantity","typeLabel":"number"},"plan":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.id","typeLabel":"string"},"name":{"type":"string","description":"Display name of the plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Optional description of the plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional description of the plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.description","typeLabel":"string | null"},"group":{"oneOf":[{"type":"string","description":"Group identifier for organizing related plans. Plans in the same group are mutually exclusive.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.group.oneOf.0","typeLabel":"string"},{"type":"null","description":"Group identifier for organizing related plans. Plans in the same group are mutually exclusive.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.group.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.group","typeLabel":"string | null"},"version":{"type":"number","description":"Version number of the plan. Incremented when plan configuration changes.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.version","typeLabel":"number"},"add_on":{"type":"boolean","description":"Whether this is an add-on plan that can be attached alongside a main plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.add_on","typeLabel":"boolean"},"auto_enable":{"type":"boolean","description":"If true, this plan is automatically attached when a customer is created. Used for free plans.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.auto_enable","typeLabel":"boolean"},"price":{"oneOf":[{"type":"object","description":"Base recurring price for the plan. Null for free plans or usage-only plans.","required":["amount","interval"],"properties":{"amount":{"type":"number","description":"Base price amount for the plan, in major currency units (e.g. dollars).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.amount","typeLabel":"number"},"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval (e.g. 'month', 'year').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Base price amounts in additional currencies. The base 'amount' is in the org's default currency.","uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.additional_currencies","typeLabel":"object[]"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.interval_count","typeLabel":"number"},"display":{"type":"object","properties":{"primary_text":{"type":"string","description":"Main display text (e.g. '$10' or '100 messages').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.display.primary_text","typeLabel":"string"},"secondary_text":{"type":"string","description":"Secondary display text (e.g. 'per month' or 'then $0.5 per 100').","uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.display.secondary_text","typeLabel":"string"}},"required":["primary_text"],"description":"Display text for showing this price in pricing pages.","uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"oneOf":[{"type":"object","required":["price_id"],"properties":{"price_id":{"type":"string","description":"Stripe price ID. For prepaid with included > 0 this is the V2 price.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.processors.stripe.oneOf.0.price_id","typeLabel":"string"}},"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.processors.stripe.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.processors.stripe.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.processors.stripe","typeLabel":"object | null"}},"x-atmn-mapping":true,"description":"Payment processors this base price is connected to. Omitted when unset.","uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0.processors","typeLabel":"object"}},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Base recurring price for the plan. Null for free plans or usage-only plans.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.price","typeLabel":"object | null"},"items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature this item configures.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_id","typeLabel":"string"},"included":{"type":"number","description":"Number of free units included. For consumable features, balance resets to this number each interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].included","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether the customer has unlimited access to this feature.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for consumable features. Null for non-consumable features like seats where usage persists across billing cycles.","required":["interval"],"properties":{"interval":{"enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"type":"string","description":"The interval at which the feature balance resets (e.g. 'month', 'year'). For consumable features, usage resets to 0 and included units are restored.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals between resets. Defaults to 1.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for consumable features. Null for non-consumable features like seats where usage persists across billing cycles.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration for usage beyond included units. Null if feature is entirely free.","required":["interval","billing_units","billing_method","max_purchase"],"properties":{"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval for this price. For consumable features, should match reset.interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"billing_units":{"type":"number","description":"Number of units per price increment. Usage is rounded UP to the nearest billing_units when billed (e.g. billing_units=100 means 101 usage rounds to 200).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"'prepaid' for features like seats where customers pay upfront, 'usage_based' for pay-as-you-go after included usage.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum units a customer can purchase beyond included. E.g. if included=100 and max_purchase=300, customer can use up to 400 total before usage is capped. Null for no limit.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum units a customer can purchase beyond included. E.g. if included=100 and max_purchase=300, customer can use up to 400 total before usage is capped. Null for no limit.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"Price per billing_units after included usage is consumed. Mutually exclusive with tiers.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Amounts in additional currencies for this flat price. The base 'amount' is in the org's default currency. Only valid with 'amount', not 'tiers' (tiered prices carry per-currency amounts on each tier).","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies","typeLabel":"object[]"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Per-unit amount for this tier in this currency.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","description":"Flat amount for this tier in this currency, if the tier uses one.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["currency"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies","typeLabel":"object[]"}},"required":["to","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration. Each tier's 'to' INCLUDES the included amount. Either 'tiers' or 'amount' is required.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers price usage. 'graduated' (default) charges each unit at the rate of the tier it falls in. 'volume' picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier's rate plus its flat_amount.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.interval_count","typeLabel":"number"},"processors":{"type":"object","properties":{"stripe":{"oneOf":[{"type":"object","required":["price_id"],"properties":{"price_id":{"type":"string","description":"Stripe price ID. For prepaid with included > 0 this is the V2 price.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe.oneOf.0.price_id","typeLabel":"string"}},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe","typeLabel":"object | null"}},"x-atmn-mapping":true,"description":"Payment processors this item price is connected to. Omitted when unset.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors","typeLabel":"object"}},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration for usage beyond included units. Null if feature is entirely free.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].price","typeLabel":"object | null"},"threshold_billing":{"oneOf":[{"type":"object","description":"Bills this many feature units when outstanding overage reaches it.","required":["threshold"],"properties":{"threshold":{"type":"number","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing.oneOf.0.threshold","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing.oneOf.0","typeLabel":"object"},{"type":"null","description":"Bills this many feature units when outstanding overage reaches it.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing","typeLabel":"object | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the feature, used to refer to it in other API calls like /track or /check.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.id","typeLabel":"string"},"type":{"enum":["static","boolean","single_use","continuous_use","credit_system","ai_credit_system"],"type":"string","description":"The type of the feature","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"The name of the feature.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name of the feature.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.name","typeLabel":"string | null"},"display":{"oneOf":[{"type":"object","description":"Singular and plural display names for the feature.","required":["singular","plural"],"properties":{"singular":{"type":"string","description":"The singular display name for the feature.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.0.singular","typeLabel":"string"},"plural":{"type":"string","description":"The plural display name for the feature.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.0.plural","typeLabel":"string"}},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.0","typeLabel":"object"},{"type":"null","description":"Singular and plural display names for the feature.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.display","typeLabel":"object | null"},"credit_schema":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"metered_feature_id":{"type":"string","description":"The ID of the metered feature (should be a single_use feature).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0.items.[INDEX].metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","description":"The credit cost of the metered feature.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["metered_feature_id","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Credit cost schema for credit system features.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Credit cost schema for credit system features.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema","typeLabel":"object[] | null"},"archived":{"oneOf":[{"type":"boolean","description":"Whether or not the feature is archived.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.archived.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether or not the feature is archived.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.archived.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature.archived","typeLabel":"boolean | null"}},"required":["id","type"],"description":"The full feature object if expanded.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature","typeLabel":"object"},"pooled":{"type":"boolean","default":false,"description":"Whether entity-level grants contribute to a shared customer balance.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].pooled","typeLabel":"boolean"},"display":{"type":"object","properties":{"primary_text":{"type":"string","description":"Main display text (e.g. '$10' or '100 messages').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].display.primary_text","typeLabel":"string"},"secondary_text":{"type":"string","description":"Secondary display text (e.g. 'per month' or 'then $0.5 per 100').","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].display.secondary_text","typeLabel":"string"}},"required":["primary_text"],"description":"Display text for showing this item in pricing pages.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].display","typeLabel":"object"},"rollover":{"type":"object","properties":{"max":{"oneOf":[{"type":"number","description":"Maximum rollover units. Null for unlimited rollover.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.max.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum rollover units. Null for unlimited rollover.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.max.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.max","typeLabel":"number | null"},"expiry_duration_type":{"enum":["month","forever"],"type":"string","description":"When rolled over units expire.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.expiry_duration_type","typeLabel":"enum\u003cstring>"},"max_percentage":{"oneOf":[{"type":"number","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.max_percentage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.max_percentage.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.max_percentage","typeLabel":"number | null"},"expiry_duration_length":{"type":"number","description":"Number of periods before expiry.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover.expiry_duration_length","typeLabel":"number"}},"required":["max","expiry_duration_type"],"description":"Rollover configuration for unused units. If set, unused included units roll over to the next period.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].rollover","typeLabel":"object"},"expiry":{"oneOf":[{"type":"object","description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","required":["duration","length"],"properties":{"duration":{"enum":["day","week","month","year"],"type":"string","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.0.duration","typeLabel":"enum\u003cstring>"},"length":{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.0.length","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.0","typeLabel":"object"},{"type":"null","description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].expiry","typeLabel":"object | null"},"feature_override":{"type":"object","properties":{"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","excluded"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature to remove from the credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"string"},"excluded":{"const":true,"description":"Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.excluded","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For credit system features: merges into the feature's credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `excluded: true` removes it, and unlisted features keep the credit system's rate.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema","typeLabel":"object[]"},"markups":{"type":"object","properties":{"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for customers on this plan. Use -100 to make usage free.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider markup percentages for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider markup percentages for customers on this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups","typeLabel":"object | null"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for customers on this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups","typeLabel":"object | null"}},"additionalProperties":false,"description":"For AI credit system features: replaces the feature's markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature's.","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups","typeLabel":"object"}},"additionalProperties":false,"description":"Overrides fields of this item's feature for customers on this plan (e.g. a credit system's credit_schema).","uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX].feature_override","typeLabel":"object"}},"required":["feature_id","included","unlimited","reset","price"],"uniqueKey":"subscriptions.items.[INDEX].plan.\\items.items.[INDEX]","typeLabel":"object"},"description":"Feature configurations included in this plan. Each item defines included units, pricing, and reset behavior for a feature.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.\\items","typeLabel":"object[]"},"created_at":{"type":"number","description":"Unix timestamp (ms) when the plan was created.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.created_at","typeLabel":"number"},"env":{"enum":["sandbox","live"],"type":"string","description":"Environment this plan belongs to ('sandbox' or 'live').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.env","typeLabel":"enum\u003cstring>"},"archived":{"type":"boolean","description":"Whether the plan is archived. Archived plans cannot be attached to new customers.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.archived","typeLabel":"boolean"},"config":{"type":"object","properties":{"ignore_past_due":{"type":"boolean","default":false,"description":"If true, entitlements attached to this plan will still reset on schedule even when the customer's product is in a past_due state.","uniqueKey":"subscriptions.items.[INDEX].plan.config.ignore_past_due","typeLabel":"boolean"},"anchor_to_month_start":{"type":"boolean","description":"Anchor billing and reset cycles to the 1st of the month (UTC).","default":false,"uniqueKey":"subscriptions.items.[INDEX].plan.config.anchor_to_month_start","typeLabel":"boolean"}},"description":"Miscellaneous plan-level configuration flags.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.config","typeLabel":"object"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"subscriptions.items.[INDEX].plan.metadata.additionalProperties","typeLabel":"any"},"description":"Arbitrary key-value metadata defined by you for your own use. Shared across all versions of the plan.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.metadata","typeLabel":"object"},"base_variant_id":{"oneOf":[{"type":"string","description":"Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.base_variant_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.base_variant_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.base_variant_id","typeLabel":"string | null"},"version_slug":{"oneOf":[{"type":"string","description":"User-facing version identity. Defaults to v{n} when the version is minted.","uniqueKey":"subscriptions.items.[INDEX].plan.version_slug.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-facing version identity. Defaults to v{n} when the version is minted.","uniqueKey":"subscriptions.items.[INDEX].plan.version_slug.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.version_slug","typeLabel":"string | null"},"active":{"type":"boolean","description":"Whether this is the active version of the plan. At most one version is active.","uniqueKey":"subscriptions.items.[INDEX].plan.active","typeLabel":"boolean"},"processors":{"type":"object","properties":{"stripe":{"oneOf":[{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string","description":"Stripe product ID this plan is billed under.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.processors.stripe.oneOf.0.product_id","typeLabel":"string"},"additional_product_ids":{"type":"array","items":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.processors.stripe.oneOf.0.additional_product_ids.items.[INDEX]","typeLabel":"string"},"description":"Extra Stripe product IDs aliased to this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.processors.stripe.oneOf.0.additional_product_ids","typeLabel":"string[]"}},"uniqueKey":"subscriptions.items.[INDEX].plan.processors.stripe.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"subscriptions.items.[INDEX].plan.processors.stripe.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.processors.stripe","typeLabel":"object | null"},"revenuecat":{"oneOf":[{"type":"object","required":["products"],"properties":{"products":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string","description":"RevenueCat product ID that grants this plan when purchased.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].product_id","typeLabel":"string"},"feature_quantities":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities.items.[INDEX].feature_id","typeLabel":"string"},"quantity":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities.items.[INDEX].quantity","typeLabel":"number"}},"required":["feature_id"],"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities.items.[INDEX]","typeLabel":"object"},"description":"Prepaid quantities granted when this specific RevenueCat product is purchased, in feature units.","uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities","typeLabel":"object[]"}},"required":["product_id"],"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX]","typeLabel":"object"},"description":"Every RevenueCat product that maps to this plan. Replaces the current set.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0.products","typeLabel":"object[]"}},"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.processors.revenuecat","typeLabel":"object | null"}},"x-atmn-mapping":true,"description":"Payment processors this plan is connected to. Omitted when unset.","uniqueKey":"subscriptions.items.[INDEX].plan.processors","typeLabel":"object"},"free_trial":{"type":"object","properties":{"duration_length":{"type":"number","description":"Number of duration_type periods the trial lasts.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.free_trial.duration_length","typeLabel":"number"},"duration_type":{"enum":["day","month","year"],"type":"string","description":"Unit of time for the trial duration ('day', 'month', 'year').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.free_trial.duration_type","typeLabel":"enum\u003cstring>"},"card_required":{"type":"boolean","description":"Whether a payment method is required to start the trial. If true, customer will be charged after trial ends.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.free_trial.card_required","typeLabel":"boolean"},"on_end":{"oneOf":[{"type":"string","description":"Behavior when the trial ends. 'bill' charges the customer (default). 'revert' expires the trial and restores the customer's previous plan.","enum":["bill","revert"],"uniqueKey":"subscriptions.items.[INDEX].plan.free_trial.on_end.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Behavior when the trial ends. 'bill' charges the customer (default). 'revert' expires the trial and restores the customer's previous plan.","uniqueKey":"subscriptions.items.[INDEX].plan.free_trial.on_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.free_trial.on_end","typeLabel":"enum\u003cstring> | null"}},"required":["duration_length","duration_type","card_required"],"description":"Free trial configuration. If set, new customers can try this plan before being charged.","uniqueKey":"subscriptions.items.[INDEX].plan.free_trial","typeLabel":"object"},"billing_controls":{"type":"object","properties":{"auto_topups":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature (credit balance) to auto top-up.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].feature_id","typeLabel":"string"},"threshold":{"type":"number","description":"When the balance drops below this threshold, an auto top-up will be purchased.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].threshold","typeLabel":"number"},"quantity":{"type":"number","minimum":1,"description":"Amount of credits to add per auto top-up.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].quantity","typeLabel":"number"},"enabled":{"type":"boolean","default":false,"description":"Whether auto top-up is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].enabled","typeLabel":"boolean"},"purchase_limit":{"type":"object","properties":{"interval":{"enum":["hour","day","week","month"],"type":"string","description":"The time interval for the purchase limit window.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval","typeLabel":"enum\u003cstring>"},"limit":{"type":"number","minimum":1,"description":"Maximum number of auto top-ups allowed within the interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit.limit","typeLabel":"number"},"interval_count":{"type":"number","minimum":1,"default":1,"description":"Number of intervals in the purchase limit window.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval_count","typeLabel":"number"}},"required":["interval","limit"],"description":"Optional rate limit to cap how often auto top-ups occur.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit","typeLabel":"object"},"invoice_mode":{"type":"boolean","description":"When true, auto top-up creates a send_invoice invoice instead of auto-charging.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].invoice_mode","typeLabel":"boolean"}},"required":["feature_id","threshold","quantity"],"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX]","typeLabel":"object"},"description":"List of auto top-up configurations per feature.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.auto_topups","typeLabel":"object[]"},"spend_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Optional feature ID this spend limit applies to.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether the overage spend limit is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].enabled","typeLabel":"boolean"},"limit_type":{"enum":["absolute","usage_percentage"],"type":"string","description":"How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].limit_type","typeLabel":"enum\u003cstring>"},"overage_limit":{"type":"number","minimum":0,"description":"Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].overage_limit","typeLabel":"number"},"skip_overage_billing":{"type":"boolean","description":"When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].skip_overage_billing","typeLabel":"boolean"}},"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX]","typeLabel":"object"},"description":"List of overage spend limits per feature (caps overage spend).","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.spend_limits","typeLabel":"object[]"},"usage_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature this usage limit applies to.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].feature_id","typeLabel":"string"},"limit":{"type":"number","minimum":0,"description":"Maximum units allowed per interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].limit","typeLabel":"number"},"interval":{"enum":["day","week","month","year"],"type":"string","description":"Interval for the cap, aligned to the customer's billing cycle.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage limit is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].enabled","typeLabel":"boolean"},"anchor":{"enum":["billing_cycle","utc"],"type":"string","description":"Window alignment. 'billing_cycle' phases the interval to the customer's renewal time; 'utc' aligns to the UTC calendar.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].anchor","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].filter","typeLabel":"object"}},"required":["feature_id","limit","interval"],"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX]","typeLabel":"object"},"description":"List of hard usage caps per feature (max units per interval).","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_limits","typeLabel":"object[]"},"usage_alerts":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number","minimum":0,"description":"The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].threshold","typeLabel":"number"},"threshold_type":{"enum":["usage","usage_percentage","remaining","remaining_percentage"],"type":"string","description":"Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].threshold_type","typeLabel":"enum\u003cstring>"},"feature_id":{"type":"string","description":"The feature ID this alert applies to.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage alert is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].enabled","typeLabel":"boolean"},"basis":{"enum":["balance","included","recurring","usage_limit"],"type":"string","default":"balance","description":"What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].basis","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].filter","typeLabel":"object"},"name":{"type":"string","description":"Optional user-defined label to distinguish multiple alerts on the same feature.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].name","typeLabel":"string"}},"required":["threshold","threshold_type"],"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX]","typeLabel":"object"},"description":"List of usage alert configurations per feature.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.usage_alerts","typeLabel":"object[]"},"overage_allowed":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature ID this overage allowed control applies to.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.overage_allowed.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether overage is allowed for this feature.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.overage_allowed.items.[INDEX].enabled","typeLabel":"boolean"}},"required":["feature_id"],"uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.overage_allowed.items.[INDEX]","typeLabel":"object"},"description":"List of overage allowed controls per feature. When enabled, usage can exceed balance.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls.overage_allowed","typeLabel":"object[]"}},"description":"Plan-level billing controls used as customer defaults.","uniqueKey":"subscriptions.items.[INDEX].plan.billing_controls","typeLabel":"object"},"customer_eligibility":{"type":"object","properties":{"attach_action":{"enum":["activate","upgrade","downgrade","none","purchase"],"type":"string","description":"The action that would occur if this plan were attached to the customer.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.customer_eligibility.attach_action","typeLabel":"enum\u003cstring>"},"trial_available":{"type":"boolean","description":"Whether the trial on this plan is available to this customer. For example, if the customer used the trial in the past, this will be false.","uniqueKey":"subscriptions.items.[INDEX].plan.customer_eligibility.trial_available","typeLabel":"boolean"},"status":{"enum":["active","scheduled"],"type":"string","description":"The customer's current status with this plan. 'active' if attached, 'scheduled' if pending activation.","uniqueKey":"subscriptions.items.[INDEX].plan.customer_eligibility.status","typeLabel":"enum\u003cstring>"},"canceling":{"type":"boolean","description":"Whether the customer's active instance of this plan is set to cancel.","uniqueKey":"subscriptions.items.[INDEX].plan.customer_eligibility.canceling","typeLabel":"boolean"},"trialing":{"type":"boolean","description":"Whether the customer is currently on a free trial of this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.customer_eligibility.trialing","typeLabel":"boolean"}},"required":["attach_action"],"uniqueKey":"subscriptions.items.[INDEX].plan.customer_eligibility","typeLabel":"object"},"variant_details":{"type":"object","properties":{"base_plan_id":{"type":"string","description":"The ID of the base plan this variant was derived from.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.base_plan_id","typeLabel":"string"},"customize":{"type":"object","properties":{"price":{"oneOf":[{"type":"object","title":"BasePrice","description":"Override the base price of the plan. Pass null to remove the base price.","required":["amount","interval"],"properties":{"amount":{"type":"number","description":"Base price amount for the plan, in major currency units (e.g. dollars).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.amount","typeLabel":"number"},"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval (e.g. 'month', 'year').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.interval_count","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Base price amounts in additional currencies. The base 'amount' is in the org's default currency.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies","typeLabel":"object[]"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.0","typeLabel":"BasePrice · object"},{"type":"null","description":"Override the base price of the plan. Pass null to remove the base price.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.price","typeLabel":"BasePrice · object | null"},"add_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature to configure.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_id","typeLabel":"string"},"threshold_billing":{"oneOf":[{"type":"object","description":"Bills this many feature units when outstanding overage reaches it.","required":["threshold"],"properties":{"threshold":{"type":"number","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing.oneOf.0.threshold","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing.oneOf.0","typeLabel":"object"},{"type":"null","description":"Bills this many feature units when outstanding overage reaches it.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing","typeLabel":"object | null"},"included":{"type":"number","maximum":10000000000000,"description":"Number of free units included. Balance resets to this each interval for consumable features.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].included","typeLabel":"number"},"unlimited":{"type":"boolean","description":"If true, customer has unlimited access to this feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].unlimited","typeLabel":"boolean"},"pooled":{"type":"boolean","default":false,"description":"Whether entity-level grants contribute to a shared customer balance.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].pooled","typeLabel":"boolean"},"reset":{"type":"object","properties":{"interval":{"enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"type":"string","description":"Interval at which balance resets (e.g. 'month', 'year'). For consumable features only.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].reset.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals between resets. Defaults to 1.","default":1,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].reset.interval_count","typeLabel":"number"}},"required":["interval"],"description":"Reset configuration for consumable features. Omit for non-consumable features like seats.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].reset","typeLabel":"object"},"price":{"type":"object","properties":{"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval. For consumable features, should match reset.interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.interval","typeLabel":"enum\u003cstring>"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"'prepaid' for upfront payment (seats), 'usage_based' for pay-as-you-go.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.billing_method","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"Price per billing_units after included usage. Either 'amount' or 'tiers' is required.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Amounts in additional currencies for this flat price. The base 'amount' is in the org's default currency. Only valid with 'amount', not 'tiers'.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies","typeLabel":"object[]"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].flat_amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Per-unit amount for this tier in this currency.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","description":"Flat amount for this tier in this currency, if the tier uses one.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["currency"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies","typeLabel":"object[]"}},"required":["to","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing. Either 'amount' or 'tiers' is required.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers price usage. 'graduated' (default) charges each unit at the rate of the tier it falls in. 'volume' picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier's rate plus its flat_amount.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tier_behavior","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.interval_count","typeLabel":"number"},"billing_units":{"type":"number","default":1,"description":"Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.billing_units","typeLabel":"number"},"max_purchase":{"oneOf":[{"type":"number","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.max_purchase.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.max_purchase","typeLabel":"number | null"}},"required":["interval","billing_method"],"description":"Pricing for usage beyond included units. Omit for free features.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price","typeLabel":"object"},"proration":{"type":"object","properties":{"on_increase":{"enum":["bill_immediately","prorate_immediately","prorate_next_cycle","bill_next_cycle"],"type":"string","description":"Billing behavior when quantity increases mid-cycle.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].proration.on_increase","typeLabel":"enum\u003cstring>"},"on_decrease":{"enum":["prorate","prorate_immediately","prorate_next_cycle","none","no_prorations"],"type":"string","description":"Credit behavior when quantity decreases mid-cycle.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].proration.on_decrease","typeLabel":"enum\u003cstring>"}},"required":["on_increase","on_decrease"],"description":"Proration settings for prepaid features. Controls mid-cycle quantity change billing.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].proration","typeLabel":"object"},"rollover":{"type":"object","properties":{"expiry_duration_type":{"enum":["month","forever"],"type":"string","description":"When rolled over units expire.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.expiry_duration_type","typeLabel":"enum\u003cstring>"},"max":{"type":"number","description":"Max rollover units. Omit for unlimited rollover.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.max","typeLabel":"number"},"max_percentage":{"type":"number","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.max_percentage","typeLabel":"number"},"expiry_duration_length":{"type":"number","description":"Number of periods before expiry.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.expiry_duration_length","typeLabel":"number"}},"required":["expiry_duration_type"],"description":"Rollover config for unused units. If set, unused included units carry over.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover","typeLabel":"object"},"expiry":{"type":"object","properties":{"duration":{"enum":["day","week","month","year"],"type":"string","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].expiry.duration","typeLabel":"enum\u003cstring>"},"length":{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].expiry.length","typeLabel":"number"}},"required":["duration","length"],"description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].expiry","typeLabel":"object"},"feature_override":{"type":"object","properties":{"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","excluded"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature to remove from the credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"string"},"excluded":{"const":true,"description":"Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.excluded","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For credit system features: merges into the feature's credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `excluded: true` removes it, and unlisted features keep the credit system's rate.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema","typeLabel":"object[]"},"markups":{"type":"object","properties":{"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for customers on this plan. Use -100 to make usage free.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider markup percentages for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider markup percentages for customers on this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups","typeLabel":"object | null"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for customers on this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups","typeLabel":"object | null"}},"additionalProperties":false,"description":"For AI credit system features: replaces the feature's markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature's.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups","typeLabel":"object"}},"additionalProperties":false,"description":"Overrides fields of this item's feature for customers on this plan (e.g. a credit system's credit_schema).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override","typeLabel":"object"}},"required":["feature_id"],"title":"PlanItem","description":"Configuration for a feature item in a plan, including usage limits, pricing, and rollover settings.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX]","typeLabel":"PlanItem · object"},"description":"Items to add to the plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.add_items","typeLabel":"PlanItem · object[]"},"remove_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Match items linked to this feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].feature_id","typeLabel":"string"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Match items with this billing method (prepaid or usage_based).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].billing_method","typeLabel":"enum\u003cstring>"},"interval":{"oneOf":[{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","week","month","quarter","semi_annual","year"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Match items with this interval_count. Disambiguates between items that share an interval but differ in count.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval_count","typeLabel":"integer"},"included":{"type":"number","maximum":10000000000000,"description":"Match items whose grant equals this included usage. Omitted is a wildcard.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].included","typeLabel":"number"}},"title":"PlanItemFilter","description":"Filter for matching plan items. All provided fields must match (AND).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX]","typeLabel":"PlanItemFilter · object"},"description":"Filters selecting items to remove from the plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_items","typeLabel":"PlanItemFilter · object[]"},"free_trial":{"oneOf":[{"type":"object","title":"FreeTrialParams","description":"Override the plan's default free trial. Pass an object to set a custom trial, or null to remove the trial entirely.","required":["duration_length"],"properties":{"duration_length":{"type":"number","description":"Number of duration_type periods the trial lasts.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.duration_length","typeLabel":"number"},"duration_type":{"enum":["day","month","year"],"type":"string","default":"month","description":"Unit of time for the trial ('day', 'month', 'year').","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.duration_type","typeLabel":"enum\u003cstring>"},"card_required":{"type":"boolean","default":false,"description":"If true, a payment method is required to start the trial and the customer is charged when it ends. Defaults to false.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.card_required","typeLabel":"boolean"},"on_end":{"enum":["bill","revert"],"type":"string","description":"Behavior when the trial ends. 'bill' charges the customer (default). 'revert' expires the trial and restores the customer's previous plan.","default":"bill","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.on_end","typeLabel":"enum\u003cstring>"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0","typeLabel":"FreeTrialParams · object"},{"type":"null","description":"Override the plan's default free trial. Pass an object to set a custom trial, or null to remove the trial entirely.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.free_trial","typeLabel":"FreeTrialParams · object | null"},"billing_controls":{"type":"object","properties":{"auto_topups":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature (credit balance) to auto top-up.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].feature_id","typeLabel":"string"},"threshold":{"type":"number","description":"When the balance drops below this threshold, an auto top-up will be purchased.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].threshold","typeLabel":"number"},"quantity":{"type":"number","minimum":1,"description":"Amount of credits to add per auto top-up.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].quantity","typeLabel":"number"},"enabled":{"type":"boolean","default":false,"description":"Whether auto top-up is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].enabled","typeLabel":"boolean"},"purchase_limit":{"type":"object","properties":{"interval":{"enum":["hour","day","week","month"],"type":"string","description":"The time interval for the purchase limit window.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval","typeLabel":"enum\u003cstring>"},"limit":{"type":"number","minimum":1,"description":"Maximum number of auto top-ups allowed within the interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.limit","typeLabel":"number"},"interval_count":{"type":"number","minimum":1,"default":1,"description":"Number of intervals in the purchase limit window.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval_count","typeLabel":"number"},"count":{"type":"number","minimum":0,"description":"Set the current window's consumed auto top-up count. Omit to leave runtime state unchanged.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.count","typeLabel":"number"}},"required":["interval","limit"],"description":"Optional rate limit to cap how often auto top-ups occur. Pass count to set the current window's consumed top-ups.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit","typeLabel":"object"},"invoice_mode":{"type":"boolean","description":"When true, auto top-up creates a send_invoice invoice instead of auto-charging.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].invoice_mode","typeLabel":"boolean"}},"required":["feature_id","threshold","quantity"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX]","typeLabel":"object"},"description":"List of auto top-up configurations per feature.","default":[],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups","typeLabel":"object[]"},"spend_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Optional feature ID this spend limit applies to.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether the overage spend limit is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].enabled","typeLabel":"boolean"},"limit_type":{"enum":["absolute","usage_percentage"],"type":"string","description":"How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].limit_type","typeLabel":"enum\u003cstring>"},"overage_limit":{"type":"number","minimum":0,"description":"Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].overage_limit","typeLabel":"number"},"skip_overage_billing":{"type":"boolean","description":"When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].skip_overage_billing","typeLabel":"boolean"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX]","typeLabel":"object"},"description":"List of overage spend limits per feature (caps overage spend).","default":[],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits","typeLabel":"object[]"},"usage_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature this usage limit applies to.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].feature_id","typeLabel":"string"},"limit":{"type":"number","minimum":0,"description":"Maximum units allowed per interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].limit","typeLabel":"number"},"interval":{"enum":["day","week","month","year"],"type":"string","description":"Interval for the cap, aligned to the customer's billing cycle.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage limit is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].enabled","typeLabel":"boolean"},"anchor":{"enum":["billing_cycle","utc"],"type":"string","description":"Window alignment. 'billing_cycle' phases the interval to the customer's renewal time; 'utc' aligns to the UTC calendar.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].anchor","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].filter","typeLabel":"object"}},"required":["feature_id","limit","interval"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX]","typeLabel":"object"},"description":"List of hard usage caps per feature (max units per interval).","default":[],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits","typeLabel":"object[]"},"usage_alerts":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number","minimum":0,"description":"The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].threshold","typeLabel":"number"},"threshold_type":{"enum":["usage","usage_percentage","remaining","remaining_percentage"],"type":"string","description":"Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].threshold_type","typeLabel":"enum\u003cstring>"},"feature_id":{"type":"string","description":"The feature ID this alert applies to.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage alert is enabled.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].enabled","typeLabel":"boolean"},"basis":{"enum":["balance","included","recurring","usage_limit"],"type":"string","default":"balance","description":"What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].basis","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].filter","typeLabel":"object"},"name":{"type":"string","description":"Optional user-defined label to distinguish multiple alerts on the same feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].name","typeLabel":"string"}},"required":["threshold","threshold_type"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX]","typeLabel":"object"},"description":"List of usage alert configurations per feature.","default":[],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts","typeLabel":"object[]"},"overage_allowed":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature ID this overage allowed control applies to.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether overage is allowed for this feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed.items.[INDEX].enabled","typeLabel":"boolean"}},"required":["feature_id"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed.items.[INDEX]","typeLabel":"object"},"description":"List of overage allowed controls per feature. When enabled, usage can exceed balance.","default":[],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed","typeLabel":"object[]"}},"description":"Override the plan's billing controls (auto top-ups, spend limits, usage limits, usage alerts, overage allowed) for this customer.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.billing_controls","typeLabel":"object"},"upsert_licenses":{"type":"array","items":{"type":"object","properties":{"license_plan_id":{"type":"string","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].license_plan_id","typeLabel":"string"},"version_slug":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].version_slug","typeLabel":"string"},"included":{"type":"integer","minimum":0,"maximum":9007199254740991,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].included","typeLabel":"integer"},"prepaid_only":{"type":"boolean","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].prepaid_only","typeLabel":"boolean"},"customize":{"oneOf":[{"type":"object","properties":{"price":{"oneOf":[{"type":"object","title":"BasePrice","description":"Base price configuration for a plan.","required":["amount","interval"],"properties":{"amount":{"type":"number","description":"Base price amount for the plan, in major currency units (e.g. dollars).","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.amount","typeLabel":"number"},"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval (e.g. 'month', 'year').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.interval_count","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Base price amounts in additional currencies. The base 'amount' is in the org's default currency.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies","typeLabel":"object[]"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0","typeLabel":"BasePrice · object"},{"type":"null","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price","typeLabel":"BasePrice · object | null"},"add_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature to configure.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_id","typeLabel":"string"},"threshold_billing":{"oneOf":[{"type":"object","description":"Bills this many feature units when outstanding overage reaches it.","required":["threshold"],"properties":{"threshold":{"type":"number","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing.oneOf.0.threshold","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing.oneOf.0","typeLabel":"object"},{"type":"null","description":"Bills this many feature units when outstanding overage reaches it.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing","typeLabel":"object | null"},"included":{"type":"number","maximum":10000000000000,"description":"Number of free units included. Balance resets to this each interval for consumable features.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].included","typeLabel":"number"},"unlimited":{"type":"boolean","description":"If true, customer has unlimited access to this feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].unlimited","typeLabel":"boolean"},"pooled":{"type":"boolean","default":false,"description":"Whether entity-level grants contribute to a shared customer balance.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].pooled","typeLabel":"boolean"},"reset":{"type":"object","properties":{"interval":{"enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"type":"string","description":"Interval at which balance resets (e.g. 'month', 'year'). For consumable features only.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].reset.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals between resets. Defaults to 1.","default":1,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].reset.interval_count","typeLabel":"number"}},"required":["interval"],"description":"Reset configuration for consumable features. Omit for non-consumable features like seats.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].reset","typeLabel":"object"},"price":{"type":"object","properties":{"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval. For consumable features, should match reset.interval.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.interval","typeLabel":"enum\u003cstring>"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"'prepaid' for upfront payment (seats), 'usage_based' for pay-as-you-go.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.billing_method","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"Price per billing_units after included usage. Either 'amount' or 'tiers' is required.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Amounts in additional currencies for this flat price. The base 'amount' is in the org's default currency. Only valid with 'amount', not 'tiers'.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies","typeLabel":"object[]"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].flat_amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Per-unit amount for this tier in this currency.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","description":"Flat amount for this tier in this currency, if the tier uses one.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["currency"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies","typeLabel":"object[]"}},"required":["to","amount"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing. Either 'amount' or 'tiers' is required.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers price usage. 'graduated' (default) charges each unit at the rate of the tier it falls in. 'volume' picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier's rate plus its flat_amount.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tier_behavior","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.interval_count","typeLabel":"number"},"billing_units":{"type":"number","default":1,"description":"Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.billing_units","typeLabel":"number"},"max_purchase":{"oneOf":[{"type":"number","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.max_purchase.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.max_purchase","typeLabel":"number | null"}},"required":["interval","billing_method"],"description":"Pricing for usage beyond included units. Omit for free features.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price","typeLabel":"object"},"proration":{"type":"object","properties":{"on_increase":{"enum":["bill_immediately","prorate_immediately","prorate_next_cycle","bill_next_cycle"],"type":"string","description":"Billing behavior when quantity increases mid-cycle.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].proration.on_increase","typeLabel":"enum\u003cstring>"},"on_decrease":{"enum":["prorate","prorate_immediately","prorate_next_cycle","none","no_prorations"],"type":"string","description":"Credit behavior when quantity decreases mid-cycle.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].proration.on_decrease","typeLabel":"enum\u003cstring>"}},"required":["on_increase","on_decrease"],"description":"Proration settings for prepaid features. Controls mid-cycle quantity change billing.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].proration","typeLabel":"object"},"rollover":{"type":"object","properties":{"expiry_duration_type":{"enum":["month","forever"],"type":"string","description":"When rolled over units expire.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.expiry_duration_type","typeLabel":"enum\u003cstring>"},"max":{"type":"number","description":"Max rollover units. Omit for unlimited rollover.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.max","typeLabel":"number"},"max_percentage":{"type":"number","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.max_percentage","typeLabel":"number"},"expiry_duration_length":{"type":"number","description":"Number of periods before expiry.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.expiry_duration_length","typeLabel":"number"}},"required":["expiry_duration_type"],"description":"Rollover config for unused units. If set, unused included units carry over.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover","typeLabel":"object"},"expiry":{"type":"object","properties":{"duration":{"enum":["day","week","month","year"],"type":"string","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].expiry.duration","typeLabel":"enum\u003cstring>"},"length":{"type":"number","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].expiry.length","typeLabel":"number"}},"required":["duration","length"],"description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].expiry","typeLabel":"object"},"feature_override":{"type":"object","properties":{"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","excluded"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature to remove from the credit system.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"string"},"excluded":{"const":true,"description":"Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.excluded","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For credit system features: merges into the feature's credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `excluded: true` removes it, and unlisted features keep the credit system's rate.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema","typeLabel":"object[]"},"markups":{"type":"object","properties":{"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for customers on this plan. Use -100 to make usage free.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider markup percentages for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider markup percentages for customers on this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups","typeLabel":"object | null"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for customers on this plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups","typeLabel":"object | null"}},"additionalProperties":false,"description":"For AI credit system features: replaces the feature's markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature's.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups","typeLabel":"object"}},"additionalProperties":false,"description":"Overrides fields of this item's feature for customers on this plan (e.g. a credit system's credit_schema).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override","typeLabel":"object"}},"required":["feature_id"],"title":"PlanItem","description":"Configuration for a feature item in a plan, including usage limits, pricing, and rollover settings.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX]","typeLabel":"PlanItem · object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items","typeLabel":"PlanItem · object[]"},"remove_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Match items linked to this feature.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].feature_id","typeLabel":"string"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Match items with this billing method (prepaid or usage_based).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].billing_method","typeLabel":"enum\u003cstring>"},"interval":{"oneOf":[{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","week","month","quarter","semi_annual","year"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Match items with this interval_count. Disambiguates between items that share an interval but differ in count.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval_count","typeLabel":"integer"},"included":{"type":"number","maximum":10000000000000,"description":"Match items whose grant equals this included usage. Omitted is a wildcard.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].included","typeLabel":"number"}},"title":"PlanItemFilter","description":"Filter for matching plan items. All provided fields must match (AND).","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX]","typeLabel":"PlanItemFilter · object"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items","typeLabel":"PlanItemFilter · object[]"}},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize","typeLabel":"object | null"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].metadata.additionalProperties","typeLabel":"any"},"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].metadata","typeLabel":"object"}},"required":["license_plan_id"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX]","typeLabel":"object"},"description":"License links to add or override for this customer, keyed by license_plan_id. Omitted fields inherit the plan catalog link (included defaults to 1 when the license is not in the catalog). A bare entry restores the license to pure catalog inheritance.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.upsert_licenses","typeLabel":"object[]"},"remove_licenses":{"type":"array","items":{"type":"object","properties":{"license_plan_id":{"type":"string","isRequired":true,"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_licenses.items.[INDEX].license_plan_id","typeLabel":"string"}},"required":["license_plan_id"],"uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_licenses.items.[INDEX]","typeLabel":"object"},"description":"License links to drop, keyed by license_plan_id. Parallel to remove_items.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize.remove_licenses","typeLabel":"object[]"}},"additionalProperties":false,"description":"The customization that transforms the base plan into this variant.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details.customize","typeLabel":"object"}},"required":["base_plan_id"],"description":"Details about how this variant relates to its latest base plan.","uniqueKey":"subscriptions.items.[INDEX].plan.variant_details","typeLabel":"object"}},"required":["id","name","description","group","version","add_on","auto_enable","price","items","created_at","env","archived","config","metadata","base_variant_id"],"description":"The full plan object if expanded.","uniqueKey":"subscriptions.items.[INDEX].plan","typeLabel":"object"},"scope":{"enum":["customer","entity"],"type":"string","description":"Whether this subscription is attached at the customer level or entity level.","uniqueKey":"subscriptions.items.[INDEX].scope","typeLabel":"enum\u003cstring>"}},"required":["id","plan_id","auto_enable","add_on","status","past_due","canceled_at","expires_at","trial_ends_at","started_at","current_period_start","current_period_end","quantity"],"uniqueKey":"subscriptions.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"subscriptions","typeLabel":"object[]"},"purchases":{"type":"array","items":{"type":"object","properties":{"plan_id":{"type":"string","description":"The unique identifier of the purchased plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan_id","typeLabel":"string"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when the purchase expires, or null for lifetime access.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the purchase expires, or null for lifetime access.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].expires_at","typeLabel":"number | null"},"started_at":{"type":"number","description":"Timestamp when the purchase was made.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].started_at","typeLabel":"number"},"quantity":{"type":"number","description":"Number of units purchased.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].quantity","typeLabel":"number"},"plan":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.id","typeLabel":"string"},"name":{"type":"string","description":"Display name of the plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.name","typeLabel":"string"},"description":{"oneOf":[{"type":"string","description":"Optional description of the plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional description of the plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.description.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.description","typeLabel":"string | null"},"group":{"oneOf":[{"type":"string","description":"Group identifier for organizing related plans. Plans in the same group are mutually exclusive.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.group.oneOf.0","typeLabel":"string"},{"type":"null","description":"Group identifier for organizing related plans. Plans in the same group are mutually exclusive.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.group.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.group","typeLabel":"string | null"},"version":{"type":"number","description":"Version number of the plan. Incremented when plan configuration changes.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.version","typeLabel":"number"},"add_on":{"type":"boolean","description":"Whether this is an add-on plan that can be attached alongside a main plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.add_on","typeLabel":"boolean"},"auto_enable":{"type":"boolean","description":"If true, this plan is automatically attached when a customer is created. Used for free plans.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.auto_enable","typeLabel":"boolean"},"price":{"oneOf":[{"type":"object","description":"Base recurring price for the plan. Null for free plans or usage-only plans.","required":["amount","interval"],"properties":{"amount":{"type":"number","description":"Base price amount for the plan, in major currency units (e.g. dollars).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.amount","typeLabel":"number"},"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval (e.g. 'month', 'year').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Base price amounts in additional currencies. The base 'amount' is in the org's default currency.","uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.additional_currencies","typeLabel":"object[]"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.interval_count","typeLabel":"number"},"display":{"type":"object","properties":{"primary_text":{"type":"string","description":"Main display text (e.g. '$10' or '100 messages').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.display.primary_text","typeLabel":"string"},"secondary_text":{"type":"string","description":"Secondary display text (e.g. 'per month' or 'then $0.5 per 100').","uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.display.secondary_text","typeLabel":"string"}},"required":["primary_text"],"description":"Display text for showing this price in pricing pages.","uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"oneOf":[{"type":"object","required":["price_id"],"properties":{"price_id":{"type":"string","description":"Stripe price ID. For prepaid with included > 0 this is the V2 price.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.processors.stripe.oneOf.0.price_id","typeLabel":"string"}},"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.processors.stripe.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.processors.stripe.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.processors.stripe","typeLabel":"object | null"}},"x-atmn-mapping":true,"description":"Payment processors this base price is connected to. Omitted when unset.","uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0.processors","typeLabel":"object"}},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Base recurring price for the plan. Null for free plans or usage-only plans.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.price","typeLabel":"object | null"},"items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature this item configures.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_id","typeLabel":"string"},"included":{"type":"number","description":"Number of free units included. For consumable features, balance resets to this number each interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].included","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether the customer has unlimited access to this feature.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for consumable features. Null for non-consumable features like seats where usage persists across billing cycles.","required":["interval"],"properties":{"interval":{"enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"type":"string","description":"The interval at which the feature balance resets (e.g. 'month', 'year'). For consumable features, usage resets to 0 and included units are restored.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals between resets. Defaults to 1.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for consumable features. Null for non-consumable features like seats where usage persists across billing cycles.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration for usage beyond included units. Null if feature is entirely free.","required":["interval","billing_units","billing_method","max_purchase"],"properties":{"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval for this price. For consumable features, should match reset.interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"billing_units":{"type":"number","description":"Number of units per price increment. Usage is rounded UP to the nearest billing_units when billed (e.g. billing_units=100 means 101 usage rounds to 200).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"'prepaid' for features like seats where customers pay upfront, 'usage_based' for pay-as-you-go after included usage.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum units a customer can purchase beyond included. E.g. if included=100 and max_purchase=300, customer can use up to 400 total before usage is capped. Null for no limit.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum units a customer can purchase beyond included. E.g. if included=100 and max_purchase=300, customer can use up to 400 total before usage is capped. Null for no limit.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"Price per billing_units after included usage is consumed. Mutually exclusive with tiers.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Amounts in additional currencies for this flat price. The base 'amount' is in the org's default currency. Only valid with 'amount', not 'tiers' (tiered prices carry per-currency amounts on each tier).","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.additional_currencies","typeLabel":"object[]"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Per-unit amount for this tier in this currency.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","description":"Flat amount for this tier in this currency, if the tier uses one.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["currency"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].additional_currencies","typeLabel":"object[]"}},"required":["to","amount"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration. Each tier's 'to' INCLUDES the included amount. Either 'tiers' or 'amount' is required.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers price usage. 'graduated' (default) charges each unit at the rate of the tier it falls in. 'volume' picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier's rate plus its flat_amount.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.interval_count","typeLabel":"number"},"processors":{"type":"object","properties":{"stripe":{"oneOf":[{"type":"object","required":["price_id"],"properties":{"price_id":{"type":"string","description":"Stripe price ID. For prepaid with included > 0 this is the V2 price.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe.oneOf.0.price_id","typeLabel":"string"}},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors.stripe","typeLabel":"object | null"}},"x-atmn-mapping":true,"description":"Payment processors this item price is connected to. Omitted when unset.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0.processors","typeLabel":"object"}},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration for usage beyond included units. Null if feature is entirely free.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].price","typeLabel":"object | null"},"threshold_billing":{"oneOf":[{"type":"object","description":"Bills this many feature units when outstanding overage reaches it.","required":["threshold"],"properties":{"threshold":{"type":"number","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing.oneOf.0.threshold","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing.oneOf.0","typeLabel":"object"},{"type":"null","description":"Bills this many feature units when outstanding overage reaches it.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].threshold_billing","typeLabel":"object | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the feature, used to refer to it in other API calls like /track or /check.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.id","typeLabel":"string"},"type":{"enum":["static","boolean","single_use","continuous_use","credit_system","ai_credit_system"],"type":"string","description":"The type of the feature","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.type","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"type":"string","description":"The name of the feature.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The name of the feature.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.name","typeLabel":"string | null"},"display":{"oneOf":[{"type":"object","description":"Singular and plural display names for the feature.","required":["singular","plural"],"properties":{"singular":{"type":"string","description":"The singular display name for the feature.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.0.singular","typeLabel":"string"},"plural":{"type":"string","description":"The plural display name for the feature.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.0.plural","typeLabel":"string"}},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.0","typeLabel":"object"},{"type":"null","description":"Singular and plural display names for the feature.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.display.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.display","typeLabel":"object | null"},"credit_schema":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"metered_feature_id":{"type":"string","description":"The ID of the metered feature (should be a single_use feature).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0.items.[INDEX].metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","description":"The credit cost of the metered feature.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["metered_feature_id","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Credit cost schema for credit system features.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Credit cost schema for credit system features.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.credit_schema","typeLabel":"object[] | null"},"archived":{"oneOf":[{"type":"boolean","description":"Whether or not the feature is archived.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.archived.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether or not the feature is archived.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.archived.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature.archived","typeLabel":"boolean | null"}},"required":["id","type"],"description":"The full feature object if expanded.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature","typeLabel":"object"},"pooled":{"type":"boolean","default":false,"description":"Whether entity-level grants contribute to a shared customer balance.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].pooled","typeLabel":"boolean"},"display":{"type":"object","properties":{"primary_text":{"type":"string","description":"Main display text (e.g. '$10' or '100 messages').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].display.primary_text","typeLabel":"string"},"secondary_text":{"type":"string","description":"Secondary display text (e.g. 'per month' or 'then $0.5 per 100').","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].display.secondary_text","typeLabel":"string"}},"required":["primary_text"],"description":"Display text for showing this item in pricing pages.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].display","typeLabel":"object"},"rollover":{"type":"object","properties":{"max":{"oneOf":[{"type":"number","description":"Maximum rollover units. Null for unlimited rollover.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.max.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum rollover units. Null for unlimited rollover.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.max.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.max","typeLabel":"number | null"},"expiry_duration_type":{"enum":["month","forever"],"type":"string","description":"When rolled over units expire.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.expiry_duration_type","typeLabel":"enum\u003cstring>"},"max_percentage":{"oneOf":[{"type":"number","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.max_percentage.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.max_percentage.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.max_percentage","typeLabel":"number | null"},"expiry_duration_length":{"type":"number","description":"Number of periods before expiry.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover.expiry_duration_length","typeLabel":"number"}},"required":["max","expiry_duration_type"],"description":"Rollover configuration for unused units. If set, unused included units roll over to the next period.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].rollover","typeLabel":"object"},"expiry":{"oneOf":[{"type":"object","description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","required":["duration","length"],"properties":{"duration":{"enum":["day","week","month","year"],"type":"string","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.0.duration","typeLabel":"enum\u003cstring>"},"length":{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.0.length","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.0","typeLabel":"object"},{"type":"null","description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].expiry.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].expiry","typeLabel":"object | null"},"feature_override":{"type":"object","properties":{"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","excluded"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature to remove from the credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"string"},"excluded":{"const":true,"description":"Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.excluded","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For credit system features: merges into the feature's credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `excluded: true` removes it, and unlisted features keep the credit system's rate.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.credit_schema","typeLabel":"object[]"},"markups":{"type":"object","properties":{"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for customers on this plan. Use -100 to make usage free.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider markup percentages for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider markup percentages for customers on this plan.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.provider_markups","typeLabel":"object | null"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for customers on this plan.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups.model_markups","typeLabel":"object | null"}},"additionalProperties":false,"description":"For AI credit system features: replaces the feature's markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature's.","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override.markups","typeLabel":"object"}},"additionalProperties":false,"description":"Overrides fields of this item's feature for customers on this plan (e.g. a credit system's credit_schema).","uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX].feature_override","typeLabel":"object"}},"required":["feature_id","included","unlimited","reset","price"],"uniqueKey":"purchases.items.[INDEX].plan.\\items.items.[INDEX]","typeLabel":"object"},"description":"Feature configurations included in this plan. Each item defines included units, pricing, and reset behavior for a feature.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.\\items","typeLabel":"object[]"},"created_at":{"type":"number","description":"Unix timestamp (ms) when the plan was created.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.created_at","typeLabel":"number"},"env":{"enum":["sandbox","live"],"type":"string","description":"Environment this plan belongs to ('sandbox' or 'live').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.env","typeLabel":"enum\u003cstring>"},"archived":{"type":"boolean","description":"Whether the plan is archived. Archived plans cannot be attached to new customers.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.archived","typeLabel":"boolean"},"config":{"type":"object","properties":{"ignore_past_due":{"type":"boolean","default":false,"description":"If true, entitlements attached to this plan will still reset on schedule even when the customer's product is in a past_due state.","uniqueKey":"purchases.items.[INDEX].plan.config.ignore_past_due","typeLabel":"boolean"},"anchor_to_month_start":{"type":"boolean","description":"Anchor billing and reset cycles to the 1st of the month (UTC).","default":false,"uniqueKey":"purchases.items.[INDEX].plan.config.anchor_to_month_start","typeLabel":"boolean"}},"description":"Miscellaneous plan-level configuration flags.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.config","typeLabel":"object"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"purchases.items.[INDEX].plan.metadata.additionalProperties","typeLabel":"any"},"description":"Arbitrary key-value metadata defined by you for your own use. Shared across all versions of the plan.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.metadata","typeLabel":"object"},"base_variant_id":{"oneOf":[{"type":"string","description":"Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.base_variant_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Deprecated. Use variant_details.base_plan_id instead. If this is a variant, the ID of the base plan it was created from.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.base_variant_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.base_variant_id","typeLabel":"string | null"},"version_slug":{"oneOf":[{"type":"string","description":"User-facing version identity. Defaults to v{n} when the version is minted.","uniqueKey":"purchases.items.[INDEX].plan.version_slug.oneOf.0","typeLabel":"string"},{"type":"null","description":"User-facing version identity. Defaults to v{n} when the version is minted.","uniqueKey":"purchases.items.[INDEX].plan.version_slug.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.version_slug","typeLabel":"string | null"},"active":{"type":"boolean","description":"Whether this is the active version of the plan. At most one version is active.","uniqueKey":"purchases.items.[INDEX].plan.active","typeLabel":"boolean"},"processors":{"type":"object","properties":{"stripe":{"oneOf":[{"type":"object","required":["product_id"],"properties":{"product_id":{"type":"string","description":"Stripe product ID this plan is billed under.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.processors.stripe.oneOf.0.product_id","typeLabel":"string"},"additional_product_ids":{"type":"array","items":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.processors.stripe.oneOf.0.additional_product_ids.items.[INDEX]","typeLabel":"string"},"description":"Extra Stripe product IDs aliased to this plan.","uniqueKey":"purchases.items.[INDEX].plan.processors.stripe.oneOf.0.additional_product_ids","typeLabel":"string[]"}},"uniqueKey":"purchases.items.[INDEX].plan.processors.stripe.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchases.items.[INDEX].plan.processors.stripe.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.processors.stripe","typeLabel":"object | null"},"revenuecat":{"oneOf":[{"type":"object","required":["products"],"properties":{"products":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string","description":"RevenueCat product ID that grants this plan when purchased.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].product_id","typeLabel":"string"},"feature_quantities":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities.items.[INDEX].feature_id","typeLabel":"string"},"quantity":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities.items.[INDEX].quantity","typeLabel":"number"}},"required":["feature_id"],"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities.items.[INDEX]","typeLabel":"object"},"description":"Prepaid quantities granted when this specific RevenueCat product is purchased, in feature units.","uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX].feature_quantities","typeLabel":"object[]"}},"required":["product_id"],"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products.items.[INDEX]","typeLabel":"object"},"description":"Every RevenueCat product that maps to this plan. Replaces the current set.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0.products","typeLabel":"object[]"}},"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.processors.revenuecat","typeLabel":"object | null"}},"x-atmn-mapping":true,"description":"Payment processors this plan is connected to. Omitted when unset.","uniqueKey":"purchases.items.[INDEX].plan.processors","typeLabel":"object"},"free_trial":{"type":"object","properties":{"duration_length":{"type":"number","description":"Number of duration_type periods the trial lasts.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.free_trial.duration_length","typeLabel":"number"},"duration_type":{"enum":["day","month","year"],"type":"string","description":"Unit of time for the trial duration ('day', 'month', 'year').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.free_trial.duration_type","typeLabel":"enum\u003cstring>"},"card_required":{"type":"boolean","description":"Whether a payment method is required to start the trial. If true, customer will be charged after trial ends.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.free_trial.card_required","typeLabel":"boolean"},"on_end":{"oneOf":[{"type":"string","description":"Behavior when the trial ends. 'bill' charges the customer (default). 'revert' expires the trial and restores the customer's previous plan.","enum":["bill","revert"],"uniqueKey":"purchases.items.[INDEX].plan.free_trial.on_end.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Behavior when the trial ends. 'bill' charges the customer (default). 'revert' expires the trial and restores the customer's previous plan.","uniqueKey":"purchases.items.[INDEX].plan.free_trial.on_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.free_trial.on_end","typeLabel":"enum\u003cstring> | null"}},"required":["duration_length","duration_type","card_required"],"description":"Free trial configuration. If set, new customers can try this plan before being charged.","uniqueKey":"purchases.items.[INDEX].plan.free_trial","typeLabel":"object"},"billing_controls":{"type":"object","properties":{"auto_topups":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature (credit balance) to auto top-up.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].feature_id","typeLabel":"string"},"threshold":{"type":"number","description":"When the balance drops below this threshold, an auto top-up will be purchased.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].threshold","typeLabel":"number"},"quantity":{"type":"number","minimum":1,"description":"Amount of credits to add per auto top-up.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].quantity","typeLabel":"number"},"enabled":{"type":"boolean","default":false,"description":"Whether auto top-up is enabled.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].enabled","typeLabel":"boolean"},"purchase_limit":{"type":"object","properties":{"interval":{"enum":["hour","day","week","month"],"type":"string","description":"The time interval for the purchase limit window.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval","typeLabel":"enum\u003cstring>"},"limit":{"type":"number","minimum":1,"description":"Maximum number of auto top-ups allowed within the interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit.limit","typeLabel":"number"},"interval_count":{"type":"number","minimum":1,"default":1,"description":"Number of intervals in the purchase limit window.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval_count","typeLabel":"number"}},"required":["interval","limit"],"description":"Optional rate limit to cap how often auto top-ups occur.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].purchase_limit","typeLabel":"object"},"invoice_mode":{"type":"boolean","description":"When true, auto top-up creates a send_invoice invoice instead of auto-charging.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX].invoice_mode","typeLabel":"boolean"}},"required":["feature_id","threshold","quantity"],"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups.items.[INDEX]","typeLabel":"object"},"description":"List of auto top-up configurations per feature.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.auto_topups","typeLabel":"object[]"},"spend_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Optional feature ID this spend limit applies to.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether the overage spend limit is enabled.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].enabled","typeLabel":"boolean"},"limit_type":{"enum":["absolute","usage_percentage"],"type":"string","description":"How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].limit_type","typeLabel":"enum\u003cstring>"},"overage_limit":{"type":"number","minimum":0,"description":"Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].overage_limit","typeLabel":"number"},"skip_overage_billing":{"type":"boolean","description":"When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX].skip_overage_billing","typeLabel":"boolean"}},"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits.items.[INDEX]","typeLabel":"object"},"description":"List of overage spend limits per feature (caps overage spend).","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.spend_limits","typeLabel":"object[]"},"usage_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature this usage limit applies to.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].feature_id","typeLabel":"string"},"limit":{"type":"number","minimum":0,"description":"Maximum units allowed per interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].limit","typeLabel":"number"},"interval":{"enum":["day","week","month","year"],"type":"string","description":"Interval for the cap, aligned to the customer's billing cycle.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage limit is enabled.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].enabled","typeLabel":"boolean"},"anchor":{"enum":["billing_cycle","utc"],"type":"string","description":"Window alignment. 'billing_cycle' phases the interval to the customer's renewal time; 'utc' aligns to the UTC calendar.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].anchor","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX].filter","typeLabel":"object"}},"required":["feature_id","limit","interval"],"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits.items.[INDEX]","typeLabel":"object"},"description":"List of hard usage caps per feature (max units per interval).","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_limits","typeLabel":"object[]"},"usage_alerts":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number","minimum":0,"description":"The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].threshold","typeLabel":"number"},"threshold_type":{"enum":["usage","usage_percentage","remaining","remaining_percentage"],"type":"string","description":"Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].threshold_type","typeLabel":"enum\u003cstring>"},"feature_id":{"type":"string","description":"The feature ID this alert applies to.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage alert is enabled.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].enabled","typeLabel":"boolean"},"basis":{"enum":["balance","included","recurring","usage_limit"],"type":"string","default":"balance","description":"What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].basis","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].filter","typeLabel":"object"},"name":{"type":"string","description":"Optional user-defined label to distinguish multiple alerts on the same feature.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX].name","typeLabel":"string"}},"required":["threshold","threshold_type"],"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts.items.[INDEX]","typeLabel":"object"},"description":"List of usage alert configurations per feature.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.usage_alerts","typeLabel":"object[]"},"overage_allowed":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature ID this overage allowed control applies to.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.overage_allowed.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether overage is allowed for this feature.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.overage_allowed.items.[INDEX].enabled","typeLabel":"boolean"}},"required":["feature_id"],"uniqueKey":"purchases.items.[INDEX].plan.billing_controls.overage_allowed.items.[INDEX]","typeLabel":"object"},"description":"List of overage allowed controls per feature. When enabled, usage can exceed balance.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls.overage_allowed","typeLabel":"object[]"}},"description":"Plan-level billing controls used as customer defaults.","uniqueKey":"purchases.items.[INDEX].plan.billing_controls","typeLabel":"object"},"customer_eligibility":{"type":"object","properties":{"attach_action":{"enum":["activate","upgrade","downgrade","none","purchase"],"type":"string","description":"The action that would occur if this plan were attached to the customer.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.customer_eligibility.attach_action","typeLabel":"enum\u003cstring>"},"trial_available":{"type":"boolean","description":"Whether the trial on this plan is available to this customer. For example, if the customer used the trial in the past, this will be false.","uniqueKey":"purchases.items.[INDEX].plan.customer_eligibility.trial_available","typeLabel":"boolean"},"status":{"enum":["active","scheduled"],"type":"string","description":"The customer's current status with this plan. 'active' if attached, 'scheduled' if pending activation.","uniqueKey":"purchases.items.[INDEX].plan.customer_eligibility.status","typeLabel":"enum\u003cstring>"},"canceling":{"type":"boolean","description":"Whether the customer's active instance of this plan is set to cancel.","uniqueKey":"purchases.items.[INDEX].plan.customer_eligibility.canceling","typeLabel":"boolean"},"trialing":{"type":"boolean","description":"Whether the customer is currently on a free trial of this plan.","uniqueKey":"purchases.items.[INDEX].plan.customer_eligibility.trialing","typeLabel":"boolean"}},"required":["attach_action"],"uniqueKey":"purchases.items.[INDEX].plan.customer_eligibility","typeLabel":"object"},"variant_details":{"type":"object","properties":{"base_plan_id":{"type":"string","description":"The ID of the base plan this variant was derived from.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.base_plan_id","typeLabel":"string"},"customize":{"type":"object","properties":{"price":{"oneOf":[{"type":"object","title":"BasePrice","description":"Override the base price of the plan. Pass null to remove the base price.","required":["amount","interval"],"properties":{"amount":{"type":"number","description":"Base price amount for the plan, in major currency units (e.g. dollars).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.amount","typeLabel":"number"},"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval (e.g. 'month', 'year').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.interval_count","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Base price amounts in additional currencies. The base 'amount' is in the org's default currency.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0.additional_currencies","typeLabel":"object[]"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.0","typeLabel":"BasePrice · object"},{"type":"null","description":"Override the base price of the plan. Pass null to remove the base price.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.price","typeLabel":"BasePrice · object | null"},"add_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature to configure.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_id","typeLabel":"string"},"threshold_billing":{"oneOf":[{"type":"object","description":"Bills this many feature units when outstanding overage reaches it.","required":["threshold"],"properties":{"threshold":{"type":"number","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing.oneOf.0.threshold","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing.oneOf.0","typeLabel":"object"},{"type":"null","description":"Bills this many feature units when outstanding overage reaches it.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].threshold_billing","typeLabel":"object | null"},"included":{"type":"number","maximum":10000000000000,"description":"Number of free units included. Balance resets to this each interval for consumable features.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].included","typeLabel":"number"},"unlimited":{"type":"boolean","description":"If true, customer has unlimited access to this feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].unlimited","typeLabel":"boolean"},"pooled":{"type":"boolean","default":false,"description":"Whether entity-level grants contribute to a shared customer balance.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].pooled","typeLabel":"boolean"},"reset":{"type":"object","properties":{"interval":{"enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"type":"string","description":"Interval at which balance resets (e.g. 'month', 'year'). For consumable features only.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].reset.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals between resets. Defaults to 1.","default":1,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].reset.interval_count","typeLabel":"number"}},"required":["interval"],"description":"Reset configuration for consumable features. Omit for non-consumable features like seats.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].reset","typeLabel":"object"},"price":{"type":"object","properties":{"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval. For consumable features, should match reset.interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.interval","typeLabel":"enum\u003cstring>"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"'prepaid' for upfront payment (seats), 'usage_based' for pay-as-you-go.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.billing_method","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"Price per billing_units after included usage. Either 'amount' or 'tiers' is required.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Amounts in additional currencies for this flat price. The base 'amount' is in the org's default currency. Only valid with 'amount', not 'tiers'.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.additional_currencies","typeLabel":"object[]"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].flat_amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Per-unit amount for this tier in this currency.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","description":"Flat amount for this tier in this currency, if the tier uses one.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["currency"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies","typeLabel":"object[]"}},"required":["to","amount"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing. Either 'amount' or 'tiers' is required.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers price usage. 'graduated' (default) charges each unit at the rate of the tier it falls in. 'volume' picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier's rate plus its flat_amount.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.tier_behavior","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.interval_count","typeLabel":"number"},"billing_units":{"type":"number","default":1,"description":"Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.billing_units","typeLabel":"number"},"max_purchase":{"oneOf":[{"type":"number","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.max_purchase.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price.max_purchase","typeLabel":"number | null"}},"required":["interval","billing_method"],"description":"Pricing for usage beyond included units. Omit for free features.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].price","typeLabel":"object"},"proration":{"type":"object","properties":{"on_increase":{"enum":["bill_immediately","prorate_immediately","prorate_next_cycle","bill_next_cycle"],"type":"string","description":"Billing behavior when quantity increases mid-cycle.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].proration.on_increase","typeLabel":"enum\u003cstring>"},"on_decrease":{"enum":["prorate","prorate_immediately","prorate_next_cycle","none","no_prorations"],"type":"string","description":"Credit behavior when quantity decreases mid-cycle.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].proration.on_decrease","typeLabel":"enum\u003cstring>"}},"required":["on_increase","on_decrease"],"description":"Proration settings for prepaid features. Controls mid-cycle quantity change billing.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].proration","typeLabel":"object"},"rollover":{"type":"object","properties":{"expiry_duration_type":{"enum":["month","forever"],"type":"string","description":"When rolled over units expire.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.expiry_duration_type","typeLabel":"enum\u003cstring>"},"max":{"type":"number","description":"Max rollover units. Omit for unlimited rollover.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.max","typeLabel":"number"},"max_percentage":{"type":"number","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.max_percentage","typeLabel":"number"},"expiry_duration_length":{"type":"number","description":"Number of periods before expiry.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover.expiry_duration_length","typeLabel":"number"}},"required":["expiry_duration_type"],"description":"Rollover config for unused units. If set, unused included units carry over.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].rollover","typeLabel":"object"},"expiry":{"type":"object","properties":{"duration":{"enum":["day","week","month","year"],"type":"string","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].expiry.duration","typeLabel":"enum\u003cstring>"},"length":{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].expiry.length","typeLabel":"number"}},"required":["duration","length"],"description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].expiry","typeLabel":"object"},"feature_override":{"type":"object","properties":{"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","excluded"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature to remove from the credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"string"},"excluded":{"const":true,"description":"Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.excluded","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For credit system features: merges into the feature's credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `excluded: true` removes it, and unlisted features keep the credit system's rate.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.credit_schema","typeLabel":"object[]"},"markups":{"type":"object","properties":{"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for customers on this plan. Use -100 to make usage free.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider markup percentages for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider markup percentages for customers on this plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.provider_markups","typeLabel":"object | null"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for customers on this plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups.model_markups","typeLabel":"object | null"}},"additionalProperties":false,"description":"For AI credit system features: replaces the feature's markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature's.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override.markups","typeLabel":"object"}},"additionalProperties":false,"description":"Overrides fields of this item's feature for customers on this plan (e.g. a credit system's credit_schema).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX].feature_override","typeLabel":"object"}},"required":["feature_id"],"title":"PlanItem","description":"Configuration for a feature item in a plan, including usage limits, pricing, and rollover settings.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items.items.[INDEX]","typeLabel":"PlanItem · object"},"description":"Items to add to the plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.add_items","typeLabel":"PlanItem · object[]"},"remove_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Match items linked to this feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].feature_id","typeLabel":"string"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Match items with this billing method (prepaid or usage_based).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].billing_method","typeLabel":"enum\u003cstring>"},"interval":{"oneOf":[{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","week","month","quarter","semi_annual","year"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Match items with this interval_count. Disambiguates between items that share an interval but differ in count.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].interval_count","typeLabel":"integer"},"included":{"type":"number","maximum":10000000000000,"description":"Match items whose grant equals this included usage. Omitted is a wildcard.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX].included","typeLabel":"number"}},"title":"PlanItemFilter","description":"Filter for matching plan items. All provided fields must match (AND).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items.items.[INDEX]","typeLabel":"PlanItemFilter · object"},"description":"Filters selecting items to remove from the plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_items","typeLabel":"PlanItemFilter · object[]"},"free_trial":{"oneOf":[{"type":"object","title":"FreeTrialParams","description":"Override the plan's default free trial. Pass an object to set a custom trial, or null to remove the trial entirely.","required":["duration_length"],"properties":{"duration_length":{"type":"number","description":"Number of duration_type periods the trial lasts.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.duration_length","typeLabel":"number"},"duration_type":{"enum":["day","month","year"],"type":"string","default":"month","description":"Unit of time for the trial ('day', 'month', 'year').","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.duration_type","typeLabel":"enum\u003cstring>"},"card_required":{"type":"boolean","default":false,"description":"If true, a payment method is required to start the trial and the customer is charged when it ends. Defaults to false.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.card_required","typeLabel":"boolean"},"on_end":{"enum":["bill","revert"],"type":"string","description":"Behavior when the trial ends. 'bill' charges the customer (default). 'revert' expires the trial and restores the customer's previous plan.","default":"bill","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0.on_end","typeLabel":"enum\u003cstring>"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.0","typeLabel":"FreeTrialParams · object"},{"type":"null","description":"Override the plan's default free trial. Pass an object to set a custom trial, or null to remove the trial entirely.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.free_trial","typeLabel":"FreeTrialParams · object | null"},"billing_controls":{"type":"object","properties":{"auto_topups":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature (credit balance) to auto top-up.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].feature_id","typeLabel":"string"},"threshold":{"type":"number","description":"When the balance drops below this threshold, an auto top-up will be purchased.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].threshold","typeLabel":"number"},"quantity":{"type":"number","minimum":1,"description":"Amount of credits to add per auto top-up.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].quantity","typeLabel":"number"},"enabled":{"type":"boolean","default":false,"description":"Whether auto top-up is enabled.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].enabled","typeLabel":"boolean"},"purchase_limit":{"type":"object","properties":{"interval":{"enum":["hour","day","week","month"],"type":"string","description":"The time interval for the purchase limit window.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval","typeLabel":"enum\u003cstring>"},"limit":{"type":"number","minimum":1,"description":"Maximum number of auto top-ups allowed within the interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.limit","typeLabel":"number"},"interval_count":{"type":"number","minimum":1,"default":1,"description":"Number of intervals in the purchase limit window.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.interval_count","typeLabel":"number"},"count":{"type":"number","minimum":0,"description":"Set the current window's consumed auto top-up count. Omit to leave runtime state unchanged.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit.count","typeLabel":"number"}},"required":["interval","limit"],"description":"Optional rate limit to cap how often auto top-ups occur. Pass count to set the current window's consumed top-ups.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].purchase_limit","typeLabel":"object"},"invoice_mode":{"type":"boolean","description":"When true, auto top-up creates a send_invoice invoice instead of auto-charging.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX].invoice_mode","typeLabel":"boolean"}},"required":["feature_id","threshold","quantity"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups.items.[INDEX]","typeLabel":"object"},"description":"List of auto top-up configurations per feature.","default":[],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.auto_topups","typeLabel":"object[]"},"spend_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Optional feature ID this spend limit applies to.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether the overage spend limit is enabled.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].enabled","typeLabel":"boolean"},"limit_type":{"enum":["absolute","usage_percentage"],"type":"string","description":"How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].limit_type","typeLabel":"enum\u003cstring>"},"overage_limit":{"type":"number","minimum":0,"description":"Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].overage_limit","typeLabel":"number"},"skip_overage_billing":{"type":"boolean","description":"When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX].skip_overage_billing","typeLabel":"boolean"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits.items.[INDEX]","typeLabel":"object"},"description":"List of overage spend limits per feature (caps overage spend).","default":[],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.spend_limits","typeLabel":"object[]"},"usage_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature this usage limit applies to.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].feature_id","typeLabel":"string"},"limit":{"type":"number","minimum":0,"description":"Maximum units allowed per interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].limit","typeLabel":"number"},"interval":{"enum":["day","week","month","year"],"type":"string","description":"Interval for the cap, aligned to the customer's billing cycle.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage limit is enabled.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].enabled","typeLabel":"boolean"},"anchor":{"enum":["billing_cycle","utc"],"type":"string","description":"Window alignment. 'billing_cycle' phases the interval to the customer's renewal time; 'utc' aligns to the UTC calendar.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].anchor","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX].filter","typeLabel":"object"}},"required":["feature_id","limit","interval"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits.items.[INDEX]","typeLabel":"object"},"description":"List of hard usage caps per feature (max units per interval).","default":[],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_limits","typeLabel":"object[]"},"usage_alerts":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number","minimum":0,"description":"The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].threshold","typeLabel":"number"},"threshold_type":{"enum":["usage","usage_percentage","remaining","remaining_percentage"],"type":"string","description":"Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].threshold_type","typeLabel":"enum\u003cstring>"},"feature_id":{"type":"string","description":"The feature ID this alert applies to.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage alert is enabled.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].enabled","typeLabel":"boolean"},"basis":{"enum":["balance","included","recurring","usage_limit"],"type":"string","default":"balance","description":"What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].basis","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].filter","typeLabel":"object"},"name":{"type":"string","description":"Optional user-defined label to distinguish multiple alerts on the same feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX].name","typeLabel":"string"}},"required":["threshold","threshold_type"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts.items.[INDEX]","typeLabel":"object"},"description":"List of usage alert configurations per feature.","default":[],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.usage_alerts","typeLabel":"object[]"},"overage_allowed":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature ID this overage allowed control applies to.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether overage is allowed for this feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed.items.[INDEX].enabled","typeLabel":"boolean"}},"required":["feature_id"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed.items.[INDEX]","typeLabel":"object"},"description":"List of overage allowed controls per feature. When enabled, usage can exceed balance.","default":[],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls.overage_allowed","typeLabel":"object[]"}},"description":"Override the plan's billing controls (auto top-ups, spend limits, usage limits, usage alerts, overage allowed) for this customer.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.billing_controls","typeLabel":"object"},"upsert_licenses":{"type":"array","items":{"type":"object","properties":{"license_plan_id":{"type":"string","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].license_plan_id","typeLabel":"string"},"version_slug":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].version_slug","typeLabel":"string"},"included":{"type":"integer","minimum":0,"maximum":9007199254740991,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].included","typeLabel":"integer"},"prepaid_only":{"type":"boolean","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].prepaid_only","typeLabel":"boolean"},"customize":{"oneOf":[{"type":"object","properties":{"price":{"oneOf":[{"type":"object","title":"BasePrice","description":"Base price configuration for a plan.","required":["amount","interval"],"properties":{"amount":{"type":"number","description":"Base price amount for the plan, in major currency units (e.g. dollars).","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.amount","typeLabel":"number"},"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval (e.g. 'month', 'year').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.interval_count","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Base price amounts in additional currencies. The base 'amount' is in the org's default currency.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0.additional_currencies","typeLabel":"object[]"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.0","typeLabel":"BasePrice · object"},{"type":"null","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.price","typeLabel":"BasePrice · object | null"},"add_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The ID of the feature to configure.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_id","typeLabel":"string"},"threshold_billing":{"oneOf":[{"type":"object","description":"Bills this many feature units when outstanding overage reaches it.","required":["threshold"],"properties":{"threshold":{"type":"number","exclusiveMinimum":0,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing.oneOf.0.threshold","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing.oneOf.0","typeLabel":"object"},{"type":"null","description":"Bills this many feature units when outstanding overage reaches it.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].threshold_billing","typeLabel":"object | null"},"included":{"type":"number","maximum":10000000000000,"description":"Number of free units included. Balance resets to this each interval for consumable features.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].included","typeLabel":"number"},"unlimited":{"type":"boolean","description":"If true, customer has unlimited access to this feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].unlimited","typeLabel":"boolean"},"pooled":{"type":"boolean","default":false,"description":"Whether entity-level grants contribute to a shared customer balance.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].pooled","typeLabel":"boolean"},"reset":{"type":"object","properties":{"interval":{"enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"type":"string","description":"Interval at which balance resets (e.g. 'month', 'year'). For consumable features only.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].reset.interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals between resets. Defaults to 1.","default":1,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].reset.interval_count","typeLabel":"number"}},"required":["interval"],"description":"Reset configuration for consumable features. Omit for non-consumable features like seats.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].reset","typeLabel":"object"},"price":{"type":"object","properties":{"interval":{"enum":["one_off","week","month","quarter","semi_annual","year"],"type":"string","description":"Billing interval. For consumable features, should match reset.interval.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.interval","typeLabel":"enum\u003cstring>"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"'prepaid' for upfront payment (seats), 'usage_based' for pay-as-you-go.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.billing_method","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","description":"Price per billing_units after included usage. Either 'amount' or 'tiers' is required.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Price amount in this currency. Set explicitly per currency, not converted from the base amount.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies.items.[INDEX].amount","typeLabel":"number"}},"required":["currency","amount"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies.items.[INDEX]","typeLabel":"object"},"description":"Amounts in additional currencies for this flat price. The base 'amount' is in the org's default currency. Only valid with 'amount', not 'tiers'.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.additional_currencies","typeLabel":"object[]"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].flat_amount","typeLabel":"number"},"additional_currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","description":"Three-letter Stripe-supported currency code (e.g. 'eur', 'gbp').","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].currency","typeLabel":"string"},"amount":{"type":"number","description":"Per-unit amount for this tier in this currency.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","description":"Flat amount for this tier in this currency, if the tier uses one.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["currency"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies.items.[INDEX]","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX].additional_currencies","typeLabel":"object[]"}},"required":["to","amount"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing. Either 'amount' or 'tiers' is required.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers price usage. 'graduated' (default) charges each unit at the rate of the tier it falls in. 'volume' picks one tier from total usage. On usage-based items it bills only usage past the included amount, at the rate of the tier total usage reaches, plus its flat_amount. On prepaid items it charges every unit, the included ones too, at that tier's rate plus its flat_amount.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.tier_behavior","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"number","description":"Number of intervals per billing cycle. Defaults to 1.","default":1,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.interval_count","typeLabel":"number"},"billing_units":{"type":"number","default":1,"description":"Units per price increment. Usage is rounded UP when billed (e.g. billing_units=100 means 101 rounds to 200).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.billing_units","typeLabel":"number"},"max_purchase":{"oneOf":[{"type":"number","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Max units purchasable beyond included. E.g. included=100, max_purchase=300 allows 400 total. Null for no limit.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.max_purchase.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price.max_purchase","typeLabel":"number | null"}},"required":["interval","billing_method"],"description":"Pricing for usage beyond included units. Omit for free features.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].price","typeLabel":"object"},"proration":{"type":"object","properties":{"on_increase":{"enum":["bill_immediately","prorate_immediately","prorate_next_cycle","bill_next_cycle"],"type":"string","description":"Billing behavior when quantity increases mid-cycle.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].proration.on_increase","typeLabel":"enum\u003cstring>"},"on_decrease":{"enum":["prorate","prorate_immediately","prorate_next_cycle","none","no_prorations"],"type":"string","description":"Credit behavior when quantity decreases mid-cycle.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].proration.on_decrease","typeLabel":"enum\u003cstring>"}},"required":["on_increase","on_decrease"],"description":"Proration settings for prepaid features. Controls mid-cycle quantity change billing.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].proration","typeLabel":"object"},"rollover":{"type":"object","properties":{"expiry_duration_type":{"enum":["month","forever"],"type":"string","description":"When rolled over units expire.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.expiry_duration_type","typeLabel":"enum\u003cstring>"},"max":{"type":"number","description":"Max rollover units. Omit for unlimited rollover.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.max","typeLabel":"number"},"max_percentage":{"type":"number","description":"Maximum rollover as a percentage (0-100) of included + prepaid grant. Mutually exclusive with max.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.max_percentage","typeLabel":"number"},"expiry_duration_length":{"type":"number","description":"Number of periods before expiry.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover.expiry_duration_length","typeLabel":"number"}},"required":["expiry_duration_type"],"description":"Rollover config for unused units. If set, unused included units carry over.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].rollover","typeLabel":"object"},"expiry":{"type":"object","properties":{"duration":{"enum":["day","week","month","year"],"type":"string","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].expiry.duration","typeLabel":"enum\u003cstring>"},"length":{"type":"number","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].expiry.length","typeLabel":"number"}},"required":["duration","length"],"description":"Purchased units expire this long after each purchase. One-off prepaid consumable items only.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].expiry","typeLabel":"object"},"feature_override":{"type":"object","properties":{"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","excluded"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature to remove from the credit system.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"string"},"excluded":{"const":true,"description":"Removes this feature from the credit system for customers on this plan. Cannot be combined with a rate.","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2.excluded","typeLabel":"any"}},"additionalProperties":false,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For credit system features: merges into the feature's credit_schema by metered_feature_id for customers on this plan. A row with a rate overrides or adds that feature, a row with `excluded: true` removes it, and unlisted features keep the credit system's rate.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.credit_schema","typeLabel":"object[]"},"markups":{"type":"object","properties":{"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for customers on this plan. Use -100 to make usage free.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider markup percentages for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider markup percentages for customers on this plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.provider_markups","typeLabel":"object | null"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for customers on this plan.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for customers on this plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups.model_markups","typeLabel":"object | null"}},"additionalProperties":false,"description":"For AI credit system features: replaces the feature's markup chain entirely for customers on this plan. An unset level means no markup at that level rather than inheriting the feature's.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override.markups","typeLabel":"object"}},"additionalProperties":false,"description":"Overrides fields of this item's feature for customers on this plan (e.g. a credit system's credit_schema).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX].feature_override","typeLabel":"object"}},"required":["feature_id"],"title":"PlanItem","description":"Configuration for a feature item in a plan, including usage limits, pricing, and rollover settings.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items.items.[INDEX]","typeLabel":"PlanItem · object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.add_items","typeLabel":"PlanItem · object[]"},"remove_items":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Match items linked to this feature.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].feature_id","typeLabel":"string"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Match items with this billing method (prepaid or usage_based).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].billing_method","typeLabel":"enum\u003cstring>"},"interval":{"oneOf":[{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","week","month","quarter","semi_annual","year"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Match items with this interval. Accepts either a BillingInterval (price-side) or a ResetInterval (reset-side, includes day/hour/minute) so price-less items keyed by reset.interval can be disambiguated.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"interval_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"description":"Match items with this interval_count. Disambiguates between items that share an interval but differ in count.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].interval_count","typeLabel":"integer"},"included":{"type":"number","maximum":10000000000000,"description":"Match items whose grant equals this included usage. Omitted is a wildcard.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX].included","typeLabel":"number"}},"title":"PlanItemFilter","description":"Filter for matching plan items. All provided fields must match (AND).","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items.items.[INDEX]","typeLabel":"PlanItemFilter · object"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0.remove_items","typeLabel":"PlanItemFilter · object[]"}},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].customize","typeLabel":"object | null"},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"oneOf":[{}],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].metadata.additionalProperties","typeLabel":"any"},"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX].metadata","typeLabel":"object"}},"required":["license_plan_id"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses.items.[INDEX]","typeLabel":"object"},"description":"License links to add or override for this customer, keyed by license_plan_id. Omitted fields inherit the plan catalog link (included defaults to 1 when the license is not in the catalog). A bare entry restores the license to pure catalog inheritance.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.upsert_licenses","typeLabel":"object[]"},"remove_licenses":{"type":"array","items":{"type":"object","properties":{"license_plan_id":{"type":"string","isRequired":true,"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_licenses.items.[INDEX].license_plan_id","typeLabel":"string"}},"required":["license_plan_id"],"uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_licenses.items.[INDEX]","typeLabel":"object"},"description":"License links to drop, keyed by license_plan_id. Parallel to remove_items.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize.remove_licenses","typeLabel":"object[]"}},"additionalProperties":false,"description":"The customization that transforms the base plan into this variant.","uniqueKey":"purchases.items.[INDEX].plan.variant_details.customize","typeLabel":"object"}},"required":["base_plan_id"],"description":"Details about how this variant relates to its latest base plan.","uniqueKey":"purchases.items.[INDEX].plan.variant_details","typeLabel":"object"}},"required":["id","name","description","group","version","add_on","auto_enable","price","items","created_at","env","archived","config","metadata","base_variant_id"],"description":"The full plan object if expanded.","uniqueKey":"purchases.items.[INDEX].plan","typeLabel":"object"},"scope":{"enum":["customer","entity"],"type":"string","description":"Whether this purchase is attached at the customer level or entity level.","uniqueKey":"purchases.items.[INDEX].scope","typeLabel":"enum\u003cstring>"}},"required":["plan_id","expires_at","started_at","quantity"],"uniqueKey":"purchases.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"purchases","typeLabel":"object[]"},"balances":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature ID this balance is for.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature_id","typeLabel":"string"},"granted":{"type":"number","description":"Total balance granted (included + prepaid).","isRequired":true,"uniqueKey":"balances.additionalProperties.granted","typeLabel":"number"},"remaining":{"type":"number","minimum":0,"description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balances.additionalProperties.remaining","typeLabel":"number"},"usage":{"type":"number","description":"Total usage consumed in the current period.","isRequired":true,"uniqueKey":"balances.additionalProperties.usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this feature has unlimited usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.unlimited","typeLabel":"boolean"},"overage_allowed":{"type":"boolean","description":"Whether usage beyond the granted balance is allowed (with overage charges).","isRequired":true,"uniqueKey":"balances.additionalProperties.overage_allowed","typeLabel":"boolean"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased as a top-up, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.max_purchase","typeLabel":"number | null"},"next_reset_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.next_reset_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will reset, or null for no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.next_reset_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.next_reset_at","typeLabel":"number | null"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this feature, used in /check and /track calls.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable name displayed in the dashboard and billing UI.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.name","typeLabel":"string"},"type":{"enum":["boolean","metered","credit_system","ai_credit_system"],"type":"string","description":"Feature type: 'boolean' for on/off access, 'metered' for usage-tracked features, 'credit_system' for unified credit pools, 'ai_credit_system' for model-based token pricing.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.type","typeLabel":"enum\u003cstring>"},"consumable":{"type":"boolean","description":"For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.consumable","typeLabel":"boolean"},"archived":{"type":"boolean","description":"Whether the feature is archived and hidden from the dashboard.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.archived","typeLabel":"boolean"},"combine":{"enum":["sum","max","min"],"type":"string","description":"How grants of this feature from several plans combine: 'sum' adds them up, 'max' / 'min' keep the highest / lowest grant among plan items with no price. Omitted when 'sum'.","uniqueKey":"balances.additionalProperties.feature.combine","typeLabel":"enum\u003cstring>"},"event_names":{"type":"array","items":{"type":"string","uniqueKey":"balances.additionalProperties.feature.event_names.items.[INDEX]","typeLabel":"string"},"description":"Event names that trigger this feature's balance. Allows multiple features to respond to a single event.","uniqueKey":"balances.additionalProperties.feature.event_names","typeLabel":"string[]"},"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"const":"","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"any"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"balances.additionalProperties.feature.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For classic credit systems: maps metered features to flat or graduated credit costs.","uniqueKey":"balances.additionalProperties.feature.credit_schema","typeLabel":"object[]"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"balances.additionalProperties.feature.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"balances.additionalProperties.feature.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"balances.additionalProperties.feature.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.feature.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balances.additionalProperties.feature.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for AI credit systems.","uniqueKey":"balances.additionalProperties.feature.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.feature.model_markups","typeLabel":"object | null"},"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for AI credit systems. Use -100 to make usage free.","uniqueKey":"balances.additionalProperties.feature.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider default markup percentages for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"balances.additionalProperties.feature.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"balances.additionalProperties.feature.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"balances.additionalProperties.feature.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider default markup percentages for AI credit systems.","uniqueKey":"balances.additionalProperties.feature.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.feature.provider_markups","typeLabel":"object | null"},"display":{"type":"object","properties":{"singular":{"oneOf":[{"type":"string","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balances.additionalProperties.feature.display.singular.oneOf.0","typeLabel":"string"},{"type":"null","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"balances.additionalProperties.feature.display.singular.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.feature.display.singular","typeLabel":"string | null"},"plural":{"oneOf":[{"type":"string","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balances.additionalProperties.feature.display.plural.oneOf.0","typeLabel":"string"},{"type":"null","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"balances.additionalProperties.feature.display.plural.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.feature.display.plural","typeLabel":"string | null"}},"description":"Display names for the feature in billing UI and customer-facing components.","uniqueKey":"balances.additionalProperties.feature.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"type":"object","properties":{"product_id":{"type":"string","description":"Stripe product ID this feature's usage prices bill under.","uniqueKey":"balances.additionalProperties.feature.processors.stripe.product_id","typeLabel":"string"},"meter_id":{"type":"string","description":"Stripe meter ID used to create this feature's metered price.","uniqueKey":"balances.additionalProperties.feature.processors.stripe.meter_id","typeLabel":"string"}},"uniqueKey":"balances.additionalProperties.feature.processors.stripe","typeLabel":"object"}},"x-atmn-mapping":true,"description":"Processor mappings for this feature. Present when a Stripe product or meter is set.","uniqueKey":"balances.additionalProperties.feature.processors","typeLabel":"object"}},"required":["id","name","type","consumable","archived"],"description":"The full feature object if expanded.","uniqueKey":"balances.additionalProperties.feature","typeLabel":"object"},"breakdown":{"type":"array","items":{"type":"object","properties":{"plan_id":{"oneOf":[{"type":"string","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The plan ID this balance originates from, or null for standalone and pooled balances.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].plan_id","typeLabel":"string | null"},"included_grant":{"type":"number","description":"Amount granted from the plan's included usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].included_grant","typeLabel":"number"},"prepaid_grant":{"type":"number","description":"Amount granted from prepaid purchases or top-ups.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].prepaid_grant","typeLabel":"number"},"remaining":{"type":"number","description":"Remaining balance available for use.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].remaining","typeLabel":"number"},"usage":{"type":"number","description":"Amount consumed in the current period.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].usage","typeLabel":"number"},"unlimited":{"type":"boolean","description":"Whether this balance has unlimited usage.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].unlimited","typeLabel":"boolean"},"reset":{"oneOf":[{"type":"object","description":"Reset configuration for this balance, or null if no reset.","required":["interval","resets_at"],"properties":{"interval":{"oneOf":[{"type":"string","description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","enum":["one_off","minute","hour","day","week","month","quarter","semi_annual","year"],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reset interval (hour, day, week, month, etc.) or 'multiple' if combined from different intervals.","const":"multiple","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.interval.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.interval","typeLabel":"enum\u003cstring> | any"},"resets_at":{"oneOf":[{"type":"number","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when the balance will next reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.resets_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.resets_at","typeLabel":"number | null"},"interval_count":{"type":"number","description":"Number of intervals between resets (eg. 2 for bi-monthly).","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0.interval_count","typeLabel":"number"}},"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.0","typeLabel":"object"},{"type":"null","description":"Reset configuration for this balance, or null if no reset.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].reset","typeLabel":"object | null"},"price":{"oneOf":[{"type":"object","description":"Pricing configuration if this balance has usage-based pricing.","required":["billing_units","billing_method","max_purchase"],"properties":{"billing_units":{"type":"number","description":"The number of units per billing increment (eg. $9 / 250 units).","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.billing_units","typeLabel":"number"},"billing_method":{"enum":["prepaid","usage_based"],"type":"string","description":"Whether usage is prepaid or billed pay-per-use.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.billing_method","typeLabel":"enum\u003cstring>"},"max_purchase":{"oneOf":[{"type":"number","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.0","typeLabel":"number"},{"type":"null","description":"Maximum quantity that can be purchased, or null for unlimited.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.max_purchase.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.max_purchase","typeLabel":"number | null"},"amount":{"type":"number","description":"The per-unit price amount.","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.amount","typeLabel":"number"},"tiers":{"type":"array","items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"const":"inf","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | any"},"amount":{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].amount","typeLabel":"number"},"flat_amount":{"type":"number","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX].flat_amount","typeLabel":"number"}},"required":["to","amount"],"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"description":"Tiered pricing configuration if applicable.","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tiers","typeLabel":"object[]"},"tier_behavior":{"enum":["graduated","volume"],"type":"string","description":"How tiers are applied: graduated (split across bands) or volume (flat rate for the matched tier).","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0.tier_behavior","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.0","typeLabel":"object"},{"type":"null","description":"Pricing configuration if this balance has usage-based pricing.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].price","typeLabel":"object | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when this balance expires, or null for no expiration.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].expires_at","typeLabel":"number | null"},"id":{"type":"string","default":"","description":"The unique identifier for this balance breakdown.","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].id","typeLabel":"string"},"source":{"enum":["customer","entity"],"type":"string","readOnly":true,"description":"Where this row's credits come from: shared at the customer level, or owned by the entity.","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"allocation":{"oneOf":[{"type":"object","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","required":["amount"],"properties":{"amount":{"type":"number","description":"The amount allocated to this entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].allocation.oneOf.0.amount","typeLabel":"number"}},"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].allocation.oneOf.0","typeLabel":"object"},{"type":"null","description":"Set when this row's numbers are the entity's allocated share of the customer's credits.","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].allocation.oneOf.1","typeLabel":"null"}],"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].allocation","typeLabel":"object | null"},"contributions":{"type":"object","properties":{"list":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].id","typeLabel":"string"},"entity_id":{"oneOf":[{"type":"string","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Entity holding the contributing plan. Null for customer-level plans.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_id","typeLabel":"string | null"},"entity_name":{"oneOf":[{"type":"string","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing entity.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].entity_name","typeLabel":"string | null"},"plan_id":{"type":"string","description":"The plan contributing to the pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_id","typeLabel":"string"},"plan_name":{"oneOf":[{"type":"string","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Display name of the contributing plan.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].plan_name","typeLabel":"string | null"},"current_contribution":{"type":"number","description":"Amount this source contributes to the pool this cycle.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].current_contribution","typeLabel":"number"},"next_cycle_contribution":{"type":"number","description":"Amount this source will contribute next cycle.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].next_cycle_contribution","typeLabel":"number"},"competes":{"type":"boolean","description":"True when this source competes under a 'max' / 'min' feature: only the winning competing share counts, instead of adding up.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].competes","typeLabel":"boolean"},"unlimited":{"type":"boolean","description":"True when this source grants unlimited usage, either as a competing source or as an unlimited share riding a limited pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].unlimited","typeLabel":"boolean"},"created_at":{"type":"number","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX].created_at","typeLabel":"number"}},"required":["id","entity_id","entity_name","plan_id","plan_name","current_contribution","next_cycle_contribution","competes","unlimited","created_at"],"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list.items.[INDEX]","typeLabel":"object"},"description":"The first 10 plans contributing to the pool, competing shares first, then newest.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.list","typeLabel":"object[]"},"total_count":{"type":"number","description":"Total number of plans contributing to the pool.","isRequired":true,"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions.total_count","typeLabel":"number"}},"required":["list","total_count"],"description":"The plans funding this shared pooled balance, usually on the customer's entities, and how much each adds this cycle and next. Present on pooled rows when expand includes `pooled_contributions`.","uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX].contributions","typeLabel":"object"}},"required":["plan_id","included_grant","prepaid_grant","remaining","usage","unlimited","reset","price","expires_at"],"uniqueKey":"balances.additionalProperties.breakdown.items.[INDEX]","typeLabel":"object"},"description":"Detailed breakdown of balance sources when stacking multiple plans or grants.","uniqueKey":"balances.additionalProperties.breakdown","typeLabel":"object[]"},"rollovers":{"type":"array","items":{"type":"object","properties":{"granted":{"type":"number","description":"Amount originally rolled over from a previous period, before any of it was consumed.","isRequired":true,"uniqueKey":"balances.additionalProperties.rollovers.items.[INDEX].granted","typeLabel":"number"},"balance":{"type":"number","description":"Amount of balance rolled over from a previous period.","isRequired":true,"uniqueKey":"balances.additionalProperties.rollovers.items.[INDEX].balance","typeLabel":"number"},"expires_at":{"type":"number","description":"Timestamp when the rollover balance expires.","isRequired":true,"uniqueKey":"balances.additionalProperties.rollovers.items.[INDEX].expires_at","typeLabel":"number"}},"required":["granted","balance","expires_at"],"uniqueKey":"balances.additionalProperties.rollovers.items.[INDEX]","typeLabel":"object"},"description":"Rollover balances carried over from previous periods.","uniqueKey":"balances.additionalProperties.rollovers","typeLabel":"object[]"},"allocated":{"type":"number","readOnly":true,"description":"Shared credits held for entities by allocations; present only when the customer allocates this feature.","uniqueKey":"balances.additionalProperties.allocated","typeLabel":"number"},"unallocated":{"type":"number","readOnly":true,"description":"Remaining shared credits no allocation holds; any entity may use them.","uniqueKey":"balances.additionalProperties.unallocated","typeLabel":"number"}},"required":["feature_id","granted","remaining","usage","unlimited","overage_allowed","max_purchase","next_reset_at"],"examples":[{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]}],"uniqueKey":"balances.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"balances","typeLabel":"object"},"flags":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this flag.","isRequired":true,"uniqueKey":"flags.additionalProperties.id","typeLabel":"string"},"plan_id":{"oneOf":[{"type":"string","description":"The plan ID this flag originates from, or null for standalone flags.","isRequired":true,"uniqueKey":"flags.additionalProperties.plan_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The plan ID this flag originates from, or null for standalone flags.","isRequired":true,"uniqueKey":"flags.additionalProperties.plan_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"flags.additionalProperties.plan_id","typeLabel":"string | null"},"expires_at":{"oneOf":[{"type":"number","description":"Timestamp when this flag expires, or null for no expiration.","isRequired":true,"uniqueKey":"flags.additionalProperties.expires_at.oneOf.0","typeLabel":"number"},{"type":"null","description":"Timestamp when this flag expires, or null for no expiration.","isRequired":true,"uniqueKey":"flags.additionalProperties.expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"flags.additionalProperties.expires_at","typeLabel":"number | null"},"feature_id":{"type":"string","description":"The feature ID this flag is for.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature_id","typeLabel":"string"},"feature":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this feature, used in /check and /track calls.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.id","typeLabel":"string"},"name":{"type":"string","description":"Human-readable name displayed in the dashboard and billing UI.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.name","typeLabel":"string"},"type":{"enum":["boolean","metered","credit_system","ai_credit_system"],"type":"string","description":"Feature type: 'boolean' for on/off access, 'metered' for usage-tracked features, 'credit_system' for unified credit pools, 'ai_credit_system' for model-based token pricing.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.type","typeLabel":"enum\u003cstring>"},"consumable":{"type":"boolean","description":"For metered features: true if usage resets periodically (API calls, credits), false if allocated persistently (seats, storage).","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.consumable","typeLabel":"boolean"},"archived":{"type":"boolean","description":"Whether the feature is archived and hidden from the dashboard.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.archived","typeLabel":"boolean"},"combine":{"enum":["sum","max","min"],"type":"string","description":"How grants of this feature from several plans combine: 'sum' adds them up, 'max' / 'min' keep the highest / lowest grant among plan items with no price. Omitted when 'sum'.","uniqueKey":"flags.additionalProperties.feature.combine","typeLabel":"enum\u003cstring>"},"event_names":{"type":"array","items":{"type":"string","uniqueKey":"flags.additionalProperties.feature.event_names.items.[INDEX]","typeLabel":"string"},"description":"Event names that trigger this feature's balance. Allows multiple features to respond to a single event.","uniqueKey":"flags.additionalProperties.feature.event_names","typeLabel":"string[]"},"credit_schema":{"type":"array","items":{"oneOf":[{"type":"object","required":["metered_feature_id","tier_behavior","tiers"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.metered_feature_id","typeLabel":"string"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.tiers","typeLabel":"object[]"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"type":"string","minLength":1,"description":"ID of the metered feature that draws from this credit system.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.metered_feature_id","typeLabel":"string"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["metered_feature_id","credit_cost"],"properties":{"metered_feature_id":{"const":"","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.metered_feature_id","typeLabel":"any"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.credit_cost","typeLabel":"number"},"billing_units":{"type":"number","exclusiveMinimum":0,"description":"Number of metered-feature units priced together. Defaults to one when omitted.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.billing_units","typeLabel":"number"},"dimensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"oneOf":[{"type":"object","required":["match","tier_behavior","tiers"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.match","typeLabel":"object"},"tier_behavior":{"const":"graduated","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tier_behavior","typeLabel":"any"},"tiers":{"type":"array","minItems":1,"items":{"type":"object","properties":{"to":{"oneOf":[{"type":"number","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.0","typeLabel":"number"},{"type":"string","description":"Inclusive upper usage boundary for this graduated tier. The final tier must be 'inf'.","enum":["inf"],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].to","typeLabel":"number | enum\u003cstring>"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group within this tier.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX].credit_cost","typeLabel":"number"}},"required":["to","credit_cost"],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.tiers","typeLabel":"object[]"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"object","required":["match","credit_cost"],"properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.match","typeLabel":"object"},"credit_cost":{"type":"number","minimum":0,"description":"Credits consumed per billing-unit group when this dimension matches.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.credit_cost","typeLabel":"number"},"priority":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Breaks ties between dimensions that match the same number of keys. Higher wins.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions.additionalProperties","typeLabel":"object"},"description":"Named rates chosen by event properties. The most specific match sets the rate; with no match the item's own rate applies.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.dimensions","typeLabel":"object"},"multipliers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"object","properties":{"match":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match.additionalProperties","typeLabel":"string"},"description":"Event properties this entry applies to. Every key must equal the tracked property, compared as strings.","isRequired":true,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.match","typeLabel":"object"},"factor":{"type":"number","exclusiveMinimum":0,"description":"Multiplies the matched rate. All matching multipliers stack.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.factor","typeLabel":"number"},"add":{"type":"number","description":"Added to the rate after every factor is applied, in credits per billing-unit group.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties.add","typeLabel":"number"}},"required":["match"],"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers.additionalProperties","typeLabel":"object"},"description":"Named adjustments chosen by event properties. Every match applies: factors multiply, then adds are summed.","uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2.multipliers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"flags.additionalProperties.feature.credit_schema.items.[INDEX]","typeLabel":"object"},"description":"For classic credit systems: maps metered features to flat or graduated credit costs.","uniqueKey":"flags.additionalProperties.feature.credit_schema","typeLabel":"object[]"},"model_markups":{"oneOf":[{"type":"object","description":"Per-model markup overrides for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"uniqueKey":"flags.additionalProperties.feature.model_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"},"input_cost":{"type":"number","minimum":0,"uniqueKey":"flags.additionalProperties.feature.model_markups.oneOf.0.additionalProperties.input_cost","typeLabel":"number"},"output_cost":{"type":"number","minimum":0,"uniqueKey":"flags.additionalProperties.feature.model_markups.oneOf.0.additionalProperties.output_cost","typeLabel":"number"}},"uniqueKey":"flags.additionalProperties.feature.model_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"flags.additionalProperties.feature.model_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-model markup overrides for AI credit systems.","uniqueKey":"flags.additionalProperties.feature.model_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"flags.additionalProperties.feature.model_markups","typeLabel":"object | null"},"default_markup":{"type":"number","minimum":-100,"description":"Default percentage markup for AI credit systems. Use -100 to make usage free.","uniqueKey":"flags.additionalProperties.feature.default_markup","typeLabel":"number"},"provider_markups":{"oneOf":[{"type":"object","description":"Per-provider default markup percentages for AI credit systems.","additionalProperties":{"type":"object","properties":{"markup":{"type":"number","minimum":-100,"isRequired":true,"uniqueKey":"flags.additionalProperties.feature.provider_markups.oneOf.0.additionalProperties.markup","typeLabel":"number"}},"required":["markup"],"uniqueKey":"flags.additionalProperties.feature.provider_markups.oneOf.0.additionalProperties","typeLabel":"object"},"uniqueKey":"flags.additionalProperties.feature.provider_markups.oneOf.0","typeLabel":"object"},{"type":"null","description":"Per-provider default markup percentages for AI credit systems.","uniqueKey":"flags.additionalProperties.feature.provider_markups.oneOf.1","typeLabel":"null"}],"uniqueKey":"flags.additionalProperties.feature.provider_markups","typeLabel":"object | null"},"display":{"type":"object","properties":{"singular":{"oneOf":[{"type":"string","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"flags.additionalProperties.feature.display.singular.oneOf.0","typeLabel":"string"},{"type":"null","description":"Singular form for UI display (e.g., 'API call', 'seat').","uniqueKey":"flags.additionalProperties.feature.display.singular.oneOf.1","typeLabel":"null"}],"uniqueKey":"flags.additionalProperties.feature.display.singular","typeLabel":"string | null"},"plural":{"oneOf":[{"type":"string","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"flags.additionalProperties.feature.display.plural.oneOf.0","typeLabel":"string"},{"type":"null","description":"Plural form for UI display (e.g., 'API calls', 'seats').","uniqueKey":"flags.additionalProperties.feature.display.plural.oneOf.1","typeLabel":"null"}],"uniqueKey":"flags.additionalProperties.feature.display.plural","typeLabel":"string | null"}},"description":"Display names for the feature in billing UI and customer-facing components.","uniqueKey":"flags.additionalProperties.feature.display","typeLabel":"object"},"processors":{"type":"object","properties":{"stripe":{"type":"object","properties":{"product_id":{"type":"string","description":"Stripe product ID this feature's usage prices bill under.","uniqueKey":"flags.additionalProperties.feature.processors.stripe.product_id","typeLabel":"string"},"meter_id":{"type":"string","description":"Stripe meter ID used to create this feature's metered price.","uniqueKey":"flags.additionalProperties.feature.processors.stripe.meter_id","typeLabel":"string"}},"uniqueKey":"flags.additionalProperties.feature.processors.stripe","typeLabel":"object"}},"x-atmn-mapping":true,"description":"Processor mappings for this feature. Present when a Stripe product or meter is set.","uniqueKey":"flags.additionalProperties.feature.processors","typeLabel":"object"}},"required":["id","name","type","consumable","archived"],"description":"The full feature object if expanded.","uniqueKey":"flags.additionalProperties.feature","typeLabel":"object"}},"required":["id","plan_id","expires_at","feature_id"],"examples":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","expires_at":null,"feature_id":"dashboard"}],"uniqueKey":"flags.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"flags","typeLabel":"object"},"customer_id":{"oneOf":[{"type":"string","description":"The customer ID this entity belongs to","uniqueKey":"customer_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The customer ID this entity belongs to","uniqueKey":"customer_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer_id","typeLabel":"string | null"},"feature_id":{"oneOf":[{"type":"string","description":"The feature ID this entity belongs to","uniqueKey":"feature_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The feature ID this entity belongs to","uniqueKey":"feature_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"feature_id","typeLabel":"string | null"},"billing_controls":{"type":"object","properties":{"spend_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"Optional feature ID this spend limit applies to.","uniqueKey":"billing_controls.spend_limits.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether the overage spend limit is enabled.","uniqueKey":"billing_controls.spend_limits.items.[INDEX].enabled","typeLabel":"boolean"},"limit_type":{"enum":["absolute","usage_percentage"],"type":"string","description":"How overage_limit is interpreted: an absolute overage cap (default) or a percentage of the main-plan allowance.","uniqueKey":"billing_controls.spend_limits.items.[INDEX].limit_type","typeLabel":"enum\u003cstring>"},"overage_limit":{"type":"number","minimum":0,"description":"Overage cap for the feature: absolute units, or a percent (e.g. 120) when limit_type is usage_percentage.","uniqueKey":"billing_controls.spend_limits.items.[INDEX].overage_limit","typeLabel":"number"},"skip_overage_billing":{"type":"boolean","description":"When true, overage for this feature is not posted to Stripe. Usage tracking and balance resets still behave normally.","uniqueKey":"billing_controls.spend_limits.items.[INDEX].skip_overage_billing","typeLabel":"boolean"},"source":{"enum":["customer","plan"],"type":"string","description":"Response-only: whether the entry is a customer-level override or inherited from an attached plan's defaults.","uniqueKey":"billing_controls.spend_limits.items.[INDEX].source","typeLabel":"enum\u003cstring>"}},"uniqueKey":"billing_controls.spend_limits.items.[INDEX]","typeLabel":"object"},"description":"List of spend limits per feature. Each entry caps overage (overage_limit) and/or per-interval usage (usage_limit).","uniqueKey":"billing_controls.spend_limits","typeLabel":"object[]"},"usage_limits":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature this usage limit applies to.","isRequired":true,"uniqueKey":"billing_controls.usage_limits.items.[INDEX].feature_id","typeLabel":"string"},"limit":{"type":"number","minimum":0,"description":"Maximum units allowed per interval.","isRequired":true,"uniqueKey":"billing_controls.usage_limits.items.[INDEX].limit","typeLabel":"number"},"interval":{"enum":["day","week","month","year"],"type":"string","description":"Interval for the cap, aligned to the customer's billing cycle.","isRequired":true,"uniqueKey":"billing_controls.usage_limits.items.[INDEX].interval","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage limit is enabled.","uniqueKey":"billing_controls.usage_limits.items.[INDEX].enabled","typeLabel":"boolean"},"anchor":{"enum":["billing_cycle","utc"],"type":"string","description":"Window alignment. 'billing_cycle' phases the interval to the customer's renewal time; 'utc' aligns to the UTC calendar.","uniqueKey":"billing_controls.usage_limits.items.[INDEX].anchor","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"billing_controls.usage_limits.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"billing_controls.usage_limits.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"When set, only usage from events whose properties match counts toward this cap. Omit to count all usage of the feature.","uniqueKey":"billing_controls.usage_limits.items.[INDEX].filter","typeLabel":"object"},"usage":{"type":"number","minimum":0,"description":"Usage consumed in the active interval, stored in the usage-window counter.","uniqueKey":"billing_controls.usage_limits.items.[INDEX].usage","typeLabel":"number"},"source":{"enum":["customer","plan"],"type":"string","description":"Response-only: whether the entry is a customer-level override or inherited from an attached plan's defaults.","uniqueKey":"billing_controls.usage_limits.items.[INDEX].source","typeLabel":"enum\u003cstring>"}},"required":["feature_id","limit","interval"],"uniqueKey":"billing_controls.usage_limits.items.[INDEX]","typeLabel":"object"},"description":"List of hard usage caps per feature for this entity. An entity entry overrides the customer's for that feature.","uniqueKey":"billing_controls.usage_limits","typeLabel":"object[]"},"usage_alerts":{"type":"array","items":{"type":"object","properties":{"threshold":{"type":"number","minimum":0,"description":"The threshold value that triggers the alert. For usage or remaining, this is an absolute count. For usage_percentage or remaining_percentage, this is a percentage (0-100).","isRequired":true,"uniqueKey":"billing_controls.usage_alerts.items.[INDEX].threshold","typeLabel":"number"},"threshold_type":{"enum":["usage","usage_percentage","remaining","remaining_percentage"],"type":"string","description":"Whether the threshold is an absolute count or a percentage of the usage allowance or remaining balance.","isRequired":true,"uniqueKey":"billing_controls.usage_alerts.items.[INDEX].threshold_type","typeLabel":"enum\u003cstring>"},"feature_id":{"type":"string","description":"The feature ID this alert applies to.","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":true,"description":"Whether this usage alert is enabled.","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].enabled","typeLabel":"boolean"},"basis":{"enum":["balance","included","recurring","usage_limit"],"type":"string","default":"balance","description":"What 100% means. balance: every grant on the feature. included: the plan allowance only. recurring: grants that reset. usage_limit: the cap of the usage limit with the same feature and filter.","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].basis","typeLabel":"enum\u003cstring>"},"filter":{"type":"object","properties":{"properties":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].filter.properties.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"billing_controls.usage_alerts.items.[INDEX].filter.properties","typeLabel":"object"}},"required":["properties"],"description":"Only valid with basis usage_limit. Points the alert at the usage limit carrying the same filter.","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].filter","typeLabel":"object"},"name":{"type":"string","description":"Optional user-defined label to distinguish multiple alerts on the same feature.","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].name","typeLabel":"string"},"source":{"enum":["customer","plan"],"type":"string","description":"Response-only: whether the entry is a customer-level override or inherited from an attached plan's defaults.","uniqueKey":"billing_controls.usage_alerts.items.[INDEX].source","typeLabel":"enum\u003cstring>"}},"required":["threshold","threshold_type"],"uniqueKey":"billing_controls.usage_alerts.items.[INDEX]","typeLabel":"object"},"description":"List of usage alert configurations per feature.","uniqueKey":"billing_controls.usage_alerts","typeLabel":"object[]"},"overage_allowed":{"type":"array","items":{"type":"object","properties":{"feature_id":{"type":"string","description":"The feature ID this overage allowed control applies to.","isRequired":true,"uniqueKey":"billing_controls.overage_allowed.items.[INDEX].feature_id","typeLabel":"string"},"enabled":{"type":"boolean","default":false,"description":"Whether overage is allowed for this feature.","uniqueKey":"billing_controls.overage_allowed.items.[INDEX].enabled","typeLabel":"boolean"},"source":{"enum":["customer","plan"],"type":"string","description":"Response-only: whether the entry is a customer-level override or inherited from an attached plan's defaults.","uniqueKey":"billing_controls.overage_allowed.items.[INDEX].source","typeLabel":"enum\u003cstring>"}},"required":["feature_id"],"uniqueKey":"billing_controls.overage_allowed.items.[INDEX]","typeLabel":"object"},"description":"List of overage allowed controls per feature. When enabled, usage can exceed balance.","uniqueKey":"billing_controls.overage_allowed","typeLabel":"object[]"}},"description":"Billing controls for the entity.","uniqueKey":"billing_controls","typeLabel":"object"},"invoices":{"type":"array","items":{"type":"object","properties":{"plan_ids":{"type":"array","items":{"type":"string","uniqueKey":"invoices.items.[INDEX].plan_ids.items.[INDEX]","typeLabel":"string"},"description":"Array of plan IDs included in this invoice","isRequired":true,"uniqueKey":"invoices.items.[INDEX].plan_ids","typeLabel":"string[]"},"stripe_id":{"type":"string","description":"The Stripe invoice ID","isRequired":true,"uniqueKey":"invoices.items.[INDEX].stripe_id","typeLabel":"string"},"status":{"type":"string","description":"The status of the invoice","isRequired":true,"uniqueKey":"invoices.items.[INDEX].status","typeLabel":"string"},"total":{"type":"number","description":"The total amount of the invoice","isRequired":true,"uniqueKey":"invoices.items.[INDEX].total","typeLabel":"number"},"currency":{"type":"string","description":"The currency code for the invoice","isRequired":true,"uniqueKey":"invoices.items.[INDEX].currency","typeLabel":"string"},"created_at":{"type":"number","description":"Timestamp when the invoice was created","isRequired":true,"uniqueKey":"invoices.items.[INDEX].created_at","typeLabel":"number"},"processor_type":{"enum":["stripe","revenuecat"],"type":"string","default":"stripe","description":"The billing processor that owns this invoice.","uniqueKey":"invoices.items.[INDEX].processor_type","typeLabel":"enum\u003cstring>"},"hosted_invoice_url":{"oneOf":[{"type":"string","description":"URL to the Stripe-hosted invoice page","uniqueKey":"invoices.items.[INDEX].hosted_invoice_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"URL to the Stripe-hosted invoice page","uniqueKey":"invoices.items.[INDEX].hosted_invoice_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"invoices.items.[INDEX].hosted_invoice_url","typeLabel":"string | null"}},"required":["plan_ids","stripe_id","status","total","currency","created_at"],"uniqueKey":"invoices.items.[INDEX]","typeLabel":"object"},"description":"Invoices for this entity (only included when expand=invoices)","uniqueKey":"invoices","typeLabel":"object[]"}},"required":["id","name","created_at","env","subscriptions","purchases","balances","flags"],"examples":[{"id":"seat_42","name":"Seat 42","customer_id":"cus_123","feature_id":"seats","created_at":1771409161016,"env":"sandbox","subscriptions":[{"plan_id":"pro_plan","auto_enable":true,"add_on":false,"status":"active","past_due":false,"canceled_at":null,"expires_at":null,"trial_ends_at":null,"started_at":1771431921437,"current_period_start":1771431921437,"current_period_end":1771999921437,"quantity":1}],"purchases":[],"balances":{"messages":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]}},"invoices":[]}],"uniqueKey":"","typeLabel":"object"},"example":{"id":"seat_42","name":"Seat 42","customer_id":"cus_123","feature_id":"seats","created_at":1771409161016,"env":"sandbox","subscriptions":[{"plan_id":"pro_plan","auto_enable":true,"add_on":false,"status":"active","past_due":false,"canceled_at":null,"expires_at":null,"trial_ends_at":null,"started_at":1771431921437,"current_period_start":1771431921437,"current_period_end":1771999921437,"quantity":1}],"purchases":[],"balances":{"messages":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]}},"invoices":[]},"examples":{"Example":{"title":"Example","value":{"id":"seat_42","name":"Seat 42","customer_id":"cus_123","feature_id":"seats","created_at":1771409161016,"env":"sandbox","subscriptions":[{"plan_id":"pro_plan","auto_enable":true,"add_on":false,"status":"active","past_due":false,"canceled_at":null,"expires_at":null,"trial_ends_at":null,"started_at":1771431921437,"current_period_start":1771431921437,"current_period_end":1771999921437,"quantity":1}],"purchases":[],"balances":{"messages":{"feature_id":"messages","granted":100,"remaining":72,"usage":28,"unlimited":false,"overage_allowed":false,"max_purchase":null,"next_reset_at":1773851121437,"breakdown":[{"id":"cus_ent_39qmLooixXLAqMywgXywjAz96rV","plan_id":"pro_plan","included_grant":100,"prepaid_grant":0,"remaining":72,"usage":28,"unlimited":false,"reset":{"interval":"month","resets_at":1773851121437},"price":null,"expires_at":null}]}},"invoices":[]}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"53876c4e-3cd5-4c7e-b82b-fb98671718cb":{"secretKey":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"secretKey"}}},"servers":{"fe6701f7-be5c-40aa-b244-1a6f83c52f58":{"url":"https://api.useautumn.com","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","scopes":[],"schemeName":"secretKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"secretKey","name":"Authorization"}],"title":"secretKey"}]},"originalFileLocation":"api/openapi.yml"},"subdomain":"autumn-b9b4c0fb","siteName":"Autumn","title":"Get Entity - Autumn","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T11:21:46.409Z","originalFileLocation":"api-reference/entities/getEntity.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=\"Fetches an entity by its ID. Use this to read one entity\u0026#x27;s current state. Pass customerId when you want to scope the lookup to a specific customer.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Autumn\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get Entity - Autumn\">\u003cmeta data-mint-head property=\"og:description\" content=\"Fetches an entity by its ID. Use this to read one entity\u0026#x27;s current state. Pass customerId when you want to scope the lookup to a specific customer.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Autumn\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.useautumn.com/api-reference/entities/getEntity\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://autumn-b9b4c0fb.mintlify.app/_mintlify/api/og/v2?division=Entities\u0026amp;title=Get+Entity\u0026amp;description=Fetches+an+entity+by+its+ID.%0A%0AUse+this+to+read+one+entity%27s+current+state.+Pass+customerId+when+you+want+to+scope+the+lookup+to+a+specific+customer.\u0026amp;theme=3bf7e6d15826cac91d0b643c\u0026amp;signature=b47b5240dd6e124f6b0c7df997ae8d5ca1284e67786eb0fa12a570cc51a4d705\">\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=\"Get Entity - Autumn\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Fetches an entity by its ID. Use this to read one entity\u0026#x27;s current state. Pass customerId when you want to scope the lookup to a specific customer.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://autumn-b9b4c0fb.mintlify.app/_mintlify/api/og/v2?division=Entities\u0026amp;title=Get+Entity\u0026amp;description=Fetches+an+entity+by+its+ID.%0A%0AUse+this+to+read+one+entity%27s+current+state.+Pass+customerId+when+you+want+to+scope+the+lookup+to+a+specific+customer.\u0026amp;theme=3bf7e6d15826cac91d0b643c\u0026amp;signature=b47b5240dd6e124f6b0c7df997ae8d5ca1284e67786eb0fa12a570cc51a4d705\">\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/autumn-b9b4c0fb/LQO5vXfVIKEXnzb8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Autumn\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8838ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.useautumn.com/api-reference/entities/getEntity\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/entities/getEntity.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.useautumn.com/#organization\",\"name\":\"Autumn\",\"url\":\"https://docs.useautumn.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/autumn-b9b4c0fb/BOEMpWFJsAdGcii1/assets/logo/autumn-dark.svg?fit=max\u0026auto=format\u0026n=BOEMpWFJsAdGcii1\u0026q=85\u0026s=720bd2227c435e77f2c91cbfcbccd274\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.useautumn.com#website\",\"name\":\"Autumn\",\"url\":\"https://docs.useautumn.com\",\"publisher\":{\"@id\":\"https://docs.useautumn.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.useautumn.com/api-reference/entities/getEntity#webpage\",\"url\":\"https://docs.useautumn.com/api-reference/entities/getEntity\",\"name\":\"Get Entity\",\"description\":\"Fetches an entity by its ID. Use this to read one entity's current state. Pass customerId when you want to scope the lookup to a specific customer.\",\"dateModified\":\"2026-10-26T11:21:46.409Z\",\"isPartOf\":{\"@id\":\"https://docs.useautumn.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.useautumn.com/api-reference/entities/getEntity#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.useautumn.com/api-reference/entities/getEntity#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Autumn\",\"item\":\"https://docs.useautumn.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get Entity\",\"item\":\"https://docs.useautumn.com/api-reference/entities/getEntity\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.useautumn.com/api-reference/entities/getEntity#apireference\",\"headline\":\"Get Entity\",\"name\":\"Get Entity\",\"description\":\"Fetches an entity by its ID. Use this to read one entity's current state. Pass customerId when you want to scope the lookup to a specific customer.\",\"url\":\"https://docs.useautumn.com/api-reference/entities/getEntity\",\"mainEntityOfPage\":{\"@id\":\"https://docs.useautumn.com/api-reference/entities/getEntity#webpage\"},\"dateModified\":\"2026-10-26T11:21:46.409Z\",\"publisher\":{\"@id\":\"https://docs.useautumn.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.useautumn.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Autumn\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Autumn","nav":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/STqxY92zuS"},{"anchor":"GitHub","icon":"github","href":"https://github.com/useautumn/autumn"},{"anchor":"Website","icon":"globe","href":"https://useautumn.com"}]},"tabs":[{"tab":"Documentation","icon":"folder-open","pages":[{"title":"Documentation","href":"/welcome"}]},{"tab":"Examples","icon":"graduation-cap","pages":[{"title":"Examples","href":"/examples/monetary-credits"}]},{"tab":"CLI","icon":"square-terminal","pages":[{"title":"CLI","href":"/cli/getting-started"}]},{"tab":"API Reference","icon":"display-code","groups":[{"group":"Billing","pages":[{"title":"Attach","openapi":"openapi POST /v1/billing.attach","href":"/api-reference/billing/attach"},{"title":"Update Subscription","openapi":"openapi POST /v1/billing.update","href":"/api-reference/billing/billingUpdate"},{"title":"Open Customer Portal","openapi":"openapi POST /v1/billing.open_customer_portal","href":"/api-reference/billing/openCustomerPortal"},{"title":"Setup Payment","openapi":"openapi POST /v1/billing.setup_payment","href":"/api-reference/billing/setupPayment"},{"title":"Multi Attach","openapi":"openapi POST /v1/billing.multi_attach","href":"/api-reference/billing/multiAttach"},{"title":"Multi Update","openapi":"openapi POST /v1/billing.multi_update","href":"/api-reference/billing/multiUpdate"},{"title":"Create Schedule","openapi":"openapi POST /v1/billing.create_schedule","href":"/api-reference/billing/createSchedule"},{"title":"Verify","openapi":"openapi POST /v1/billing.verify","href":"/api-reference/billing/verify"},{"title":"Import","openapi":"openapi POST /v1/billing.import","href":"/api-reference/billing/import"},{"group":"Previews","pages":[{"title":"Preview Attach","openapi":"openapi POST /v1/billing.preview_attach","href":"/api-reference/billing/previewAttach"},{"title":"Preview Update","openapi":"openapi POST /v1/billing.preview_update","href":"/api-reference/billing/previewUpdate"},{"title":"Preview Multi Attach","openapi":"openapi POST /v1/billing.preview_multi_attach","href":"/api-reference/billing/previewMultiAttach"},{"title":"Preview Multi Update","openapi":"openapi POST /v1/billing.preview_multi_update","href":"/api-reference/billing/previewMultiUpdate"}]},{"group":"Licenses","pages":[{"title":"Attach License","openapi":"openapi POST /v1/licenses.attach","href":"/api-reference/licenses/attachLicense"},{"title":"Release License","openapi":"openapi POST /v1/licenses.release","href":"/api-reference/licenses/releaseLicense"},{"title":"List Licenses","openapi":"openapi POST /v1/licenses.list","href":"/api-reference/licenses/listLicenses"},{"title":"List License Assignments","openapi":"openapi POST /v1/licenses.list_assignments","href":"/api-reference/licenses/listLicenseAssignments"}]}]},{"group":"Balances","pages":[{"title":"Check Permissions","openapi":"openapi POST /v1/balances.check","href":"/api-reference/core/check"},{"title":"Track Usage","openapi":"openapi POST /v1/balances.track","href":"/api-reference/core/track"},{"title":"Batch Track Usage","openapi":"openapi POST /v1/balances.batch_track","href":"/api-reference/core/batchTrack"},{"title":"List Balances","openapi":"openapi POST /v1/balances.list","href":"/api-reference/balances/listBalances"},{"title":"Create Balance","openapi":"openapi POST /v1/balances.create","href":"/api-reference/balances/createBalance"},{"title":"Update Balance","openapi":"openapi POST /v1/balances.update","href":"/api-reference/balances/updateBalance"},{"title":"Delete Balance","openapi":"openapi POST /v1/balances.delete","href":"/api-reference/balances/deleteBalance"},{"title":"Finalize Lock","openapi":"openapi POST /v1/balances.finalize","href":"/api-reference/balances/finalizeLock"}]},{"group":"Customers","pages":[{"title":"Get or Create Customer","openapi":"openapi POST /v1/customers.get_or_create","href":"/api-reference/customers/getOrCreateCustomer"},{"title":"Get Customer","openapi":"openapi POST /v1/customers.get","href":"/api-reference/customers/getCustomer"},{"title":"List Customers","openapi":"openapi POST /v1/customers.list","href":"/api-reference/customers/listCustomers"},{"title":"List Subscriptions","openapi":"openapi POST /v1/subscriptions.list","href":"/api-reference/customers/listSubscriptions"},{"title":"List Purchases","openapi":"openapi POST /v1/purchases.list","href":"/api-reference/customers/listPurchases"},{"title":"Update Customer","openapi":"openapi POST /v1/customers.update","href":"/api-reference/customers/updateCustomer"},{"title":"Delete Customer","openapi":"openapi POST /v1/customers.delete","href":"/api-reference/customers/deleteCustomer"}]},{"group":"Invoices","pages":[{"title":"List Invoices","openapi":"openapi POST /v1/invoices.list","href":"/api-reference/invoices/listInvoices"},{"title":"Create Invoice","openapi":"openapi POST /v1/invoices.create","href":"/api-reference/invoices/createInvoice"},{"title":"Mark Invoice as Paid","openapi":"openapi POST /v1/invoices.pay","href":"/api-reference/invoices/payInvoice"},{"title":"Void Invoice","openapi":"openapi POST /v1/invoices.void","href":"/api-reference/invoices/voidInvoice"},{"title":"Reissue Invoice","openapi":"openapi POST /v1/invoices.reissue","href":"/api-reference/invoices/reissueInvoice"},{"title":"Issue Credit Note","openapi":"openapi POST /v1/invoices.issue_credit_note","href":"/api-reference/invoices/issueCreditNote"},{"title":"Backfill Invoices","openapi":"openapi POST /v1/invoices.insert","href":"/api-reference/invoices/insertInvoices"},{"title":"List Invoice Templates","openapi":"openapi POST /v1/invoices.listTemplates","href":"/api-reference/invoices/listInvoiceTemplates"}]},{"group":"Authorization","pages":[{"title":"Mint","openapi":"openapi POST /v1/keys.mint","href":"/api-reference/keys/mintKey"},{"title":"Refresh","openapi":"openapi POST /v1/keys.refresh","href":"/api-reference/keys/refreshKey"},{"title":"Revoke","openapi":"openapi POST /v1/keys.revoke","href":"/api-reference/keys/revokeKey"}]},{"group":"Events","pages":[{"title":"List Events","openapi":"openapi POST /v1/events.list","href":"/api-reference/events/listEvents"},{"title":"Aggregate Events","openapi":"openapi POST /v1/events.aggregate","href":"/api-reference/events/aggregateEvents"}]},{"group":"Logs","pages":[{"title":"Search Request Logs","openapi":"openapi POST /v1/logs.search","description":"Search API requests and incoming Stripe webhooks for your organization and environment.","href":"/api-reference/logs/searchRequestLogs"}]},{"group":"Entities","pages":[{"title":"Get Entity","openapi":"openapi POST /v1/entities.get","href":"/api-reference/entities/getEntity"},{"title":"List Entities","openapi":"openapi POST /v1/entities.list","description":"Lists entities across the organization with pagination and optional filters.\n\nUse this to page through entities globally, including filtering by plans inherited from parent customers or attached directly to entities.","href":"/api-reference/entities/listEntities"},{"title":"Create Entity","openapi":"openapi POST /v1/entities.create","href":"/api-reference/entities/createEntity"},{"title":"Update Entity","openapi":"openapi POST /v1/entities.update","href":"/api-reference/entities/updateEntity"},{"title":"Delete Entity","openapi":"openapi POST /v1/entities.delete","href":"/api-reference/entities/deleteEntity"}]},{"group":"Accounts","pages":[{"title":"Get Account","openapi":"openapi POST /v1/accounts.get","href":"/api-reference/accounts/getAccount"},{"title":"Update Account","openapi":"openapi POST /v1/accounts.update","href":"/api-reference/accounts/updateAccount"}]},{"group":"Plans","pages":[{"title":"Get a plan","openapi":"openapi POST /v1/plans.get","href":"/api-reference/plans/getPlan"},{"title":"List all plans","openapi":"openapi POST /v1/plans.list","href":"/api-reference/plans/listPlans"},{"title":"Create a plan","openapi":"openapi POST /v1/plans.create","href":"/api-reference/plans/createPlan"},{"title":"Update a plan","openapi":"openapi POST /v1/plans.update","href":"/api-reference/plans/updatePlan"},{"title":"Delete a plan","openapi":"openapi POST /v1/plans.delete","href":"/api-reference/plans/deletePlan"}]},{"group":"Features","pages":[{"title":"Get Feature","openapi":"openapi POST /v1/features.get","href":"/api-reference/features/getFeature"},{"title":"List Features","openapi":"openapi POST /v1/features.list","href":"/api-reference/features/listFeatures"},{"title":"Create Feature","openapi":"openapi POST /v1/features.create","href":"/api-reference/features/createFeature"},{"title":"Update Feature","openapi":"openapi POST /v1/features.update","href":"/api-reference/features/updateFeature"},{"title":"Delete Feature","openapi":"openapi POST /v1/features.delete","href":"/api-reference/features/deleteFeature"}]},{"group":"Rewards \u0026 Referrals","pages":[{"title":"Create Referral Program","openapi":"openapi POST /v1/referral_programs.create","href":"/api-reference/referrals/createReferralProgram"},{"title":"List Referral Programs","openapi":"openapi POST /v1/referral_programs.list","href":"/api-reference/referrals/listReferralPrograms"},{"title":"Get Referral Program","openapi":"openapi POST /v1/referral_programs.get","href":"/api-reference/referrals/getReferralProgram"},{"title":"Update Referral Program","openapi":"openapi POST /v1/referral_programs.update","href":"/api-reference/referrals/updateReferralProgram"},{"title":"Delete Referral Program","openapi":"openapi POST /v1/referral_programs.delete","href":"/api-reference/referrals/deleteReferralProgram"},{"title":"Create Referral Code","openapi":"openapi POST /v1/referrals.create_code","href":"/api-reference/referrals/createReferralCode"},{"title":"Redeem Referral Code","openapi":"openapi POST /v1/referrals.redeem_code","href":"/api-reference/referrals/redeemReferralCode"},{"title":"Create Reward","openapi":"openapi POST /v1/rewards.create","href":"/api-reference/rewards/createReward"},{"title":"List Rewards","openapi":"openapi POST /v1/rewards.list","href":"/api-reference/rewards/listRewards"},{"title":"Get Reward","openapi":"openapi POST /v1/rewards.get","href":"/api-reference/rewards/getReward"},{"title":"Update Reward","openapi":"openapi POST /v1/rewards.update","href":"/api-reference/rewards/updateReward"},{"title":"Delete Reward","openapi":"openapi POST /v1/rewards.delete","href":"/api-reference/rewards/deleteReward"},{"title":"Redeem Reward Code","openapi":"openapi POST /v1/rewards.redeem","href":"/api-reference/rewards/redeemRewardCode"}]},{"group":"Webhooks","pages":[{"title":"Get Webhook","openapi":"openapi POST /v1/webhooks.get","href":"/api-reference/webhooks/getWebhook"},{"title":"List Webhooks","openapi":"openapi POST /v1/webhooks.list","href":"/api-reference/webhooks/listWebhooks"},{"title":"Create Webhook","openapi":"openapi POST /v1/webhooks.create","href":"/api-reference/webhooks/createWebhook"},{"title":"Update Webhook","openapi":"openapi POST /v1/webhooks.update","href":"/api-reference/webhooks/updateWebhook"},{"title":"Delete Webhook","openapi":"openapi POST /v1/webhooks.delete","href":"/api-reference/webhooks/deleteWebhook"},{"title":"Sync Webhooks","openapi":"openapi POST /v1/webhooks.sync","href":"/api-reference/webhooks/syncWebhooks"},{"group":"Previews","pages":[{"title":"Preview Sync Webhooks","openapi":"openapi POST /v1/webhooks.preview_sync","href":"/api-reference/webhooks/previewSyncWebhooks"}]}]},{"group":"Webhook Events","pages":[{"group":"Balances","pages":[{"title":"Usage Alert Triggered","openapi":"api/openapi.yml webhook balances.usage_alert_triggered","href":"/api-reference/webhooks/balancesUsageAlertTriggered"},{"title":"Limit Reached","openapi":"api/openapi.yml webhook balances.limit_reached","href":"/api-reference/webhooks/balancesLimitReached"}]},{"group":"Billing","pages":[{"title":"Auto Top-Up Failed","openapi":"api/openapi.yml webhook billing.auto_topup_failed","href":"/api-reference/webhooks/billingAutoTopupFailed"},{"title":"Auto Top-Up Succeeded","openapi":"api/openapi.yml webhook billing.auto_topup_succeeded","href":"/api-reference/webhooks/billingAutoTopupSucceeded"},{"title":"Plans Updated","openapi":"api/openapi.yml webhook billing.updated","href":"/api-reference/webhooks/billingUpdated"}]},{"group":"Invoice","pages":[{"title":"Invoice Finalized","openapi":"api/openapi.yml webhook invoice.finalized","href":"/api-reference/webhooks/invoiceFinalized"}]},{"group":"Vercel","pages":[{"title":"Resource Deleted","openapi":"api/openapi.yml webhook vercel.resources.deleted","href":"/api-reference/webhooks/vercelResourcesDeleted"},{"title":"Resource Provisioned","openapi":"api/openapi.yml webhook vercel.resources.provisioned","href":"/api-reference/webhooks/vercelResourcesProvisioned"},{"title":"Rotate Secrets","openapi":"api/openapi.yml webhook vercel.resources.rotate_secrets","href":"/api-reference/webhooks/vercelResourcesRotateSecrets"},{"title":"Webhook Event","openapi":"api/openapi.yml webhook vercel.webhooks.event","href":"/api-reference/webhooks/vercelWebhooksEvent"}]}]},{"group":"Platform (Beta)","pages":[{"title":"Overview","href":"/api-reference/platform/overview"},{"title":"Create Organization","openapi":"platform POST /platform/organizations","href":"/api-reference/platform/create-organization"},{"title":"Generate Stripe OAuth URL","openapi":"platform POST /platform/oauth_url","href":"/api-reference/platform/oauth-url"},{"title":"Get Stripe Connection","openapi":"openapi POST /v1/platform.get_stripe_connection","href":"/api-reference/platform/getStripeConnection"},{"title":"Disconnect Stripe","openapi":"openapi POST /v1/platform.disconnect_stripe","href":"/api-reference/platform/disconnectStripe"},{"title":"Update Connected Stripe Account","openapi":"platform POST /platform/organizations/stripe","href":"/api-reference/platform/update-stripe"},{"title":"List Users","openapi":"platform GET /platform/users","href":"/api-reference/platform/list-users"},{"title":"List Organizations","openapi":"platform GET /platform/organizations","href":"/api-reference/platform/list-orgs"}]}]},{"tab":"Changelog","icon":"list-ol","pages":[{"title":"Changelog","href":"/changelog/changelog"}]}]},"title":"Get Entity - Autumn","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}