@endorr/core-sdk 0.1.1 → 0.2.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @endorr/core-sdk
2
2
 
3
+ ## 0.2.0 — 2026-09-11
4
+
5
+ - Billing: `client.billing.{catalogue, plans, entitlements, overview, checkout, payments, subscription, changePlan, cancel, resume, refresh, claimable, claim}` (needs the new `billing` scope; managing needs organisation owner/admin). `checkout` takes a plan (`studio`, `studio_plus`) or the `printreadysheets` add-on.
6
+ - Tokens: `client.billing.{wallet, spend, refund, buyTokens, refreshPayment}`. Denied spends throw `EndorrEntitlementError` (402 `not_entitled` / `insufficient_tokens`) carrying the access check.
7
+ - Access checks: `client.billing.check` (product, feature or action), `canUse`, `require`; offline `hasProduct`, `hasFeature`, `describeDenial`, `assertAllowed`.
8
+ - `EndorrBillingSync`: a product's server-side client — check, spend and refund for a connected user with client credentials, and report subscriptions the product still bills itself.
9
+ - `EndorrBillingSync.payments({ since, limit })`: paid charges of the add-ons that unlock your product, oldest first (for dealer commission and revenue reports once your billing runs through Endorr).
10
+ - `spend` (both clients) takes `product` when your app runs another product's tools (PrintReadySheets hosting FileFixer), so Core checks that product's entitlement.
11
+ - Next.js: `requireEntitlement`, `withEntitlement`, `entitlementErrorResponse`. React: `useEntitlements`, `useAccess`, `useWallet`, `<Entitled>`.
12
+ - `EndorrApiError.isPaymentRequired`; `StorageUsage` gains `permanent_quota_bytes` and `plan`.
13
+ - Types: `Catalogue`, `Plan`, `Addon`, `TokenPack`, `Entitlements`, `AccessCheck`, `Wallet`, `TokenTransaction`, `TokenSpend`, `Subscription`, `BillingOverview`, `BillingPayment`, `CheckoutSession`, `TokenCheckout`, `PlanChange`, `ExternalSubscriptionInput`, `Money`, `ProductKey`, `FeatureKey`, `TokenAction`.
14
+
3
15
  ## 0.1.1 — 2026-09-10
4
16
 
5
17
  - Fix: token-endpoint failures that carry Core's generic API error envelope (`{ error: { code, message } }`, e.g. rate limits) now produce a readable `EndorrOAuthError` with `error = code` instead of the message `[object Object]`. RFC 6749 `{ error, error_description }` bodies are unchanged.
