1 operation. Every schema and example on this page is generated from the platform contract.
Merchant add-ons catalogue for the Business app: every active add-on the store can see (tier + store-template gated) with whether the store has access, whether it is enabled or on trial, the Phase 3 billing columns (billing type, paid flag, price, setup fee), and a single server-decided purchase mode the buy UI branches on.
Store whose add-ons catalogue to return (also authorises the merchant).
upgrade_requiredincludedfree_togglepurchaseunavailablememberclubvipcurl -G "https://www.membber.com/api/v1/addons" \
-H "Authorization: Bearer $MEMBBER_TOKEN" \
--data-urlencode "store_id=6659c139-0000-4000-8000-d0c500000066"import { createMembberClient } from "@membber/sdk-ts";
const membber = createMembberClient({
getAccessToken: () => process.env.MEMBBER_TOKEN,
});
const { data, error } = await membber.raw.GET("/api/v1/addons", {
params: { query: { store_id: "6659c139-0000-4000-8000-d0c500000066" } },
});
if (error) {
// Typed error envelope: { error: { code, message, requestId } }
throw new Error(`${error.error.code}: ${error.error.message}`);
}
console.log(data);import MembberSwift
let client = MembberClient(
serverURL: MembberClient.productionServerURL,
tokenProvider: { session.accessToken }
)
let response = try await client.api.getStoreAddons(
query: .init(storeId: "6659c139-0000-4000-8000-d0c500000066")
).ok.body.json
print(response){
"addons": [
{
"id": "00000d1b-0000-4000-8000-d0c500000000",
"slug": "<slug>",
"name": "Example name",
"description": "Added at the front desk",
"category": "<category>",
"tier_required": "<tier_required>",
"icon_name": "<icon_name>",
"has_access": true,
"is_enabled": true,
"enabled_status": "<enabled_status>",
"enabled_since": "<enabled_since>",
"trial_ends_at": "<trial_ends_at>",
"billing_type": "<billing_type>",
"is_paid": true,
"price_pence": 1500,
"setup_fee_pence": 1500,
"purchase_mode": "upgrade_required"
}
],
"store_tier": "member"
}