{ "opencollection": "1.0.0", "info": { "name": "ZeroSettle IAP Cancel Flow Products API", "version": "1.0.0" }, "request": { "auth": { "type": "apikey", "key": "X-ZeroSettle-Key", "value": "{{X-ZeroSettle-Key}}", "placement": "header" } }, "items": [ { "info": { "name": "Products", "type": "folder" }, "items": [ { "info": { "name": "Get Products", "type": "http" }, "http": { "method": "GET", "url": "https://api.zerosettle.io/v1/iap/products", "params": [ { "name": "user_id", "value": "", "type": "query", "description": "The user's external ID. When provided, the response includes per-user `is_trial_eligible` on each product." }, { "name": "demo", "value": "", "type": "query", "description": "**Debug-only.** Surfaces a dashboard-configured campaign as if the requesting user were eligible for it, regardless of their real subscription state. Lets developers preview their tip UI without crafting a specific test account.\n\n- `migration` returns the configured `MigrationCampaign` (Switch & Save) on `config.migration` (and `config.offer` mirror with `flow_type=migration`).\n- `upgrade` returns the configured `UpgradeOfferConfig` (Upgrade & Save) on `config.offer` with `flow_type=upgrade`. Uses the first `upgrade_paths` entry as the preview source/target. `savings_percent` is `0` for demo previews — accurate proration requires a real billing cycle.\n- Honored **only** on test-mode publishable keys (`zs_pk_test_*`). Live keys silently ignore the flag. Impressions are NOT counted on demo requests. Any other value (including the legacy `true`) drops the bypass and the normal user-state resolver runs." } ] }, "docs": "Fetches the product catalog for your app, including web and StoreKit prices, checkout configuration, trial eligibility, and any active migration campaign. Pass `user_id` to get per-user trial eligibility." } ] } ], "bundled": true }