package/README.md CHANGED
@@ -77,3 +77,79 @@ await sessions.update({ accessToken: next.access_token, refreshToken: next.refre
77
77
 
78
78
  A `401` from the API or `invalid_grant` on refresh means the user disconnected your product in
79
79
  Endorr or reuse detection fired: drop your session and send them through login again.
80
+
81
+ ## Billing
82
+
83
+ Request the `billing` scope. Any member can read entitlements and check access; owners and admins manage subscriptions.
84
+ Every organisation is on Studio Free unless it pays for Studio or Studio+; PrintReadySheets is an add-on (included in Studio+).
85
+
86
+ ```ts
87
+ import { EndorrEntitlementError, hasProduct, hasFeature } from '@endorr/core-sdk';
88
+
89
+ const ent = await core.billing.entitlements(); // token's organisation
90
+ ent.plan.key; // 'free' | 'studio' | 'studio_plus'
91
+ hasProduct(ent, 'printreadysheets'); hasFeature(ent, 'batch_workflows'); // offline, for rendering
92
+
93
+ // Live check: a denial is an answer, with what fixes it.
94
+ const access = await core.billing.check({ product: 'printreadysheets' }); // or { feature } or { action, quantity }
95
+ if (!access.allowed) showUpgrade(access.addon ?? access.upgrade); // reason: not_in_plan | addon_required | insufficient_tokens
96
+ await core.billing.canUse('pixlpilot'); // boolean
97
+ await core.billing.require({ feature: 'permissions' }); // throws EndorrEntitlementError (402)
98
+
99
+ const { checkout_url, subscription } = await core.billing.checkout(orgId, { plan: 'studio', redirect_url: 'https://endorr.com/studio/settings/billing' });
100
+ // …redirect to checkout_url; on return:
101
+ await core.billing.refresh(subscription.id);
102
+ await core.billing.checkout(orgId, { plan: 'printreadysheets' }); // the add-on
103
+ await core.billing.buyTokens(orgId, { pack: 'tokens_250' });
104
+ ```
105
+
106
+ ### Tokens
107
+
108
+ ```ts
109
+ // Pay before doing the work (the wallet is locked, so jobs never overdraw it); refund if the work fails.
110
+ const { transaction } = await core.billing.spend({ action: 'upscale', idempotency_key: job.id });
111
+ try { await runUpscale(job); } catch (e) { await core.billing.refund(transaction.id); throw e; }
112
+
113
+ try { await core.billing.spend({ action: 'repair' }); }
114
+ catch (e) { if (e instanceof EndorrEntitlementError) return showTopUp(e.check.top_up, e.message); throw e; }
115
+
116
+ await core.billing.wallet(); // { balance, free_balance, paid_balance, free_resets_at, transactions }
117
+ ```
118
+
119
+ Core owns the prices (`upscale` 2, `repair` 1, `vectorize` 1; see `core.billing.catalogue()`). Only Endorr apps spend,
120
+ and only for organisations that may use them. From a back end without a user token, use the same calls on
121
+ `EndorrBillingSync` with the user's Endorr id: `sync.canUse(userId, 'filefixer')`, `sync.spend(userId, { action })`,
122
+ `sync.refund(userId, transactionId)`.
123
+
124
+ ### Subscriptions your product still bills
125
+
126
+ ```ts
127
+ import { EndorrBillingSync } from '@endorr/core-sdk';
128
+ const sync = new EndorrBillingSync({ baseUrl: 'https://auth.endorr.com', clientId: 'printreadysheets', clientSecret: process.env.ENDORR_CLIENT_SECRET! });
129
+
130
+ await sync.upsert(local.id, {
131
+ user_id: local.endorrUserId ?? null, // Endorr `sub` if the customer connected Endorr…
132
+ customer_email: local.endorrUserId ? null : user.email, // …otherwise their email; they claim it in Endorr
133
+ plan_key: 'prs_shopify', plan_name: 'PrintReadySheets via Shopify', status: 'active',
134
+ provider: 'shopify', amount: { value: '79.00', currency: 'USD' }, current_period_end: local.currentPeriodEnd.toISOString(),
135
+ manage_url: 'https://printreadysheets.com/en/dashboard/billing',
136
+ });
137
+ ```
138
+
139
+ Send the full state after every change (paid, renewed, failed, cancelled). Core never charges or cancels these.
140
+
141
+ ### Next.js and React
142
+
143
+ ```ts
144
+ import { withEntitlement, requireEntitlement, entitlementErrorResponse } from '@endorr/core-sdk/nextjs';
145
+ export const POST = withEntitlement((req) => coreFor(req), { product: 'printreadysheets' }, async (req, access) => Response.json({ ok: true }));
146
+ ```
147
+
148
+ ```tsx
149
+ import { Entitled, useAccess, useEntitlements, useWallet } from '@endorr/core-sdk/react';
150
+ <Entitled product="printreadysheets" fallback={(c) => <UpgradeCard addon={c.addon} plan={c.upgrade} />}>
151
+ <SheetBuilder />
152
+ </Entitled>
153
+ ```
154
+
155
+ `<Entitled>` only hides UI; the server-side check or `spend` is what enforces.
@@ -0,0 +1,74 @@
1
+ import type { AccessCheck, Entitlements, ExternalSubscriptionInput, ExternalSubscriptionResult, FeatureKey, ProductKey, ProductPaymentsPage, TokenAction, TokenSpend, Wallet } from './types';
2
+ export interface BillingSyncConfig {
3
+ /** Core origin, e.g. https://auth.endorr.com */
4
+ baseUrl: string;
5
+ /** Your OAuth client id, e.g. "printreadysheets". */
6
+ clientId: string;
7
+ clientSecret: string;
8
+ fetch?: typeof fetch;
9
+ }
10
+ type Check = {
11
+ product?: ProductKey;
12
+ feature?: FeatureKey;
13
+ action?: TokenAction;
14
+ quantity?: number;
15
+ organizationId?: string;
16
+ };
17
+ /**
18
+ * An app's server-side billing client. Authenticates as your OAuth client (never as a user), so keep
19
+ * it on the server. Every call about a person takes their Endorr user id (`sub`) and is accepted only
20
+ * for people who connected your app.
21
+ *
22
+ * 1. Check access and pay for work in tokens from a back-end job with no user token at hand:
23
+ *
24
+ * if (!(await sync.canUse(userId, 'printreadysheets'))) …
25
+ * const { transaction } = await sync.spend(userId, { action: 'upscale', idempotency_key: job.id });
26
+ *
27
+ * 2. Report subscriptions you still bill yourself (Shopify merchants, for example), so they appear in
28
+ * the customer's Endorr account. Needs a client enabled for billing sync. Send the complete current
29
+ * state whenever it changes; omitted fields are cleared, except the organisation link, which sticks.
30
+ */
31
+ export declare class EndorrBillingSync {
32
+ private readonly base;
33
+ private readonly f;
34
+ private readonly authorization;
35
+ constructor(cfg: BillingSyncConfig);
36
+ entitlements(userId: string, opts?: {
37
+ organizationId?: string;
38
+ }): Promise<Entitlements>;
39
+ check(userId: string, q: Check): Promise<AccessCheck>;
40
+ canUse(userId: string, product: ProductKey, q?: Omit<Check, 'product'>): Promise<boolean>;
41
+ /** Throws EndorrEntitlementError (402) when denied. */
42
+ require(userId: string, q: Check): Promise<AccessCheck>;
43
+ wallet(userId: string, opts?: {
44
+ organizationId?: string;
45
+ }): Promise<Wallet>;
46
+ /**
47
+ * Pay for work in tokens; throws EndorrEntitlementError (402 not_entitled / insufficient_tokens) when
48
+ * it may not. `product` names the product the work belongs to when your app runs another product's
49
+ * tools (PrintReadySheets hosts FileFixer): Core then checks that product instead of your own.
50
+ */
51
+ spend(userId: string, input: {
52
+ action: TokenAction;
53
+ quantity?: number;
54
+ idempotency_key?: string;
55
+ organization_id?: string;
56
+ product?: ProductKey;
57
+ }): Promise<TokenSpend>;
58
+ refund(userId: string, transactionId: string): Promise<TokenSpend>;
59
+ /**
60
+ * Paid charges of the add-ons that unlock your product, oldest first — for your own books once your
61
+ * billing runs through Endorr (dealer commission, revenue reports). Pass `next_since` back as
62
+ * `since` to page; replays are safe to skip by `id`.
63
+ */
64
+ payments(opts?: {
65
+ since?: string | Date;
66
+ limit?: number;
67
+ }): Promise<ProductPaymentsPage>;
68
+ /** Create or replace the subscription Core holds under your id. */
69
+ upsert(externalId: string, input: ExternalSubscriptionInput): Promise<ExternalSubscriptionResult>;
70
+ get(externalId: string): Promise<ExternalSubscriptionResult>;
71
+ private request;
72
+ }
73
+ export {};
74
+ //# sourceMappingURL=billing-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-sync.d.ts","sourceRoot":"","sources":["../src/billing-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAC/J,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAGD,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9H;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,GAAG,EAAE,iBAAiB;IAMlC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAK3F,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IAM/C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,GAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInG,uDAAuD;IACjD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;IAI7D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/E;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAIvK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIlE;;;;OAIG;IACH,QAAQ,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAK5F,mEAAmE;IACnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAIjG,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;YAI9C,OAAO;CAStB"}
@@ -0,0 +1,86 @@
1
+ import { throwForResponse } from './errors';
2
+ import { assertAllowed } from './entitlements';
3
+ /**
4
+ * An app's server-side billing client. Authenticates as your OAuth client (never as a user), so keep
5
+ * it on the server. Every call about a person takes their Endorr user id (`sub`) and is accepted only
6
+ * for people who connected your app.
7
+ *
8
+ * 1. Check access and pay for work in tokens from a back-end job with no user token at hand:
9
+ *
10
+ * if (!(await sync.canUse(userId, 'printreadysheets'))) …
11
+ * const { transaction } = await sync.spend(userId, { action: 'upscale', idempotency_key: job.id });
12
+ *
13
+ * 2. Report subscriptions you still bill yourself (Shopify merchants, for example), so they appear in
14
+ * the customer's Endorr account. Needs a client enabled for billing sync. Send the complete current
15
+ * state whenever it changes; omitted fields are cleared, except the organisation link, which sticks.
16
+ */
17
+ export class EndorrBillingSync {
18
+ base;
19
+ f;
20
+ authorization;
21
+ constructor(cfg) {
22
+ this.base = cfg.baseUrl.replace(/\/$/, '');
23
+ this.f = cfg.fetch ?? ((input, init) => fetch(input, init));
24
+ this.authorization = 'Basic ' + btoa(`${encodeURIComponent(cfg.clientId)}:${encodeURIComponent(cfg.clientSecret)}`);
25
+ }
26
+ entitlements(userId, opts = {}) {
27
+ return this.request('GET', '/v1/billing/entitlements', { user_id: userId, organization_id: opts.organizationId })
28
+ .then((r) => r.entitlements);
29
+ }
30
+ check(userId, q) {
31
+ return this.request('GET', '/v1/billing/entitlements/check', {
32
+ user_id: userId, product: q.product, feature: q.feature, action: q.action, quantity: q.quantity, organization_id: q.organizationId,
33
+ }).then((r) => r.access);
34
+ }
35
+ async canUse(userId, product, q = {}) {
36
+ return (await this.check(userId, { ...q, product })).allowed;
37
+ }
38
+ /** Throws EndorrEntitlementError (402) when denied. */
39
+ async require(userId, q) {
40
+ return assertAllowed(await this.check(userId, q));
41
+ }
42
+ wallet(userId, opts = {}) {
43
+ return this.request('GET', '/v1/billing/tokens', { user_id: userId, organization_id: opts.organizationId }).then((r) => r.wallet);
44
+ }
45
+ /**
46
+ * Pay for work in tokens; throws EndorrEntitlementError (402 not_entitled / insufficient_tokens) when
47
+ * it may not. `product` names the product the work belongs to when your app runs another product's
48
+ * tools (PrintReadySheets hosts FileFixer): Core then checks that product instead of your own.
49
+ */
50
+ spend(userId, input) {
51
+ return this.request('POST', '/v1/billing/tokens/spend', {}, { ...input, user_id: userId });
52
+ }
53
+ refund(userId, transactionId) {
54
+ return this.request('DELETE', `/v1/billing/tokens/spend/${encodeURIComponent(transactionId)}`, { user_id: userId });
55
+ }
56
+ /**
57
+ * Paid charges of the add-ons that unlock your product, oldest first — for your own books once your
58
+ * billing runs through Endorr (dealer commission, revenue reports). Pass `next_since` back as
59
+ * `since` to page; replays are safe to skip by `id`.
60
+ */
61
+ payments(opts = {}) {
62
+ const since = opts.since instanceof Date ? opts.since.toISOString() : opts.since;
63
+ return this.request('GET', '/v1/billing/product-payments', { since, limit: opts.limit });
64
+ }
65
+ /** Create or replace the subscription Core holds under your id. */
66
+ upsert(externalId, input) {
67
+ return this.request('PUT', `/v1/billing/external-subscriptions/${encodeURIComponent(externalId)}`, {}, input);
68
+ }
69
+ get(externalId) {
70
+ return this.request('GET', `/v1/billing/external-subscriptions/${encodeURIComponent(externalId)}`);
71
+ }
72
+ async request(method, path, query = {}, body) {
73
+ const url = new URL(this.base + path);
74
+ for (const [k, v] of Object.entries(query))
75
+ if (v !== undefined && v !== null)
76
+ url.searchParams.set(k, String(v));
77
+ const headers = { accept: 'application/json', authorization: this.authorization };
78
+ if (body !== undefined)
79
+ headers['content-type'] = 'application/json';
80
+ const res = await this.f(url.toString(), { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
81
+ if (!res.ok)
82
+ await throwForResponse(res);
83
+ return (await res.json());
84
+ }
85
+ }
86
+ //# sourceMappingURL=billing-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-sync.js","sourceRoot":"","sources":["../src/billing-sync.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,14 @@
1
- import type { Me, EndorrUser, OrganizationSummary, SessionInfo, ConnectedApp, Member, Invite, Team, EndorrFile, EndorrFolder, UploadTicket, DownloadTicket, Grant, ShareLink, StorageUsage, OrgRole, ResourceRole, PrincipalType, StorageClass, ResourceType, AuditEvent, Page } from './types';
1
+ import type { Me, EndorrUser, OrganizationSummary, SessionInfo, ConnectedApp, Member, Invite, Team, EndorrFile, EndorrFolder, UploadTicket, DownloadTicket, Grant, ShareLink, StorageUsage, OrgRole, ResourceRole, PrincipalType, StorageClass, ResourceType, AuditEvent, Page, Plan, PlanKey, Entitlements, BillingOverview, BillingPayment, CheckoutSession, PlanChange, Subscription, AccessCheck, AddonKey, Catalogue, FeatureKey, ProductKey, TokenAction, TokenCheckout, TokenSpend, Wallet } from './types';
2
+ /** What to check: a product, a plan feature, or whether the wallet affords `quantity` × `action`. */
3
+ export interface AccessQuery {
4
+ product?: ProductKey;
5
+ feature?: FeatureKey;
6
+ action?: TokenAction;
7
+ /** Units of `action`; default 1. */
8
+ quantity?: number;
9
+ /** Defaults to the token's organisation. */
10
+ organizationId?: string;
11
+ }
2
12
  export interface ClientConfig {
3
13
  /** Core origin, e.g. https://auth.endorr.com */
4
14
  baseUrl: string;
@@ -241,6 +251,60 @@ export declare class EndorrClient {
241
251
  storage: {
242
252
  usage: () => Promise<StorageUsage>;
243
253
  };
254
+ billing: {
255
+ /** Public catalogue: plans, add-ons, token packs and what each action costs. */
256
+ catalogue: () => Promise<Catalogue>;
257
+ plans: () => Promise<Plan[]>;
258
+ /** Plan, add-ons, products, features, storage and monthly tokens. Defaults to the token's organisation. */
259
+ entitlements: (organizationId?: string) => Promise<Entitlements>;
260
+ /** Entitlements, subscriptions, wallet and storage in one call, for an account page. */
261
+ overview: (organizationId: string) => Promise<BillingOverview>;
262
+ /** Subscribe to a plan (studio, studio_plus) or add an add-on (printreadysheets). Send the browser to `checkout_url`. */
263
+ checkout: (organizationId: string, input: {
264
+ plan: Exclude<PlanKey, "free"> | AddonKey;
265
+ redirect_url?: string | null;
266
+ }) => Promise<CheckoutSession>;
267
+ payments: (organizationId: string) => Promise<BillingPayment[]>;
268
+ subscription: (id: string) => Promise<Subscription>;
269
+ /** Studio ↔ Studio+. Upgrades apply once the prorated charge is paid; downgrades at the next renewal. */
270
+ changePlan: (id: string, plan: Exclude<PlanKey, "free">) => Promise<PlanChange>;
271
+ cancel: (id: string) => Promise<Subscription>;
272
+ resume: (id: string) => Promise<Subscription>;
273
+ /** Reconcile with Mollie, e.g. on the checkout return page. */
274
+ refresh: (id: string) => Promise<Subscription>;
275
+ /** Product subscriptions reported for the caller's verified email, waiting to be attached. */
276
+ claimable: () => Promise<Subscription[]>;
277
+ claim: (id: string, organizationId: string) => Promise<Subscription>;
278
+ /** Live access check. A denial is an answer, not an error: read `allowed`, `reason`, and `addon` / `upgrade` / `top_up`. */
279
+ check: (q: AccessQuery) => Promise<AccessCheck>;
280
+ /** `true` when the organisation may use the product (and afford `quantity` × `action`, if given). */
281
+ canUse: (product: ProductKey, q?: Omit<AccessQuery, "product">) => Promise<boolean>;
282
+ /** Like `check`, but throws EndorrEntitlementError (402) when denied. Use it to gate a handler. */
283
+ require: (q: AccessQuery) => Promise<AccessCheck>;
284
+ /** The token wallet: balances and the latest movements. */
285
+ wallet: (organizationId?: string) => Promise<Wallet>;
286
+ /**
287
+ * Pay for metered work in tokens (Endorr apps only). Spend before the work and `refund` if it fails;
288
+ * an idempotency key makes retries count once. Throws EndorrEntitlementError (402 not_entitled /
289
+ * insufficient_tokens) when it may not. `product` names the product the work belongs to when your
290
+ * app runs another product's tools.
291
+ */
292
+ spend: (input: {
293
+ action: TokenAction;
294
+ quantity?: number;
295
+ idempotency_key?: string;
296
+ organization_id?: string;
297
+ product?: ProductKey;
298
+ }) => Promise<TokenSpend>;
299
+ refund: (transactionId: string) => Promise<TokenSpend>;
300
+ /** Admin: buy a token pack; the tokens land once Mollie reports it paid. */
301
+ buyTokens: (organizationId: string, input: {
302
+ pack: string;
303
+ redirect_url?: string | null;
304
+ }) => Promise<TokenCheckout>;
305
+ /** Reconcile one payment with Mollie (a token pack's return page). */
306
+ refreshPayment: (paymentId: string) => Promise<BillingPayment>;
307
+ };
244
308
  }
245
309
  export {};
246
310
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { throwForResponse } from './errors';
2
+ import { assertAllowed } from './entitlements';
2
3
  /**
3
4
  * Typed client for the Endorr Core /v1 API. Every method throws EndorrApiError with the server's
4
5
  * stable `code`, so callers can branch on 403 (needs a role) vs 404 (not yours / gone).
@@ -116,6 +117,51 @@ export class EndorrClient {
116
117
  storage = {
117
118
  usage: () => this.request('GET', '/v1/storage/usage'),
118
119
  };
120
+ /* ── Billing (billing scope; managing needs organisation owner/admin) ───────────── */
121
+ billing = {
122
+ /** Public catalogue: plans, add-ons, token packs and what each action costs. */
123
+ catalogue: () => this.request('GET', '/v1/billing/plans'),
124
+ plans: () => this.billing.catalogue().then((c) => c.plans),
125
+ /** Plan, add-ons, products, features, storage and monthly tokens. Defaults to the token's organisation. */
126
+ entitlements: (organizationId) => this.request('GET', '/v1/billing/entitlements', { query: { organization_id: organizationId } }).then((r) => r.entitlements),
127
+ /** Entitlements, subscriptions, wallet and storage in one call, for an account page. */
128
+ overview: (organizationId) => this.request('GET', `/v1/organizations/${enc(organizationId)}/billing`),
129
+ /** Subscribe to a plan (studio, studio_plus) or add an add-on (printreadysheets). Send the browser to `checkout_url`. */
130
+ checkout: (organizationId, input) => this.request('POST', `/v1/organizations/${enc(organizationId)}/billing/checkout`, { body: input }),
131
+ payments: (organizationId) => this.request('GET', `/v1/organizations/${enc(organizationId)}/billing/payments`).then((r) => r.payments),
132
+ subscription: (id) => this.request('GET', `/v1/billing/subscriptions/${enc(id)}`).then((r) => r.subscription),
133
+ /** Studio ↔ Studio+. Upgrades apply once the prorated charge is paid; downgrades at the next renewal. */
134
+ changePlan: (id, plan) => this.request('POST', `/v1/billing/subscriptions/${enc(id)}/change-plan`, { body: { plan } }),
135
+ cancel: (id) => this.request('POST', `/v1/billing/subscriptions/${enc(id)}/cancel`, { body: {} }).then((r) => r.subscription),
136
+ resume: (id) => this.request('POST', `/v1/billing/subscriptions/${enc(id)}/resume`, { body: {} }).then((r) => r.subscription),
137
+ /** Reconcile with Mollie, e.g. on the checkout return page. */
138
+ refresh: (id) => this.request('POST', `/v1/billing/subscriptions/${enc(id)}/refresh`, { body: {} }).then((r) => r.subscription),
139
+ /** Product subscriptions reported for the caller's verified email, waiting to be attached. */
140
+ claimable: () => this.request('GET', '/v1/billing/claimable').then((r) => r.subscriptions),
141
+ claim: (id, organizationId) => this.request('POST', `/v1/billing/subscriptions/${enc(id)}/claim`, { body: { organization_id: organizationId } }).then((r) => r.subscription),
142
+ /** Live access check. A denial is an answer, not an error: read `allowed`, `reason`, and `addon` / `upgrade` / `top_up`. */
143
+ check: (q) => this.request('GET', '/v1/billing/entitlements/check', {
144
+ query: { product: q.product, feature: q.feature, action: q.action, quantity: q.quantity, organization_id: q.organizationId },
145
+ }).then((r) => r.access),
146
+ /** `true` when the organisation may use the product (and afford `quantity` × `action`, if given). */
147
+ canUse: async (product, q = {}) => (await this.billing.check({ ...q, product })).allowed,
148
+ /** Like `check`, but throws EndorrEntitlementError (402) when denied. Use it to gate a handler. */
149
+ require: async (q) => assertAllowed(await this.billing.check(q)),
150
+ /** The token wallet: balances and the latest movements. */
151
+ wallet: (organizationId) => this.request('GET', '/v1/billing/tokens', { query: { organization_id: organizationId } }).then((r) => r.wallet),
152
+ /**
153
+ * Pay for metered work in tokens (Endorr apps only). Spend before the work and `refund` if it fails;
154
+ * an idempotency key makes retries count once. Throws EndorrEntitlementError (402 not_entitled /
155
+ * insufficient_tokens) when it may not. `product` names the product the work belongs to when your
156
+ * app runs another product's tools.
157
+ */
158
+ spend: (input) => this.request('POST', '/v1/billing/tokens/spend', { body: input }),
159
+ refund: (transactionId) => this.request('DELETE', `/v1/billing/tokens/spend/${enc(transactionId)}`),
160
+ /** Admin: buy a token pack; the tokens land once Mollie reports it paid. */
161
+ buyTokens: (organizationId, input) => this.request('POST', `/v1/organizations/${enc(organizationId)}/billing/tokens/checkout`, { body: input }),
162
+ /** Reconcile one payment with Mollie (a token pack's return page). */
163
+ refreshPayment: (paymentId) => this.request('POST', `/v1/billing/payments/${enc(paymentId)}/refresh`, { body: {} }).then((r) => r.payment),
164
+ };
119
165
  }
120
166
  function enc(s) { return encodeURIComponent(s); }
121
167
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { AccessCheck, Entitlements, FeatureKey, ProductKey } from './types';
2
+ /**
3
+ * Offline helpers over data you already fetched. Good for rendering (cache entitlements for a
4
+ * minute); anything that costs tokens must still go through `billing.spend`, which Core enforces.
5
+ */
6
+ export declare const PRODUCT_NAMES: Record<ProductKey, string>;
7
+ /** Phrased to complete "Studio does not include …". */
8
+ export declare const FEATURE_NAMES: Record<FeatureKey, string>;
9
+ /** Whether the organisation's entitlements include the product. */
10
+ export declare function hasProduct(ent: Pick<Entitlements, 'products'> | null | undefined, product: ProductKey): boolean;
11
+ /** Whether the organisation's plan includes the feature. */
12
+ export declare function hasFeature(ent: Pick<Entitlements, 'features'> | null | undefined, feature: FeatureKey): boolean;
13
+ /** One sentence for a denied check, the same text Core uses in its 402 errors. */
14
+ export declare function describeDenial(check: AccessCheck): string;
15
+ /** Throw the same error Core would for a denied check, so live and cached checks are handled alike. */
16
+ export declare function assertAllowed(check: AccessCheck): AccessCheck;
17
+ //# sourceMappingURL=entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGjF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAEpD,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAGpD,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAE/G;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAE/G;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAczD;AAED,uGAAuG;AACvG,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAG7D"}
@@ -0,0 +1,44 @@
1
+ import { EndorrEntitlementError } from './errors';
2
+ /**
3
+ * Offline helpers over data you already fetched. Good for rendering (cache entitlements for a
4
+ * minute); anything that costs tokens must still go through `billing.spend`, which Core enforces.
5
+ */
6
+ export const PRODUCT_NAMES = {
7
+ printreadysheets: 'PrintReadySheets', filefixer: 'FileFixer', easymockup: 'Easy Mockup', pixlpilot: 'PixlPilot', endorrcloud: 'Endorr Cloud',
8
+ };
9
+ /** Phrased to complete "Studio does not include …". */
10
+ export const FEATURE_NAMES = {
11
+ sharing: 'sharing', collaboration: 'collaboration', filefixer_full: 'every FileFixer feature', team_workspace: 'a team workspace',
12
+ permissions: 'permissions', batch_workflows: 'batch workflows', priority_processing: 'priority processing',
13
+ };
14
+ /** Whether the organisation's entitlements include the product. */
15
+ export function hasProduct(ent, product) {
16
+ return !!ent?.products.includes(product);
17
+ }
18
+ /** Whether the organisation's plan includes the feature. */
19
+ export function hasFeature(ent, feature) {
20
+ return !!ent?.features.includes(feature);
21
+ }
22
+ /** One sentence for a denied check, the same text Core uses in its 402 errors. */
23
+ export function describeDenial(check) {
24
+ const up = check.upgrade?.plan_name;
25
+ switch (check.reason) {
26
+ case 'addon_required': return `${PRODUCT_NAMES[check.product]} is an add-on to ${check.plan.name}.${up ? ` It is included in ${up}.` : ''}`;
27
+ case 'not_in_plan': {
28
+ const what = check.product ? PRODUCT_NAMES[check.product] : FEATURE_NAMES[check.feature];
29
+ return `${check.plan.name} does not include ${what}.${up ? ` Upgrade to ${up} to use it.` : ''}`;
30
+ }
31
+ case 'insufficient_tokens': {
32
+ const t = check.tokens;
33
+ return `This needs ${t.cost} tokens and ${t.balance} ${t.balance === 1 ? 'is' : 'are'} left. Top up with a token pack${up ? ` or upgrade to ${up}` : ''}.`;
34
+ }
35
+ default: return 'Included.';
36
+ }
37
+ }
38
+ /** Throw the same error Core would for a denied check, so live and cached checks are handled alike. */
39
+ export function assertAllowed(check) {
40
+ if (!check.allowed)
41
+ throw new EndorrEntitlementError(check.reason === 'insufficient_tokens' ? 'insufficient_tokens' : 'not_entitled', describeDenial(check), check);
42
+ return check;
43
+ }
44
+ //# sourceMappingURL=entitlements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc;CAC7I,CAAC;AAEF,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,yBAAyB,EAAE,cAAc,EAAE,kBAAkB;IACjI,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB;CAC3G,CAAC;AAEF,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,GAAsD,EAAE,OAAmB;IACpG,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,GAAsD,EAAE,OAAmB;IACpG,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;IACpC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,gBAAgB,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAQ,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7I,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC;YAC1F,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,qBAAqB,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACnG,CAAC;QACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAO,CAAC;YACxB,OAAO,cAAc,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,kCAAkC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAC7J,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,MAAM,KAAK,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACpK,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { AccessCheck } from './types';
1
2
  /** Error returned by the Core API: `code` is stable and documented, `details` carries field errors for 422. */
2
3
  export declare class EndorrApiError extends Error {
3
4
  readonly status: number;
@@ -14,9 +15,24 @@ export declare class EndorrApiError extends Error {
14
15
  /** Field-level message for 422 responses. */
15
16
  fieldError(path: string): string | undefined;
16
17
  get isUnauthorized(): boolean;
18
+ get isPaymentRequired(): boolean;
17
19
  get isForbidden(): boolean;
18
20
  get isNotFound(): boolean;
19
21
  }
22
+ /**
23
+ * 402 from Core: the organisation may not use the product or feature (`not_entitled`), or cannot
24
+ * afford the action (`insufficient_tokens`). `check` carries what fixes it: `addon`, `upgrade`, `top_up`.
25
+ */
26
+ export declare class EndorrEntitlementError extends EndorrApiError {
27
+ readonly check: AccessCheck;
28
+ constructor(code: 'not_entitled' | 'insufficient_tokens', message: string, check: AccessCheck, requestId?: string);
29
+ get reason(): import("./types").AccessReason;
30
+ get upgrade(): {
31
+ plan_key: import("./types").PlanKey;
32
+ plan_name: string;
33
+ amount: import("./types").Money;
34
+ } | null;
35
+ }
20
36
  /** Error from the OAuth token/authorization endpoints (RFC 6749 §5.2). */
21
37
  export declare class EndorrOAuthError extends Error {
22
38
  readonly error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE;aAC9C,SAAS,CAAC,EAAE,MAAM;gBAJlB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,YAAA,EAC9C,SAAS,CAAC,EAAE,MAAM,YAAA;IAKpC,6CAA6C;IAC7C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG5C,IAAI,cAAc,YAAkC;IACpD,IAAI,WAAW,YAAkC;IACjD,IAAI,UAAU,YAAkC;CACjD;AAED,0EAA0E;AAC1E,qBAAa,gBAAiB,SAAQ,KAAK;aACb,KAAK,EAAE,MAAM;aAAkB,WAAW,CAAC,EAAE,MAAM;aAAkB,MAAM,CAAC,EAAE,MAAM;gBAApF,KAAK,EAAE,MAAM,EAAkB,WAAW,CAAC,EAAE,MAAM,YAAA,EAAkB,MAAM,CAAC,EAAE,MAAM,YAAA;CAIjH;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAKpE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,+GAA+G;AAC/G,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE;aAC9C,SAAS,CAAC,EAAE,MAAM;gBAJlB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,YAAA,EAC9C,SAAS,CAAC,EAAE,MAAM,YAAA;IAKpC,6CAA6C;IAC7C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG5C,IAAI,cAAc,YAAkC;IACpD,IAAI,iBAAiB,YAAkC;IACvD,IAAI,WAAW,YAAkC;IACjD,IAAI,UAAU,YAAkC;CACjD;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,cAAc;aACmC,KAAK,EAAE,WAAW;gBAAjG,IAAI,EAAE,cAAc,GAAG,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAkB,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM;IAIjI,IAAI,MAAM,mCAAgC;IAC1C,IAAI,OAAO;;;;aAAiC;CAC7C;AAED,0EAA0E;AAC1E,qBAAa,gBAAiB,SAAQ,KAAK;aACb,KAAK,EAAE,MAAM;aAAkB,WAAW,CAAC,EAAE,MAAM;aAAkB,MAAM,CAAC,EAAE,MAAM;gBAApF,KAAK,EAAE,MAAM,EAAkB,WAAW,CAAC,EAAE,MAAM,YAAA,EAAkB,MAAM,CAAC,EAAE,MAAM,YAAA;CAIjH;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CASpE"}