adminAddonBreakdown
#Add-on usage breakdown (PlatformAdmin only).
Tenant configuration, branding, regional settings, and onboarding state.
Add-on usage breakdown (PlatformAdmin only).
List billing events for a tenant (PlatformAdmin only).
Arguments
Churn metrics over a given number of months (PlatformAdmin only).
Arguments
Default
1Get a single tenant by ID (PlatformAdmin only).
Arguments
List all active country exclusivity agreements. PlatformAdmin only.
Arguments
Default
{
"limit": 10,
"page": 1,
"after": null
}List every configured channel. PlatformAdmin only.
List all active region (city) exclusivity agreements. PlatformAdmin only.
Arguments
Default
{
"limit": 10,
"page": 1,
"after": null
}List tenant registrations with optional status filter (PlatformAdmin only).
Arguments
Default
{
"status": null,
"pagination": {
"limit": 10,
"page": 1,
"after": null
}
}List tenants with optional search and status filter (PlatformAdmin only).
Arguments
Default
{
"search": null,
"status": null,
"pagination": {
"limit": 10,
"page": 1,
"after": null
}
}Enumerate every event kind the platform can fire — the UI uses this to populate the subscription checkbox list so new events appear automatically after a migration.
Overall platform usage metrics (PlatformAdmin only).
Platform-wide revenue metrics (PlatformAdmin only).
List all subscriptions (PlatformAdmin only).
Arguments
Subscription breakdown by plan (PlatformAdmin only).
Subscription breakdown by status (PlatformAdmin only).
Operational activity snapshot for a specific tenant (PlatformAdmin only). Returns total account counts broken down by role, total order counts broken down by kind and lifecycle status, and a 30-day daily series of new accounts + orders so the admin console can visualize how an individual tenant is tracking through its setup.
Arguments
Get the current branding configuration for a specific tenant (PlatformAdmin only).
Arguments
Get onboarding status for any tenant (PlatformAdmin only).
Arguments
List the *active* operation cities for a tenant (PlatformAdmin only).
Backward-compatible shape: returns only ACTIVE rows so existing admin
console clients reading this field keep working. Use
adminTenantOperationCityList when the admin needs to see paused
(DISABLED_BY_PLAN / DISABLED_BY_TENANT) rows too.
Arguments
Full operation-city allow-list for a tenant — active and disabled
rows — for the platform-admin tenant detail UI (PlatformAdmin only).
Mirrors the tenant-side myOperationCityList so support staff see
the same picture the tenant sees, including cities that were
auto-shrunk on a plan downgrade.
Arguments
Admin view of any tenant's platform addons. Includes audit fields
(granted_by, granted_at, note) and revoked-but-retained rows
(enabled = false). PlatformAdmin only.
Arguments
Quick dashboard aggregation of tenant and registration counts (PlatformAdmin only).
Get a specific tenant's subscription (PlatformAdmin only).
Arguments
Read any tenant's plan-credit wallet (PlatformAdmin only).
Arguments
Recent ledger entries for a tenant wallet, newest first
(PlatformAdmin only). Capped at limit (default 50, max 200).
Arguments
Top tenants by transaction volume (PlatformAdmin only).
Arguments
Default
10Trial-to-paid conversion metrics (PlatformAdmin only).
Distribution of tenants across verticals (PlatformAdmin only).
Get the audit log for API key events. Can filter by specific API key ID or get all events for the tenant. Requires TenantAdmin role.
Arguments
List all API keys for the current tenant. By default, only active (non-revoked) keys are returned. Set includeRevoked to true to include revoked keys. Requires TenantAdmin role.
Arguments
Default
falseBrowse available plans (public, no auth required).
Get the current branding configuration. Returns the active branding for the current tenant.
Get all branding configuration revisions. Returns the history of branding changes for this tenant.
Get branding configuration by version. Useful for previewing or rolling back to a previous version.
Arguments
List all cities in a country (for admin dropdowns).
Arguments
One-shot tenant bootstrap. Returns the tenant identity + every
client-facing config slice in a single round-trip. Read by the
client SDK at app startup; per-domain queries
(branding, mapProviderConfig, …) stay available for admin
tools.
Get all country exclusivity tier definitions with pricing.
The tenant's auto-provisioned store-review account.
Returns null if the reviewer hasn't been provisioned yet — the
frontend should surface a "Provision" CTA in that case.
Discover a tenant by its join code (public, no auth required).
The code is case-insensitive. Returns null if no active tenant matches.
Arguments
Discover a tenant by its domain (public, no auth required).
Resolves the tenant from a custom or system domain string
(e.g., "acme-rides.bettersuite.io" or "ride.acmetaxi.com").
Returns null if no active tenant matches the domain.
Arguments
Discover active tenants operating in a specific city (public, no auth required).
Arguments
Discover active tenants operating in a country (public, no auth required). Returns tenants that have at least one operation city in the given country.
Arguments
Discover tenants near a geographic location (public, no auth required). Searches via operation cities within the given radius, ordered by distance to the nearest city.
Arguments
Get exclusivity pricing for specific cities. Returns per-city pricing based on population, along with availability (whether the city is already locked by another tenant). Call this after the tenant has selected their operation cities.
Arguments
Get exclusivity pricing for specific countries.
Arguments
Get all exclusivity tier definitions with pricing. Useful for displaying a pricing table in the UI.
Check if a slug is available
Arguments
Get the current map provider configuration. Returns the active map provider settings for the current tenant, including configured providers (Google Maps, Mapbox, etc.) and their services.
Get the current tenant (based on JWT token)
Returns the platform-controlled addons granted to the caller's tenant. Tenants use this to drive UI gates (showing the "Star members" tab only when the StarTier addon is effective, etc.).
Count of currently-active cities for the tenant. Useful for UI gauges
next to the plan's locations limit without round-tripping the full
list.
Get the current tenant's active add-ons.
List the current tenant's active country exclusivities.
List all domains (system + custom) for the current tenant.
Get the current tenant's invoice history (upcoming and past).
Arguments
List the *active* cities assigned to the current tenant.
Backward-compatible shape: returns only ACTIVE rows so existing clients
reading this field continue to see what they did before. Use
myOperationCityList for the full allow-list including disabled rows.
Full allow-list: active and disabled rows. Disabled rows stay in
the list with their status/disabledReason so the UI can show
reactivate affordances without rediscovering cities.
Aggregated footprint of where the tenant operates: distinct countries, admin regions, and cities, joined with the shared geo reference tables. One round trip for cascading dropdowns (tax zone editor, region setup, dashboard summaries) so each surface doesn't re-derive the dedupe / join logic.
List the current tenant's active region exclusivities.
Get the current tenant's active subscription.
Get the current tenant's usage meters.
Event-counter meters (e.g. monthly_transactions) come from the
usage-meter store, written by record_usage. State counters
(verticals, locations) are synthesized here from their
authoritative sources — the active subscription and the
operation-area repo — so they can't drift from reality.
Get the current notification settings configuration. Returns the active notification settings for the current tenant.
Get the current parking configuration. Returns the active parking config for the current tenant.
Get the current payment gateway configuration. Returns the active payment gateway config for the current tenant.
Get available add-ons for a plan (public).
Arguments
Get details for a specific plan (public).
Arguments
All platform-owned connected apps (shared by every tenant). Callable by tenant admins too — they need to see what they're inheriting (and opt out of) on the domain-admin UI.
Get the current regional settings configuration. Returns locale, measurement system, time format, map defaults, wallet top-up presets, and support contact for the current tenant.
Search reference cities by name prefix (for admin UI dropdowns).
Arguments
Get the current service configuration. Returns the active service config for the current tenant.
Get the current shop settings configuration. Returns the active shop settings for the current tenant.
Get a tenant by ID (admin operation)
Arguments
Resolve the tenant's effective AuthPolicy. Never returns null
— falls back to the platform default when the tenant has no
revision stored.
Connected apps owned by a tenant. Tenant admins omit tenantId
(defaults to their own); platform admins may pass any tenantId.
Arguments
IDs of platform apps the tenant has opted out of. Tenant admins omit
tenantId; platform admins may pass any tenantId.
Arguments
Get public tenant information. Returns tenant info including branding, current plan details, available upgrades, and add-ons. Accessible to all authenticated users within the tenant.
Get the onboarding completion status for the current tenant.
Get all tenants (admin operation)
Get the public tier policy for the current tenant. Apps read this unauthenticated to decide whether to allow guest order creation or pop the registration sheet.
Return the current tenant's plan-credit wallet balance for the given
currency. Returns a wallet with exists=false (and zero balances)
when the tenant has never been credited — callers should still treat
this as a valid empty wallet rather than an error.
Arguments
Add an addon to the current subscription.
Arguments
Add a custom domain for a tenant app.
The domain must be globally unique. After adding, the tenant must set up
a CNAME record pointing to the system subdomain (returned in the entity's
cname_target field) and then call verifyCustomDomain.
Arguments
Add a city to the current tenant's operation areas.
If the city is already in the allow-list (any status), the row is
reactivated rather than re-inserted. Reactivation and net-new adds
both consume one slot of the plan's locations limit.
Arguments
Re-activate a suspended or cancelled tenant (PlatformAdmin only).
Blocked tenants cannot be activated — use adminUnblockTenant instead.
Arguments
Add a city to a tenant's operation areas (PlatformAdmin only).
Arguments
Force-assign a plan to a tenant (PlatformAdmin only, bypasses Stripe).
Arguments
Number of days for the subscription period (None = indefinite).
Block a tenant immediately (PlatformAdmin only).
Blocked tenants cannot be auto-reactivated by billing events.
Use adminUnblockTenant to restore access.
Arguments
Cancel a pending registration (PlatformAdmin only).
Arguments
Create a country exclusivity agreement for a tenant. PlatformAdmin only.
If monthly_price_minor is omitted the price is auto-calculated from the
country's GDP-based value tier.
Arguments
Create a new notification channel. PlatformAdmin only.
Arguments
Create a region exclusivity agreement for a tenant. PlatformAdmin only.
If monthly_price_minor is omitted the price is auto-calculated from the
city's population tier and country GDP data.
Arguments
Create a new tenant as PlatformAdmin.
When skip_verification is true, tenant + admin account are created immediately.
When false, an invitation email is sent with a 7-day verification link.
Arguments
Grant credit to a tenant's plan-credit wallet (PlatformAdmin only).
Records an AdminGiftCredit ledger transaction; idempotency is on
the caller — every call adds another grant.
Arguments
Delete a channel. PlatformAdmin only. Returns true on success.
Arguments
Soft-delete a tenant (PlatformAdmin only). Step-up gated — the platform admin must re-enter their password to mint an elevation token before this mutation will proceed. Tenant deletion is irreversible from the tenant's side, so a stolen platform-admin session cannot wipe a tenant without the password too.
Arguments
Extend a subscription's period (PlatformAdmin only).
Arguments
Grant a platform-controlled addon to a tenant. PlatformAdmin only.
expires_at = None makes the grant indefinite. Re-granting an
existing addon overwrites the previous record (new granted_by
and granted_at stamps; new expiry).
Arguments
Force-create a tenant from a pending or email-verified registration. Admin picks a plan — the tenant, account, and subscription are created immediately, bypassing the user's onboarding flow. PlatformAdmin only. Force-create with a specific plan. Falls back to the registration's plan or the default trial.
Arguments
Reactivate a cancelled (or cancel-at-period-end) subscription (PlatformAdmin only).
Arguments
Remove a city from a tenant's operation areas (PlatformAdmin only).
Arguments
Revoke (deactivate) a country exclusivity agreement. PlatformAdmin only.
Arguments
Revoke a previously granted addon. PlatformAdmin only.
The grant record is kept (with enabled = false) so the audit
trail of past activations is recoverable from the config history.
A subsequent grant will overwrite it.
Arguments
Revoke (deactivate) a region exclusivity agreement. PlatformAdmin only.
Arguments
Set or clear the billing email override on a subscription (PlatformAdmin only).
Arguments
New billing email; null falls back to the tenant admin email.
Toggle cancel-at-period-end on a subscription (PlatformAdmin only).
Arguments
Set or clear the grace-period end on a subscription (PlatformAdmin only).
Arguments
New grace-until; null clears the grace period.
Set or clear the pause end on a subscription (PlatformAdmin only).
Arguments
New pause-until; null clears the pause.
Set or clear custom per-subscription limit overrides (PlatformAdmin only).
Input must be a JSON object keyed by limit_id (e.g. {"max_drivers": 250}).
Arguments
JSON object keyed by limit_id; null clears all overrides.
Replace the selected verticals on a subscription (PlatformAdmin only).
Arguments
Set or clear the trial end date on a subscription (PlatformAdmin only).
Arguments
New trial end; null clears the trial end.
Suspend a tenant (PlatformAdmin only).
Arguments
Send a synchronous test notification to a channel. PlatformAdmin
only. Returns true when the underlying HTTP call succeeded.
Arguments
Unblock a blocked tenant (PlatformAdmin only). Restores the tenant to Active status.
Arguments
Update a country exclusivity agreement. PlatformAdmin only.
Arguments
Update an existing channel. PlatformAdmin only.
Arguments
Update a region exclusivity agreement. PlatformAdmin only.
Arguments
Override a subscription's status (PlatformAdmin only).
Arguments
Update tenant fields (PlatformAdmin only).
Arguments
Verify a pending registration's email. Moves status to EmailVerified
so the user can log in and complete onboarding (plan selection + payment)
themselves. Bypasses email token and expiry.
PlatformAdmin only.
Arguments
Forward the tenant wallet's credit (in currency) to the active
subscription's PSP customer balance. Idempotent in the sense that
repeated calls when the wallet is empty are no-ops.
Arguments
Cancel all region exclusivities for the current tenant.
Cancel country exclusivity for a specific country.
Arguments
Cancel region exclusivity for a specific city.
Arguments
Cancel the current subscription.
Arguments
Upgrade or downgrade the subscription plan.
Arguments
Complete onboarding by subscribing to a plan. Creates the tenant, admin account, and subscription. Returns new authentication tokens for the created tenant admin.
Arguments
Finalize a Stripe checkout without waiting for the webhook.
The client calls this on return from checkout. We retrieve the
session from Stripe, reject it if it hasn't completed + paid, then
run the same provisioning the webhook does. If the webhook already
processed it, this returns alreadyProcessed = true instead of
double-provisioning.
No GraphQL authentication required — the registration flow calls
this before the tenant exists, so there's no session to bind to.
The session_id itself is the authenticator: it's unguessable and
Stripe only hands it out to the paying user, and the mutation can
only produce side effects if the PSP confirms the session is
complete + paid.
Arguments
Create a new API key for the tenant. The plaintext key is returned only once. Store it securely. Requires Owner-tier (TenantOwner or PlatformAdmin) — issuing a long-lived backend credential is a danger-zone action.
Arguments
Create a Stripe Billing Portal session. Returns the portal URL.
Arguments
Create a connected app.
* ownership = Platform — PlatformAdmin only, tenantId must be null.
* ownership = Tenant — any admin, tenantId must be set (tenant
admins may only create rows for their own tenant).
Arguments
Create a Stripe checkout session for an email-verified registration. No tenant exists yet — the webhook will create it after payment. No authentication required (the registration_id serves as the identifier).
Arguments
Soft-delete a connected app. Same authorization rules as update.
Arguments
Opt the tenant out of a platform-owned app — it stops appearing in AASA / assetlinks for that tenant's domains.
Arguments
Re-enable (i.e., remove from the opt-out set) a previously-disabled platform app for the tenant.
Arguments
Validate a code without consuming it. Surfaces "already redeemed" so the UI can warn the user before they commit.
Arguments
Provision (or sync) the store-review account.
Three branches, see StoreReviewManagementUseCase docs:
1. Account missing → returns credentials (one-time plaintext).
2. Account exists, roles drifted → returns info + synced_roles.
3. Account exists, roles current → errors. Caller should switch
to the password reset action.
Purchase country-level exclusivity for one or more countries.
Arguments
Purchase region exclusivity for one or more cities. The tenant must have an active subscription and the cities must be in their operation areas. The exclusivity covers all verticals on the tenant's current subscription and lasts until cancelled or the subscription ends.
Arguments
Reactivate a cancelled subscription (before period end).
Redeem a legacy purchase code, crediting the tenant wallet by the exact amount the customer originally paid. Single-use per code.
Arguments
Register a new tenant. Sends a verification email to the admin. No authentication required.
Arguments
Remove an addon from the current subscription.
Arguments
Remove a custom domain. Only custom domains can be removed; system domains are managed automatically.
Arguments
Remove a city from the current tenant's operation areas.
This permanently drops the row from the allow-list. Use
setOperationCityActive to soft-disable instead — disabled rows stay
parked for one-click reactivation.
Arguments
Remove branding for a specific vertical. Requires TenantAdmin role.
Arguments
Resend the verification email for a pending registration. Rate limited: max 5 resends, 60s cooldown between resends. No authentication required.
Arguments
Rotate the reviewer's password and return the new plaintext once. Errors with "store-review account not found" if the reviewer hasn't been provisioned yet.
Revoke all API keys for the tenant. All keys will immediately become invalid. Use with caution! Requires Owner-tier (TenantOwner or PlatformAdmin).
Arguments
Revoke a single API key. The key will immediately become invalid for authentication. Requires Owner-tier (TenantOwner or PlatformAdmin).
Arguments
Rollback branding to a previous version. Creates a new version with the content from the specified version. Requires TenantAdmin role.
Arguments
Rotate an API key (revoke old and create new in one operation). This enables zero-downtime key rotation by creating the new key before revoking the old one. Requires Owner-tier (TenantOwner or PlatformAdmin) **and** a fresh step-up elevation token — rotation is a destructive security action that should be paired with a re-auth so a stolen Owner session can't quietly mint a long-lived key.
Arguments
Save a tenant configuration (TenantAdmin for own tenant, PlatformAdmin for any).
Creates a new versioned revision and sets it as current.
Provide exactly one config variant via the @oneOf input.
Arguments
Target tenant ID. Required for PlatformAdmin; uses own tenant for TenantAdmin.
Toggle the active state of an existing operation city.
Activating a row enforces the plan locations limit (it consumes a
slot). Deactivating frees the slot but keeps the row in the allow-list
so the tenant can flip it back without rediscovering the city.
Arguments
Toggle whether a tenant is publicly discoverable.
Accessible by:
- **TenantAdmin**: can toggle discoverability of their own tenant.
- **PlatformAdmin**: can toggle discoverability of any tenant (pass tenant_id).
Arguments
Target tenant. Required for PlatformAdmin; ignored for TenantAdmin (uses own tenant).
Toggle whether a tenant is a demo/test tenant. Demo tenants get relaxed auth and extra UI features. This is a platform-level setting and can only be changed by PlatformAdmin.
Arguments
Set or update branding for a specific app within a vertical. Requires TenantAdmin role.
Arguments
Set or update branding for a specific vertical. Requires TenantAdmin role.
Arguments
Start the subscription flow. Creates a Stripe Checkout Session and returns the checkout URL. No subscription is saved until the checkout completes and the webhook fires.
Arguments
Update the quantity of an existing addon.
Arguments
Save a new revision of the tenant's AuthPolicy. Requires
TenantAdmin (or PlatformAdmin impersonation). The payload
replaces the rule set in full — there's no merge semantics, the
version-bump-per-save pattern matches update_tier_config.
Arguments
Update the entire branding configuration. Creates a new version and sets it as current. Requires TenantAdmin role.
Arguments
Update only the company brand. Preserves existing vertical brands. Requires TenantAdmin role.
Arguments
Update mutable fields on a connected app. Ownership and platform are immutable — delete + recreate if those need to change.
Arguments
Update regional settings configuration. Sets locale, measurement system, time format, map defaults, wallet top-up presets, and support contact for the tenant. Creates a new version and sets it as current. Requires TenantAdmin role.
Arguments
Save a new revision of the tenant's tier policy (display names, verification ladder, expiry days, strike thresholds, payment-method requirement). Requires TenantAdmin role.
Arguments
Verify DNS for a custom domain by checking host resolution. The tenant must have already set up a CNAME record pointing the custom domain to the system subdomain. This mutation performs a basic DNS lookup to confirm the domain resolves. Full CNAME chain verification may be added later.
Arguments
Verify a tenant registration email token.
Marks the registration as EmailVerified — no tenant is created yet.
The user must log in and complete onboarding (plan subscription) to
become a real tenant. No authentication required.
Arguments
BetterSuite is built for teams who see on-demand as a business — not a feature.