[{"data":1,"prerenderedAt":1846},["ShallowReactive",2],{"navigation":3,"/integrations/controllers/products":310,"/integrations/controllers/products-surround":1712,"/types/pagination-query.type":1719,"T8X8wEDTTq":1736,"RlQfeeH749":1746,"/types/pagination-response.type":1756,"R6VCIDBMAK":1768,"wYpKjgCnmI":1796},[4,13,161,197,211,236,290,300],{"title":5,"_path":6,"children":7,"_id":12,"description":11},"Getting Started","/getting-started",[8],{"title":9,"_path":6,"_id":10,"description":11},"Overview","content:1.getting-started:1.index.md","Everything you need to know about integrating Churnkey with your product and billing stack.","content:1.getting-started:_dir.yml",{"title":14,"_path":15,"children":16,"_id":160},"Cancel Flows","/cancel-flows",[17,22,27,32,37,42,47,52,57,62,67,72,116,130],{"title":18,"_path":19,"_id":20,"description":21},"Quick Start Guide","/cancel-flows/quick-start-guide","content:2.cancel-flows:1.quick-start-guide.md","A 3-step guide on how to implement Cancel Flows in your website",{"title":23,"_path":24,"_id":25,"description":26},"Cancel Flow Structure","/cancel-flows/flow-configuration","content:2.cancel-flows:2.flow configuration.md","Learn about the available components that make up a Cancel Flow, from initial offers to cancellation confirmation, and how each step contributes to the overall flow.",{"title":28,"_path":29,"_id":30,"description":31},"Configuration Options","/cancel-flows/further-configuration","content:2.cancel-flows:3.further-configuration.md","Additional details for all of the following options are included below.",{"title":33,"_path":34,"_id":35,"description":36},"Custom Styling","/cancel-flows/custom-styling","content:2.cancel-flows:4.custom-styling.md","Brand your Churnkey Cancel Flow with your own CSS",{"title":38,"_path":39,"_id":40,"description":41},"Managed Email Flow","/cancel-flows/email-verified-cancel-flow","content:2.cancel-flows:6.email-verified-cancel-flow.md","Our managed email based setup takes care of customer verification for you with an email verification code.",{"title":43,"_path":44,"_id":45,"description":46},"A/B Testing","/cancel-flows/a-b-testing","content:2.cancel-flows:7.a-b-testing.md","Run controlled experiments to optimize your Cancel Flows and maximize customer retention.",{"title":48,"_path":49,"_id":50,"description":51},"Testing","/cancel-flows/cancel-flow-testing","content:2.cancel-flows:8.cancel-flow-testing.md","Ensure that your Cancel Flow is working as intended before going live.",{"title":53,"_path":54,"_id":55,"description":56},"Pause Wall","/cancel-flows/pause-wall","content:2.cancel-flows:9.pause-wall.md","Block access to your application during subscription pauses",{"title":58,"_path":59,"_id":60,"description":61},"Click-to-Cancel Compliance","/cancel-flows/click-to-cancel","content:2.cancel-flows:10.click-to-cancel.md","Implement automatic compliance with global subscription cancellation requirements",{"title":63,"_path":64,"_id":65,"description":66},"Structured Follow-Up Questions","/cancel-flows/structured-follow-up-questions","content:2.cancel-flows:11.structured-follow-up-questions.md","Collect deeper cancellation insights and deliver targeted retention offers with a second layer of predefined follow-up options in your cancel flow survey.",{"title":68,"_path":69,"_id":70,"description":71},"Adaptive Offers","/cancel-flows/adaptive-offers","content:2.cancel-flows:adaptive-offers.md","AI-powered discount optimization that automatically finds the perfect offer for each customer",{"title":73,"_path":74,"children":75},"Analytics","/cancel-flows/analytics",[76,81,86,91,96,101,106,111],{"title":77,"_path":78,"_id":79,"description":80},"Boosted Revenue","/cancel-flows/analytics/average-boosted-revenue","content:2.cancel-flows:analytics:1.average-boosted-revenue.md","Measure the long-term value of retained subscribers",{"title":82,"_path":83,"_id":84,"description":85},"Save Rate","/cancel-flows/analytics/save-rate","content:2.cancel-flows:analytics:2.save-rate.md","The percentage of customers that your Cancel Flows saved from cancellation",{"title":87,"_path":88,"_id":89,"description":90},"Reactivation Rate","/cancel-flows/analytics/reactivation-rate","content:2.cancel-flows:analytics:3.reactivation-rate.md","The percentage of customers who pay at least one invoice after being saved",{"title":92,"_path":93,"_id":94,"description":95},"Sessions","/cancel-flows/analytics/session-outcomes","content:2.cancel-flows:analytics:4.session-outcomes.md","Track each interaction that a customer has with your Cancel Flows",{"title":97,"_path":98,"_id":99,"description":100},"Cancellation Trends","/cancel-flows/analytics/cancellation-trends","content:2.cancel-flows:analytics:5.cancellation-trends.md","Analyze and interpret the selection rates and trends for cancellation reasons in your Cancel Flows.",{"title":102,"_path":103,"_id":104,"description":105},"Feedback AI","/cancel-flows/analytics/feedback-ai","content:2.cancel-flows:analytics:6.feedback-ai.md","Transform customer feedback into actionable insights with AI-powered categorization and analysis",{"title":107,"_path":108,"_id":109,"description":110},"Response Flow","/cancel-flows/analytics/response-flow","content:2.cancel-flows:analytics:7.response-flow.md","Visualize how customers move from primary cancellation reasons to specific follow-up selections with the Sankey diagram",{"title":112,"_path":113,"_id":114,"description":115},"Response Explorer","/cancel-flows/analytics/response-explorer","content:2.cancel-flows:analytics:8.response-explorer.md","Drill into individual follow-up responses with the Treemap visualization, search, trend analysis, and MRR impact sorting",{"title":117,"_path":118,"children":119},"Multi Language Support","/cancel-flows/multi-language-support",[120,125],{"title":121,"_path":122,"_id":123,"description":124},"Manual Translations","/cancel-flows/multi-language-support/multi-language-support","content:2.cancel-flows:multi-language-support:5.multi-language-support.md","Support multiple languages.",{"title":126,"_path":127,"_id":128,"description":129},"Automatic Translations","/cancel-flows/multi-language-support/automatic-translation","content:2.cancel-flows:multi-language-support:automatic-translation.md","Enable AI-powered multilingual support for your Cancel Flows with a single toggle.",{"title":131,"_path":132,"children":133,"_id":159},"Offers","/cancel-flows/offers",[134,139,144,149,154],{"title":135,"_path":136,"_id":137,"description":138},"Discount","/cancel-flows/offers/discounts","content:2.cancel-flows:offers:discounts.md","Offer targeted subscription discounts to reduce churn and increase customer retention",{"title":140,"_path":141,"_id":142,"description":143},"Hidden Plans","/cancel-flows/offers/hidden-plans","content:2.cancel-flows:offers:hidden-plans.md","Use the Switch Subscription Plan offer to present exclusive, non-public plans to customers during cancellation",{"title":145,"_path":146,"_id":147,"description":148},"Pause Subscription","/cancel-flows/offers/pause-subscription","content:2.cancel-flows:offers:pause-subscription.md","Temporarily suspend subscription payments without canceling the service",{"title":150,"_path":151,"_id":152,"description":153},"Switch Subscription Plan","/cancel-flows/offers/switch-subscription","content:2.cancel-flows:offers:switch-subscription.md","Allow customers to change to a different subscription plan during the cancellation flow to retain them with a more suitable option",{"title":155,"_path":156,"_id":157,"description":158},"Trial Extension","/cancel-flows/offers/trial-extension","content:2.cancel-flows:offers:trial-extension.md","Extend customer trial periods to reduce churn and increase conversion rates during the critical trial-to-paid transition","content:2.cancel-flows:offers:_dir.yml","content:2.cancel-flows:_dir.yml",{"title":162,"_path":163,"children":164,"_id":196},"Payment Recovery","/failed-payment-recovery",[165,169,174,179,184,188],{"title":5,"_path":166,"_id":167,"description":168},"/failed-payment-recovery/payment-recovery","content:3.failed-payment-recovery:1.payment-recovery.md","Recover failed payment revenue, automatically.",{"title":170,"_path":171,"_id":172,"description":173},"Customize your Campaigns","/failed-payment-recovery/campaign-customization","content:3.failed-payment-recovery:2.campaign-customization.md","Customize your Payment Recovery Campaigns to match the unique needs of your individual customers.",{"title":175,"_path":176,"_id":177,"description":178},"Failed Payment Wall","/failed-payment-recovery/failed-payment-wall","content:3.failed-payment-recovery:3.failed-payment-wall.md","Block access to your application when payments fail",{"title":180,"_path":181,"_id":182,"description":183},"Billing Contact API","/failed-payment-recovery/billing-contact-api","content:3.failed-payment-recovery:4.billing-contact-api.md","Send Payment Recovery emails to multiple billing contacts",{"title":43,"_path":185,"_id":186,"description":187},"/failed-payment-recovery/ab-testing","content:3.failed-payment-recovery:5.ab-testing.md","Optimize your payment recovery campaigns through controlled experiments that maximize revenue recovery.",{"title":73,"_path":189,"children":190},"/failed-payment-recovery/analytics",[191],{"title":192,"_path":193,"_id":194,"description":195},"Overall Performance","/failed-payment-recovery/analytics/overview","content:3.failed-payment-recovery:analytics:1.overview.md","Key performance metrics for your Payment Recovery campaigns","content:3.failed-payment-recovery:_dir.yml",{"title":198,"_path":199,"children":200,"_id":210},"Reactivations","/reactivations",[201,205],{"title":5,"_path":202,"_id":203,"description":204},"/reactivations/reactivations","content:4.reactivations:1.reactivations.md","Churnkey helps you to recover unsubscribed customers with easy, customizable Reactivation Email Campaigns.",{"title":206,"_path":207,"_id":208,"description":209},"Customization","/reactivations/campaign-customization-guide","content:4.reactivations:2.campaign-customization-guide.md","Customize your Reactivation Campaigns to match the individual needs of your customers.","content:4.reactivations:_dir.yml",{"title":212,"_path":213,"children":214,"_id":235},"Data Integrations","/data-integrations",[215,220,225,230],{"title":216,"_path":217,"_id":218,"description":219},"Data API","/data-integrations/data-api","content:6.data-integrations:1.data-api.md","Access your data through our API.",{"title":221,"_path":222,"_id":223,"description":224},"Slack notifications","/data-integrations/slack","content:6.data-integrations:2.slack.md","Connect Churnkey with your organization's Slack and to send session notifications to a specific channel.",{"title":226,"_path":227,"_id":228,"description":229},"Webhooks","/data-integrations/webhooks","content:6.data-integrations:2.webhooks.md","Churnkey can send webhooks to automatically notify your application whenever a customer completes a session.",{"title":231,"_path":232,"_id":233,"description":234},"Event Tracking","/data-integrations/event-tracking","content:6.data-integrations:3.event-tracking.md","Track your customers' key-value metrics on a per customer basis.","content:6.data-integrations:_dir.yml",{"title":237,"_path":238,"children":239,"_id":289},"Billing Providers","/billing-providers",[240,245,250,255,260,265,270,275],{"title":241,"_path":242,"_id":243,"description":244},"Payment Providers","/billing-providers/payment-provider-overview","content:7.billing-providers:1.payment-provider-overview.md","Feature support for Stripe, Chargebee, Paddle, and Braintree",{"title":246,"_path":247,"_id":248,"description":249},"Stripe","/billing-providers/stripe","content:7.billing-providers:3.stripe.md","Integrate Churnkey with your Stripe account",{"title":251,"_path":252,"_id":253,"description":254},"Chargebee","/billing-providers/chargebee","content:7.billing-providers:4.chargebee.md","Integrate Churnkey with your Chargebee account",{"title":256,"_path":257,"_id":258,"description":259},"Paddle Classic","/billing-providers/paddle-classic","content:7.billing-providers:5.paddle-classic.md","Integrate Churnkey with your Paddle Classic account",{"title":261,"_path":262,"_id":263,"description":264},"Paddle Billing","/billing-providers/paddle-billing","content:7.billing-providers:6.paddle-billing.md","Integrate Churnkey with your Paddle Billing account",{"title":266,"_path":267,"_id":268,"description":269},"Braintree","/billing-providers/braintree","content:7.billing-providers:7.braintree.md","Integrate Churnkey with your Braintree account",{"title":271,"_path":272,"_id":273,"description":274},"Maxio","/billing-providers/maxio","content:7.billing-providers:8.maxio.md","Integrate Churnkey with your Maxio (formerly Chargify) account",{"title":276,"_path":277,"children":278},"Direct Connect","/billing-providers/direct-connect",[279,284],{"title":280,"_path":281,"_id":282,"description":283},"Churnkey Direct","/billing-providers/direct-connect/direct","content:7.billing-providers:9.direct-connect:1.direct.md","Integrate Churnkey with any billing system using Direct mode",{"title":285,"_path":286,"_id":287,"description":288},"Direct Mode Examples","/billing-providers/direct-connect/direct-examples","content:7.billing-providers:9.direct-connect:2.direct-examples.md","Real-world examples for common subscription scenarios","content:7.billing-providers:_dir.yml",{"title":291,"_path":292,"children":293,"_id":299},"Account","/account",[294],{"title":295,"_path":296,"_id":297,"description":298},"Multi-Workspace Support","/account/multi-workspace-support","content:8.account:1.multi-workspace-support.md","Use one email address to access multiple Churnkey workspaces and switch between them instantly.","content:8.account:_dir.yml",{"title":301,"_path":302,"children":303,"_id":309},"Support","/support",[304],{"title":305,"_path":306,"_id":307,"description":308},"Frequently Asked Questions","/support/faqs","content:9.support:1.faqs.md","We want setting up Churnkey to be a breeze.","content:9.support:_dir.yml",{"_path":311,"_dir":312,"_draft":313,"_partial":313,"_locale":314,"title":315,"description":316,"body":317,"_type":1705,"_id":1706,"_source":1707,"_file":1708,"_stem":1709,"_extension":1710,"sitemap":1711},"/integrations/controllers/products","controllers",false,"","Products - Controller","List and retrieve `Product` models.",{"type":318,"children":319,"toc":1696},"root",[320,337,344,398,404,416,954,960,970,979,1008,1056,1323,1332,1341,1353,1363,1372,1379,1680,1685,1690],{"type":321,"tag":322,"props":323,"children":324},"element","p",{},[325,328,335],{"type":326,"value":327},"text","To implement the ",{"type":321,"tag":329,"props":330,"children":332},"code",{"className":331},[],[333],{"type":326,"value":334},"Products",{"type":326,"value":336}," controller, you need to implement 2 API endpoints, we will use these endpoints to fetch products from your system.",{"type":321,"tag":338,"props":339,"children":341},"h2",{"id":340},"prerequisites",[342],{"type":326,"value":343},"Prerequisites",{"type":321,"tag":345,"props":346,"children":348},"grid",{"cols":347},2,[349,372],{"type":321,"tag":350,"props":351,"children":354},"card-baseline",{"title":352,"to":353},"Product Model","/integrations/models/product",[355,360],{"type":321,"tag":322,"props":356,"children":357},{},[358],{"type":326,"value":359},"A code that can be redeemed for a discount.",{"type":321,"tag":361,"props":362,"children":365},"flex",{"className":363},[364],"mt-4",[366],{"type":321,"tag":367,"props":368,"children":371},"badge",{"label":369,"color":370},"Required","green",[],{"type":321,"tag":350,"props":373,"children":376},{"title":374,"to":375},"Families - Controller","/integrations/controllers/families",[377,390],{"type":321,"tag":322,"props":378,"children":379},{},[380,382,388],{"type":326,"value":381},"If you decided to implement products with families, you must implement a ",{"type":321,"tag":329,"props":383,"children":385},{"className":384},[],[386],{"type":326,"value":387},"Families",{"type":326,"value":389}," controller first.",{"type":321,"tag":361,"props":391,"children":393},{"className":392},[364],[394],{"type":321,"tag":367,"props":395,"children":397},{"label":396},"Optional",[],{"type":321,"tag":338,"props":399,"children":401},{"id":400},"sdk",[402],{"type":326,"value":403},"SDK",{"type":321,"tag":322,"props":405,"children":406},{},[407,409,414],{"type":326,"value":408},"If you are using the SDK, you can implement the ",{"type":321,"tag":329,"props":410,"children":412},{"className":411},[],[413],{"type":326,"value":334},{"type":326,"value":415}," controller by following the code example below. You don't need to get into the details of the API endpoints, the SDK will take care of that for you.",{"type":321,"tag":417,"props":418,"children":419},"code-group",{},[420],{"type":321,"tag":421,"props":422,"children":427},"pre",{"className":423,"code":424,"filename":425,"language":426,"meta":314,"style":314},"language-typescript shiki shiki-themes github-light-default github-light-default github-dark-default","import { Integrator } from '@churnkey/sdk'\nimport { Context } from '../Context'\nimport { Product } from '../models/Product'\n// import { Families } from './Families'\n\nexport const Products = Integrator.Products.config({\n    ctx: Context,\n    type: Integrator.Product.Type.Standalone,\n    // type: Integrator.Product.Type.Family,\n    // Families: Families,\n    async retrieve(ctx, options) {\n        const yourProduct = await ctx.db.findProduct(options.id)\n        return new Product(yourProduct)\n    },\n    async list(ctx, options) {\n        const yourProducts = await ctx.db.listProducts({\n            limit: options.limit,\n            offset: options.cursor // the value you pass as `next` below\n        })\n        return {\n            data: yourProducts.map(product => new Product(product)),\n            // pass the next cursor if there are more items\n            next: yourProducts.length === options.limit ? offset + limit : undefined\n        }\n    }\n})\n","Typescript","typescript",[428],{"type":321,"tag":329,"props":429,"children":430},{"__ignoreMap":314},[431,460,481,503,513,523,564,573,582,591,600,640,678,702,711,744,778,787,801,810,823,864,873,927,936,945],{"type":321,"tag":432,"props":433,"children":436},"span",{"class":434,"line":435},"line",1,[437,443,449,454],{"type":321,"tag":432,"props":438,"children":440},{"style":439},"--shiki-light:#CF222E;--shiki-default:#CF222E;--shiki-dark:#FF7B72",[441],{"type":326,"value":442},"import",{"type":321,"tag":432,"props":444,"children":446},{"style":445},"--shiki-light:#1F2328;--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[447],{"type":326,"value":448}," { Integrator } ",{"type":321,"tag":432,"props":450,"children":451},{"style":439},[452],{"type":326,"value":453},"from",{"type":321,"tag":432,"props":455,"children":457},{"style":456},"--shiki-light:#0A3069;--shiki-default:#0A3069;--shiki-dark:#A5D6FF",[458],{"type":326,"value":459}," '@churnkey/sdk'\n",{"type":321,"tag":432,"props":461,"children":462},{"class":434,"line":347},[463,467,472,476],{"type":321,"tag":432,"props":464,"children":465},{"style":439},[466],{"type":326,"value":442},{"type":321,"tag":432,"props":468,"children":469},{"style":445},[470],{"type":326,"value":471}," { Context } ",{"type":321,"tag":432,"props":473,"children":474},{"style":439},[475],{"type":326,"value":453},{"type":321,"tag":432,"props":477,"children":478},{"style":456},[479],{"type":326,"value":480}," '../Context'\n",{"type":321,"tag":432,"props":482,"children":484},{"class":434,"line":483},3,[485,489,494,498],{"type":321,"tag":432,"props":486,"children":487},{"style":439},[488],{"type":326,"value":442},{"type":321,"tag":432,"props":490,"children":491},{"style":445},[492],{"type":326,"value":493}," { Product } ",{"type":321,"tag":432,"props":495,"children":496},{"style":439},[497],{"type":326,"value":453},{"type":321,"tag":432,"props":499,"children":500},{"style":456},[501],{"type":326,"value":502}," '../models/Product'\n",{"type":321,"tag":432,"props":504,"children":506},{"class":434,"line":505},4,[507],{"type":321,"tag":432,"props":508,"children":510},{"style":509},"--shiki-light:#6E7781;--shiki-default:#6E7781;--shiki-dark:#8B949E",[511],{"type":326,"value":512},"// import { Families } from './Families'\n",{"type":321,"tag":432,"props":514,"children":516},{"class":434,"line":515},5,[517],{"type":321,"tag":432,"props":518,"children":520},{"emptyLinePlaceholder":519},true,[521],{"type":326,"value":522},"\n",{"type":321,"tag":432,"props":524,"children":526},{"class":434,"line":525},6,[527,532,537,543,548,553,559],{"type":321,"tag":432,"props":528,"children":529},{"style":439},[530],{"type":326,"value":531},"export",{"type":321,"tag":432,"props":533,"children":534},{"style":439},[535],{"type":326,"value":536}," const",{"type":321,"tag":432,"props":538,"children":540},{"style":539},"--shiki-light:#0550AE;--shiki-default:#0550AE;--shiki-dark:#79C0FF",[541],{"type":326,"value":542}," Products",{"type":321,"tag":432,"props":544,"children":545},{"style":439},[546],{"type":326,"value":547}," =",{"type":321,"tag":432,"props":549,"children":550},{"style":445},[551],{"type":326,"value":552}," Integrator.Products.",{"type":321,"tag":432,"props":554,"children":556},{"style":555},"--shiki-light:#8250DF;--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[557],{"type":326,"value":558},"config",{"type":321,"tag":432,"props":560,"children":561},{"style":445},[562],{"type":326,"value":563},"({\n",{"type":321,"tag":432,"props":565,"children":567},{"class":434,"line":566},7,[568],{"type":321,"tag":432,"props":569,"children":570},{"style":445},[571],{"type":326,"value":572},"    ctx: Context,\n",{"type":321,"tag":432,"props":574,"children":576},{"class":434,"line":575},8,[577],{"type":321,"tag":432,"props":578,"children":579},{"style":445},[580],{"type":326,"value":581},"    type: Integrator.Product.Type.Standalone,\n",{"type":321,"tag":432,"props":583,"children":585},{"class":434,"line":584},9,[586],{"type":321,"tag":432,"props":587,"children":588},{"style":509},[589],{"type":326,"value":590},"    // type: Integrator.Product.Type.Family,\n",{"type":321,"tag":432,"props":592,"children":594},{"class":434,"line":593},10,[595],{"type":321,"tag":432,"props":596,"children":597},{"style":509},[598],{"type":326,"value":599},"    // Families: Families,\n",{"type":321,"tag":432,"props":601,"children":603},{"class":434,"line":602},11,[604,609,614,619,625,630,635],{"type":321,"tag":432,"props":605,"children":606},{"style":439},[607],{"type":326,"value":608},"    async",{"type":321,"tag":432,"props":610,"children":611},{"style":555},[612],{"type":326,"value":613}," retrieve",{"type":321,"tag":432,"props":615,"children":616},{"style":445},[617],{"type":326,"value":618},"(",{"type":321,"tag":432,"props":620,"children":622},{"style":621},"--shiki-light:#953800;--shiki-default:#953800;--shiki-dark:#FFA657",[623],{"type":326,"value":624},"ctx",{"type":321,"tag":432,"props":626,"children":627},{"style":445},[628],{"type":326,"value":629},", ",{"type":321,"tag":432,"props":631,"children":632},{"style":621},[633],{"type":326,"value":634},"options",{"type":321,"tag":432,"props":636,"children":637},{"style":445},[638],{"type":326,"value":639},") {\n",{"type":321,"tag":432,"props":641,"children":643},{"class":434,"line":642},12,[644,649,654,658,663,668,673],{"type":321,"tag":432,"props":645,"children":646},{"style":439},[647],{"type":326,"value":648},"        const",{"type":321,"tag":432,"props":650,"children":651},{"style":539},[652],{"type":326,"value":653}," yourProduct",{"type":321,"tag":432,"props":655,"children":656},{"style":439},[657],{"type":326,"value":547},{"type":321,"tag":432,"props":659,"children":660},{"style":439},[661],{"type":326,"value":662}," await",{"type":321,"tag":432,"props":664,"children":665},{"style":445},[666],{"type":326,"value":667}," ctx.db.",{"type":321,"tag":432,"props":669,"children":670},{"style":555},[671],{"type":326,"value":672},"findProduct",{"type":321,"tag":432,"props":674,"children":675},{"style":445},[676],{"type":326,"value":677},"(options.id)\n",{"type":321,"tag":432,"props":679,"children":681},{"class":434,"line":680},13,[682,687,692,697],{"type":321,"tag":432,"props":683,"children":684},{"style":439},[685],{"type":326,"value":686},"        return",{"type":321,"tag":432,"props":688,"children":689},{"style":439},[690],{"type":326,"value":691}," new",{"type":321,"tag":432,"props":693,"children":694},{"style":555},[695],{"type":326,"value":696}," Product",{"type":321,"tag":432,"props":698,"children":699},{"style":445},[700],{"type":326,"value":701},"(yourProduct)\n",{"type":321,"tag":432,"props":703,"children":705},{"class":434,"line":704},14,[706],{"type":321,"tag":432,"props":707,"children":708},{"style":445},[709],{"type":326,"value":710},"    },\n",{"type":321,"tag":432,"props":712,"children":714},{"class":434,"line":713},15,[715,719,724,728,732,736,740],{"type":321,"tag":432,"props":716,"children":717},{"style":439},[718],{"type":326,"value":608},{"type":321,"tag":432,"props":720,"children":721},{"style":555},[722],{"type":326,"value":723}," list",{"type":321,"tag":432,"props":725,"children":726},{"style":445},[727],{"type":326,"value":618},{"type":321,"tag":432,"props":729,"children":730},{"style":621},[731],{"type":326,"value":624},{"type":321,"tag":432,"props":733,"children":734},{"style":445},[735],{"type":326,"value":629},{"type":321,"tag":432,"props":737,"children":738},{"style":621},[739],{"type":326,"value":634},{"type":321,"tag":432,"props":741,"children":742},{"style":445},[743],{"type":326,"value":639},{"type":321,"tag":432,"props":745,"children":747},{"class":434,"line":746},16,[748,752,757,761,765,769,774],{"type":321,"tag":432,"props":749,"children":750},{"style":439},[751],{"type":326,"value":648},{"type":321,"tag":432,"props":753,"children":754},{"style":539},[755],{"type":326,"value":756}," yourProducts",{"type":321,"tag":432,"props":758,"children":759},{"style":439},[760],{"type":326,"value":547},{"type":321,"tag":432,"props":762,"children":763},{"style":439},[764],{"type":326,"value":662},{"type":321,"tag":432,"props":766,"children":767},{"style":445},[768],{"type":326,"value":667},{"type":321,"tag":432,"props":770,"children":771},{"style":555},[772],{"type":326,"value":773},"listProducts",{"type":321,"tag":432,"props":775,"children":776},{"style":445},[777],{"type":326,"value":563},{"type":321,"tag":432,"props":779,"children":781},{"class":434,"line":780},17,[782],{"type":321,"tag":432,"props":783,"children":784},{"style":445},[785],{"type":326,"value":786},"            limit: options.limit,\n",{"type":321,"tag":432,"props":788,"children":790},{"class":434,"line":789},18,[791,796],{"type":321,"tag":432,"props":792,"children":793},{"style":445},[794],{"type":326,"value":795},"            offset: options.cursor ",{"type":321,"tag":432,"props":797,"children":798},{"style":509},[799],{"type":326,"value":800},"// the value you pass as `next` below\n",{"type":321,"tag":432,"props":802,"children":804},{"class":434,"line":803},19,[805],{"type":321,"tag":432,"props":806,"children":807},{"style":445},[808],{"type":326,"value":809},"        })\n",{"type":321,"tag":432,"props":811,"children":813},{"class":434,"line":812},20,[814,818],{"type":321,"tag":432,"props":815,"children":816},{"style":439},[817],{"type":326,"value":686},{"type":321,"tag":432,"props":819,"children":820},{"style":445},[821],{"type":326,"value":822}," {\n",{"type":321,"tag":432,"props":824,"children":826},{"class":434,"line":825},21,[827,832,837,841,846,851,855,859],{"type":321,"tag":432,"props":828,"children":829},{"style":445},[830],{"type":326,"value":831},"            data: yourProducts.",{"type":321,"tag":432,"props":833,"children":834},{"style":555},[835],{"type":326,"value":836},"map",{"type":321,"tag":432,"props":838,"children":839},{"style":445},[840],{"type":326,"value":618},{"type":321,"tag":432,"props":842,"children":843},{"style":621},[844],{"type":326,"value":845},"product",{"type":321,"tag":432,"props":847,"children":848},{"style":439},[849],{"type":326,"value":850}," =>",{"type":321,"tag":432,"props":852,"children":853},{"style":439},[854],{"type":326,"value":691},{"type":321,"tag":432,"props":856,"children":857},{"style":555},[858],{"type":326,"value":696},{"type":321,"tag":432,"props":860,"children":861},{"style":445},[862],{"type":326,"value":863},"(product)),\n",{"type":321,"tag":432,"props":865,"children":867},{"class":434,"line":866},22,[868],{"type":321,"tag":432,"props":869,"children":870},{"style":509},[871],{"type":326,"value":872},"            // pass the next cursor if there are more items\n",{"type":321,"tag":432,"props":874,"children":876},{"class":434,"line":875},23,[877,882,887,892,897,902,907,912,917,922],{"type":321,"tag":432,"props":878,"children":879},{"style":445},[880],{"type":326,"value":881},"            next: yourProducts.",{"type":321,"tag":432,"props":883,"children":884},{"style":539},[885],{"type":326,"value":886},"length",{"type":321,"tag":432,"props":888,"children":889},{"style":439},[890],{"type":326,"value":891}," ===",{"type":321,"tag":432,"props":893,"children":894},{"style":445},[895],{"type":326,"value":896}," options.limit ",{"type":321,"tag":432,"props":898,"children":899},{"style":439},[900],{"type":326,"value":901},"?",{"type":321,"tag":432,"props":903,"children":904},{"style":445},[905],{"type":326,"value":906}," offset ",{"type":321,"tag":432,"props":908,"children":909},{"style":439},[910],{"type":326,"value":911},"+",{"type":321,"tag":432,"props":913,"children":914},{"style":445},[915],{"type":326,"value":916}," limit ",{"type":321,"tag":432,"props":918,"children":919},{"style":439},[920],{"type":326,"value":921},":",{"type":321,"tag":432,"props":923,"children":924},{"style":539},[925],{"type":326,"value":926}," undefined\n",{"type":321,"tag":432,"props":928,"children":930},{"class":434,"line":929},24,[931],{"type":321,"tag":432,"props":932,"children":933},{"style":445},[934],{"type":326,"value":935},"        }\n",{"type":321,"tag":432,"props":937,"children":939},{"class":434,"line":938},25,[940],{"type":321,"tag":432,"props":941,"children":942},{"style":445},[943],{"type":326,"value":944},"    }\n",{"type":321,"tag":432,"props":946,"children":948},{"class":434,"line":947},26,[949],{"type":321,"tag":432,"props":950,"children":951},{"style":445},[952],{"type":326,"value":953},"})\n",{"type":321,"tag":338,"props":955,"children":957},{"id":956},"endpoints",[958],{"type":326,"value":959},"Endpoints",{"type":321,"tag":961,"props":962,"children":964},"h3",{"id":963},"retrieve",[965,967],{"type":326,"value":966},"Retrieve ",{"type":321,"tag":367,"props":968,"children":969},{"label":369,"color":370},[],{"type":321,"tag":322,"props":971,"children":972},{},[973],{"type":321,"tag":329,"props":974,"children":976},{"className":975},[],[977],{"type":326,"value":978},"GET /churnkey/products/:id",{"type":321,"tag":322,"props":980,"children":981},{},[982,984,990,992,998,1000,1006],{"type":326,"value":983},"This endpoint fetches ",{"type":321,"tag":329,"props":985,"children":987},{"className":986},[],[988],{"type":326,"value":989},"Product",{"type":326,"value":991}," by its ",{"type":321,"tag":329,"props":993,"children":995},{"className":994},[],[996],{"type":326,"value":997},"id",{"type":326,"value":999},". Usually, implementation will include finding a product in your database and mapping it to the ",{"type":321,"tag":1001,"props":1002,"children":1003},"a",{"href":353},[1004],{"type":326,"value":1005},"Product model",{"type":326,"value":1007},".",{"type":321,"tag":1009,"props":1010,"children":1012},"collapsible",{"name":1011},"response",[1013],{"type":321,"tag":1014,"props":1015,"children":1016},"tabs",{},[1017,1040],{"type":321,"tag":1018,"props":1019,"children":1021},"div",{"label":1020},"200",[1022],{"type":321,"tag":322,"props":1023,"children":1024},{},[1025,1027,1032,1034,1039],{"type":326,"value":1026},"Must return ",{"type":321,"tag":329,"props":1028,"children":1030},{"className":1029},[],[1031],{"type":326,"value":989},{"type":326,"value":1033}," model. See ",{"type":321,"tag":1001,"props":1035,"children":1036},{"href":353},[1037],{"type":326,"value":1038},"Product model documentation",{"type":326,"value":1007},{"type":321,"tag":1018,"props":1041,"children":1043},{"label":1042},"Error",[1044],{"type":321,"tag":322,"props":1045,"children":1046},{},[1047,1049,1055],{"type":326,"value":1048},"See ",{"type":321,"tag":1001,"props":1050,"children":1052},{"href":1051},"/integrations/general#error-responses",[1053],{"type":326,"value":1054},"Error Responses",{"type":326,"value":1007},{"type":321,"tag":1009,"props":1057,"children":1059},{"name":1058},"code example",[1060],{"type":321,"tag":417,"props":1061,"children":1062},{},[1063],{"type":321,"tag":421,"props":1064,"children":1067},{"className":423,"code":1065,"filename":1066,"language":426,"meta":314,"style":314},"import { Product } from '../models/Product'\n\napp.get('/churnkey/products/:id', async (req, res) => {\n    const product = await db.findProductById(req.params.id)\n    if (!product) {\n        return res.status(404).send({ code: 404, message: 'Product not found' })\n    }\n    res.send(new Product(product))\n})\n","Typescript Express",[1068],{"type":321,"tag":329,"props":1069,"children":1070},{"__ignoreMap":314},[1071,1090,1097,1161,1197,1219,1279,1286,1316],{"type":321,"tag":432,"props":1072,"children":1073},{"class":434,"line":435},[1074,1078,1082,1086],{"type":321,"tag":432,"props":1075,"children":1076},{"style":439},[1077],{"type":326,"value":442},{"type":321,"tag":432,"props":1079,"children":1080},{"style":445},[1081],{"type":326,"value":493},{"type":321,"tag":432,"props":1083,"children":1084},{"style":439},[1085],{"type":326,"value":453},{"type":321,"tag":432,"props":1087,"children":1088},{"style":456},[1089],{"type":326,"value":502},{"type":321,"tag":432,"props":1091,"children":1092},{"class":434,"line":347},[1093],{"type":321,"tag":432,"props":1094,"children":1095},{"emptyLinePlaceholder":519},[1096],{"type":326,"value":522},{"type":321,"tag":432,"props":1098,"children":1099},{"class":434,"line":483},[1100,1105,1110,1114,1119,1123,1128,1133,1138,1142,1147,1152,1157],{"type":321,"tag":432,"props":1101,"children":1102},{"style":445},[1103],{"type":326,"value":1104},"app.",{"type":321,"tag":432,"props":1106,"children":1107},{"style":555},[1108],{"type":326,"value":1109},"get",{"type":321,"tag":432,"props":1111,"children":1112},{"style":445},[1113],{"type":326,"value":618},{"type":321,"tag":432,"props":1115,"children":1116},{"style":456},[1117],{"type":326,"value":1118},"'/churnkey/products/:id'",{"type":321,"tag":432,"props":1120,"children":1121},{"style":445},[1122],{"type":326,"value":629},{"type":321,"tag":432,"props":1124,"children":1125},{"style":439},[1126],{"type":326,"value":1127},"async",{"type":321,"tag":432,"props":1129,"children":1130},{"style":445},[1131],{"type":326,"value":1132}," (",{"type":321,"tag":432,"props":1134,"children":1135},{"style":621},[1136],{"type":326,"value":1137},"req",{"type":321,"tag":432,"props":1139,"children":1140},{"style":445},[1141],{"type":326,"value":629},{"type":321,"tag":432,"props":1143,"children":1144},{"style":621},[1145],{"type":326,"value":1146},"res",{"type":321,"tag":432,"props":1148,"children":1149},{"style":445},[1150],{"type":326,"value":1151},") ",{"type":321,"tag":432,"props":1153,"children":1154},{"style":439},[1155],{"type":326,"value":1156},"=>",{"type":321,"tag":432,"props":1158,"children":1159},{"style":445},[1160],{"type":326,"value":822},{"type":321,"tag":432,"props":1162,"children":1163},{"class":434,"line":505},[1164,1169,1174,1178,1182,1187,1192],{"type":321,"tag":432,"props":1165,"children":1166},{"style":439},[1167],{"type":326,"value":1168},"    const",{"type":321,"tag":432,"props":1170,"children":1171},{"style":539},[1172],{"type":326,"value":1173}," product",{"type":321,"tag":432,"props":1175,"children":1176},{"style":439},[1177],{"type":326,"value":547},{"type":321,"tag":432,"props":1179,"children":1180},{"style":439},[1181],{"type":326,"value":662},{"type":321,"tag":432,"props":1183,"children":1184},{"style":445},[1185],{"type":326,"value":1186}," db.",{"type":321,"tag":432,"props":1188,"children":1189},{"style":555},[1190],{"type":326,"value":1191},"findProductById",{"type":321,"tag":432,"props":1193,"children":1194},{"style":445},[1195],{"type":326,"value":1196},"(req.params.id)\n",{"type":321,"tag":432,"props":1198,"children":1199},{"class":434,"line":515},[1200,1205,1209,1214],{"type":321,"tag":432,"props":1201,"children":1202},{"style":439},[1203],{"type":326,"value":1204},"    if",{"type":321,"tag":432,"props":1206,"children":1207},{"style":445},[1208],{"type":326,"value":1132},{"type":321,"tag":432,"props":1210,"children":1211},{"style":439},[1212],{"type":326,"value":1213},"!",{"type":321,"tag":432,"props":1215,"children":1216},{"style":445},[1217],{"type":326,"value":1218},"product) {\n",{"type":321,"tag":432,"props":1220,"children":1221},{"class":434,"line":525},[1222,1226,1231,1236,1240,1245,1250,1255,1260,1264,1269,1274],{"type":321,"tag":432,"props":1223,"children":1224},{"style":439},[1225],{"type":326,"value":686},{"type":321,"tag":432,"props":1227,"children":1228},{"style":445},[1229],{"type":326,"value":1230}," res.",{"type":321,"tag":432,"props":1232,"children":1233},{"style":555},[1234],{"type":326,"value":1235},"status",{"type":321,"tag":432,"props":1237,"children":1238},{"style":445},[1239],{"type":326,"value":618},{"type":321,"tag":432,"props":1241,"children":1242},{"style":539},[1243],{"type":326,"value":1244},"404",{"type":321,"tag":432,"props":1246,"children":1247},{"style":445},[1248],{"type":326,"value":1249},").",{"type":321,"tag":432,"props":1251,"children":1252},{"style":555},[1253],{"type":326,"value":1254},"send",{"type":321,"tag":432,"props":1256,"children":1257},{"style":445},[1258],{"type":326,"value":1259},"({ code: ",{"type":321,"tag":432,"props":1261,"children":1262},{"style":539},[1263],{"type":326,"value":1244},{"type":321,"tag":432,"props":1265,"children":1266},{"style":445},[1267],{"type":326,"value":1268},", message: ",{"type":321,"tag":432,"props":1270,"children":1271},{"style":456},[1272],{"type":326,"value":1273},"'Product not found'",{"type":321,"tag":432,"props":1275,"children":1276},{"style":445},[1277],{"type":326,"value":1278}," })\n",{"type":321,"tag":432,"props":1280,"children":1281},{"class":434,"line":566},[1282],{"type":321,"tag":432,"props":1283,"children":1284},{"style":445},[1285],{"type":326,"value":944},{"type":321,"tag":432,"props":1287,"children":1288},{"class":434,"line":575},[1289,1294,1298,1302,1307,1311],{"type":321,"tag":432,"props":1290,"children":1291},{"style":445},[1292],{"type":326,"value":1293},"    res.",{"type":321,"tag":432,"props":1295,"children":1296},{"style":555},[1297],{"type":326,"value":1254},{"type":321,"tag":432,"props":1299,"children":1300},{"style":445},[1301],{"type":326,"value":618},{"type":321,"tag":432,"props":1303,"children":1304},{"style":439},[1305],{"type":326,"value":1306},"new",{"type":321,"tag":432,"props":1308,"children":1309},{"style":555},[1310],{"type":326,"value":696},{"type":321,"tag":432,"props":1312,"children":1313},{"style":445},[1314],{"type":326,"value":1315},"(product))\n",{"type":321,"tag":432,"props":1317,"children":1318},{"class":434,"line":584},[1319],{"type":321,"tag":432,"props":1320,"children":1321},{"style":445},[1322],{"type":326,"value":953},{"type":321,"tag":961,"props":1324,"children":1326},{"id":1325},"list",[1327,1329],{"type":326,"value":1328},"List ",{"type":321,"tag":367,"props":1330,"children":1331},{"label":369,"color":370},[],{"type":321,"tag":322,"props":1333,"children":1334},{},[1335],{"type":321,"tag":329,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":326,"value":1340},"GET /churnkey/products",{"type":321,"tag":322,"props":1342,"children":1343},{},[1344,1346,1351],{"type":326,"value":1345},"This endpoint fetches a list of products from your database. You should find products in your database (with pagination), map them to the ",{"type":321,"tag":329,"props":1347,"children":1349},{"className":1348},[],[1350],{"type":326,"value":989},{"type":326,"value":1352}," model and return a paginated list.",{"type":321,"tag":322,"props":1354,"children":1355},{},[1356,1362],{"type":321,"tag":1001,"props":1357,"children":1359},{"href":1358},"/integrations/general#pagination",[1360],{"type":326,"value":1361},"Learn more about pagination",{"type":326,"value":1007},{"type":321,"tag":1009,"props":1364,"children":1366},{"name":1365},"query parameters",[1367],{"type":321,"tag":1368,"props":1369,"children":1371},"field-schema",{"schema":1370},"/types/pagination-query.type",[],{"type":321,"tag":1009,"props":1373,"children":1374},{"name":1011},[1375],{"type":321,"tag":1368,"props":1376,"children":1378},{"schema":1377},"/types/pagination-response.type",[],{"type":321,"tag":1009,"props":1380,"children":1381},{"name":1058},[1382],{"type":321,"tag":417,"props":1383,"children":1384},{},[1385],{"type":321,"tag":421,"props":1386,"children":1388},{"className":423,"code":1387,"filename":1066,"language":426,"meta":314,"style":314},"import { Product } from '../models/Product'\n\napp.get('/churnkey/products', async (req, res) => {\n    const limit = Number.parseInt(req.query.limit)\n    const offset = Number.parseInt(req.query.cursor) \n    const products = await db.findProducts({ limit, offset })\n    res.send({\n        data: products.map(c => new Product(c)),\n        next: products.length === limit ? offset + limit : undefined\n    })\n})\n",[1389],{"type":321,"tag":329,"props":1390,"children":1391},{"__ignoreMap":314},[1392,1411,1418,1474,1505,1534,1568,1583,1621,1665,1673],{"type":321,"tag":432,"props":1393,"children":1394},{"class":434,"line":435},[1395,1399,1403,1407],{"type":321,"tag":432,"props":1396,"children":1397},{"style":439},[1398],{"type":326,"value":442},{"type":321,"tag":432,"props":1400,"children":1401},{"style":445},[1402],{"type":326,"value":493},{"type":321,"tag":432,"props":1404,"children":1405},{"style":439},[1406],{"type":326,"value":453},{"type":321,"tag":432,"props":1408,"children":1409},{"style":456},[1410],{"type":326,"value":502},{"type":321,"tag":432,"props":1412,"children":1413},{"class":434,"line":347},[1414],{"type":321,"tag":432,"props":1415,"children":1416},{"emptyLinePlaceholder":519},[1417],{"type":326,"value":522},{"type":321,"tag":432,"props":1419,"children":1420},{"class":434,"line":483},[1421,1425,1429,1433,1438,1442,1446,1450,1454,1458,1462,1466,1470],{"type":321,"tag":432,"props":1422,"children":1423},{"style":445},[1424],{"type":326,"value":1104},{"type":321,"tag":432,"props":1426,"children":1427},{"style":555},[1428],{"type":326,"value":1109},{"type":321,"tag":432,"props":1430,"children":1431},{"style":445},[1432],{"type":326,"value":618},{"type":321,"tag":432,"props":1434,"children":1435},{"style":456},[1436],{"type":326,"value":1437},"'/churnkey/products'",{"type":321,"tag":432,"props":1439,"children":1440},{"style":445},[1441],{"type":326,"value":629},{"type":321,"tag":432,"props":1443,"children":1444},{"style":439},[1445],{"type":326,"value":1127},{"type":321,"tag":432,"props":1447,"children":1448},{"style":445},[1449],{"type":326,"value":1132},{"type":321,"tag":432,"props":1451,"children":1452},{"style":621},[1453],{"type":326,"value":1137},{"type":321,"tag":432,"props":1455,"children":1456},{"style":445},[1457],{"type":326,"value":629},{"type":321,"tag":432,"props":1459,"children":1460},{"style":621},[1461],{"type":326,"value":1146},{"type":321,"tag":432,"props":1463,"children":1464},{"style":445},[1465],{"type":326,"value":1151},{"type":321,"tag":432,"props":1467,"children":1468},{"style":439},[1469],{"type":326,"value":1156},{"type":321,"tag":432,"props":1471,"children":1472},{"style":445},[1473],{"type":326,"value":822},{"type":321,"tag":432,"props":1475,"children":1476},{"class":434,"line":505},[1477,1481,1486,1490,1495,1500],{"type":321,"tag":432,"props":1478,"children":1479},{"style":439},[1480],{"type":326,"value":1168},{"type":321,"tag":432,"props":1482,"children":1483},{"style":539},[1484],{"type":326,"value":1485}," limit",{"type":321,"tag":432,"props":1487,"children":1488},{"style":439},[1489],{"type":326,"value":547},{"type":321,"tag":432,"props":1491,"children":1492},{"style":445},[1493],{"type":326,"value":1494}," Number.",{"type":321,"tag":432,"props":1496,"children":1497},{"style":555},[1498],{"type":326,"value":1499},"parseInt",{"type":321,"tag":432,"props":1501,"children":1502},{"style":445},[1503],{"type":326,"value":1504},"(req.query.limit)\n",{"type":321,"tag":432,"props":1506,"children":1507},{"class":434,"line":515},[1508,1512,1517,1521,1525,1529],{"type":321,"tag":432,"props":1509,"children":1510},{"style":439},[1511],{"type":326,"value":1168},{"type":321,"tag":432,"props":1513,"children":1514},{"style":539},[1515],{"type":326,"value":1516}," offset",{"type":321,"tag":432,"props":1518,"children":1519},{"style":439},[1520],{"type":326,"value":547},{"type":321,"tag":432,"props":1522,"children":1523},{"style":445},[1524],{"type":326,"value":1494},{"type":321,"tag":432,"props":1526,"children":1527},{"style":555},[1528],{"type":326,"value":1499},{"type":321,"tag":432,"props":1530,"children":1531},{"style":445},[1532],{"type":326,"value":1533},"(req.query.cursor) \n",{"type":321,"tag":432,"props":1535,"children":1536},{"class":434,"line":525},[1537,1541,1546,1550,1554,1558,1563],{"type":321,"tag":432,"props":1538,"children":1539},{"style":439},[1540],{"type":326,"value":1168},{"type":321,"tag":432,"props":1542,"children":1543},{"style":539},[1544],{"type":326,"value":1545}," products",{"type":321,"tag":432,"props":1547,"children":1548},{"style":439},[1549],{"type":326,"value":547},{"type":321,"tag":432,"props":1551,"children":1552},{"style":439},[1553],{"type":326,"value":662},{"type":321,"tag":432,"props":1555,"children":1556},{"style":445},[1557],{"type":326,"value":1186},{"type":321,"tag":432,"props":1559,"children":1560},{"style":555},[1561],{"type":326,"value":1562},"findProducts",{"type":321,"tag":432,"props":1564,"children":1565},{"style":445},[1566],{"type":326,"value":1567},"({ limit, offset })\n",{"type":321,"tag":432,"props":1569,"children":1570},{"class":434,"line":566},[1571,1575,1579],{"type":321,"tag":432,"props":1572,"children":1573},{"style":445},[1574],{"type":326,"value":1293},{"type":321,"tag":432,"props":1576,"children":1577},{"style":555},[1578],{"type":326,"value":1254},{"type":321,"tag":432,"props":1580,"children":1581},{"style":445},[1582],{"type":326,"value":563},{"type":321,"tag":432,"props":1584,"children":1585},{"class":434,"line":575},[1586,1591,1595,1599,1604,1608,1612,1616],{"type":321,"tag":432,"props":1587,"children":1588},{"style":445},[1589],{"type":326,"value":1590},"        data: products.",{"type":321,"tag":432,"props":1592,"children":1593},{"style":555},[1594],{"type":326,"value":836},{"type":321,"tag":432,"props":1596,"children":1597},{"style":445},[1598],{"type":326,"value":618},{"type":321,"tag":432,"props":1600,"children":1601},{"style":621},[1602],{"type":326,"value":1603},"c",{"type":321,"tag":432,"props":1605,"children":1606},{"style":439},[1607],{"type":326,"value":850},{"type":321,"tag":432,"props":1609,"children":1610},{"style":439},[1611],{"type":326,"value":691},{"type":321,"tag":432,"props":1613,"children":1614},{"style":555},[1615],{"type":326,"value":696},{"type":321,"tag":432,"props":1617,"children":1618},{"style":445},[1619],{"type":326,"value":1620},"(c)),\n",{"type":321,"tag":432,"props":1622,"children":1623},{"class":434,"line":584},[1624,1629,1633,1637,1641,1645,1649,1653,1657,1661],{"type":321,"tag":432,"props":1625,"children":1626},{"style":445},[1627],{"type":326,"value":1628},"        next: products.",{"type":321,"tag":432,"props":1630,"children":1631},{"style":539},[1632],{"type":326,"value":886},{"type":321,"tag":432,"props":1634,"children":1635},{"style":439},[1636],{"type":326,"value":891},{"type":321,"tag":432,"props":1638,"children":1639},{"style":445},[1640],{"type":326,"value":916},{"type":321,"tag":432,"props":1642,"children":1643},{"style":439},[1644],{"type":326,"value":901},{"type":321,"tag":432,"props":1646,"children":1647},{"style":445},[1648],{"type":326,"value":906},{"type":321,"tag":432,"props":1650,"children":1651},{"style":439},[1652],{"type":326,"value":911},{"type":321,"tag":432,"props":1654,"children":1655},{"style":445},[1656],{"type":326,"value":916},{"type":321,"tag":432,"props":1658,"children":1659},{"style":439},[1660],{"type":326,"value":921},{"type":321,"tag":432,"props":1662,"children":1663},{"style":539},[1664],{"type":326,"value":926},{"type":321,"tag":432,"props":1666,"children":1667},{"class":434,"line":593},[1668],{"type":321,"tag":432,"props":1669,"children":1670},{"style":445},[1671],{"type":326,"value":1672},"    })\n",{"type":321,"tag":432,"props":1674,"children":1675},{"class":434,"line":602},[1676],{"type":321,"tag":432,"props":1677,"children":1678},{"style":445},[1679],{"type":326,"value":953},{"type":321,"tag":338,"props":1681,"children":1683},{"id":1682},"webhooks",[1684],{"type":326,"value":226},{"type":321,"tag":322,"props":1686,"children":1687},{},[1688],{"type":326,"value":1689},"Coming soon.",{"type":321,"tag":1691,"props":1692,"children":1693},"style",{},[1694],{"type":326,"value":1695},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":314,"searchDepth":483,"depth":483,"links":1697},[1698,1699,1700,1704],{"id":340,"depth":347,"text":343},{"id":400,"depth":347,"text":403},{"id":956,"depth":347,"text":959,"children":1701},[1702,1703],{"id":963,"depth":483,"text":966},{"id":1325,"depth":483,"text":1328},{"id":1682,"depth":347,"text":226},"markdown","content:99.integrations:3.controllers:6.products.md","content","99.integrations/3.controllers/6.products.md","99.integrations/3.controllers/6.products","md",{"loc":311},[1713,1717],{"_path":1714,"title":1715,"description":1716},"/integrations/controllers/coupons","Coupons - Controller","List and retrieve `Coupon` models.",{"_path":375,"title":374,"description":1718},"List and retrieve `Family` models.",{"_path":1370,"_dir":1720,"_draft":313,"_partial":313,"_locale":314,"type":1721,"title":1722,"properties":1723,"_id":1732,"_type":1733,"_source":1707,"_file":1734,"_stem":1735,"_extension":1733},"types","object","Pagination Query Params",{"limit":1724,"cursor":1728},{"type":1725,"severity":1726,"description":1727},"integer","required","Maximum number of items to return",{"type":1729,"severity":1730,"description":1731},"string","optional","Cursor for pagination. The actual value is whatever you decided to use as next in the response.","content:types:pagination-query.type.json","json","types/pagination-query.type.json","types/pagination-query.type",{"data":1737,"body":1738,"excerpt":-1,"toc":1744},{"title":314,"description":1727},{"type":318,"children":1739},[1740],{"type":321,"tag":322,"props":1741,"children":1742},{},[1743],{"type":326,"value":1727},{"title":314,"searchDepth":347,"depth":347,"links":1745},[],{"data":1747,"body":1748,"excerpt":-1,"toc":1754},{"title":314,"description":1731},{"type":318,"children":1749},[1750],{"type":321,"tag":322,"props":1751,"children":1752},{},[1753],{"type":326,"value":1731},{"title":314,"searchDepth":347,"depth":347,"links":1755},[],{"_path":1377,"_dir":1720,"_draft":313,"_partial":313,"_locale":314,"type":1721,"title":1757,"properties":1758,"_id":1765,"_type":1733,"_source":1707,"_file":1766,"_stem":1767,"_extension":1733},"Pagination Response",{"data":1759,"next":1763},{"type":1760,"severity":1726,"description":1761,"items":1762},"array","Array of items. The type of item is defined in the endpoint documentation, e.g. `Customer` for `/customers` endpoint",{"type":1721},{"type":1729,"severity":1730,"description":1764},"Either a next `id` or an `offset` for the next page. You decide what to use, we will send `next` value as a `cursor` query parameter back to you. If `next` is empty, there are no more pages","content:types:pagination-response.type.json","types/pagination-response.type.json","types/pagination-response.type",{"data":1769,"body":1771,"excerpt":-1,"toc":1794},{"title":314,"description":1770},"Array of items. The type of item is defined in the endpoint documentation, e.g. Customer for /customers endpoint",{"type":318,"children":1772},[1773],{"type":321,"tag":322,"props":1774,"children":1775},{},[1776,1778,1784,1786,1792],{"type":326,"value":1777},"Array of items. The type of item is defined in the endpoint documentation, e.g. ",{"type":321,"tag":329,"props":1779,"children":1781},{"className":1780},[],[1782],{"type":326,"value":1783},"Customer",{"type":326,"value":1785}," for ",{"type":321,"tag":329,"props":1787,"children":1789},{"className":1788},[],[1790],{"type":326,"value":1791},"/customers",{"type":326,"value":1793}," endpoint",{"title":314,"searchDepth":347,"depth":347,"links":1795},[],{"data":1797,"body":1799,"excerpt":-1,"toc":1844},{"title":314,"description":1798},"Either a next id or an offset for the next page. You decide what to use, we will send next value as a cursor query parameter back to you. If next is empty, there are no more pages",{"type":318,"children":1800},[1801],{"type":321,"tag":322,"props":1802,"children":1803},{},[1804,1806,1811,1813,1819,1821,1827,1829,1835,1837,1842],{"type":326,"value":1805},"Either a next ",{"type":321,"tag":329,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":326,"value":997},{"type":326,"value":1812}," or an ",{"type":321,"tag":329,"props":1814,"children":1816},{"className":1815},[],[1817],{"type":326,"value":1818},"offset",{"type":326,"value":1820}," for the next page. You decide what to use, we will send ",{"type":321,"tag":329,"props":1822,"children":1824},{"className":1823},[],[1825],{"type":326,"value":1826},"next",{"type":326,"value":1828}," value as a ",{"type":321,"tag":329,"props":1830,"children":1832},{"className":1831},[],[1833],{"type":326,"value":1834},"cursor",{"type":326,"value":1836}," query parameter back to you. If ",{"type":321,"tag":329,"props":1838,"children":1840},{"className":1839},[],[1841],{"type":326,"value":1826},{"type":326,"value":1843}," is empty, there are no more pages",{"title":314,"searchDepth":347,"depth":347,"links":1845},[],1775515592405]