[{"data":1,"prerenderedAt":1774},["ShallowReactive",2],{"navigation":3,"/integrations/controllers/families":310,"/integrations/controllers/families-surround":1638,"/types/pagination-query.type":1647,"T8X8wEDTTq":1664,"RlQfeeH749":1674,"/types/pagination-response.type":1684,"R6VCIDBMAK":1696,"wYpKjgCnmI":1724},[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":1631,"_id":1632,"_source":1633,"_file":1634,"_stem":1635,"_extension":1636,"sitemap":1637},"/integrations/controllers/families","controllers",false,"","Families - Controller","List and retrieve `Family` models.",{"type":318,"children":319,"toc":1622},"root",[320,337,344,372,378,880,886,896,905,934,982,1249,1258,1267,1279,1289,1298,1305,1606,1611,1616],{"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},"Families",{"type":326,"value":336}," controller, you need to implement 2 API endpoints, we will use these endpoints to fetch families 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],{"type":321,"tag":350,"props":351,"children":354},"card-baseline",{"title":352,"to":353},"Family Model","/integrations/models/family",[355,360],{"type":321,"tag":322,"props":356,"children":357},{},[358],{"type":326,"value":359},"A group of products or services.",{"type":321,"tag":361,"props":362,"children":365},"flex",{"className":363},[364],"mt-4",[366],{"type":321,"tag":367,"props":368,"children":371},"badge",{"color":369,"label":370},"green","Required",[],{"type":321,"tag":338,"props":373,"children":375},{"id":374},"sdk",[376],{"type":326,"value":377},"SDK",{"type":321,"tag":379,"props":380,"children":381},"code-group",{},[382],{"type":321,"tag":383,"props":384,"children":389},"pre",{"className":385,"code":386,"filename":387,"language":388,"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 { Family } from '../models/Family'\n\nexport const Families = Integrator.Families.config({\n    ctx: Context,\n    async retrieve(ctx, options) {\n        const yourFamily = await ctx.db.findFamily(options.id)\n        return new Family(yourFamily)\n    },\n    async list(ctx, options) {\n        const yourFamilies = await ctx.db.listFamilies({\n            limit: options.limit,\n            offset: options.cursor // the value you pass as `next` below\n        })\n        return {\n            data: yourFamilies.map(family => new Family(family)),\n            // pass the next cursor if there are more items\n            next: yourFamilies.length === options.limit ? offset + limit : undefined\n        }\n    }\n})\n","Typescript","typescript",[390],{"type":321,"tag":329,"props":391,"children":392},{"__ignoreMap":314},[393,422,443,465,475,516,525,565,603,627,636,669,703,712,727,736,749,790,799,853,862,871],{"type":321,"tag":394,"props":395,"children":398},"span",{"class":396,"line":397},"line",1,[399,405,411,416],{"type":321,"tag":394,"props":400,"children":402},{"style":401},"--shiki-light:#CF222E;--shiki-default:#CF222E;--shiki-dark:#FF7B72",[403],{"type":326,"value":404},"import",{"type":321,"tag":394,"props":406,"children":408},{"style":407},"--shiki-light:#1F2328;--shiki-default:#1F2328;--shiki-dark:#E6EDF3",[409],{"type":326,"value":410}," { Integrator } ",{"type":321,"tag":394,"props":412,"children":413},{"style":401},[414],{"type":326,"value":415},"from",{"type":321,"tag":394,"props":417,"children":419},{"style":418},"--shiki-light:#0A3069;--shiki-default:#0A3069;--shiki-dark:#A5D6FF",[420],{"type":326,"value":421}," '@churnkey/sdk'\n",{"type":321,"tag":394,"props":423,"children":424},{"class":396,"line":347},[425,429,434,438],{"type":321,"tag":394,"props":426,"children":427},{"style":401},[428],{"type":326,"value":404},{"type":321,"tag":394,"props":430,"children":431},{"style":407},[432],{"type":326,"value":433}," { Context } ",{"type":321,"tag":394,"props":435,"children":436},{"style":401},[437],{"type":326,"value":415},{"type":321,"tag":394,"props":439,"children":440},{"style":418},[441],{"type":326,"value":442}," '../Context'\n",{"type":321,"tag":394,"props":444,"children":446},{"class":396,"line":445},3,[447,451,456,460],{"type":321,"tag":394,"props":448,"children":449},{"style":401},[450],{"type":326,"value":404},{"type":321,"tag":394,"props":452,"children":453},{"style":407},[454],{"type":326,"value":455}," { Family } ",{"type":321,"tag":394,"props":457,"children":458},{"style":401},[459],{"type":326,"value":415},{"type":321,"tag":394,"props":461,"children":462},{"style":418},[463],{"type":326,"value":464}," '../models/Family'\n",{"type":321,"tag":394,"props":466,"children":468},{"class":396,"line":467},4,[469],{"type":321,"tag":394,"props":470,"children":472},{"emptyLinePlaceholder":471},true,[473],{"type":326,"value":474},"\n",{"type":321,"tag":394,"props":476,"children":478},{"class":396,"line":477},5,[479,484,489,495,500,505,511],{"type":321,"tag":394,"props":480,"children":481},{"style":401},[482],{"type":326,"value":483},"export",{"type":321,"tag":394,"props":485,"children":486},{"style":401},[487],{"type":326,"value":488}," const",{"type":321,"tag":394,"props":490,"children":492},{"style":491},"--shiki-light:#0550AE;--shiki-default:#0550AE;--shiki-dark:#79C0FF",[493],{"type":326,"value":494}," Families",{"type":321,"tag":394,"props":496,"children":497},{"style":401},[498],{"type":326,"value":499}," =",{"type":321,"tag":394,"props":501,"children":502},{"style":407},[503],{"type":326,"value":504}," Integrator.Families.",{"type":321,"tag":394,"props":506,"children":508},{"style":507},"--shiki-light:#8250DF;--shiki-default:#8250DF;--shiki-dark:#D2A8FF",[509],{"type":326,"value":510},"config",{"type":321,"tag":394,"props":512,"children":513},{"style":407},[514],{"type":326,"value":515},"({\n",{"type":321,"tag":394,"props":517,"children":519},{"class":396,"line":518},6,[520],{"type":321,"tag":394,"props":521,"children":522},{"style":407},[523],{"type":326,"value":524},"    ctx: Context,\n",{"type":321,"tag":394,"props":526,"children":528},{"class":396,"line":527},7,[529,534,539,544,550,555,560],{"type":321,"tag":394,"props":530,"children":531},{"style":401},[532],{"type":326,"value":533},"    async",{"type":321,"tag":394,"props":535,"children":536},{"style":507},[537],{"type":326,"value":538}," retrieve",{"type":321,"tag":394,"props":540,"children":541},{"style":407},[542],{"type":326,"value":543},"(",{"type":321,"tag":394,"props":545,"children":547},{"style":546},"--shiki-light:#953800;--shiki-default:#953800;--shiki-dark:#FFA657",[548],{"type":326,"value":549},"ctx",{"type":321,"tag":394,"props":551,"children":552},{"style":407},[553],{"type":326,"value":554},", ",{"type":321,"tag":394,"props":556,"children":557},{"style":546},[558],{"type":326,"value":559},"options",{"type":321,"tag":394,"props":561,"children":562},{"style":407},[563],{"type":326,"value":564},") {\n",{"type":321,"tag":394,"props":566,"children":568},{"class":396,"line":567},8,[569,574,579,583,588,593,598],{"type":321,"tag":394,"props":570,"children":571},{"style":401},[572],{"type":326,"value":573},"        const",{"type":321,"tag":394,"props":575,"children":576},{"style":491},[577],{"type":326,"value":578}," yourFamily",{"type":321,"tag":394,"props":580,"children":581},{"style":401},[582],{"type":326,"value":499},{"type":321,"tag":394,"props":584,"children":585},{"style":401},[586],{"type":326,"value":587}," await",{"type":321,"tag":394,"props":589,"children":590},{"style":407},[591],{"type":326,"value":592}," ctx.db.",{"type":321,"tag":394,"props":594,"children":595},{"style":507},[596],{"type":326,"value":597},"findFamily",{"type":321,"tag":394,"props":599,"children":600},{"style":407},[601],{"type":326,"value":602},"(options.id)\n",{"type":321,"tag":394,"props":604,"children":606},{"class":396,"line":605},9,[607,612,617,622],{"type":321,"tag":394,"props":608,"children":609},{"style":401},[610],{"type":326,"value":611},"        return",{"type":321,"tag":394,"props":613,"children":614},{"style":401},[615],{"type":326,"value":616}," new",{"type":321,"tag":394,"props":618,"children":619},{"style":507},[620],{"type":326,"value":621}," Family",{"type":321,"tag":394,"props":623,"children":624},{"style":407},[625],{"type":326,"value":626},"(yourFamily)\n",{"type":321,"tag":394,"props":628,"children":630},{"class":396,"line":629},10,[631],{"type":321,"tag":394,"props":632,"children":633},{"style":407},[634],{"type":326,"value":635},"    },\n",{"type":321,"tag":394,"props":637,"children":639},{"class":396,"line":638},11,[640,644,649,653,657,661,665],{"type":321,"tag":394,"props":641,"children":642},{"style":401},[643],{"type":326,"value":533},{"type":321,"tag":394,"props":645,"children":646},{"style":507},[647],{"type":326,"value":648}," list",{"type":321,"tag":394,"props":650,"children":651},{"style":407},[652],{"type":326,"value":543},{"type":321,"tag":394,"props":654,"children":655},{"style":546},[656],{"type":326,"value":549},{"type":321,"tag":394,"props":658,"children":659},{"style":407},[660],{"type":326,"value":554},{"type":321,"tag":394,"props":662,"children":663},{"style":546},[664],{"type":326,"value":559},{"type":321,"tag":394,"props":666,"children":667},{"style":407},[668],{"type":326,"value":564},{"type":321,"tag":394,"props":670,"children":672},{"class":396,"line":671},12,[673,677,682,686,690,694,699],{"type":321,"tag":394,"props":674,"children":675},{"style":401},[676],{"type":326,"value":573},{"type":321,"tag":394,"props":678,"children":679},{"style":491},[680],{"type":326,"value":681}," yourFamilies",{"type":321,"tag":394,"props":683,"children":684},{"style":401},[685],{"type":326,"value":499},{"type":321,"tag":394,"props":687,"children":688},{"style":401},[689],{"type":326,"value":587},{"type":321,"tag":394,"props":691,"children":692},{"style":407},[693],{"type":326,"value":592},{"type":321,"tag":394,"props":695,"children":696},{"style":507},[697],{"type":326,"value":698},"listFamilies",{"type":321,"tag":394,"props":700,"children":701},{"style":407},[702],{"type":326,"value":515},{"type":321,"tag":394,"props":704,"children":706},{"class":396,"line":705},13,[707],{"type":321,"tag":394,"props":708,"children":709},{"style":407},[710],{"type":326,"value":711},"            limit: options.limit,\n",{"type":321,"tag":394,"props":713,"children":715},{"class":396,"line":714},14,[716,721],{"type":321,"tag":394,"props":717,"children":718},{"style":407},[719],{"type":326,"value":720},"            offset: options.cursor ",{"type":321,"tag":394,"props":722,"children":724},{"style":723},"--shiki-light:#6E7781;--shiki-default:#6E7781;--shiki-dark:#8B949E",[725],{"type":326,"value":726},"// the value you pass as `next` below\n",{"type":321,"tag":394,"props":728,"children":730},{"class":396,"line":729},15,[731],{"type":321,"tag":394,"props":732,"children":733},{"style":407},[734],{"type":326,"value":735},"        })\n",{"type":321,"tag":394,"props":737,"children":739},{"class":396,"line":738},16,[740,744],{"type":321,"tag":394,"props":741,"children":742},{"style":401},[743],{"type":326,"value":611},{"type":321,"tag":394,"props":745,"children":746},{"style":407},[747],{"type":326,"value":748}," {\n",{"type":321,"tag":394,"props":750,"children":752},{"class":396,"line":751},17,[753,758,763,767,772,777,781,785],{"type":321,"tag":394,"props":754,"children":755},{"style":407},[756],{"type":326,"value":757},"            data: yourFamilies.",{"type":321,"tag":394,"props":759,"children":760},{"style":507},[761],{"type":326,"value":762},"map",{"type":321,"tag":394,"props":764,"children":765},{"style":407},[766],{"type":326,"value":543},{"type":321,"tag":394,"props":768,"children":769},{"style":546},[770],{"type":326,"value":771},"family",{"type":321,"tag":394,"props":773,"children":774},{"style":401},[775],{"type":326,"value":776}," =>",{"type":321,"tag":394,"props":778,"children":779},{"style":401},[780],{"type":326,"value":616},{"type":321,"tag":394,"props":782,"children":783},{"style":507},[784],{"type":326,"value":621},{"type":321,"tag":394,"props":786,"children":787},{"style":407},[788],{"type":326,"value":789},"(family)),\n",{"type":321,"tag":394,"props":791,"children":793},{"class":396,"line":792},18,[794],{"type":321,"tag":394,"props":795,"children":796},{"style":723},[797],{"type":326,"value":798},"            // pass the next cursor if there are more items\n",{"type":321,"tag":394,"props":800,"children":802},{"class":396,"line":801},19,[803,808,813,818,823,828,833,838,843,848],{"type":321,"tag":394,"props":804,"children":805},{"style":407},[806],{"type":326,"value":807},"            next: yourFamilies.",{"type":321,"tag":394,"props":809,"children":810},{"style":491},[811],{"type":326,"value":812},"length",{"type":321,"tag":394,"props":814,"children":815},{"style":401},[816],{"type":326,"value":817}," ===",{"type":321,"tag":394,"props":819,"children":820},{"style":407},[821],{"type":326,"value":822}," options.limit ",{"type":321,"tag":394,"props":824,"children":825},{"style":401},[826],{"type":326,"value":827},"?",{"type":321,"tag":394,"props":829,"children":830},{"style":407},[831],{"type":326,"value":832}," offset ",{"type":321,"tag":394,"props":834,"children":835},{"style":401},[836],{"type":326,"value":837},"+",{"type":321,"tag":394,"props":839,"children":840},{"style":407},[841],{"type":326,"value":842}," limit ",{"type":321,"tag":394,"props":844,"children":845},{"style":401},[846],{"type":326,"value":847},":",{"type":321,"tag":394,"props":849,"children":850},{"style":491},[851],{"type":326,"value":852}," undefined\n",{"type":321,"tag":394,"props":854,"children":856},{"class":396,"line":855},20,[857],{"type":321,"tag":394,"props":858,"children":859},{"style":407},[860],{"type":326,"value":861},"        }\n",{"type":321,"tag":394,"props":863,"children":865},{"class":396,"line":864},21,[866],{"type":321,"tag":394,"props":867,"children":868},{"style":407},[869],{"type":326,"value":870},"    }\n",{"type":321,"tag":394,"props":872,"children":874},{"class":396,"line":873},22,[875],{"type":321,"tag":394,"props":876,"children":877},{"style":407},[878],{"type":326,"value":879},"})\n",{"type":321,"tag":338,"props":881,"children":883},{"id":882},"endpoints",[884],{"type":326,"value":885},"Endpoints",{"type":321,"tag":887,"props":888,"children":890},"h3",{"id":889},"retrieve",[891,893],{"type":326,"value":892},"Retrieve ",{"type":321,"tag":367,"props":894,"children":895},{"color":369,"label":370},[],{"type":321,"tag":322,"props":897,"children":898},{},[899],{"type":321,"tag":329,"props":900,"children":902},{"className":901},[],[903],{"type":326,"value":904},"GET /churnkey/families/:id",{"type":321,"tag":322,"props":906,"children":907},{},[908,910,916,918,924,926,932],{"type":326,"value":909},"This endpoint fetches ",{"type":321,"tag":329,"props":911,"children":913},{"className":912},[],[914],{"type":326,"value":915},"Family",{"type":326,"value":917}," by its ",{"type":321,"tag":329,"props":919,"children":921},{"className":920},[],[922],{"type":326,"value":923},"id",{"type":326,"value":925},". Usually, implementation will include finding a family in your database and mapping it to the ",{"type":321,"tag":927,"props":928,"children":929},"a",{"href":353},[930],{"type":326,"value":931},"Family model",{"type":326,"value":933},".",{"type":321,"tag":935,"props":936,"children":938},"collapsible",{"name":937},"response",[939],{"type":321,"tag":940,"props":941,"children":942},"tabs",{},[943,966],{"type":321,"tag":944,"props":945,"children":947},"div",{"label":946},"200",[948],{"type":321,"tag":322,"props":949,"children":950},{},[951,953,958,960,965],{"type":326,"value":952},"Must return ",{"type":321,"tag":329,"props":954,"children":956},{"className":955},[],[957],{"type":326,"value":915},{"type":326,"value":959}," model. See ",{"type":321,"tag":927,"props":961,"children":962},{"href":353},[963],{"type":326,"value":964},"Family model documentation",{"type":326,"value":933},{"type":321,"tag":944,"props":967,"children":969},{"label":968},"Error",[970],{"type":321,"tag":322,"props":971,"children":972},{},[973,975,981],{"type":326,"value":974},"See ",{"type":321,"tag":927,"props":976,"children":978},{"href":977},"/integrations/general#error-responses",[979],{"type":326,"value":980},"Error Responses",{"type":326,"value":933},{"type":321,"tag":935,"props":983,"children":985},{"name":984},"code example",[986],{"type":321,"tag":379,"props":987,"children":988},{},[989],{"type":321,"tag":383,"props":990,"children":993},{"className":385,"code":991,"filename":992,"language":388,"meta":314,"style":314},"import { Family } from '../models/Family'\n\napp.get('/churnkey/families/:id', async (req, res) => {\n    const family = await db.findFamilyById(req.params.id)\n    if (!family) {\n        return res.status(404).send({ code: 404, message: 'Family not found' })\n    }\n    res.send(new Family(family))\n})\n","Typescript Express",[994],{"type":321,"tag":329,"props":995,"children":996},{"__ignoreMap":314},[997,1016,1023,1087,1123,1145,1205,1212,1242],{"type":321,"tag":394,"props":998,"children":999},{"class":396,"line":397},[1000,1004,1008,1012],{"type":321,"tag":394,"props":1001,"children":1002},{"style":401},[1003],{"type":326,"value":404},{"type":321,"tag":394,"props":1005,"children":1006},{"style":407},[1007],{"type":326,"value":455},{"type":321,"tag":394,"props":1009,"children":1010},{"style":401},[1011],{"type":326,"value":415},{"type":321,"tag":394,"props":1013,"children":1014},{"style":418},[1015],{"type":326,"value":464},{"type":321,"tag":394,"props":1017,"children":1018},{"class":396,"line":347},[1019],{"type":321,"tag":394,"props":1020,"children":1021},{"emptyLinePlaceholder":471},[1022],{"type":326,"value":474},{"type":321,"tag":394,"props":1024,"children":1025},{"class":396,"line":445},[1026,1031,1036,1040,1045,1049,1054,1059,1064,1068,1073,1078,1083],{"type":321,"tag":394,"props":1027,"children":1028},{"style":407},[1029],{"type":326,"value":1030},"app.",{"type":321,"tag":394,"props":1032,"children":1033},{"style":507},[1034],{"type":326,"value":1035},"get",{"type":321,"tag":394,"props":1037,"children":1038},{"style":407},[1039],{"type":326,"value":543},{"type":321,"tag":394,"props":1041,"children":1042},{"style":418},[1043],{"type":326,"value":1044},"'/churnkey/families/:id'",{"type":321,"tag":394,"props":1046,"children":1047},{"style":407},[1048],{"type":326,"value":554},{"type":321,"tag":394,"props":1050,"children":1051},{"style":401},[1052],{"type":326,"value":1053},"async",{"type":321,"tag":394,"props":1055,"children":1056},{"style":407},[1057],{"type":326,"value":1058}," (",{"type":321,"tag":394,"props":1060,"children":1061},{"style":546},[1062],{"type":326,"value":1063},"req",{"type":321,"tag":394,"props":1065,"children":1066},{"style":407},[1067],{"type":326,"value":554},{"type":321,"tag":394,"props":1069,"children":1070},{"style":546},[1071],{"type":326,"value":1072},"res",{"type":321,"tag":394,"props":1074,"children":1075},{"style":407},[1076],{"type":326,"value":1077},") ",{"type":321,"tag":394,"props":1079,"children":1080},{"style":401},[1081],{"type":326,"value":1082},"=>",{"type":321,"tag":394,"props":1084,"children":1085},{"style":407},[1086],{"type":326,"value":748},{"type":321,"tag":394,"props":1088,"children":1089},{"class":396,"line":467},[1090,1095,1100,1104,1108,1113,1118],{"type":321,"tag":394,"props":1091,"children":1092},{"style":401},[1093],{"type":326,"value":1094},"    const",{"type":321,"tag":394,"props":1096,"children":1097},{"style":491},[1098],{"type":326,"value":1099}," family",{"type":321,"tag":394,"props":1101,"children":1102},{"style":401},[1103],{"type":326,"value":499},{"type":321,"tag":394,"props":1105,"children":1106},{"style":401},[1107],{"type":326,"value":587},{"type":321,"tag":394,"props":1109,"children":1110},{"style":407},[1111],{"type":326,"value":1112}," db.",{"type":321,"tag":394,"props":1114,"children":1115},{"style":507},[1116],{"type":326,"value":1117},"findFamilyById",{"type":321,"tag":394,"props":1119,"children":1120},{"style":407},[1121],{"type":326,"value":1122},"(req.params.id)\n",{"type":321,"tag":394,"props":1124,"children":1125},{"class":396,"line":477},[1126,1131,1135,1140],{"type":321,"tag":394,"props":1127,"children":1128},{"style":401},[1129],{"type":326,"value":1130},"    if",{"type":321,"tag":394,"props":1132,"children":1133},{"style":407},[1134],{"type":326,"value":1058},{"type":321,"tag":394,"props":1136,"children":1137},{"style":401},[1138],{"type":326,"value":1139},"!",{"type":321,"tag":394,"props":1141,"children":1142},{"style":407},[1143],{"type":326,"value":1144},"family) {\n",{"type":321,"tag":394,"props":1146,"children":1147},{"class":396,"line":518},[1148,1152,1157,1162,1166,1171,1176,1181,1186,1190,1195,1200],{"type":321,"tag":394,"props":1149,"children":1150},{"style":401},[1151],{"type":326,"value":611},{"type":321,"tag":394,"props":1153,"children":1154},{"style":407},[1155],{"type":326,"value":1156}," res.",{"type":321,"tag":394,"props":1158,"children":1159},{"style":507},[1160],{"type":326,"value":1161},"status",{"type":321,"tag":394,"props":1163,"children":1164},{"style":407},[1165],{"type":326,"value":543},{"type":321,"tag":394,"props":1167,"children":1168},{"style":491},[1169],{"type":326,"value":1170},"404",{"type":321,"tag":394,"props":1172,"children":1173},{"style":407},[1174],{"type":326,"value":1175},").",{"type":321,"tag":394,"props":1177,"children":1178},{"style":507},[1179],{"type":326,"value":1180},"send",{"type":321,"tag":394,"props":1182,"children":1183},{"style":407},[1184],{"type":326,"value":1185},"({ code: ",{"type":321,"tag":394,"props":1187,"children":1188},{"style":491},[1189],{"type":326,"value":1170},{"type":321,"tag":394,"props":1191,"children":1192},{"style":407},[1193],{"type":326,"value":1194},", message: ",{"type":321,"tag":394,"props":1196,"children":1197},{"style":418},[1198],{"type":326,"value":1199},"'Family not found'",{"type":321,"tag":394,"props":1201,"children":1202},{"style":407},[1203],{"type":326,"value":1204}," })\n",{"type":321,"tag":394,"props":1206,"children":1207},{"class":396,"line":527},[1208],{"type":321,"tag":394,"props":1209,"children":1210},{"style":407},[1211],{"type":326,"value":870},{"type":321,"tag":394,"props":1213,"children":1214},{"class":396,"line":567},[1215,1220,1224,1228,1233,1237],{"type":321,"tag":394,"props":1216,"children":1217},{"style":407},[1218],{"type":326,"value":1219},"    res.",{"type":321,"tag":394,"props":1221,"children":1222},{"style":507},[1223],{"type":326,"value":1180},{"type":321,"tag":394,"props":1225,"children":1226},{"style":407},[1227],{"type":326,"value":543},{"type":321,"tag":394,"props":1229,"children":1230},{"style":401},[1231],{"type":326,"value":1232},"new",{"type":321,"tag":394,"props":1234,"children":1235},{"style":507},[1236],{"type":326,"value":621},{"type":321,"tag":394,"props":1238,"children":1239},{"style":407},[1240],{"type":326,"value":1241},"(family))\n",{"type":321,"tag":394,"props":1243,"children":1244},{"class":396,"line":605},[1245],{"type":321,"tag":394,"props":1246,"children":1247},{"style":407},[1248],{"type":326,"value":879},{"type":321,"tag":887,"props":1250,"children":1252},{"id":1251},"list",[1253,1255],{"type":326,"value":1254},"List ",{"type":321,"tag":367,"props":1256,"children":1257},{"color":369,"label":370},[],{"type":321,"tag":322,"props":1259,"children":1260},{},[1261],{"type":321,"tag":329,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":326,"value":1266},"GET /churnkey/families",{"type":321,"tag":322,"props":1268,"children":1269},{},[1270,1272,1277],{"type":326,"value":1271},"This endpoint fetches a list of families from your database. You should find families in your database (with pagination), map them to the ",{"type":321,"tag":329,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":326,"value":915},{"type":326,"value":1278}," model and return a paginated list.",{"type":321,"tag":322,"props":1280,"children":1281},{},[1282,1288],{"type":321,"tag":927,"props":1283,"children":1285},{"href":1284},"/integrations/general#pagination",[1286],{"type":326,"value":1287},"Learn more about pagination",{"type":326,"value":933},{"type":321,"tag":935,"props":1290,"children":1292},{"name":1291},"query parameters",[1293],{"type":321,"tag":1294,"props":1295,"children":1297},"field-schema",{"schema":1296},"/types/pagination-query.type",[],{"type":321,"tag":935,"props":1299,"children":1300},{"name":937},[1301],{"type":321,"tag":1294,"props":1302,"children":1304},{"schema":1303},"/types/pagination-response.type",[],{"type":321,"tag":935,"props":1306,"children":1307},{"name":984},[1308],{"type":321,"tag":379,"props":1309,"children":1310},{},[1311],{"type":321,"tag":383,"props":1312,"children":1314},{"className":385,"code":1313,"filename":992,"language":388,"meta":314,"style":314},"import { Family } from '../models/Family'\n\napp.get('/churnkey/families', async (req, res) => {\n    const limit = Number.parseInt(req.query.limit)\n    const offset = Number.parseInt(req.query.cursor) \n    const families = await db.findFamilies({ limit, offset })\n    res.send({\n        data: families.map(c => new Family(c)),\n        next: families.length === limit ? offset + limit : undefined\n    })\n})\n",[1315],{"type":321,"tag":329,"props":1316,"children":1317},{"__ignoreMap":314},[1318,1337,1344,1400,1431,1460,1494,1509,1547,1591,1599],{"type":321,"tag":394,"props":1319,"children":1320},{"class":396,"line":397},[1321,1325,1329,1333],{"type":321,"tag":394,"props":1322,"children":1323},{"style":401},[1324],{"type":326,"value":404},{"type":321,"tag":394,"props":1326,"children":1327},{"style":407},[1328],{"type":326,"value":455},{"type":321,"tag":394,"props":1330,"children":1331},{"style":401},[1332],{"type":326,"value":415},{"type":321,"tag":394,"props":1334,"children":1335},{"style":418},[1336],{"type":326,"value":464},{"type":321,"tag":394,"props":1338,"children":1339},{"class":396,"line":347},[1340],{"type":321,"tag":394,"props":1341,"children":1342},{"emptyLinePlaceholder":471},[1343],{"type":326,"value":474},{"type":321,"tag":394,"props":1345,"children":1346},{"class":396,"line":445},[1347,1351,1355,1359,1364,1368,1372,1376,1380,1384,1388,1392,1396],{"type":321,"tag":394,"props":1348,"children":1349},{"style":407},[1350],{"type":326,"value":1030},{"type":321,"tag":394,"props":1352,"children":1353},{"style":507},[1354],{"type":326,"value":1035},{"type":321,"tag":394,"props":1356,"children":1357},{"style":407},[1358],{"type":326,"value":543},{"type":321,"tag":394,"props":1360,"children":1361},{"style":418},[1362],{"type":326,"value":1363},"'/churnkey/families'",{"type":321,"tag":394,"props":1365,"children":1366},{"style":407},[1367],{"type":326,"value":554},{"type":321,"tag":394,"props":1369,"children":1370},{"style":401},[1371],{"type":326,"value":1053},{"type":321,"tag":394,"props":1373,"children":1374},{"style":407},[1375],{"type":326,"value":1058},{"type":321,"tag":394,"props":1377,"children":1378},{"style":546},[1379],{"type":326,"value":1063},{"type":321,"tag":394,"props":1381,"children":1382},{"style":407},[1383],{"type":326,"value":554},{"type":321,"tag":394,"props":1385,"children":1386},{"style":546},[1387],{"type":326,"value":1072},{"type":321,"tag":394,"props":1389,"children":1390},{"style":407},[1391],{"type":326,"value":1077},{"type":321,"tag":394,"props":1393,"children":1394},{"style":401},[1395],{"type":326,"value":1082},{"type":321,"tag":394,"props":1397,"children":1398},{"style":407},[1399],{"type":326,"value":748},{"type":321,"tag":394,"props":1401,"children":1402},{"class":396,"line":467},[1403,1407,1412,1416,1421,1426],{"type":321,"tag":394,"props":1404,"children":1405},{"style":401},[1406],{"type":326,"value":1094},{"type":321,"tag":394,"props":1408,"children":1409},{"style":491},[1410],{"type":326,"value":1411}," limit",{"type":321,"tag":394,"props":1413,"children":1414},{"style":401},[1415],{"type":326,"value":499},{"type":321,"tag":394,"props":1417,"children":1418},{"style":407},[1419],{"type":326,"value":1420}," Number.",{"type":321,"tag":394,"props":1422,"children":1423},{"style":507},[1424],{"type":326,"value":1425},"parseInt",{"type":321,"tag":394,"props":1427,"children":1428},{"style":407},[1429],{"type":326,"value":1430},"(req.query.limit)\n",{"type":321,"tag":394,"props":1432,"children":1433},{"class":396,"line":477},[1434,1438,1443,1447,1451,1455],{"type":321,"tag":394,"props":1435,"children":1436},{"style":401},[1437],{"type":326,"value":1094},{"type":321,"tag":394,"props":1439,"children":1440},{"style":491},[1441],{"type":326,"value":1442}," offset",{"type":321,"tag":394,"props":1444,"children":1445},{"style":401},[1446],{"type":326,"value":499},{"type":321,"tag":394,"props":1448,"children":1449},{"style":407},[1450],{"type":326,"value":1420},{"type":321,"tag":394,"props":1452,"children":1453},{"style":507},[1454],{"type":326,"value":1425},{"type":321,"tag":394,"props":1456,"children":1457},{"style":407},[1458],{"type":326,"value":1459},"(req.query.cursor) \n",{"type":321,"tag":394,"props":1461,"children":1462},{"class":396,"line":518},[1463,1467,1472,1476,1480,1484,1489],{"type":321,"tag":394,"props":1464,"children":1465},{"style":401},[1466],{"type":326,"value":1094},{"type":321,"tag":394,"props":1468,"children":1469},{"style":491},[1470],{"type":326,"value":1471}," families",{"type":321,"tag":394,"props":1473,"children":1474},{"style":401},[1475],{"type":326,"value":499},{"type":321,"tag":394,"props":1477,"children":1478},{"style":401},[1479],{"type":326,"value":587},{"type":321,"tag":394,"props":1481,"children":1482},{"style":407},[1483],{"type":326,"value":1112},{"type":321,"tag":394,"props":1485,"children":1486},{"style":507},[1487],{"type":326,"value":1488},"findFamilies",{"type":321,"tag":394,"props":1490,"children":1491},{"style":407},[1492],{"type":326,"value":1493},"({ limit, offset })\n",{"type":321,"tag":394,"props":1495,"children":1496},{"class":396,"line":527},[1497,1501,1505],{"type":321,"tag":394,"props":1498,"children":1499},{"style":407},[1500],{"type":326,"value":1219},{"type":321,"tag":394,"props":1502,"children":1503},{"style":507},[1504],{"type":326,"value":1180},{"type":321,"tag":394,"props":1506,"children":1507},{"style":407},[1508],{"type":326,"value":515},{"type":321,"tag":394,"props":1510,"children":1511},{"class":396,"line":567},[1512,1517,1521,1525,1530,1534,1538,1542],{"type":321,"tag":394,"props":1513,"children":1514},{"style":407},[1515],{"type":326,"value":1516},"        data: families.",{"type":321,"tag":394,"props":1518,"children":1519},{"style":507},[1520],{"type":326,"value":762},{"type":321,"tag":394,"props":1522,"children":1523},{"style":407},[1524],{"type":326,"value":543},{"type":321,"tag":394,"props":1526,"children":1527},{"style":546},[1528],{"type":326,"value":1529},"c",{"type":321,"tag":394,"props":1531,"children":1532},{"style":401},[1533],{"type":326,"value":776},{"type":321,"tag":394,"props":1535,"children":1536},{"style":401},[1537],{"type":326,"value":616},{"type":321,"tag":394,"props":1539,"children":1540},{"style":507},[1541],{"type":326,"value":621},{"type":321,"tag":394,"props":1543,"children":1544},{"style":407},[1545],{"type":326,"value":1546},"(c)),\n",{"type":321,"tag":394,"props":1548,"children":1549},{"class":396,"line":605},[1550,1555,1559,1563,1567,1571,1575,1579,1583,1587],{"type":321,"tag":394,"props":1551,"children":1552},{"style":407},[1553],{"type":326,"value":1554},"        next: families.",{"type":321,"tag":394,"props":1556,"children":1557},{"style":491},[1558],{"type":326,"value":812},{"type":321,"tag":394,"props":1560,"children":1561},{"style":401},[1562],{"type":326,"value":817},{"type":321,"tag":394,"props":1564,"children":1565},{"style":407},[1566],{"type":326,"value":842},{"type":321,"tag":394,"props":1568,"children":1569},{"style":401},[1570],{"type":326,"value":827},{"type":321,"tag":394,"props":1572,"children":1573},{"style":407},[1574],{"type":326,"value":832},{"type":321,"tag":394,"props":1576,"children":1577},{"style":401},[1578],{"type":326,"value":837},{"type":321,"tag":394,"props":1580,"children":1581},{"style":407},[1582],{"type":326,"value":842},{"type":321,"tag":394,"props":1584,"children":1585},{"style":401},[1586],{"type":326,"value":847},{"type":321,"tag":394,"props":1588,"children":1589},{"style":491},[1590],{"type":326,"value":852},{"type":321,"tag":394,"props":1592,"children":1593},{"class":396,"line":629},[1594],{"type":321,"tag":394,"props":1595,"children":1596},{"style":407},[1597],{"type":326,"value":1598},"    })\n",{"type":321,"tag":394,"props":1600,"children":1601},{"class":396,"line":638},[1602],{"type":321,"tag":394,"props":1603,"children":1604},{"style":407},[1605],{"type":326,"value":879},{"type":321,"tag":338,"props":1607,"children":1609},{"id":1608},"webhooks",[1610],{"type":326,"value":226},{"type":321,"tag":322,"props":1612,"children":1613},{},[1614],{"type":326,"value":1615},"Coming soon.",{"type":321,"tag":1617,"props":1618,"children":1619},"style",{},[1620],{"type":326,"value":1621},"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":445,"depth":445,"links":1623},[1624,1625,1626,1630],{"id":340,"depth":347,"text":343},{"id":374,"depth":347,"text":377},{"id":882,"depth":347,"text":885,"children":1627},[1628,1629],{"id":889,"depth":445,"text":892},{"id":1251,"depth":445,"text":1254},{"id":1608,"depth":347,"text":226},"markdown","content:99.integrations:3.controllers:7.families.md","content","99.integrations/3.controllers/7.families.md","99.integrations/3.controllers/7.families","md",{"loc":311},[1639,1643],{"_path":1640,"title":1641,"description":1642},"/integrations/controllers/products","Products - Controller","List and retrieve `Product` models.",{"_path":1644,"title":1645,"description":1646},"/integrations/actions/cancel","Cancel - Action","Cancels a subscription at specific date.",{"_path":1296,"_dir":1648,"_draft":313,"_partial":313,"_locale":314,"type":1649,"title":1650,"properties":1651,"_id":1660,"_type":1661,"_source":1633,"_file":1662,"_stem":1663,"_extension":1661},"types","object","Pagination Query Params",{"limit":1652,"cursor":1656},{"type":1653,"severity":1654,"description":1655},"integer","required","Maximum number of items to return",{"type":1657,"severity":1658,"description":1659},"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":1665,"body":1666,"excerpt":-1,"toc":1672},{"title":314,"description":1655},{"type":318,"children":1667},[1668],{"type":321,"tag":322,"props":1669,"children":1670},{},[1671],{"type":326,"value":1655},{"title":314,"searchDepth":347,"depth":347,"links":1673},[],{"data":1675,"body":1676,"excerpt":-1,"toc":1682},{"title":314,"description":1659},{"type":318,"children":1677},[1678],{"type":321,"tag":322,"props":1679,"children":1680},{},[1681],{"type":326,"value":1659},{"title":314,"searchDepth":347,"depth":347,"links":1683},[],{"_path":1303,"_dir":1648,"_draft":313,"_partial":313,"_locale":314,"type":1649,"title":1685,"properties":1686,"_id":1693,"_type":1661,"_source":1633,"_file":1694,"_stem":1695,"_extension":1661},"Pagination Response",{"data":1687,"next":1691},{"type":1688,"severity":1654,"description":1689,"items":1690},"array","Array of items. The type of item is defined in the endpoint documentation, e.g. `Customer` for `/customers` endpoint",{"type":1649},{"type":1657,"severity":1658,"description":1692},"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":1697,"body":1699,"excerpt":-1,"toc":1722},{"title":314,"description":1698},"Array of items. The type of item is defined in the endpoint documentation, e.g. Customer for /customers endpoint",{"type":318,"children":1700},[1701],{"type":321,"tag":322,"props":1702,"children":1703},{},[1704,1706,1712,1714,1720],{"type":326,"value":1705},"Array of items. The type of item is defined in the endpoint documentation, e.g. ",{"type":321,"tag":329,"props":1707,"children":1709},{"className":1708},[],[1710],{"type":326,"value":1711},"Customer",{"type":326,"value":1713}," for ",{"type":321,"tag":329,"props":1715,"children":1717},{"className":1716},[],[1718],{"type":326,"value":1719},"/customers",{"type":326,"value":1721}," endpoint",{"title":314,"searchDepth":347,"depth":347,"links":1723},[],{"data":1725,"body":1727,"excerpt":-1,"toc":1772},{"title":314,"description":1726},"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":1728},[1729],{"type":321,"tag":322,"props":1730,"children":1731},{},[1732,1734,1739,1741,1747,1749,1755,1757,1763,1765,1770],{"type":326,"value":1733},"Either a next ",{"type":321,"tag":329,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":326,"value":923},{"type":326,"value":1740}," or an ",{"type":321,"tag":329,"props":1742,"children":1744},{"className":1743},[],[1745],{"type":326,"value":1746},"offset",{"type":326,"value":1748}," for the next page. You decide what to use, we will send ",{"type":321,"tag":329,"props":1750,"children":1752},{"className":1751},[],[1753],{"type":326,"value":1754},"next",{"type":326,"value":1756}," value as a ",{"type":321,"tag":329,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":326,"value":1762},"cursor",{"type":326,"value":1764}," query parameter back to you. If ",{"type":321,"tag":329,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":326,"value":1754},{"type":326,"value":1771}," is empty, there are no more pages",{"title":314,"searchDepth":347,"depth":347,"links":1773},[],1775515592431]