@lessly/sdk-app 94.0.0 → 94.1.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +15 -48
  2. package/dist/_types/gen/client.gen.d.ts +6 -42
  3. package/dist/_types/gen/manifest.gen.d.ts +1 -1
  4. package/dist/_types/gen/organization/index.d.ts +1 -1
  5. package/dist/_types/gen/organization/queryOptions.gen.d.ts +12 -8
  6. package/dist/_types/gen/types.gen.d.ts +1379 -9754
  7. package/dist/_types/index.d.ts +1 -1
  8. package/dist/_types/runtime/errors.d.ts +13 -0
  9. package/dist/index.cjs +61 -263
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.js +11506 -29
  12. package/dist/index.js.map +1 -1
  13. package/dist/organization/index.cjs +15 -10
  14. package/dist/organization/index.cjs.map +1 -1
  15. package/dist/organization/index.js +13 -9
  16. package/dist/organization/index.js.map +1 -1
  17. package/docs/README.md +1 -0
  18. package/docs/recipes/entitlements.md +96 -0
  19. package/docs/recipes/sdk-usage.md +5 -0
  20. package/package.json +2 -12
  21. package/src/gen/bindings.gen.ts +32 -246
  22. package/src/gen/client.gen.ts +11 -79
  23. package/src/gen/manifest.gen.ts +8 -27
  24. package/src/gen/organization/index.ts +1 -1
  25. package/src/gen/organization/queryOptions.gen.ts +17 -11
  26. package/src/gen/types.gen.ts +1495 -9452
  27. package/dist/_types/gen/playground/connect.gen.d.ts +0 -3
  28. package/dist/_types/gen/playground/index.d.ts +0 -3
  29. package/dist/_types/gen/playground/queryOptions.gen.d.ts +0 -70
  30. package/dist/chunk-HIAGROHK.js +0 -11695
  31. package/dist/chunk-HIAGROHK.js.map +0 -1
  32. package/dist/playground/index.cjs +0 -106
  33. package/dist/playground/index.cjs.map +0 -1
  34. package/dist/playground/index.d.cts +0 -1
  35. package/dist/playground/index.d.ts +0 -1
  36. package/dist/playground/index.js +0 -78
  37. package/dist/playground/index.js.map +0 -1
  38. package/src/gen/playground/connect.gen.ts +0 -9
  39. package/src/gen/playground/index.ts +0 -4
  40. package/src/gen/playground/queryOptions.gen.ts +0 -119
package/docs/README.md CHANGED
@@ -74,6 +74,7 @@ you need to touch it directly.
74
74
  | `recipes/sdk-usage.md` | You need to call the platform API: creating the SDK client, handling `LesslyApiError`, using the generated `*QueryOptions`/`*MutationOptions` factories. |
75
75
  | `recipes/federation.md` | You're touching the Module Federation setup: shared singletons, the dual-mode build, or the dual-mode CSS graph (the federation vs standalone stylesheets). |
76
76
  | `recipes/access.md` | You're gating UI on the caller's permissions: `app.access`, `useCan`, and rendering a 403 as an empty state rather than an error (APP-012). |
77
+ | `recipes/entitlements.md` | A call can fail with a 402 `entitlement_exhausted` / `entitlement_unavailable` (the organization reached its plan): `isEntitlementError` inside the shell, `upgradeUrl` outside it. |
77
78
  | `recipes/local-dev.md` | You're running the app locally: the dev proxy, device-code login, `.env.local`, or composing your app under a local shell. |
78
79
 
79
80
  ## Keeping this guide current
