[{"data":1,"prerenderedAt":1602},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fbuild-a-storefront":361,"\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fbuild-a-storefront-surround":1597},[4,264,315,342],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":263},"Docs","i-lucide-book-open","\u002Fdocs","1.docs",[10,30,57,96,119,194,201,227],{"title":11,"path":12,"stem":13,"children":14,"icon":29},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[15,17,21,25],{"title":11,"path":12,"stem":13,"icon":16},"i-lucide-house",{"title":18,"path":19,"stem":20},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","1.docs\u002F1.getting-started\u002F2.platform-overview",{"title":22,"path":23,"stem":24},"Create an Organisation","\u002Fdocs\u002Fgetting-started\u002Fcreate-an-organisation","1.docs\u002F1.getting-started\u002F3.create-an-organisation",{"title":26,"path":27,"stem":28},"Quickstarts","\u002Fdocs\u002Fgetting-started\u002Fquickstarts","1.docs\u002F1.getting-started\u002F4.quickstarts","i-lucide-rocket",{"title":31,"path":32,"stem":33,"children":34,"icon":56},"Admin Center","\u002Fdocs\u002Finfuse-cloud","1.docs\u002F2.infuse-cloud\u002F1.index",[35,36,40,44,48,52],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Create or Switch Organisations","\u002Fdocs\u002Finfuse-cloud\u002Fcreate-or-switch-organisations","1.docs\u002F2.infuse-cloud\u002F2.create-or-switch-organisations",{"title":41,"path":42,"stem":43},"Organisation Profile","\u002Fdocs\u002Finfuse-cloud\u002Forganisation-profile","1.docs\u002F2.infuse-cloud\u002F3.organisation-profile",{"title":45,"path":46,"stem":47},"Members and Invitations","\u002Fdocs\u002Finfuse-cloud\u002Fmembers-and-invitations","1.docs\u002F2.infuse-cloud\u002F4.members-and-invitations",{"title":49,"path":50,"stem":51},"Member Roles","\u002Fdocs\u002Finfuse-cloud\u002Fmember-roles","1.docs\u002F2.infuse-cloud\u002F5.member-roles",{"title":53,"path":54,"stem":55},"API Access","\u002Fdocs\u002Finfuse-cloud\u002Fapi-access","1.docs\u002F2.infuse-cloud\u002F6.api-access","i-lucide-building-2",{"title":58,"path":59,"stem":60,"children":61,"icon":95},"Infuse IoT","\u002Fdocs\u002Finfuse-iot","1.docs\u002F3.infuse-iot\u002F1.index",[62,63,67,71,75,79,83,87,91],{"title":58,"path":59,"stem":60},{"title":64,"path":65,"stem":66},"Devices","\u002Fdocs\u002Finfuse-iot\u002Fdevices","1.docs\u002F3.infuse-iot\u002F2.devices",{"title":68,"path":69,"stem":70},"Provisioning","\u002Fdocs\u002Finfuse-iot\u002Fprovisioning","1.docs\u002F3.infuse-iot\u002F3.provisioning",{"title":72,"path":73,"stem":74},"Telemetry","\u002Fdocs\u002Finfuse-iot\u002Ftelemetry","1.docs\u002F3.infuse-iot\u002F4.telemetry",{"title":76,"path":77,"stem":78},"Commands","\u002Fdocs\u002Finfuse-iot\u002Fcommands","1.docs\u002F3.infuse-iot\u002F5.commands",{"title":80,"path":81,"stem":82},"Firmware","\u002Fdocs\u002Finfuse-iot\u002Ffirmware","1.docs\u002F3.infuse-iot\u002F6.firmware",{"title":84,"path":85,"stem":86},"Definitions","\u002Fdocs\u002Finfuse-iot\u002Fdefinitions","1.docs\u002F3.infuse-iot\u002F7.definitions",{"title":88,"path":89,"stem":90},"Connectivity","\u002Fdocs\u002Finfuse-iot\u002Fconnectivity","1.docs\u002F3.infuse-iot\u002F8.connectivity",{"title":92,"path":93,"stem":94},"SDK Reference","\u002Fdocs\u002Finfuse-iot\u002Fsdk-reference","1.docs\u002F3.infuse-iot\u002F9.sdk-reference","i-lucide-radio-tower",{"title":97,"path":98,"stem":99,"children":100,"icon":118},"Infuse DB","\u002Fdocs\u002Finfuse-db","1.docs\u002F4.infuse-db\u002F1.index",[101,102,106,110,114],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"Datasets","\u002Fdocs\u002Finfuse-db\u002Fdatasets","1.docs\u002F4.infuse-db\u002F2.datasets",{"title":107,"path":108,"stem":109},"Ingestion","\u002Fdocs\u002Finfuse-db\u002Fingestion","1.docs\u002F4.infuse-db\u002F3.ingestion",{"title":111,"path":112,"stem":113},"Querying","\u002Fdocs\u002Finfuse-db\u002Fquerying","1.docs\u002F4.infuse-db\u002F4.querying",{"title":115,"path":116,"stem":117},"Retention","\u002Fdocs\u002Finfuse-db\u002Fretention","1.docs\u002F4.infuse-db\u002F5.retention","i-lucide-database",{"title":120,"path":121,"stem":122,"children":123,"icon":193},"Marketplace","\u002Fdocs\u002Fmarketplace","1.docs\u002F5.marketplace\u002F1.index",[124,125,129,133,161],{"title":120,"path":121,"stem":122},{"title":126,"path":127,"stem":128},"Marketplace Instances","\u002Fdocs\u002Fmarketplace\u002Finstances","1.docs\u002F5.marketplace\u002F2.instances",{"title":130,"path":131,"stem":132},"Marketplace Roles","\u002Fdocs\u002Fmarketplace\u002Froles","1.docs\u002F5.marketplace\u002F3.roles",{"title":134,"path":135,"stem":136,"children":137,"icon":160},"Developers","\u002Fdocs\u002Fmarketplace\u002Fdevelopers","1.docs\u002F5.marketplace\u002Fdevelopers\u002F1.index",[138,140,144,148,152,156],{"title":139,"path":135,"stem":136},"Marketplace Developers",{"title":141,"path":142,"stem":143},"Create a Product","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fcreate-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F2.create-product",{"title":145,"path":146,"stem":147},"Upload Assets","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fupload-assets","1.docs\u002F5.marketplace\u002Fdevelopers\u002F3.upload-assets",{"title":149,"path":150,"stem":151},"Releases and Versions","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Freleases-and-versions","1.docs\u002F5.marketplace\u002Fdevelopers\u002F4.releases-and-versions",{"title":153,"path":154,"stem":155},"Pricing","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpricing","1.docs\u002F5.marketplace\u002Fdevelopers\u002F5.pricing",{"title":157,"path":158,"stem":159},"Publish a Product","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpublish-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F6.publish-product","i-lucide-code-2",{"title":162,"path":163,"stem":164,"children":165,"icon":192},"Providers","\u002Fdocs\u002Fmarketplace\u002Fproviders","1.docs\u002F5.marketplace\u002Fproviders\u002F1.index",[166,168,172,176,180,184,188],{"title":167,"path":163,"stem":164},"Marketplace Providers",{"title":169,"path":170,"stem":171},"Discover Products","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fdiscover-products","1.docs\u002F5.marketplace\u002Fproviders\u002F2.discover-products",{"title":173,"path":174,"stem":175},"Create and Manage Listings","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcreate-listings","1.docs\u002F5.marketplace\u002Fproviders\u002F3.create-listings",{"title":177,"path":178,"stem":179},"Build a Storefront","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fbuild-a-storefront","1.docs\u002F5.marketplace\u002Fproviders\u002F4.build-a-storefront",{"title":181,"path":182,"stem":183},"Checkout Flow","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcheckout-flow","1.docs\u002F5.marketplace\u002Fproviders\u002F5.checkout-flow",{"title":185,"path":186,"stem":187},"Purchases","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fpurchases","1.docs\u002F5.marketplace\u002Fproviders\u002F6.purchases",{"title":189,"path":190,"stem":191},"Install Purchased Products","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Finstall-purchased-products","1.docs\u002F5.marketplace\u002Fproviders\u002F7.install-purchased-products","i-lucide-handshake","i-lucide-store",{"title":195,"path":196,"stem":197,"children":198,"icon":200},"Infuse Analytics","\u002Fdocs\u002Finfuse-analytics","1.docs\u002F6.infuse-analytics\u002F1.index",[199],{"title":195,"path":196,"stem":197},"i-lucide-chart-no-axes-combined",{"title":202,"path":203,"stem":204,"children":205,"icon":226},"Concepts","\u002Fdocs\u002Fconcepts","1.docs\u002F7.concepts\u002F1.index",[206,207,211,215,218,222],{"title":202,"path":203,"stem":204},{"title":208,"path":209,"stem":210},"Organisations","\u002Fdocs\u002Fconcepts\u002Forganisations","1.docs\u002F7.concepts\u002F2.organisations",{"title":212,"path":213,"stem":214},"Products","\u002Fdocs\u002Fconcepts\u002Fproducts","1.docs\u002F7.concepts\u002F3.products",{"title":64,"path":216,"stem":217},"\u002Fdocs\u002Fconcepts\u002Fdevices","1.docs\u002F7.concepts\u002F5.devices",{"title":219,"path":220,"stem":221},"Entitlements","\u002Fdocs\u002Fconcepts\u002Fentitlements","1.docs\u002F7.concepts\u002F6.entitlements",{"title":223,"path":224,"stem":225},"Marketplace Model","\u002Fdocs\u002Fconcepts\u002Fmarketplace-model","1.docs\u002F7.concepts\u002F7.marketplace-model","i-lucide-map",{"title":228,"path":229,"stem":230,"children":231,"icon":262},"IAM & Access","\u002Fdocs\u002Fiam-and-access","1.docs\u002F8.iam-and-access\u002F1.index",[232,234,238,242,246,250,254,258],{"title":233,"path":229,"stem":230},"IAM and Access",{"title":235,"path":236,"stem":237},"Users, Groups, and Roles","\u002Fdocs\u002Fiam-and-access\u002Fusers-groups-and-roles","1.docs\u002F8.iam-and-access\u002F2.users-groups-and-roles",{"title":239,"path":240,"stem":241},"Permissions","\u002Fdocs\u002Fiam-and-access\u002Fpermissions","1.docs\u002F8.iam-and-access\u002F3.permissions",{"title":243,"path":244,"stem":245},"Service Accounts","\u002Fdocs\u002Fiam-and-access\u002Fservice-accounts","1.docs\u002F8.iam-and-access\u002F4.service-accounts",{"title":247,"path":248,"stem":249},"API Tokens","\u002Fdocs\u002Fiam-and-access\u002Fapi-tokens","1.docs\u002F8.iam-and-access\u002F5.api-tokens",{"title":251,"path":252,"stem":253},"Token Exchange","\u002Fdocs\u002Fiam-and-access\u002Ftoken-exchange","1.docs\u002F8.iam-and-access\u002F6.token-exchange",{"title":255,"path":256,"stem":257},"Rotate and Revoke Credentials","\u002Fdocs\u002Fiam-and-access\u002Frotate-and-revoke-credentials","1.docs\u002F8.iam-and-access\u002F7.rotate-and-revoke-credentials",{"title":259,"path":260,"stem":261},"Troubleshooting Auth","\u002Fdocs\u002Fiam-and-access\u002Ftroubleshooting-auth","1.docs\u002F8.iam-and-access\u002F8.troubleshooting-auth","i-lucide-shield-check",false,{"title":265,"path":266,"stem":267,"children":268,"icon":314},"Guides","\u002Fguides","2.guides\u002F1.index",[269,270,282,293,304],{"title":265,"path":266,"stem":267},{"title":271,"path":272,"stem":273,"children":274,"icon":281},"Access","\u002Fguides\u002Faccess","2.guides\u002Faccess\u002F1.index",[275,277],{"title":276,"path":272,"stem":273},"Access Guides",{"title":278,"path":279,"stem":280},"Create an API Token","\u002Fguides\u002Faccess\u002Fcreate-an-api-token","2.guides\u002Faccess\u002F2.create-an-api-token","i-lucide-key-round",{"title":283,"path":284,"stem":285,"children":286,"icon":118},"Data","\u002Fguides\u002Fdata","2.guides\u002Fdata\u002F1.index",[287,289],{"title":288,"path":284,"stem":285},"Data Guides",{"title":290,"path":291,"stem":292},"Stream IoT Data to Infuse DB","\u002Fguides\u002Fdata\u002Fstream-iot-data-to-infuse-db","2.guides\u002Fdata\u002F2.stream-iot-data-to-infuse-db",{"title":294,"path":295,"stem":296,"children":297,"icon":95},"IoT","\u002Fguides\u002Fiot","2.guides\u002Fiot\u002F1.index",[298,300],{"title":299,"path":295,"stem":296},"IoT Guides",{"title":301,"path":302,"stem":303},"Connect an IoT Device","\u002Fguides\u002Fiot\u002Fconnect-a-device","2.guides\u002Fiot\u002F2.connect-a-device",{"title":120,"path":305,"stem":306,"children":307,"icon":193},"\u002Fguides\u002Fmarketplace","2.guides\u002Fmarketplace\u002F1.index",[308,310],{"title":309,"path":305,"stem":306},"Marketplace Guides",{"title":311,"path":312,"stem":313},"Build a Marketplace Storefront","\u002Fguides\u002Fmarketplace\u002Fbuild-a-storefront","2.guides\u002Fmarketplace\u002F2.build-a-storefront","i-lucide-route",{"title":316,"path":317,"stem":318,"children":319,"icon":341},"API Reference","\u002Fapi-reference","3.api-reference\u002F1.index",[320,321,325,329,333,337],{"title":316,"path":317,"stem":318},{"title":322,"path":323,"stem":324},"Admin API","\u002Fapi-reference\u002Fcloud","3.api-reference\u002F2.cloud",{"title":326,"path":327,"stem":328},"Marketplace API","\u002Fapi-reference\u002Fmarketplace","3.api-reference\u002F3.marketplace",{"title":330,"path":331,"stem":332},"IAM API","\u002Fapi-reference\u002Fiam","3.api-reference\u002F4.iam",{"title":334,"path":335,"stem":336},"Infuse IoT API","\u002Fapi-reference\u002Fiot","3.api-reference\u002F5.iot",{"title":338,"path":339,"stem":340},"Infuse DB API","\u002Fapi-reference\u002Fdb","3.api-reference\u002F6.db","i-lucide-braces",{"title":343,"path":344,"stem":345,"children":346,"icon":360},"Resources","\u002Fresources","4.resources\u002F1.index",[347,348,352,356],{"title":343,"path":344,"stem":345},{"title":349,"path":350,"stem":351},"SDKs","\u002Fresources\u002Fsdks","4.resources\u002F2.sdks",{"title":353,"path":354,"stem":355},"OpenAPI Specs","\u002Fresources\u002Fopenapi-specs","4.resources\u002F3.openapi-specs",{"title":357,"path":358,"stem":359},"Examples","\u002Fresources\u002Fexamples","4.resources\u002F4.examples","i-lucide-folder-open",{"id":362,"title":177,"body":363,"description":1591,"extension":1592,"links":1593,"meta":1594,"navigation":837,"path":178,"seo":1595,"stem":179,"__hash__":1596},"docs\u002F1.docs\u002F5.marketplace\u002Fproviders\u002F4.build-a-storefront.md",{"type":364,"value":365,"toc":1574},"minimark",[366,370,373,378,381,425,432,435,439,442,448,454,458,461,495,498,502,505,598,604,608,611,634,637,716,719,733,736,740,743,746,767,770,784,787,805,809,812,881,884,951,954,1029,1037,1041,1044,1053,1057,1060,1074,1077,1118,1121,1124,1138,1141,1155,1158,1162,1165,1168,1180,1183,1218,1221,1225,1228,1242,1256,1259,1263,1266,1344,1348,1402,1406,1545,1549,1570],[367,368,369],"p",{},"Use the Infuse Cloud dashboard to create and manage listings first. Build a custom storefront only when you need to sell marketplace products from your own website or application.",[367,371,372],{},"Your storefront owns the customer experience: product browsing, customer authentication, device selection, post-checkout status, and install actions. Infuse remains the source of truth for published products, checkout sessions, purchase entitlements, release compatibility, and install access.",[374,375,377],"h2",{"id":376},"dashboard-setup","Dashboard Setup",[367,379,380],{},"Before integrating a custom storefront:",[382,383,384,392,395,400,406,409,415,420],"ol",{},[385,386,387,388,391],"li",{},"Open ",[389,390,120],"strong",{},".",[385,393,394],{},"Select the marketplace instance.",[385,396,387,397,391],{},[389,398,399],{},"Provider",[385,401,387,402,405],{},[389,403,404],{},"Discover"," and choose products to sell.",[385,407,408],{},"Create listings for those products.",[385,410,387,411,414],{},[389,412,413],{},"Listings"," and confirm each listing is active.",[385,416,387,417,419],{},[389,418,185],{}," to understand how completed purchases are reviewed.",[385,421,387,422,424],{},[389,423,64],{}," to understand device state and install actions.",[367,426,427,428,431],{},"The dashboard is the operational control surface for products, listings, purchases, and installs. ",[389,429,430],{},"Store Preview"," can be useful later as a manual example of listing selection and checkout session creation, but a production storefront should use your own backend boundary so provider credentials never run in the customer browser.",[367,433,434],{},"At a high level, your backend reads products from Infuse, creates a checkout session for the selected products and devices, redirects the customer to Stripe Checkout, then reads purchase state from Infuse after Stripe confirms payment.",[374,436,438],{"id":437},"how-the-integration-works","How the Integration Works",[367,440,441],{},"Your storefront should call Infuse APIs from your server. Do not call Infuse Marketplace APIs directly from customer browsers with provider credentials.",[367,443,444,445,391],{},"For manual dashboard verification of checkout states, see ",[446,447,181],"a",{"href":182},[449,450],"mermaid",{":config":451,":toolbar":452,"code":453},"config","{\"title\":\"Storefront checkout flow\"}","---%0Atoolbar%3A%0A%20%20title%3A%20Storefront%20checkout%20flow%0A---%0AsequenceDiagram%0A%20%20%20%20participant%20Customer%20as%20End%20customer%0A%20%20%20%20participant%20Frontend%20as%20Your%20storefront%20frontend%0A%20%20%20%20participant%20Backend%20as%20Your%20backend%0A%20%20%20%20participant%20Infuse%20as%20Infuse%20Marketplace%20API%0A%20%20%20%20participant%20Stripe%20as%20Stripe%20Checkout%0A%0A%20%20%20%20Customer-%3E%3EFrontend%3A%20Opens%20storefront%0A%20%20%20%20Frontend-%3E%3EBackend%3A%20Request%20catalogue%0A%20%20%20%20Backend-%3E%3EInfuse%3A%20List%20published%20marketplace%20items%0A%20%20%20%20Infuse--%3E%3EBackend%3A%20Items%2C%20prices%2C%20images%2C%20metadata%0A%20%20%20%20Backend--%3E%3EFrontend%3A%20Storefront%20catalogue%20data%0A%20%20%20%20Frontend--%3E%3ECustomer%3A%20Show%20products%0A%20%20%20%20Customer-%3E%3EFrontend%3A%20Select%20products%20and%20devices%0A%20%20%20%20Frontend-%3E%3EBackend%3A%20Start%20checkout%0A%20%20%20%20Backend-%3E%3EInfuse%3A%20Create%20checkout%20session%0A%20%20%20%20Infuse--%3E%3EBackend%3A%20checkoutSessionId%20and%20checkoutUrl%0A%20%20%20%20Backend--%3E%3EFrontend%3A%20checkoutUrl%0A%20%20%20%20Frontend--%3E%3ECustomer%3A%20Redirect%20to%20Stripe%20Checkout%0A%20%20%20%20Customer-%3E%3EStripe%3A%20Complete%20or%20cancel%20payment%0A%20%20%20%20Stripe--%3E%3ECustomer%3A%20Redirect%20to%20your%20success%20or%20cancel%20URL%0A%20%20%20%20Infuse-%3E%3EInfuse%3A%20Validate%20payment%20and%20create%20entitlements%0A%20%20%20%20Frontend-%3E%3EBackend%3A%20Load%20purchase%20status%0A%20%20%20%20Backend-%3E%3EInfuse%3A%20Read%20provider%20purchases%0A%20%20%20%20Infuse--%3E%3EBackend%3A%20Purchase%20and%20entitlement%20state%0A%20%20%20%20Backend--%3E%3EFrontend%3A%20Confirmation%2C%20pending%2C%20or%20error%20state",[374,455,457],{"id":456},"before-you-start","Before You Start",[367,459,460],{},"You need:",[462,463,464,467,470,473,481,492],"ul",{},[385,465,466],{},"An Infuse organisation with access to the marketplace instance you want to sell from.",[385,468,469],{},"Server-side API credentials for that organisation.",[385,471,472],{},"Permissions for published catalogue reads, checkout session creation, provider devices, provider purchases, and install access if your site will trigger installs.",[385,474,475,476,480],{},"The ",[477,478,479],"code",{},"marketplaceInstanceId"," for the marketplace instance your storefront should display.",[385,482,483,484,487,488,491],{},"Absolute ",[477,485,486],{},"successUrl"," and ",[477,489,490],{},"cancelUrl"," routes hosted by your site.",[385,493,494],{},"A way to map signed-in customers in your system to one or more Infuse device IDs.",[367,496,497],{},"Keep API credentials on your backend. Your frontend should receive only the product, device, checkout, and purchase data needed to render the customer experience.",[374,499,501],{"id":500},"recommended-backend-boundary","Recommended Backend Boundary",[367,503,504],{},"Expose your own customer-facing routes and keep Infuse authentication behind them. For example:",[506,507,508,521],"table",{},[509,510,511],"thead",{},[512,513,514,518],"tr",{},[515,516,517],"th",{},"Your route",[515,519,520],{},"Infuse API used by your backend",[522,523,524,537,549,562,574,586],"tbody",{},[512,525,526,532],{},[527,528,529],"td",{},[477,530,531],{},"GET \u002Fstorefront\u002Fproducts",[527,533,534],{},[477,535,536],{},"GET \u002Fmarketplace\u002Fmarketplace-items",[512,538,539,544],{},[527,540,541],{},[477,542,543],{},"GET \u002Fstorefront\u002Fproducts\u002F:id",[527,545,546],{},[477,547,548],{},"GET \u002Fmarketplace\u002Fmarketplace-items\u002F{id}",[512,550,551,556],{},[527,552,553],{},[477,554,555],{},"GET \u002Fstorefront\u002Fdevices",[527,557,558,559],{},"Your device system or ",[477,560,561],{},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices",[512,563,564,569],{},[527,565,566],{},[477,567,568],{},"POST \u002Fstorefront\u002Fcheckout",[527,570,571],{},[477,572,573],{},"POST \u002Fmarketplace\u002Fcheckout\u002Fsession",[512,575,576,581],{},[527,577,578],{},[477,579,580],{},"GET \u002Fstorefront\u002Fpurchases",[527,582,583],{},[477,584,585],{},"GET \u002Fmarketplace\u002Fproviders\u002Fpurchases",[512,587,588,593],{},[527,589,590],{},[477,591,592],{},"POST \u002Fstorefront\u002Fdevices\u002F:deviceId\u002Fproducts\u002F:itemId\u002Finstall",[527,594,595],{},[477,596,597],{},"POST \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Finstall",[367,599,600,601,391],{},"This boundary lets you enforce your own customer authentication, hide provider credentials, validate selected devices belong to the signed-in customer, and store local audit records such as the returned ",[477,602,603],{},"checkoutSessionId",[374,605,607],{"id":606},"_1-load-published-products","1. Load Published Products",[367,609,610],{},"Use the public marketplace item APIs to build your catalogue and product detail pages.",[612,613,618],"pre",{"className":614,"code":615,"language":616,"meta":617,"style":617},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","GET \u002Fmarketplace\u002Fmarketplace-items?marketplaceInstanceId={marketplaceInstanceId}&page=1&pageSize=24\nAuthorization: Bearer {provider_access_token}\n","http","",[477,619,620,628],{"__ignoreMap":617},[621,622,625],"span",{"class":623,"line":624},"line",1,[621,626,627],{},"GET \u002Fmarketplace\u002Fmarketplace-items?marketplaceInstanceId={marketplaceInstanceId}&page=1&pageSize=24\n",[621,629,631],{"class":623,"line":630},2,[621,632,633],{},"Authorization: Bearer {provider_access_token}\n",[367,635,636],{},"Common query fields:",[506,638,639,653],{},[509,640,641],{},[512,642,643,646,650],{},[515,644,645],{},"Field",[515,647,649],{"align":648},"right","Required",[515,651,652],{},"Use",[522,654,655,667,680,692,704],{},[512,656,657,661,664],{},[527,658,659],{},[477,660,479],{},[527,662,663],{"align":648},"Yes",[527,665,666],{},"Selects the marketplace instance to display.",[512,668,669,674,677],{},[527,670,671],{},[477,672,673],{},"page",[527,675,676],{"align":648},"No",[527,678,679],{},"Page number for pagination.",[512,681,682,687,689],{},[527,683,684],{},[477,685,686],{},"pageSize",[527,688,676],{"align":648},[527,690,691],{},"Number of items per page.",[512,693,694,699,701],{},[527,695,696],{},[477,697,698],{},"search",[527,700,676],{"align":648},[527,702,703],{},"Text search for storefront search boxes.",[512,705,706,711,713],{},[527,707,708],{},[477,709,710],{},"type",[527,712,676],{"align":648},[527,714,715],{},"Filters by marketplace item type when your UI separates product categories.",[367,717,718],{},"For a product detail page, fetch the current listed item before showing price or allowing checkout.",[612,720,722],{"className":614,"code":721,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fmarketplace-items\u002F{id}?marketplaceInstanceId={marketplaceInstanceId}\nAuthorization: Bearer {provider_access_token}\n",[477,723,724,729],{"__ignoreMap":617},[621,725,726],{"class":623,"line":624},[621,727,728],{},"GET \u002Fmarketplace\u002Fmarketplace-items\u002F{id}?marketplaceInstanceId={marketplaceInstanceId}\n",[621,730,731],{"class":623,"line":630},[621,732,633],{},[367,734,735],{},"Use Infuse as the source of truth for marketplace item IDs, listing visibility, price, currency, version metadata, icons, images, and developer-provided descriptions. If you cache catalogue data, refresh it before checkout so you do not sell an item that has changed price or visibility.",[374,737,739],{"id":738},"_2-resolve-customer-devices","2. Resolve Customer Devices",[367,741,742],{},"Checkout sessions are created for one or more target devices. Your storefront must know which devices the customer can buy for before creating checkout.",[367,744,745],{},"Most providers resolve this through their own account system:",[382,747,748,751,754,760],{},[385,749,750],{},"Authenticate the customer in your site.",[385,752,753],{},"Load the customer-owned devices from your system.",[385,755,756,757,391],{},"Map each selectable device to the corresponding Infuse ",[477,758,759],{},"deviceId",[385,761,762,763,766],{},"Send only valid selected ",[477,764,765],{},"deviceIds"," to your checkout route.",[367,768,769],{},"If the devices are registered in your provider Infuse IoT organisation, your backend can also read provider devices from Infuse:",[612,771,773],{"className":614,"code":772,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices?limit=50&offset=0\nAuthorization: Bearer {provider_access_token}\n",[477,774,775,780],{"__ignoreMap":617},[621,776,777],{"class":623,"line":624},[621,778,779],{},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices?limit=50&offset=0\n",[621,781,782],{"class":623,"line":630},[621,783,633],{},[367,785,786],{},"Before checkout, validate that you have:",[462,788,789,794,799,802],{},[385,790,791,792,391],{},"At least one selected ",[477,793,759],{},[385,795,791,796,391],{},[477,797,798],{},"marketplaceItemId",[385,800,801],{},"A signed-in customer who is allowed to buy for those devices.",[385,803,804],{},"Current product data from Infuse for the selected marketplace items.",[374,806,808],{"id":807},"_3-create-a-checkout-session","3. Create a Checkout Session",[367,810,811],{},"When the customer confirms their basket, create an Infuse checkout session from your backend.",[612,813,815],{"className":614,"code":814,"language":616,"meta":617,"style":617},"POST \u002Fmarketplace\u002Fcheckout\u002Fsession\nAuthorization: Bearer {provider_access_token}\nContent-Type: application\u002Fjson\n\n{\n  \"deviceIds\": [\"device_123\", \"device_456\"],\n  \"marketplaceItemIds\": [\"mi_abc\"],\n  \"successUrl\": \"https:\u002F\u002Fexample.com\u002Fmarketplace\u002Fcheckout\u002Fsuccess\",\n  \"cancelUrl\": \"https:\u002F\u002Fexample.com\u002Fmarketplace\u002Fcheckout\u002Fcancel\",\n  \"livemode\": true\n}\n",[477,816,817,822,826,832,839,845,851,857,863,869,875],{"__ignoreMap":617},[621,818,819],{"class":623,"line":624},[621,820,821],{},"POST \u002Fmarketplace\u002Fcheckout\u002Fsession\n",[621,823,824],{"class":623,"line":630},[621,825,633],{},[621,827,829],{"class":623,"line":828},3,[621,830,831],{},"Content-Type: application\u002Fjson\n",[621,833,835],{"class":623,"line":834},4,[621,836,838],{"emptyLinePlaceholder":837},true,"\n",[621,840,842],{"class":623,"line":841},5,[621,843,844],{},"{\n",[621,846,848],{"class":623,"line":847},6,[621,849,850],{},"  \"deviceIds\": [\"device_123\", \"device_456\"],\n",[621,852,854],{"class":623,"line":853},7,[621,855,856],{},"  \"marketplaceItemIds\": [\"mi_abc\"],\n",[621,858,860],{"class":623,"line":859},8,[621,861,862],{},"  \"successUrl\": \"https:\u002F\u002Fexample.com\u002Fmarketplace\u002Fcheckout\u002Fsuccess\",\n",[621,864,866],{"class":623,"line":865},9,[621,867,868],{},"  \"cancelUrl\": \"https:\u002F\u002Fexample.com\u002Fmarketplace\u002Fcheckout\u002Fcancel\",\n",[621,870,872],{"class":623,"line":871},10,[621,873,874],{},"  \"livemode\": true\n",[621,876,878],{"class":623,"line":877},11,[621,879,880],{},"}\n",[367,882,883],{},"The request includes:",[506,885,886,894],{},[509,887,888],{},[512,889,890,892],{},[515,891,645],{},[515,893,652],{},[522,895,896,905,915,924,933],{},[512,897,898,902],{},[527,899,900],{},[477,901,765],{},[527,903,904],{},"Devices the purchase applies to.",[512,906,907,912],{},[527,908,909],{},[477,910,911],{},"marketplaceItemIds",[527,913,914],{},"Marketplace items selected by the customer.",[512,916,917,921],{},[527,918,919],{},[477,920,486],{},[527,922,923],{},"Absolute URL Stripe redirects to after successful checkout.",[512,925,926,930],{},[527,927,928],{},[477,929,490],{},[527,931,932],{},"Absolute URL Stripe redirects to if the customer cancels.",[512,934,935,940],{},[527,936,937],{},[477,938,939],{},"livemode",[527,941,942,943,946,947,950],{},"Use ",[477,944,945],{},"true"," for production transactions and ",[477,948,949],{},"false"," for test or preview purchases where available.",[367,952,953],{},"The response includes:",[612,955,959],{"className":956,"code":957,"language":958,"meta":617,"style":617},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"checkoutSessionId\": \"mcs_123\",\n  \"checkoutUrl\": \"https:\u002F\u002Fcheckout.stripe.com\u002Fc\u002Fsession...\",\n  \"livemode\": true\n}\n","json",[477,960,961,966,992,1012,1025],{"__ignoreMap":617},[621,962,963],{"class":623,"line":624},[621,964,844],{"class":965},"sMK4o",[621,967,968,971,974,977,980,983,987,989],{"class":623,"line":630},[621,969,970],{"class":965},"  \"",[621,972,603],{"class":973},"spNyl",[621,975,976],{"class":965},"\"",[621,978,979],{"class":965},":",[621,981,982],{"class":965}," \"",[621,984,986],{"class":985},"sfazB","mcs_123",[621,988,976],{"class":965},[621,990,991],{"class":965},",\n",[621,993,994,996,999,1001,1003,1005,1008,1010],{"class":623,"line":828},[621,995,970],{"class":965},[621,997,998],{"class":973},"checkoutUrl",[621,1000,976],{"class":965},[621,1002,979],{"class":965},[621,1004,982],{"class":965},[621,1006,1007],{"class":985},"https:\u002F\u002Fcheckout.stripe.com\u002Fc\u002Fsession...",[621,1009,976],{"class":965},[621,1011,991],{"class":965},[621,1013,1014,1016,1018,1020,1022],{"class":623,"line":834},[621,1015,970],{"class":965},[621,1017,939],{"class":973},[621,1019,976],{"class":965},[621,1021,979],{"class":965},[621,1023,1024],{"class":965}," true\n",[621,1026,1027],{"class":623,"line":841},[621,1028,880],{"class":965},[367,1030,1031,1032,1034,1035,391],{},"Store the ",[477,1033,603],{}," with your local order, customer action, or audit record if you need reconciliation. Then redirect the customer to ",[477,1036,998],{},[374,1038,1040],{"id":1039},"_4-redirect-to-stripe-checkout","4. Redirect to Stripe Checkout",[367,1042,1043],{},"Infuse creates the Stripe Checkout session. Your integration should not create Stripe products, prices, line items, or fulfillment records directly for Marketplace purchases.",[367,1045,1046,1047,1049,1050,1052],{},"After the customer pays or cancels, Stripe redirects the browser to the ",[477,1048,486],{}," or ",[477,1051,490],{}," you supplied. Treat this redirect as a browser navigation event, not proof that the purchase is active. Infuse validates successful payment, records purchase state, and creates the relevant entitlements.",[374,1054,1056],{"id":1055},"_5-read-purchase-state","5. Read Purchase State",[367,1058,1059],{},"After the customer returns to your site, read purchase state from Infuse through your backend.",[612,1061,1063],{"className":614,"code":1062,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fproviders\u002Fpurchases?deviceId={deviceId}&livemode=true&page=1&pageSize=20\nAuthorization: Bearer {provider_access_token}\n",[477,1064,1065,1070],{"__ignoreMap":617},[621,1066,1067],{"class":623,"line":624},[621,1068,1069],{},"GET \u002Fmarketplace\u002Fproviders\u002Fpurchases?deviceId={deviceId}&livemode=true&page=1&pageSize=20\n",[621,1071,1072],{"class":623,"line":630},[621,1073,633],{},[367,1075,1076],{},"Useful query fields:",[506,1078,1079,1087],{},[509,1080,1081],{},[512,1082,1083,1085],{},[515,1084,645],{},[515,1086,652],{},[522,1088,1089,1098,1107],{},[512,1090,1091,1095],{},[527,1092,1093],{},[477,1094,759],{},[527,1096,1097],{},"Limits results to one device.",[512,1099,1100,1104],{},[527,1101,1102],{},[477,1103,939],{},[527,1105,1106],{},"Separates production purchases from test purchases.",[512,1108,1109,1115],{},[527,1110,1111,487,1113],{},[477,1112,673],{},[477,1114,686],{},[527,1116,1117],{},"Paginates purchase history.",[367,1119,1120],{},"Use this endpoint to drive \"Your purchases\", checkout confirmation, pending payment, and entitlement-aware UI states.",[367,1122,1123],{},"For a device detail page, load the device and purchase context:",[612,1125,1127],{"className":614,"code":1126,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fdetails\nAuthorization: Bearer {provider_access_token}\n",[477,1128,1129,1134],{"__ignoreMap":617},[621,1130,1131],{"class":623,"line":624},[621,1132,1133],{},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fdetails\n",[621,1135,1136],{"class":623,"line":630},[621,1137,633],{},[367,1139,1140],{},"For release and compatibility information for a purchased product on a device:",[612,1142,1144],{"className":614,"code":1143,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Freleases\nAuthorization: Bearer {provider_access_token}\n",[477,1145,1146,1151],{"__ignoreMap":617},[621,1147,1148],{"class":623,"line":624},[621,1149,1150],{},"GET \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Freleases\n",[621,1152,1153],{"class":623,"line":630},[621,1154,633],{},[367,1156,1157],{},"Your success page should be able to show a pending state while Infuse confirms the purchase. Poll or refresh purchase state from your backend until the purchase is active, failed, or requires customer support.",[374,1159,1161],{"id":1160},"_6-queue-installs","6. Queue Installs",[367,1163,1164],{},"Payment and installation are separate steps. A successful checkout grants purchase entitlements. Your storefront decides whether to install immediately after purchase or present install controls later.",[367,1166,1167],{},"First, read available releases for the purchased item and device:",[612,1169,1170],{"className":614,"code":1143,"language":616,"meta":617,"style":617},[477,1171,1172,1176],{"__ignoreMap":617},[621,1173,1174],{"class":623,"line":624},[621,1175,1150],{},[621,1177,1178],{"class":623,"line":630},[621,1179,633],{},[367,1181,1182],{},"Then queue an install for the selected version:",[612,1184,1186],{"className":614,"code":1185,"language":616,"meta":617,"style":617},"POST \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Finstall\nAuthorization: Bearer {provider_access_token}\nContent-Type: application\u002Fjson\n\n{\n  \"version\": \"1.4.2\"\n}\n",[477,1187,1188,1193,1197,1201,1205,1209,1214],{"__ignoreMap":617},[621,1189,1190],{"class":623,"line":624},[621,1191,1192],{},"POST \u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Finstall\n",[621,1194,1195],{"class":623,"line":630},[621,1196,633],{},[621,1198,1199],{"class":623,"line":828},[621,1200,831],{},[621,1202,1203],{"class":623,"line":834},[621,1204,838],{"emptyLinePlaceholder":837},[621,1206,1207],{"class":623,"line":841},[621,1208,844],{},[621,1210,1211],{"class":623,"line":847},[621,1212,1213],{},"  \"version\": \"1.4.2\"\n",[621,1215,1216],{"class":623,"line":853},[621,1217,880],{},[367,1219,1220],{},"Only show install actions for active purchases and compatible releases. If a release is not compatible with the target device, keep the action disabled and explain the device or version requirement in your UI.",[374,1222,1224],{"id":1223},"provider-listing-apis","Provider Listing APIs",[367,1226,1227],{},"Provider listing APIs are useful for provider administration screens, but customer-facing storefront pages should normally read from the public marketplace item APIs so the storefront reflects what is currently published and visible to customers.",[612,1229,1231],{"className":614,"code":1230,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fproviders\u002Flistings\nAuthorization: Bearer {provider_access_token}\n",[477,1232,1233,1238],{"__ignoreMap":617},[621,1234,1235],{"class":623,"line":624},[621,1236,1237],{},"GET \u002Fmarketplace\u002Fproviders\u002Flistings\n",[621,1239,1240],{"class":623,"line":630},[621,1241,633],{},[612,1243,1245],{"className":614,"code":1244,"language":616,"meta":617,"style":617},"GET \u002Fmarketplace\u002Fproviders\u002Flistings\u002F{marketplaceId}\nAuthorization: Bearer {provider_access_token}\n",[477,1246,1247,1252],{"__ignoreMap":617},[621,1248,1249],{"class":623,"line":624},[621,1250,1251],{},"GET \u002Fmarketplace\u002Fproviders\u002Flistings\u002F{marketplaceId}\n",[621,1253,1254],{"class":623,"line":630},[621,1255,633],{},[367,1257,1258],{},"Use these APIs when you need to inspect or manage the products your provider organisation lists. Do not use them as the only checkout-time availability check.",[374,1260,1262],{"id":1261},"customer-experience-states","Customer Experience States",[367,1264,1265],{},"Build explicit states into your storefront:",[506,1267,1268,1278],{},[509,1269,1270],{},[512,1271,1272,1275],{},[515,1273,1274],{},"State",[515,1276,1277],{},"What to show",[522,1279,1280,1288,1296,1304,1312,1320,1328,1336],{},[512,1281,1282,1285],{},[527,1283,1284],{},"Catalogue loading",[527,1286,1287],{},"Products are being loaded from your backend.",[512,1289,1290,1293],{},[527,1291,1292],{},"Product unavailable",[527,1294,1295],{},"The item is no longer published, listed, or valid for the current marketplace instance.",[512,1297,1298,1301],{},[527,1299,1300],{},"No eligible devices",[527,1302,1303],{},"The customer must register or select a compatible device before checkout.",[512,1305,1306,1309],{},[527,1307,1308],{},"Checkout redirecting",[527,1310,1311],{},"The session was created and the customer is being sent to Stripe Checkout.",[512,1313,1314,1317],{},[527,1315,1316],{},"Checkout cancelled",[527,1318,1319],{},"The customer returned from the cancel URL. Keep the basket editable.",[512,1321,1322,1325],{},[527,1323,1324],{},"Purchase pending",[527,1326,1327],{},"The customer returned from success, but Infuse has not finished confirming purchase state.",[512,1329,1330,1333],{},[527,1331,1332],{},"Purchase active",[527,1334,1335],{},"The entitlement exists and install or management actions can be shown.",[512,1337,1338,1341],{},[527,1339,1340],{},"Install queued",[527,1342,1343],{},"An install request has been accepted for the selected device and version.",[374,1345,1347],{"id":1346},"implementation-checklist","Implementation Checklist",[462,1349,1350,1353,1359,1362,1365,1373,1379,1385,1390,1396,1399],{},[385,1351,1352],{},"Keep provider API credentials server-side.",[385,1354,1355,1356,1358],{},"Build around Infuse ",[477,1357,911],{},"; avoid a separate product ID system unless it maps directly back to Infuse IDs.",[385,1360,1361],{},"Validate selected devices against your signed-in customer before creating checkout.",[385,1363,1364],{},"Refresh product details before checkout so price, currency, and visibility are current.",[385,1366,1367,1368,487,1370,1372],{},"Use absolute, stable ",[477,1369,486],{},[477,1371,490],{}," values.",[385,1374,1375,1376,1378],{},"Store ",[477,1377,603],{}," if you need local order tracking or support diagnostics.",[385,1380,1381,1382,1384],{},"Treat ",[477,1383,486],{}," as a return route, not fulfillment confirmation.",[385,1386,1387,1388,391],{},"Read purchase state from ",[477,1389,585],{},[385,1391,942,1392,1395],{},[477,1393,1394],{},"livemode: true"," only for real customer transactions.",[385,1397,1398],{},"Trigger installs only for active purchases and compatible releases.",[385,1400,1401],{},"Do not call Stripe directly to fulfill Marketplace purchases.",[374,1403,1405],{"id":1404},"endpoint-summary","Endpoint Summary",[506,1407,1408,1421],{},[509,1409,1410],{},[512,1411,1412,1415,1418],{},[515,1413,1414],{},"Purpose",[515,1416,1417],{"align":648},"Method",[515,1419,1420],{},"Endpoint",[522,1422,1423,1436,1448,1460,1473,1485,1497,1509,1521,1533],{},[512,1424,1425,1428,1431],{},[527,1426,1427],{},"List published storefront products",[527,1429,1430],{"align":648},"GET",[527,1432,1433],{},[477,1434,1435],{},"\u002Fmarketplace\u002Fmarketplace-items",[512,1437,1438,1441,1443],{},[527,1439,1440],{},"Get published product detail",[527,1442,1430],{"align":648},[527,1444,1445],{},[477,1446,1447],{},"\u002Fmarketplace\u002Fmarketplace-items\u002F{id}",[512,1449,1450,1453,1455],{},[527,1451,1452],{},"List provider devices",[527,1454,1430],{"align":648},[527,1456,1457],{},[477,1458,1459],{},"\u002Fmarketplace\u002Fproviders\u002Fdevices",[512,1461,1462,1465,1468],{},[527,1463,1464],{},"Create checkout session",[527,1466,1467],{"align":648},"POST",[527,1469,1470],{},[477,1471,1472],{},"\u002Fmarketplace\u002Fcheckout\u002Fsession",[512,1474,1475,1478,1480],{},[527,1476,1477],{},"List provider purchases",[527,1479,1430],{"align":648},[527,1481,1482],{},[477,1483,1484],{},"\u002Fmarketplace\u002Fproviders\u002Fpurchases",[512,1486,1487,1490,1492],{},[527,1488,1489],{},"Get provider device details",[527,1491,1430],{"align":648},[527,1493,1494],{},[477,1495,1496],{},"\u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fdetails",[512,1498,1499,1502,1504],{},[527,1500,1501],{},"Get purchased product releases",[527,1503,1430],{"align":648},[527,1505,1506],{},[477,1507,1508],{},"\u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Freleases",[512,1510,1511,1514,1516],{},[527,1512,1513],{},"Queue purchased product install",[527,1515,1467],{"align":648},[527,1517,1518],{},[477,1519,1520],{},"\u002Fmarketplace\u002Fproviders\u002Fdevices\u002F{deviceId}\u002Fpurchases\u002F{marketplaceItemId}\u002Finstall",[512,1522,1523,1526,1528],{},[527,1524,1525],{},"List provider listings",[527,1527,1430],{"align":648},[527,1529,1530],{},[477,1531,1532],{},"\u002Fmarketplace\u002Fproviders\u002Flistings",[512,1534,1535,1538,1540],{},[527,1536,1537],{},"Get provider listing",[527,1539,1430],{"align":648},[527,1541,1542],{},[477,1543,1544],{},"\u002Fmarketplace\u002Fproviders\u002Flistings\u002F{marketplaceId}",[374,1546,1548],{"id":1547},"related-documentation","Related Documentation",[462,1550,1551,1556,1560,1565],{},[385,1552,1553],{},[446,1554,1555],{"href":182},"Checkout flow",[385,1557,1558],{},[446,1559,185],{"href":186},[385,1561,1562],{},[446,1563,1564],{"href":190},"Install purchased products",[385,1566,1567],{},[446,1568,1569],{"href":327},"Marketplace API reference",[1571,1572,1573],"style",{},"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);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":617,"searchDepth":624,"depth":630,"links":1575},[1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590],{"id":376,"depth":630,"text":377},{"id":437,"depth":630,"text":438},{"id":456,"depth":630,"text":457},{"id":500,"depth":630,"text":501},{"id":606,"depth":630,"text":607},{"id":738,"depth":630,"text":739},{"id":807,"depth":630,"text":808},{"id":1039,"depth":630,"text":1040},{"id":1055,"depth":630,"text":1056},{"id":1160,"depth":630,"text":1161},{"id":1223,"depth":630,"text":1224},{"id":1261,"depth":630,"text":1262},{"id":1346,"depth":630,"text":1347},{"id":1404,"depth":630,"text":1405},{"id":1547,"depth":630,"text":1548},"Integrate Infuse Marketplace products, device selection, Stripe Checkout, purchases, and installs into your own customer site.","md",null,{},{"title":177,"description":1591},"D476t15awcfUj7Ej9PAAZInL8BHUGwrAj3Cbl_buhZM",[1598,1600],{"title":173,"path":174,"stem":175,"description":1599,"children":-1},"Create, update, pause, and review provider marketplace listings.",{"title":181,"path":182,"stem":183,"description":1601,"children":-1},"Understand marketplace checkout sessions and Stripe redirects.",1779344633186]