@buildbase/sdk 0.0.42 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -19
- package/dist/index.d.ts +12 -1
- package/dist/react/index.d.ts +29 -1
- package/dist/react/index.js +5 -5
- package/dist/react/index.mjs +5 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ Also works server-side (Next.js API routes, Express, Hono) — see [Server-Side
|
|
|
47
47
|
- **📬 Notifications** - Email + push notification system with per-event channel control, workspace preferences, and server-side `notification.send()` API
|
|
48
48
|
- **💺 Seat-Based Pricing** - Per-seat billing with included seats, billable seat tracking, and seat limit enforcement
|
|
49
49
|
- **💱 Multi-Currency** - Per-currency pricing variants with workspace billing currency lock
|
|
50
|
-
- **🤝 Affiliate Tracking** - Pass referral data to Stripe checkout via `
|
|
50
|
+
- **🤝 Affiliate Tracking** - Pass referral data to Stripe checkout via `getCheckoutStripeParams` prop (Rewardful, Endorsely, FirstPromoter, etc.)
|
|
51
51
|
- **📊 Quota Usage Tracking** - Record and monitor metered usage (API calls, storage, etc.) with real-time status
|
|
52
52
|
- **📈 Usage Dashboard** - Built-in workspace settings page showing quota consumption, overage billing breakdowns, and billing period info
|
|
53
53
|
- **👤 User Management** - User attributes and feature flags management
|
|
@@ -306,24 +306,35 @@ import { saveAuthIntent, consumeAuthIntent, clearAuthIntent } from '@buildbase/s
|
|
|
306
306
|
|
|
307
307
|
### Affiliate / Referral Tracking
|
|
308
308
|
|
|
309
|
-
Pass affiliate data to Stripe checkout sessions via `
|
|
309
|
+
Pass affiliate/referral data to Stripe checkout sessions via the `getCheckoutStripeParams` prop on `SaaSOSProvider`. This async callback is called before every checkout session is created, so you can fetch referral IDs, read cookies, or call any async API:
|
|
310
310
|
|
|
311
311
|
```tsx
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
<SaaSOSProvider
|
|
313
|
+
serverUrl="https://your-api-server.com"
|
|
314
|
+
version={ApiVersion.V1}
|
|
315
|
+
orgId="your-org-id"
|
|
316
|
+
auth={authConfig}
|
|
317
|
+
getCheckoutStripeParams={async (request) => {
|
|
315
318
|
// Rewardful, FirstPromoter, PartnerStack — read client_reference_id
|
|
316
|
-
|
|
319
|
+
const referralId = await getRewardfulReferralId();
|
|
317
320
|
|
|
318
|
-
|
|
319
|
-
|
|
321
|
+
return {
|
|
322
|
+
clientReferenceId: referralId,
|
|
320
323
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
324
|
+
// Endorsely — reads subscription metadata
|
|
325
|
+
subscriptionMetadata: { endorsely_referral: window.endorsely_referral },
|
|
326
|
+
|
|
327
|
+
// Custom tracking on the checkout session
|
|
328
|
+
metadata: { campaign: 'summer-sale' },
|
|
329
|
+
};
|
|
330
|
+
}}
|
|
331
|
+
>
|
|
332
|
+
<App />
|
|
333
|
+
</SaaSOSProvider>
|
|
325
334
|
```
|
|
326
335
|
|
|
336
|
+
The returned object is merged into the Stripe checkout session. You can return any combination of the fields below, or `undefined` to proceed without extra options:
|
|
337
|
+
|
|
327
338
|
| Field | Stripe mapping | Use case |
|
|
328
339
|
| ---------------------- | ----------------------------- | -------------------------------------- |
|
|
329
340
|
| `clientReferenceId` | `client_reference_id` | Rewardful, FirstPromoter, etc. |
|
|
@@ -1845,13 +1856,16 @@ All TypeScript types are exported for type safety. See the [TypeScript definitio
|
|
|
1845
1856
|
|
|
1846
1857
|
### SaaSOSProvider Props
|
|
1847
1858
|
|
|
1848
|
-
| Prop
|
|
1849
|
-
|
|
|
1850
|
-
| `serverUrl`
|
|
1851
|
-
| `version`
|
|
1852
|
-
| `orgId`
|
|
1853
|
-
| `auth`
|
|
1854
|
-
| `
|
|
1859
|
+
| Prop | Type | Required | Description |
|
|
1860
|
+
| -------------------------- | --------------------------- | -------- | ------------------------------------------------------------------------------------------------ |
|
|
1861
|
+
| `serverUrl` | `string` | ✅ | API server URL (must be valid URL) |
|
|
1862
|
+
| `version` | `ApiVersion` | ✅ | API version (currently only `'v1'`) |
|
|
1863
|
+
| `orgId` | `string` | ✅ | Organization ID (must be valid MongoDB ObjectId - 24 hex characters) |
|
|
1864
|
+
| `auth` | `IAuthConfig` | ❌ | Authentication configuration |
|
|
1865
|
+
| `locale` | `SDKLocale` | ❌ | SDK UI language (`'en'`, `'es'`, `'fr'`, `'de'`, `'ja'`, `'zh'`, `'hi'`, `'ar'`) |
|
|
1866
|
+
| `defaultPermissions` | `Record<string, string[]>` | ❌ | Default app permissions per role |
|
|
1867
|
+
| `getCheckoutStripeParams` | `GetCheckoutStripeParams` | ❌ | Async callback called before every Stripe checkout to return metadata, referral IDs, etc. |
|
|
1868
|
+
| `children` | `ReactNode` | ✅ | React children |
|
|
1855
1869
|
|
|
1856
1870
|
### Auth Configuration
|
|
1857
1871
|
|
package/dist/index.d.ts
CHANGED
|
@@ -360,6 +360,17 @@ interface ICheckoutStripeOptions {
|
|
|
360
360
|
/** Custom metadata merged into `subscription_data.metadata` on the Stripe session. */
|
|
361
361
|
subscriptionMetadata?: Record<string, string>;
|
|
362
362
|
}
|
|
363
|
+
/**
|
|
364
|
+
* Async callback called before every checkout session is created.
|
|
365
|
+
* Use it to return Stripe-level options (metadata, affiliate IDs, etc.)
|
|
366
|
+
* that should be forwarded to the Stripe checkout session.
|
|
367
|
+
*
|
|
368
|
+
* Return an `ICheckoutStripeOptions` object to merge into the request,
|
|
369
|
+
* or `undefined`/`void` to proceed without extra options.
|
|
370
|
+
*
|
|
371
|
+
* @param request - The checkout request about to be sent (read-only).
|
|
372
|
+
*/
|
|
373
|
+
type GetCheckoutStripeParams = (request: Readonly<ICheckoutSessionRequest>) => Promise<ICheckoutStripeOptions | void> | ICheckoutStripeOptions | void;
|
|
363
374
|
/** Request body for POST .../workspaces/:id/subscription/checkout. */
|
|
364
375
|
interface ICheckoutSessionRequest {
|
|
365
376
|
planVersionId: string;
|
|
@@ -2220,4 +2231,4 @@ interface BuildBaseResult extends ScopedActions {
|
|
|
2220
2231
|
declare function BuildBase(config: BuildBaseConfig): BuildBaseResult;
|
|
2221
2232
|
|
|
2222
2233
|
export { ApiVersion, AuthApi, AuthStatus, BB_PARAM, BaseApi, BetaForm, BillingIntervals, BuildBase, CURRENCY_DISPLAY, CURRENCY_FLAG, DEFAULT_ROLE_PERMISSIONS, DunningState, EventEmitter, InvoiceStatuses, PLAN_CURRENCY_CODES, PLAN_CURRENCY_OPTIONS, PUSH_SERVICE_WORKER_SCRIPT, Permission, PushApi, SDKEvent, SettingsApi, SubscriptionItemType, SubscriptionStatus, UserApi, WorkspaceApi, calculateBillableSeats, calculateSeatOverageCents, calculateTotalSubscriptionCents, cleanBBParams, clearAuthIntent, consumeAuthIntent, createBBUrl, createCheckoutRedirectUrls, BuildBase as default, eventEmitter, formatCents, formatOverageRate, formatOverageRateWithLabel, formatQuotaIncludedOverage, formatQuotaWithPrice, getAvailableCurrenciesFromPlans, getBasePriceCents, getBillingIntervalAndCurrencyFromPriceId, getCurrencyFlag, getCurrencySymbol, getDisplayCurrency, getPerSeatPriceCents, getPricingVariant, getQuotaDisplayValue, getQuotaDisplayWithVariant, getQuotaOverageCents, getQuotaUnitLabelFromName, getSeatPricing, getStripePriceIdForInterval, hasPermission, invalidateQuotaUsage, invalidateSubscription, parseWebhookEvent, readBBParams, resolveMaxUsers, resolvePermissions, safeRedirect, saveAuthIntent, validateInvite, validateRedirectUrl, verifyWebhookSignature };
|
|
2223
|
-
export type { BetaFormData, BetaFormResponse, BillingInterval, BuildBaseConfig, BuildBaseResult, BuildBaseSession, CheckoutResult, EventData, EventType, FeatureActions, FormatQuotaWithPriceOptions, IAllQuotaUsageResponse, IBaseApiConfig, IBasePricing, IBetaConfig, ICheckoutSessionRequest, ICheckoutSessionResponse, ICheckoutStripeOptions, IEventCallbacks, IInvoice, IInvoiceListResponse, IInvoiceResponse, IOsConfig, IOsState, IPlan, IPlanGroup, IPlanGroupInfo, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionSummary, IPlanVersionWithPlan, IPricingVariant, IPublicPlanItem, IPublicPlanItemCategory, IPublicPlanVersion, IPublicPlansResponse, IQuotaByInterval, IQuotaIntervalValue, IQuotaOveragePriceIdsByInterval, IQuotaOveragesByInterval, IQuotaUsageStatus, IQuotaUsageStatusResponse, IRecordUsageRequest, IRecordUsageResponse, IStripePricesByInterval, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, IUsageLogEntry, IUsageLogsQuery, IUsageLogsResponse, InviteBlockReason, InviteValidation, InvoiceActions, InvoiceStatus, MaxUsersConfig, NotificationData, NotificationEvent, NotificationResult, OnWorkspaceChangeParams, PermissionActions, PermissionContext, PermissionKey, PlanActions, PlanVersionWithPricingVariants, QuotaDisplayValue, QuotaDisplayWithOverage, RolePermissionMap, ScopedActions, SettingsActions, SubscriptionActions, SubscriptionStatusType, UsageActions, UserActions, UserCreatedEventData, UserUpdatedEventData, WorkspaceActions, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
|
|
2234
|
+
export type { BetaFormData, BetaFormResponse, BillingInterval, BuildBaseConfig, BuildBaseResult, BuildBaseSession, CheckoutResult, EventData, EventType, FeatureActions, FormatQuotaWithPriceOptions, GetCheckoutStripeParams, IAllQuotaUsageResponse, IBaseApiConfig, IBasePricing, IBetaConfig, ICheckoutSessionRequest, ICheckoutSessionResponse, ICheckoutStripeOptions, IEventCallbacks, IInvoice, IInvoiceListResponse, IInvoiceResponse, IOsConfig, IOsState, IPlan, IPlanGroup, IPlanGroupInfo, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionSummary, IPlanVersionWithPlan, IPricingVariant, IPublicPlanItem, IPublicPlanItemCategory, IPublicPlanVersion, IPublicPlansResponse, IQuotaByInterval, IQuotaIntervalValue, IQuotaOveragePriceIdsByInterval, IQuotaOveragesByInterval, IQuotaUsageStatus, IQuotaUsageStatusResponse, IRecordUsageRequest, IRecordUsageResponse, IStripePricesByInterval, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, IUsageLogEntry, IUsageLogsQuery, IUsageLogsResponse, InviteBlockReason, InviteValidation, InvoiceActions, InvoiceStatus, MaxUsersConfig, NotificationData, NotificationEvent, NotificationResult, OnWorkspaceChangeParams, PermissionActions, PermissionContext, PermissionKey, PlanActions, PlanVersionWithPricingVariants, QuotaDisplayValue, QuotaDisplayWithOverage, RolePermissionMap, ScopedActions, SettingsActions, SubscriptionActions, SubscriptionStatusType, UsageActions, UserActions, UserCreatedEventData, UserUpdatedEventData, WorkspaceActions, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -364,6 +364,17 @@ interface ICheckoutStripeOptions {
|
|
|
364
364
|
/** Custom metadata merged into `subscription_data.metadata` on the Stripe session. */
|
|
365
365
|
subscriptionMetadata?: Record<string, string>;
|
|
366
366
|
}
|
|
367
|
+
/**
|
|
368
|
+
* Async callback called before every checkout session is created.
|
|
369
|
+
* Use it to return Stripe-level options (metadata, affiliate IDs, etc.)
|
|
370
|
+
* that should be forwarded to the Stripe checkout session.
|
|
371
|
+
*
|
|
372
|
+
* Return an `ICheckoutStripeOptions` object to merge into the request,
|
|
373
|
+
* or `undefined`/`void` to proceed without extra options.
|
|
374
|
+
*
|
|
375
|
+
* @param request - The checkout request about to be sent (read-only).
|
|
376
|
+
*/
|
|
377
|
+
type GetCheckoutStripeParams = (request: Readonly<ICheckoutSessionRequest>) => Promise<ICheckoutStripeOptions | void> | ICheckoutStripeOptions | void;
|
|
367
378
|
/** Request body for POST .../workspaces/:id/subscription/checkout. */
|
|
368
379
|
interface ICheckoutSessionRequest {
|
|
369
380
|
planVersionId: string;
|
|
@@ -2453,6 +2464,23 @@ interface SaaSOSProviderProps extends IOsState {
|
|
|
2453
2464
|
* ```
|
|
2454
2465
|
*/
|
|
2455
2466
|
defaultPermissions?: Record<string, string[]>;
|
|
2467
|
+
/**
|
|
2468
|
+
* Async callback called before every Stripe checkout session is created.
|
|
2469
|
+
* Use it to return Stripe-level params (metadata, client reference ID, subscription metadata)
|
|
2470
|
+
* that will be forwarded to the Stripe checkout session.
|
|
2471
|
+
*
|
|
2472
|
+
* @example
|
|
2473
|
+
* ```tsx
|
|
2474
|
+
* <SaaSOSProvider
|
|
2475
|
+
* getCheckoutStripeParams={async (request) => ({
|
|
2476
|
+
* clientReferenceId: await getRewardfulReferralId(),
|
|
2477
|
+
* metadata: { campaign: 'spring-sale' },
|
|
2478
|
+
* subscriptionMetadata: { affiliateId: 'aff-123' },
|
|
2479
|
+
* })}
|
|
2480
|
+
* >
|
|
2481
|
+
* ```
|
|
2482
|
+
*/
|
|
2483
|
+
getCheckoutStripeParams?: GetCheckoutStripeParams;
|
|
2456
2484
|
}
|
|
2457
2485
|
declare const SaaSOSProvider: react__default.FC<SaaSOSProviderProps>;
|
|
2458
2486
|
|
|
@@ -4341,4 +4369,4 @@ declare const PushNotificationProvider: react__default.FC<PushNotificationProvid
|
|
|
4341
4369
|
declare function usePushNotifications(): PushNotificationContextValue;
|
|
4342
4370
|
|
|
4343
4371
|
export { ApiVersion, AuthApi, AuthStatus, BB_PARAM, BaseApi, BetaForm, BillingIntervals, CURRENCY_DISPLAY, CURRENCY_FLAG, DEFAULT_ROLE_PERMISSIONS, DunningState, EventEmitter, InvoiceStatuses, PLAN_CURRENCY_CODES, PLAN_CURRENCY_OPTIONS, PUSH_SERVICE_WORKER_SCRIPT, Permission, PricingPage, PushApi, PushNotificationProvider, QuotaUsageContextProvider, SDKEvent, SETTINGS_SCREENS, SUPPORTED_LOCALES, SaaSOSProvider, SettingsApi, SettingsScreen, SubscriptionContextProvider, SubscriptionItemType, SubscriptionStatus, UserApi, WhenAuthenticated, WhenNoSubscription, WhenNotTrialing, WhenPermission, WhenQuotaAvailable, WhenQuotaExhausted, WhenQuotaOverage, WhenQuotaThreshold, WhenRoles, WhenSubscription, WhenSubscriptionToPlans, WhenTrialEnding, WhenTrialing, WhenUnauthenticated, WhenUserFeatureDisabled, WhenUserFeatureEnabled, WhenWorkspaceFeatureDisabled, WhenWorkspaceFeatureEnabled, WhenWorkspaceRoles, WorkspaceApi, WorkspaceSwitcher, calculateBillableSeats, calculateSeatOverageCents, calculateTotalSubscriptionCents, cleanBBParams, clearAuthIntent, consumeAuthIntent, createBBUrl, createCheckoutRedirectUrls, eventEmitter, formatCents, formatOverageRate, formatOverageRateWithLabel, formatQuotaIncludedOverage, formatQuotaWithPrice, getAvailableCurrenciesFromPlans, getBasePriceCents, getBillingIntervalAndCurrencyFromPriceId, getCurrencyFlag, getCurrencySymbol, getDisplayCurrency, getPerSeatPriceCents, getPricingVariant, getQuotaDisplayValue, getQuotaDisplayWithVariant, getQuotaOverageCents, getQuotaUnitLabelFromName, getSeatPricing, getStripePriceIdForInterval, hasPermission, invalidateQuotaUsage, invalidateSubscription, readBBParams, resolveMaxUsers, resolvePermissions, safeRedirect, saveAuthIntent, useAllQuotaUsage, useBillingPortal, useCancelSubscription, useCreateCheckoutSession, useInvoice, useInvoices, usePermissions, usePlanGroup, usePlanGroupVersions, usePublicPlanGroupVersion, usePublicPlans, usePushNotifications, useQuotaUsageContext, useQuotaUsageStatus, useRecordUsage, useResumeSubscription, useSaaSAuth, useSaaSOs, useSaaSSettings, useSaaSWorkspaces, useSeatStatus, useSubscription, useSubscriptionContext, useSubscriptionManagement, useTranslation, useTrialStatus, useUpdateSubscription, useUsageLogs, useUserAttributes, useUserFeatures, validateInvite, validateRedirectUrl };
|
|
4344
|
-
export type { BetaFormData, BetaFormResponse, BillingInterval, CheckoutResult, EventData, EventType, FormatQuotaWithPriceOptions, IAllQuotaUsageResponse, IBaseApiConfig, IBasePricing, IBetaConfig, ICheckoutSessionRequest, ICheckoutSessionResponse, ICheckoutStripeOptions, IEventCallbacks, IInvoice, IInvoiceListResponse, IInvoiceResponse, IOsConfig, IOsState, IPlan, IPlanGroup, IPlanGroupInfo, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionSummary, IPlanVersionWithPlan, IPricingVariant, IPublicPlanItem, IPublicPlanItemCategory, IPublicPlanVersion, IPublicPlansResponse, IQuotaByInterval, IQuotaIntervalValue, IQuotaOveragePriceIdsByInterval, IQuotaOveragesByInterval, IQuotaUsageStatus, IQuotaUsageStatusResponse, IRecordUsageRequest, IRecordUsageResponse, IStripePricesByInterval, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, IUsageLogEntry, IUsageLogsQuery, IUsageLogsResponse, InviteBlockReason, InviteValidation, InvoiceStatus, MaxUsersConfig, NotificationData, NotificationEvent, NotificationResult, OnWorkspaceChangeParams, PermissionContext, PermissionKey, PlanVersionWithPricingVariants, PricingPageDetails, PricingPageProps, QuotaDisplayValue, QuotaDisplayWithOverage, QuotaUsageContextValue, RolePermissionMap, SDKLocale, SDKMessages, SaaSOSProviderProps, SeatStatus, SubscriptionContextValue, SubscriptionStatusType, TrialStatus, UserCreatedEventData, UserUpdatedEventData, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceSettingsSection, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
|
|
4372
|
+
export type { BetaFormData, BetaFormResponse, BillingInterval, CheckoutResult, EventData, EventType, FormatQuotaWithPriceOptions, GetCheckoutStripeParams, IAllQuotaUsageResponse, IBaseApiConfig, IBasePricing, IBetaConfig, ICheckoutSessionRequest, ICheckoutSessionResponse, ICheckoutStripeOptions, IEventCallbacks, IInvoice, IInvoiceListResponse, IInvoiceResponse, IOsConfig, IOsState, IPlan, IPlanGroup, IPlanGroupInfo, IPlanGroupLatestVersion, IPlanGroupResponse, IPlanGroupVersion, IPlanGroupVersionWithPlans, IPlanGroupVersionsResponse, IPlanVersion, IPlanVersionSummary, IPlanVersionWithPlan, IPricingVariant, IPublicPlanItem, IPublicPlanItemCategory, IPublicPlanVersion, IPublicPlansResponse, IQuotaByInterval, IQuotaIntervalValue, IQuotaOveragePriceIdsByInterval, IQuotaOveragesByInterval, IQuotaUsageStatus, IQuotaUsageStatusResponse, IRecordUsageRequest, IRecordUsageResponse, IStripePricesByInterval, ISubscription, ISubscriptionItem, ISubscriptionResponse, ISubscriptionUpdateRequest, ISubscriptionUpdateResponse, IUsageLogEntry, IUsageLogsQuery, IUsageLogsResponse, InviteBlockReason, InviteValidation, InvoiceStatus, MaxUsersConfig, NotificationData, NotificationEvent, NotificationResult, OnWorkspaceChangeParams, PermissionContext, PermissionKey, PlanVersionWithPricingVariants, PricingPageDetails, PricingPageProps, QuotaDisplayValue, QuotaDisplayWithOverage, QuotaUsageContextValue, RolePermissionMap, SDKLocale, SDKMessages, SaaSOSProviderProps, SeatStatus, SubscriptionContextValue, SubscriptionStatusType, TrialStatus, UserCreatedEventData, UserUpdatedEventData, WorkspaceChangedEventData, WorkspaceCreatedEventData, WorkspaceDeletedEventData, WorkspaceSettingsSection, WorkspaceUpdatedEventData, WorkspaceUserAddedEventData, WorkspaceUserRemovedEventData, WorkspaceUserRoleChangedEventData };
|