@@ -0,0 +1,96 @@
1
+ # Recipe: the billing refusal (HTTP 402 `entitlement_exhausted` / `entitlement_unavailable`)
2
+
3
+ Some operations consume something the organization pays for — emails, storage,
4
+ a managed database. Before such an operation the toolkit asks billing whether
5
+ the organization's plan allows it. When it does not, the call fails with
6
+ **HTTP 402** and this body:
7
+
8
+ ```json
9
+ {
10
+ "error": "entitlement_exhausted",
11
+ "reason": "trial_cap_reached",
12
+ "meter": "…",
13
+ "pool": "…",
14
+ "limit": 3000,
15
+ "used": 3000,
16
+ "requested": 1,
17
+ "plan": "trial",
18
+ "upgrade_url": "<Workspace web origin>/organization/billing?upgrade=pro&org=<org_id>"
19
+ }
20
+ ```
21
+
22
+ | Field | Values |
23
+ | --- | --- |
24
+ | `error` | `entitlement_exhausted` (every reason except `trial_class_unavailable`), `entitlement_unavailable` |
25
+ | `reason` | `trial_cap_reached`, `trial_class_unavailable`, `billing_paused`, `budget_paused` |
26
+ | `plan` | `trial`, `pro`, `enterprise`, `none` |
27
+
28
+ This is not your App's error and not the user's mistake: it is the organization
29
+ reaching the edge of its plan. **The Workspace shell shows it** — one window,
30
+ with the reason and a path to Pro — for every federated App and for its own
31
+ calls. Your App renders nothing for it.
32
+
33
+ ---
34
+
35
+ ## 1. Inside the shell: recognise it, render nothing
36
+
37
+ ```tsx
38
+ import { isAccessDenied, isEntitlementError } from '@lepsto/sdk-app';
39
+
40
+ function RequestError({ error }: { error: unknown }) {
41
+ // The shell already opened its refusal window. A second error here is a duplicate.
42
+ if (isEntitlementError(error)) return null;
43
+ if (isAccessDenied(error)) return <EmptyState title="You don't have access to this" />;
44
+ return <ErrorState error={error} />;
45
+ }
46
+ ```
47
+
48
+ Put the branch in the one shared component that classifies errors (see
49
+ `access.md` §3 — state keeps the error *object*, never its message).
50
+ `isEntitlementError` is true for exactly the rule the shell uses: status `402`
51
+ and a body `error` of `entitlement_exhausted` or `entitlement_unavailable`. Any other 402 — a toolkit's
52
+ own payment failure — is false and stays yours to show.
53
+
54
+ Like `isAccessDenied`, it reads `status` and `body` structurally, so an error
55
+ thrown by another copy of this SDK on the page is recognised too.
56
+
57
+ ## 2. Outside the shell: link to the upgrade path
58
+
59
+ A standalone App, or an App calling through its own `fetch`, is invisible to the
60
+ shell. Show a short notice with the link from `upgradeUrl(err)`:
61
+
62
+ ```tsx
63
+ import { upgradeUrl } from '@lepsto/sdk-app';
64
+
65
+ const href = upgradeUrl(error);
66
+ if (href) {
67
+ return (
68
+ <Notice>
69
+ Your organization has reached its plan limit. <a href={href}>Upgrade to Pro</a>
70
+ </Notice>
71
+ );
72
+ }
73
+ ```
74
+
75
+ With your own `fetch`, pass the status and the parsed body:
76
+
77
+ ```ts
78
+ const res = await fetch(url, init);
79
+ if (!res.ok) {
80
+ const err = { status: res.status, body: await res.json().catch(() => null) };
81
+ if (isEntitlementError(err)) showUpgradeNotice(upgradeUrl(err));
82
+ }
83
+ ```
84
+
85
+ `upgradeUrl` returns the URL billing sent, unchanged, and `null` when the error
86
+ is not an entitlement refusal or the URL is not an absolute `http(s)` URL. Never
87
+ build this URL yourself — it names the refused organization.
88
+
89
+ ## What not to do
90
+
91
+ - **Do not retry** the refused call in a loop. Nothing changes until the
92
+ organization upgrades or the next period starts.
93
+ - **Do not cache** the refusal. After an upgrade the next call succeeds.
94
+ - **Do not render it red**, and inside the shell do not render it at all.
95
+ - **Do not branch on `reason`** to decide *whether* to show something — that is
96
+ `isEntitlementError`. `reason`, `used` and `limit` are for wording only.
@@ -71,6 +71,11 @@ try {
71
71
  }
72
72
  ```
73
73
 
74
+ A **402** whose body `error` is `entitlement_exhausted` or
75
+ `entitlement_unavailable` is billing refusing the
76
+ call over the organization's plan. The Workspace shell shows it; see
77
+ `entitlements.md` for `isEntitlementError` and `upgradeUrl`.
78
+
74
79
  ### Missing CSRF cookie
75
80
 
76
81
  Mutating calls (`POST`, `PUT`, `PATCH`, `DELETE`) require the `lepsto_csrf`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lessly/sdk-app",
3
3
  "description": "The Lessly SDK for App is a TypeScript SDK that provides runtime bindings and type-safe generated code for interacting with Lessly Platform APIs and services. This package generates type definitions and client bindings from API catalogs, enabling developers to build applications that consume Lessly platform services with full type safety and autocompletion.",
4
- "version": "94.0.0",
4
+ "version": "94.1.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/lepsto/lepsto-sdk-app.git"
@@ -159,16 +159,6 @@
159
159
  "default": "./dist/organization/index.cjs"
160
160
  }
161
161
  },
162
- "./playground": {
163
- "import": {
164
- "types": "./dist/playground/index.d.ts",
165
- "default": "./dist/playground/index.js"
166
- },
167
- "require": {
168
- "types": "./dist/playground/index.d.cts",
169
- "default": "./dist/playground/index.cjs"
170
- }
171
- },
172
162
  "./realtime": {
173
163
  "import": {
174
164
  "types": "./dist/realtime/index.d.ts",
@@ -220,5 +210,5 @@
220
210
  }
221
211
  }
222
212
  },
223
- "sdkContentHash": "sha256:68191900f3a6d44d457c5096ff7201d610a5e9db4244663de1dccb68088abd09"
213
+ "sdkContentHash": "sha256:28b3ddfd5de35b606496c3c3b15a966f1ec57120e75f14ab7efbc62f83502f25"
224
214
  }
@@ -1796,10 +1796,6 @@ export const bindings: BindingsMap = {
1796
1796
  {
1797
1797
  "in": "body",
1798
1798
  "name": "media"
1799
- },
1800
- {
1801
- "in": "body",
1802
- "name": "targets"
1803
1799
  }
1804
1800
  ],
1805
1801
  "path": "/content/posts",
@@ -1868,10 +1864,6 @@ export const bindings: BindingsMap = {
1868
1864
  {
1869
1865
  "in": "body",
1870
1866
  "name": "media"
1871
- },
1872
- {
1873
- "in": "body",
1874
- "name": "targets"
1875
1867
  }
1876
1868
  ],
1877
1869
  "path": "/content/posts/:id",
@@ -2027,6 +2019,10 @@ export const bindings: BindingsMap = {
2027
2019
  "in": "body",
2028
2020
  "name": "channelId"
2029
2021
  },
2022
+ {
2023
+ "in": "body",
2024
+ "name": "text"
2025
+ },
2030
2026
  {
2031
2027
  "in": "body",
2032
2028
  "name": "idempotencyKey"
@@ -2082,6 +2078,10 @@ export const bindings: BindingsMap = {
2082
2078
  "in": "body",
2083
2079
  "name": "scheduledAt"
2084
2080
  },
2081
+ {
2082
+ "in": "body",
2083
+ "name": "text"
2084
+ },
2085
2085
  {
2086
2086
  "in": "body",
2087
2087
  "name": "idempotencyKey"
@@ -5937,47 +5937,48 @@ export const bindings: BindingsMap = {
5937
5937
  "readOnly": true
5938
5938
  }
5939
5939
  },
5940
- "billing-budgets": {
5941
- "get": {
5942
- "level": "read",
5943
- "method": "GET",
5944
- "operationKey": "organization_billing_budgets_get",
5945
- "path": "/governance/api/v1/billing/budgets",
5946
- "readOnly": true
5947
- }
5948
- },
5949
- "billing-caps": {
5940
+ "billing-budget": {
5950
5941
  "clear": {
5951
5942
  "level": "write",
5952
5943
  "method": "DELETE",
5953
- "operationKey": "organization_billing_caps_clear",
5954
- "params": [
5955
- {
5956
- "in": "body",
5957
- "name": "productId"
5958
- }
5959
- ],
5960
- "path": "/governance/api/v1/billing/budgets/cap",
5944
+ "operationKey": "organization_billing_budget_clear",
5945
+ "path": "/governance/api/v1/billing/budgets",
5946
+ "readOnly": false
5947
+ },
5948
+ "resume": {
5949
+ "level": "write",
5950
+ "method": "POST",
5951
+ "operationKey": "organization_billing_budget_resume",
5952
+ "path": "/governance/api/v1/billing/budgets/resume",
5961
5953
  "readOnly": false
5962
5954
  },
5963
5955
  "set": {
5964
5956
  "level": "write",
5965
5957
  "method": "PUT",
5966
- "operationKey": "organization_billing_caps_set",
5958
+ "operationKey": "organization_billing_budget_set",
5967
5959
  "params": [
5968
5960
  {
5969
5961
  "in": "body",
5970
- "name": "productId"
5962
+ "name": "amount_minor"
5971
5963
  },
5972
5964
  {
5973
5965
  "in": "body",
5974
- "name": "cap_minor"
5966
+ "name": "action"
5975
5967
  }
5976
5968
  ],
5977
- "path": "/governance/api/v1/billing/budgets/cap",
5969
+ "path": "/governance/api/v1/billing/budgets",
5978
5970
  "readOnly": false
5979
5971
  }
5980
5972
  },
5973
+ "billing-budgets": {
5974
+ "get": {
5975
+ "level": "read",
5976
+ "method": "GET",
5977
+ "operationKey": "organization_billing_budgets_get",
5978
+ "path": "/governance/api/v1/billing/budgets",
5979
+ "readOnly": true
5980
+ }
5981
+ },
5981
5982
  "bindings": {
5982
5983
  "list": {
5983
5984
  "level": "read",
@@ -7404,213 +7405,6 @@ export const bindings: BindingsMap = {
7404
7405
  }
7405
7406
  }
7406
7407
  },
7407
- "playground": {
7408
- "analytics": {
7409
- "overview": {
7410
- "level": "read",
7411
- "method": "POST",
7412
- "operationKey": "playground_analytics_overview",
7413
- "params": [
7414
- {
7415
- "in": "body",
7416
- "name": "limit"
7417
- }
7418
- ],
7419
- "path": "/playground/analytics/overview",
7420
- "readOnly": true
7421
- }
7422
- },
7423
- "billing": {
7424
- "entitlements": {
7425
- "level": "read",
7426
- "method": "POST",
7427
- "operationKey": "playground_billing_entitlements",
7428
- "path": "/playground/billing/entitlements",
7429
- "readOnly": true
7430
- },
7431
- "record-usage": {
7432
- "level": "write",
7433
- "method": "POST",
7434
- "operationKey": "playground_billing_record-usage",
7435
- "params": [
7436
- {
7437
- "in": "body",
7438
- "name": "value"
7439
- }
7440
- ],
7441
- "path": "/playground/billing/usage",
7442
- "readOnly": false
7443
- }
7444
- },
7445
- "clickup": {
7446
- "create-task": {
7447
- "level": "write",
7448
- "method": "POST",
7449
- "operationKey": "playground_clickup_create-task",
7450
- "params": [
7451
- {
7452
- "in": "body",
7453
- "name": "listId"
7454
- },
7455
- {
7456
- "in": "body",
7457
- "name": "name"
7458
- }
7459
- ],
7460
- "path": "/playground/clickup/tasks",
7461
- "readOnly": false
7462
- },
7463
- "get-last-webhook": {
7464
- "level": "read",
7465
- "method": "GET",
7466
- "operationKey": "playground_clickup_get-last-webhook",
7467
- "path": "/playground/clickup/webhooks/last",
7468
- "readOnly": true
7469
- },
7470
- "get-overview": {
7471
- "level": "read",
7472
- "method": "GET",
7473
- "operationKey": "playground_clickup_get-overview",
7474
- "path": "/playground/clickup/overview",
7475
- "readOnly": true
7476
- }
7477
- },
7478
- "echo": {
7479
- "ping": {
7480
- "level": "read",
7481
- "method": "POST",
7482
- "operationKey": "playground_echo_ping",
7483
- "params": [
7484
- {
7485
- "in": "body",
7486
- "name": "message"
7487
- }
7488
- ],
7489
- "path": "/playground/echo/ping",
7490
- "readOnly": true
7491
- }
7492
- },
7493
- "gdrive": {
7494
- "get-last-change": {
7495
- "level": "read",
7496
- "method": "GET",
7497
- "operationKey": "playground_gdrive_get-last-change",
7498
- "path": "/playground/gdrive/changes/last",
7499
- "readOnly": true
7500
- },
7501
- "read-file": {
7502
- "level": "read",
7503
- "method": "POST",
7504
- "operationKey": "playground_gdrive_read-file",
7505
- "params": [
7506
- {
7507
- "in": "body",
7508
- "name": "fileId"
7509
- }
7510
- ],
7511
- "path": "/playground/gdrive/file",
7512
- "readOnly": true
7513
- }
7514
- },
7515
- "googleads": {
7516
- "read-customer": {
7517
- "level": "read",
7518
- "method": "POST",
7519
- "operationKey": "playground_googleads_read-customer",
7520
- "path": "/playground/googleads/customer",
7521
- "readOnly": true
7522
- }
7523
- },
7524
- "lifecycle": {
7525
- "get-state": {
7526
- "level": "read",
7527
- "method": "GET",
7528
- "operationKey": "playground_lifecycle_get-state",
7529
- "path": "/playground/lifecycle/state",
7530
- "readOnly": true
7531
- },
7532
- "list-events": {
7533
- "level": "read",
7534
- "method": "GET",
7535
- "operationKey": "playground_lifecycle_list-events",
7536
- "path": "/playground/lifecycle/events",
7537
- "readOnly": true
7538
- }
7539
- },
7540
- "webhook": {
7541
- "get-last": {
7542
- "level": "read",
7543
- "method": "GET",
7544
- "operationKey": "playground_webhook_get-last",
7545
- "path": "/playground/webhooks/last",
7546
- "readOnly": true
7547
- }
7548
- },
7549
- "workflow": {
7550
- "echo": {
7551
- "level": "write",
7552
- "method": "POST",
7553
- "operationKey": "playground_workflow_echo",
7554
- "params": [
7555
- {
7556
- "in": "body",
7557
- "name": "note"
7558
- },
7559
- {
7560
- "in": "body",
7561
- "name": "tags"
7562
- }
7563
- ],
7564
- "path": "/playground/workflow/echo",
7565
- "readOnly": false
7566
- },
7567
- "echo-list": {
7568
- "level": "read",
7569
- "method": "GET",
7570
- "operationKey": "playground_workflow_echo-list",
7571
- "path": "/playground/workflow/echoes",
7572
- "readOnly": true
7573
- },
7574
- "ping": {
7575
- "level": "write",
7576
- "method": "POST",
7577
- "operationKey": "playground_workflow_ping",
7578
- "params": [
7579
- {
7580
- "in": "body",
7581
- "name": "kind"
7582
- }
7583
- ],
7584
- "path": "/playground/workflow/ping",
7585
- "readOnly": false
7586
- },
7587
- "subjects-list": {
7588
- "level": "read",
7589
- "method": "GET",
7590
- "operationKey": "playground_workflow_subjects-list",
7591
- "params": [
7592
- {
7593
- "in": "query",
7594
- "name": "last_activity_before"
7595
- },
7596
- {
7597
- "in": "query",
7598
- "name": "last_activity_after"
7599
- },
7600
- {
7601
- "in": "query",
7602
- "name": "limit"
7603
- },
7604
- {
7605
- "in": "query",
7606
- "name": "cursor"
7607
- }
7608
- ],
7609
- "path": "/playground/workflow/subjects",
7610
- "readOnly": true
7611
- }
7612
- }
7613
- },
7614
7408
  "realtime": {
7615
7409
  "archive": {
7616
7410
  "export": {
@@ -11683,12 +11477,4 @@ export const bindings: BindingsMap = {
11683
11477
  }
11684
11478
  };
11685
11479
 
11686
- export const wsBindings: WsBindingsMap = {
11687
- "playground": {
11688
- "ws": {
11689
- "echo": {
11690
- "path": "/playground/ws/echo"
11691
- }
11692
- }
11693
- }
11694
- };
11480
+ export const wsBindings: WsBindingsMap = {};
@@ -619,12 +619,14 @@ import type {
619
619
  ObserveWebhooksUpdateOutput,
620
620
  OrganizationAuthMeInput,
621
621
  OrganizationAuthMeOutput,
622
+ OrganizationBillingBudgetClearInput,
623
+ OrganizationBillingBudgetClearOutput,
624
+ OrganizationBillingBudgetResumeInput,
625
+ OrganizationBillingBudgetResumeOutput,
626
+ OrganizationBillingBudgetSetInput,
627
+ OrganizationBillingBudgetSetOutput,
622
628
  OrganizationBillingBudgetsGetInput,
623
629
  OrganizationBillingBudgetsGetOutput,
624
- OrganizationBillingCapsClearInput,
625
- OrganizationBillingCapsClearOutput,
626
- OrganizationBillingCapsSetInput,
627
- OrganizationBillingCapsSetOutput,
628
630
  OrganizationBindingsListInput,
629
631
  OrganizationBindingsListOutput,
630
632
  OrganizationClickupInstallInput,
@@ -797,40 +799,6 @@ import type {
797
799
  OrganizationXInstallOutput,
798
800
  OrganizationYoutubeInstallInput,
799
801
  OrganizationYoutubeInstallOutput,
800
- PlaygroundAnalyticsOverviewInput,
801
- PlaygroundAnalyticsOverviewOutput,
802
- PlaygroundBillingEntitlementsInput,
803
- PlaygroundBillingEntitlementsOutput,
804
- PlaygroundBillingRecordUsageInput,
805
- PlaygroundBillingRecordUsageOutput,
806
- PlaygroundClickupCreateTaskInput,
807
- PlaygroundClickupCreateTaskOutput,
808
- PlaygroundClickupGetLastWebhookInput,
809
- PlaygroundClickupGetLastWebhookOutput,
810
- PlaygroundClickupGetOverviewInput,
811
- PlaygroundClickupGetOverviewOutput,
812
- PlaygroundEchoPingInput,
813
- PlaygroundEchoPingOutput,
814
- PlaygroundGdriveGetLastChangeInput,
815
- PlaygroundGdriveGetLastChangeOutput,
816
- PlaygroundGdriveReadFileInput,
817
- PlaygroundGdriveReadFileOutput,
818
- PlaygroundGoogleadsReadCustomerInput,
819
- PlaygroundGoogleadsReadCustomerOutput,
820
- PlaygroundLifecycleGetStateInput,
821
- PlaygroundLifecycleGetStateOutput,
822
- PlaygroundLifecycleListEventsInput,
823
- PlaygroundLifecycleListEventsOutput,
824
- PlaygroundWebhookGetLastInput,
825
- PlaygroundWebhookGetLastOutput,
826
- PlaygroundWorkflowEchoInput,
827
- PlaygroundWorkflowEchoListInput,
828
- PlaygroundWorkflowEchoListOutput,
829
- PlaygroundWorkflowEchoOutput,
830
- PlaygroundWorkflowPingInput,
831
- PlaygroundWorkflowPingOutput,
832
- PlaygroundWorkflowSubjectsListInput,
833
- PlaygroundWorkflowSubjectsListOutput,
834
802
  RealtimeArchiveExportInput,
835
803
  RealtimeArchiveExportOutput,
836
804
  RealtimeArchiveExportStatusInput,
@@ -1813,13 +1781,14 @@ export interface GeneratedClient {
1813
1781
  auth: {
1814
1782
  me: ((input: OrganizationAuthMeInput) => Promise<OrganizationAuthMeOutput>) & Operation;
1815
1783
  };
1784
+ 'billing-budget': {
1785
+ clear: ((input: OrganizationBillingBudgetClearInput) => Promise<OrganizationBillingBudgetClearOutput>) & Operation;
1786
+ resume: ((input: OrganizationBillingBudgetResumeInput) => Promise<OrganizationBillingBudgetResumeOutput>) & Operation;
1787
+ set: ((input: OrganizationBillingBudgetSetInput) => Promise<OrganizationBillingBudgetSetOutput>) & Operation;
1788
+ };
1816
1789
  'billing-budgets': {
1817
1790
  get: ((input: OrganizationBillingBudgetsGetInput) => Promise<OrganizationBillingBudgetsGetOutput>) & Operation;
1818
1791
  };
1819
- 'billing-caps': {
1820
- clear: ((input: OrganizationBillingCapsClearInput) => Promise<OrganizationBillingCapsClearOutput>) & Operation;
1821
- set: ((input: OrganizationBillingCapsSetInput) => Promise<OrganizationBillingCapsSetOutput>) & Operation;
1822
- };
1823
1792
  bindings: {
1824
1793
  list: ((input: OrganizationBindingsListInput) => Promise<OrganizationBindingsListOutput>) & Operation;
1825
1794
  };
@@ -1958,43 +1927,6 @@ export interface GeneratedClient {
1958
1927
  install: ((input: OrganizationYoutubeInstallInput) => Promise<OrganizationYoutubeInstallOutput>) & Operation;
1959
1928
  };
1960
1929
  };
1961
- playground: {
1962
- analytics: {
1963
- overview: ((input: PlaygroundAnalyticsOverviewInput) => Promise<PlaygroundAnalyticsOverviewOutput>) & Operation;
1964
- };
1965
- billing: {
1966
- entitlements: ((input: PlaygroundBillingEntitlementsInput) => Promise<PlaygroundBillingEntitlementsOutput>) & Operation;
1967
- 'record-usage': ((input: PlaygroundBillingRecordUsageInput) => Promise<PlaygroundBillingRecordUsageOutput>) & Operation;
1968
- };
1969
- clickup: {
1970
- 'create-task': ((input: PlaygroundClickupCreateTaskInput) => Promise<PlaygroundClickupCreateTaskOutput>) & Operation;
1971
- 'get-last-webhook': ((input: PlaygroundClickupGetLastWebhookInput) => Promise<PlaygroundClickupGetLastWebhookOutput>) & Operation;
1972
- 'get-overview': ((input: PlaygroundClickupGetOverviewInput) => Promise<PlaygroundClickupGetOverviewOutput>) & Operation;
1973
- };
1974
- echo: {
1975
- ping: ((input: PlaygroundEchoPingInput) => Promise<PlaygroundEchoPingOutput>) & Operation;
1976
- };
1977
- gdrive: {
1978
- 'get-last-change': ((input: PlaygroundGdriveGetLastChangeInput) => Promise<PlaygroundGdriveGetLastChangeOutput>) & Operation;
1979
- 'read-file': ((input: PlaygroundGdriveReadFileInput) => Promise<PlaygroundGdriveReadFileOutput>) & Operation;
1980
- };
1981
- googleads: {
1982
- 'read-customer': ((input: PlaygroundGoogleadsReadCustomerInput) => Promise<PlaygroundGoogleadsReadCustomerOutput>) & Operation;
1983
- };
1984
- lifecycle: {
1985
- 'get-state': ((input: PlaygroundLifecycleGetStateInput) => Promise<PlaygroundLifecycleGetStateOutput>) & Operation;
1986
- 'list-events': ((input: PlaygroundLifecycleListEventsInput) => Promise<PlaygroundLifecycleListEventsOutput>) & Operation;
1987
- };
1988
- webhook: {
1989
- 'get-last': ((input: PlaygroundWebhookGetLastInput) => Promise<PlaygroundWebhookGetLastOutput>) & Operation;
1990
- };
1991
- workflow: {
1992
- echo: ((input: PlaygroundWorkflowEchoInput) => Promise<PlaygroundWorkflowEchoOutput>) & Operation;
1993
- 'echo-list': ((input: PlaygroundWorkflowEchoListInput) => Promise<PlaygroundWorkflowEchoListOutput>) & Operation;
1994
- ping: ((input: PlaygroundWorkflowPingInput) => Promise<PlaygroundWorkflowPingOutput>) & Operation;
1995
- 'subjects-list': ((input: PlaygroundWorkflowSubjectsListInput) => Promise<PlaygroundWorkflowSubjectsListOutput>) & Operation;
1996
- };
1997
- };
1998
1930
  realtime: {
1999
1931
  archive: {
2000
1932
  export: ((input: RealtimeArchiveExportInput) => Promise<RealtimeArchiveExportOutput>) & Operation;