assembly-kit 0.0.1
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/CLAUDE.md +205 -0
- package/LICENSE +21 -0
- package/README.md +516 -0
- package/dist/bridge-ui/index.d.mts +4 -0
- package/dist/bridge-ui/index.mjs +5 -0
- package/dist/bridge-ui/use-actions-menu.d.mts +16 -0
- package/dist/bridge-ui/use-actions-menu.mjs +33 -0
- package/dist/bridge-ui/use-actions-menu.mjs.map +1 -0
- package/dist/bridge-ui/use-primary-cta.d.mts +16 -0
- package/dist/bridge-ui/use-primary-cta.mjs +34 -0
- package/dist/bridge-ui/use-primary-cta.mjs.map +1 -0
- package/dist/bridge-ui/use-secondary-cta.d.mts +16 -0
- package/dist/bridge-ui/use-secondary-cta.mjs +34 -0
- package/dist/bridge-ui/use-secondary-cta.mjs.map +1 -0
- package/dist/client/index.d.mts +108 -0
- package/dist/client/index.mjs +168 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/client/options.d.mts +40 -0
- package/dist/constants/kit-mode.d.mts +15 -0
- package/dist/constants/kit-mode.mjs +15 -0
- package/dist/constants/kit-mode.mjs.map +1 -0
- package/dist/errors/base.d.mts +29 -0
- package/dist/errors/base.mjs +16 -0
- package/dist/errors/base.mjs.map +1 -0
- package/dist/errors/connection.d.mts +12 -0
- package/dist/errors/connection.mjs +16 -0
- package/dist/errors/connection.mjs.map +1 -0
- package/dist/errors/forbidden.d.mts +12 -0
- package/dist/errors/forbidden.mjs +16 -0
- package/dist/errors/forbidden.mjs.map +1 -0
- package/dist/errors/index.d.mts +13 -0
- package/dist/errors/index.mjs +13 -0
- package/dist/errors/invalid-token.d.mts +12 -0
- package/dist/errors/invalid-token.mjs +16 -0
- package/dist/errors/invalid-token.mjs.map +1 -0
- package/dist/errors/missing-api-key.d.mts +12 -0
- package/dist/errors/missing-api-key.mjs +16 -0
- package/dist/errors/missing-api-key.mjs.map +1 -0
- package/dist/errors/no-token.d.mts +12 -0
- package/dist/errors/no-token.mjs +16 -0
- package/dist/errors/no-token.mjs.map +1 -0
- package/dist/errors/not-found.d.mts +12 -0
- package/dist/errors/not-found.mjs +16 -0
- package/dist/errors/not-found.mjs.map +1 -0
- package/dist/errors/rate-limit.d.mts +17 -0
- package/dist/errors/rate-limit.mjs +18 -0
- package/dist/errors/rate-limit.mjs.map +1 -0
- package/dist/errors/response-parse.d.mts +19 -0
- package/dist/errors/response-parse.mjs +23 -0
- package/dist/errors/response-parse.mjs.map +1 -0
- package/dist/errors/server.d.mts +12 -0
- package/dist/errors/server.mjs +16 -0
- package/dist/errors/server.mjs.map +1 -0
- package/dist/errors/unauthorized.d.mts +12 -0
- package/dist/errors/unauthorized.mjs +16 -0
- package/dist/errors/unauthorized.mjs.map +1 -0
- package/dist/errors/validation.d.mts +12 -0
- package/dist/errors/validation.mjs +16 -0
- package/dist/errors/validation.mjs.map +1 -0
- package/dist/index.d.mts +49 -0
- package/dist/index.mjs +51 -0
- package/dist/lib/modules/app-connections/resource.d.mts +28 -0
- package/dist/lib/modules/app-connections/resource.mjs +33 -0
- package/dist/lib/modules/app-connections/resource.mjs.map +1 -0
- package/dist/lib/modules/app-connections/schema.d.mts +37 -0
- package/dist/lib/modules/app-connections/schema.mjs +30 -0
- package/dist/lib/modules/app-connections/schema.mjs.map +1 -0
- package/dist/lib/modules/app-installs/resource.d.mts +21 -0
- package/dist/lib/modules/app-installs/resource.mjs +31 -0
- package/dist/lib/modules/app-installs/resource.mjs.map +1 -0
- package/dist/lib/modules/app-installs/schema.d.mts +22 -0
- package/dist/lib/modules/app-installs/schema.mjs +23 -0
- package/dist/lib/modules/app-installs/schema.mjs.map +1 -0
- package/dist/lib/modules/clients/resource.d.mts +43 -0
- package/dist/lib/modules/clients/resource.mjs +62 -0
- package/dist/lib/modules/clients/resource.mjs.map +1 -0
- package/dist/lib/modules/clients/schema.d.mts +50 -0
- package/dist/lib/modules/clients/schema.mjs +52 -0
- package/dist/lib/modules/clients/schema.mjs.map +1 -0
- package/dist/lib/modules/companies/resource.d.mts +37 -0
- package/dist/lib/modules/companies/resource.mjs +60 -0
- package/dist/lib/modules/companies/resource.mjs.map +1 -0
- package/dist/lib/modules/companies/schema.d.mts +39 -0
- package/dist/lib/modules/companies/schema.mjs +34 -0
- package/dist/lib/modules/companies/schema.mjs.map +1 -0
- package/dist/lib/modules/contract-templates/resource.d.mts +27 -0
- package/dist/lib/modules/contract-templates/resource.mjs +40 -0
- package/dist/lib/modules/contract-templates/resource.mjs.map +1 -0
- package/dist/lib/modules/contract-templates/schema.d.mts +21 -0
- package/dist/lib/modules/contract-templates/schema.mjs +18 -0
- package/dist/lib/modules/contract-templates/schema.mjs.map +1 -0
- package/dist/lib/modules/contracts/resource.d.mts +29 -0
- package/dist/lib/modules/contracts/resource.mjs +40 -0
- package/dist/lib/modules/contracts/resource.mjs.map +1 -0
- package/dist/lib/modules/contracts/schema.d.mts +50 -0
- package/dist/lib/modules/contracts/schema.mjs +45 -0
- package/dist/lib/modules/contracts/schema.mjs.map +1 -0
- package/dist/lib/modules/custom-field-options/index.d.mts +1 -0
- package/dist/lib/modules/custom-field-options/index.mjs +2 -0
- package/dist/lib/modules/custom-field-options/resource.d.mts +22 -0
- package/dist/lib/modules/custom-field-options/resource.mjs +25 -0
- package/dist/lib/modules/custom-field-options/resource.mjs.map +1 -0
- package/dist/lib/modules/custom-field-options/schema.d.mts +18 -0
- package/dist/lib/modules/custom-field-options/schema.mjs +13 -0
- package/dist/lib/modules/custom-field-options/schema.mjs.map +1 -0
- package/dist/lib/modules/custom-fields/resource.d.mts +21 -0
- package/dist/lib/modules/custom-fields/resource.mjs +24 -0
- package/dist/lib/modules/custom-fields/resource.mjs.map +1 -0
- package/dist/lib/modules/custom-fields/schema.d.mts +43 -0
- package/dist/lib/modules/custom-fields/schema.mjs +44 -0
- package/dist/lib/modules/custom-fields/schema.mjs.map +1 -0
- package/dist/lib/modules/events/resource.d.mts +33 -0
- package/dist/lib/modules/events/resource.mjs +49 -0
- package/dist/lib/modules/events/resource.mjs.map +1 -0
- package/dist/lib/modules/events/schema.d.mts +52 -0
- package/dist/lib/modules/events/schema.mjs +49 -0
- package/dist/lib/modules/events/schema.mjs.map +1 -0
- package/dist/lib/modules/file-channels/resource.d.mts +26 -0
- package/dist/lib/modules/file-channels/resource.mjs +48 -0
- package/dist/lib/modules/file-channels/resource.mjs.map +1 -0
- package/dist/lib/modules/file-channels/schema.d.mts +33 -0
- package/dist/lib/modules/file-channels/schema.mjs +28 -0
- package/dist/lib/modules/file-channels/schema.mjs.map +1 -0
- package/dist/lib/modules/files/resource.d.mts +40 -0
- package/dist/lib/modules/files/resource.mjs +52 -0
- package/dist/lib/modules/files/resource.mjs.map +1 -0
- package/dist/lib/modules/files/schema.d.mts +27 -0
- package/dist/lib/modules/files/schema.mjs +27 -0
- package/dist/lib/modules/files/schema.mjs.map +1 -0
- package/dist/lib/modules/form-responses/resource.d.mts +24 -0
- package/dist/lib/modules/form-responses/resource.mjs +34 -0
- package/dist/lib/modules/form-responses/resource.mjs.map +1 -0
- package/dist/lib/modules/form-responses/schema.d.mts +29 -0
- package/dist/lib/modules/form-responses/schema.mjs +23 -0
- package/dist/lib/modules/form-responses/schema.mjs.map +1 -0
- package/dist/lib/modules/forms/resource.d.mts +24 -0
- package/dist/lib/modules/forms/resource.mjs +40 -0
- package/dist/lib/modules/forms/resource.mjs.map +1 -0
- package/dist/lib/modules/forms/schema.d.mts +22 -0
- package/dist/lib/modules/forms/schema.mjs +19 -0
- package/dist/lib/modules/forms/schema.mjs.map +1 -0
- package/dist/lib/modules/index.d.mts +28 -0
- package/dist/lib/modules/index.mjs +29 -0
- package/dist/lib/modules/internal-users/resource.d.mts +24 -0
- package/dist/lib/modules/internal-users/resource.mjs +37 -0
- package/dist/lib/modules/internal-users/resource.mjs.map +1 -0
- package/dist/lib/modules/internal-users/schema.d.mts +27 -0
- package/dist/lib/modules/internal-users/schema.mjs +24 -0
- package/dist/lib/modules/internal-users/schema.mjs.map +1 -0
- package/dist/lib/modules/invoice-templates/resource.d.mts +22 -0
- package/dist/lib/modules/invoice-templates/resource.mjs +32 -0
- package/dist/lib/modules/invoice-templates/resource.mjs.map +1 -0
- package/dist/lib/modules/invoice-templates/schema.d.mts +21 -0
- package/dist/lib/modules/invoice-templates/schema.mjs +18 -0
- package/dist/lib/modules/invoice-templates/schema.mjs.map +1 -0
- package/dist/lib/modules/invoices/resource.d.mts +30 -0
- package/dist/lib/modules/invoices/resource.mjs +48 -0
- package/dist/lib/modules/invoices/resource.mjs.map +1 -0
- package/dist/lib/modules/invoices/schema.d.mts +81 -0
- package/dist/lib/modules/invoices/schema.mjs +75 -0
- package/dist/lib/modules/invoices/schema.mjs.map +1 -0
- package/dist/lib/modules/message-channels/resource.d.mts +26 -0
- package/dist/lib/modules/message-channels/resource.mjs +48 -0
- package/dist/lib/modules/message-channels/resource.mjs.map +1 -0
- package/dist/lib/modules/message-channels/schema.d.mts +35 -0
- package/dist/lib/modules/message-channels/schema.mjs +30 -0
- package/dist/lib/modules/message-channels/schema.mjs.map +1 -0
- package/dist/lib/modules/messages/resource.d.mts +27 -0
- package/dist/lib/modules/messages/resource.mjs +40 -0
- package/dist/lib/modules/messages/resource.mjs.map +1 -0
- package/dist/lib/modules/messages/schema.d.mts +30 -0
- package/dist/lib/modules/messages/schema.mjs +26 -0
- package/dist/lib/modules/messages/schema.mjs.map +1 -0
- package/dist/lib/modules/notes/resource.d.mts +37 -0
- package/dist/lib/modules/notes/resource.mjs +60 -0
- package/dist/lib/modules/notes/resource.mjs.map +1 -0
- package/dist/lib/modules/notes/schema.d.mts +34 -0
- package/dist/lib/modules/notes/schema.mjs +27 -0
- package/dist/lib/modules/notes/schema.mjs.map +1 -0
- package/dist/lib/modules/notifications/resource.d.mts +27 -0
- package/dist/lib/modules/notifications/resource.mjs +52 -0
- package/dist/lib/modules/notifications/resource.mjs.map +1 -0
- package/dist/lib/modules/notifications/schema.d.mts +52 -0
- package/dist/lib/modules/notifications/schema.mjs +43 -0
- package/dist/lib/modules/notifications/schema.mjs.map +1 -0
- package/dist/lib/modules/payments/resource.d.mts +26 -0
- package/dist/lib/modules/payments/resource.mjs +32 -0
- package/dist/lib/modules/payments/resource.mjs.map +1 -0
- package/dist/lib/modules/payments/schema.d.mts +23 -0
- package/dist/lib/modules/payments/schema.mjs +20 -0
- package/dist/lib/modules/payments/schema.mjs.map +1 -0
- package/dist/lib/modules/prices/resource.d.mts +27 -0
- package/dist/lib/modules/prices/resource.mjs +40 -0
- package/dist/lib/modules/prices/resource.mjs.map +1 -0
- package/dist/lib/modules/prices/schema.d.mts +22 -0
- package/dist/lib/modules/prices/schema.mjs +19 -0
- package/dist/lib/modules/prices/schema.mjs.map +1 -0
- package/dist/lib/modules/products/resource.d.mts +24 -0
- package/dist/lib/modules/products/resource.mjs +40 -0
- package/dist/lib/modules/products/resource.mjs.map +1 -0
- package/dist/lib/modules/products/schema.d.mts +22 -0
- package/dist/lib/modules/products/schema.mjs +19 -0
- package/dist/lib/modules/products/schema.mjs.map +1 -0
- package/dist/lib/modules/subscription-templates/resource.d.mts +22 -0
- package/dist/lib/modules/subscription-templates/resource.mjs +32 -0
- package/dist/lib/modules/subscription-templates/resource.mjs.map +1 -0
- package/dist/lib/modules/subscription-templates/schema.d.mts +21 -0
- package/dist/lib/modules/subscription-templates/schema.mjs +18 -0
- package/dist/lib/modules/subscription-templates/schema.mjs.map +1 -0
- package/dist/lib/modules/subscriptions/resource.d.mts +32 -0
- package/dist/lib/modules/subscriptions/resource.mjs +56 -0
- package/dist/lib/modules/subscriptions/resource.mjs.map +1 -0
- package/dist/lib/modules/subscriptions/schema.d.mts +31 -0
- package/dist/lib/modules/subscriptions/schema.mjs +26 -0
- package/dist/lib/modules/subscriptions/schema.mjs.map +1 -0
- package/dist/lib/modules/task-templates/resource.d.mts +24 -0
- package/dist/lib/modules/task-templates/resource.mjs +40 -0
- package/dist/lib/modules/task-templates/resource.mjs.map +1 -0
- package/dist/lib/modules/task-templates/schema.d.mts +22 -0
- package/dist/lib/modules/task-templates/schema.mjs +19 -0
- package/dist/lib/modules/task-templates/schema.mjs.map +1 -0
- package/dist/lib/modules/tasks/resource.d.mts +38 -0
- package/dist/lib/modules/tasks/resource.mjs +60 -0
- package/dist/lib/modules/tasks/resource.mjs.map +1 -0
- package/dist/lib/modules/tasks/schema.d.mts +45 -0
- package/dist/lib/modules/tasks/schema.mjs +43 -0
- package/dist/lib/modules/tasks/schema.mjs.map +1 -0
- package/dist/lib/modules/workspace/resource.d.mts +19 -0
- package/dist/lib/modules/workspace/resource.mjs +23 -0
- package/dist/lib/modules/workspace/resource.mjs.map +1 -0
- package/dist/lib/modules/workspace/schema.d.mts +23 -0
- package/dist/lib/modules/workspace/schema.mjs +21 -0
- package/dist/lib/modules/workspace/schema.mjs.map +1 -0
- package/dist/lib/pagination/paginate.d.mts +8 -0
- package/dist/lib/pagination/paginate.mjs +24 -0
- package/dist/lib/pagination/paginate.mjs.map +1 -0
- package/dist/logger/index.d.mts +26 -0
- package/dist/logger/index.mjs +45 -0
- package/dist/logger/index.mjs.map +1 -0
- package/dist/schemas/index.d.mts +32 -0
- package/dist/schemas/index.mjs +34 -0
- package/dist/schemas/shared/hex-color.d.mts +8 -0
- package/dist/schemas/shared/hex-color.mjs +7 -0
- package/dist/schemas/shared/hex-color.mjs.map +1 -0
- package/dist/schemas/shared/index.d.mts +3 -0
- package/dist/schemas/shared/index.mjs +4 -0
- package/dist/schemas/shared/membership-type.d.mts +9 -0
- package/dist/schemas/shared/membership-type.mjs +11 -0
- package/dist/schemas/shared/membership-type.mjs.map +1 -0
- package/dist/schemas/shared/token.d.mts +22 -0
- package/dist/schemas/shared/token.mjs +21 -0
- package/dist/schemas/shared/token.mjs.map +1 -0
- package/dist/token/assembly-token.d.mts +96 -0
- package/dist/token/assembly-token.mjs +117 -0
- package/dist/token/assembly-token.mjs.map +1 -0
- package/dist/token/crypto.mjs +98 -0
- package/dist/token/crypto.mjs.map +1 -0
- package/dist/token/index.d.mts +3 -0
- package/dist/token/index.mjs +3 -0
- package/dist/token/parse.d.mts +24 -0
- package/dist/token/parse.mjs +62 -0
- package/dist/token/parse.mjs.map +1 -0
- package/dist/transport/build-search-params.mjs +16 -0
- package/dist/transport/build-search-params.mjs.map +1 -0
- package/dist/transport/http.d.mts +14 -0
- package/dist/transport/http.mjs +142 -0
- package/dist/transport/http.mjs.map +1 -0
- package/dist/transport/parse-response.mjs +17 -0
- package/dist/transport/parse-response.mjs.map +1 -0
- package/dist/version.mjs +7 -0
- package/dist/version.mjs.map +1 -0
- package/package.json +93 -0
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# assembly-kit
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for the Assembly platform. ESM-only, Node.js 18+ and Bun.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { createAssemblyKit, KitMode } from "assembly-kit";
|
|
9
|
+
|
|
10
|
+
// Local mode (default) — only apiKey required
|
|
11
|
+
const kit = createAssemblyKit({ apiKey: "your-key" });
|
|
12
|
+
|
|
13
|
+
// Local mode with workspaceId — compound key: workspaceId/apiKey
|
|
14
|
+
const kit = createAssemblyKit({ apiKey: "your-key", workspaceId: "ws-123" });
|
|
15
|
+
|
|
16
|
+
// Local mode with token — token parsed, compound key from token payload
|
|
17
|
+
const kit = createAssemblyKit({ apiKey: "your-key", token: encryptedToken });
|
|
18
|
+
|
|
19
|
+
// Marketplace mode — either token or workspaceId required
|
|
20
|
+
const kit = createAssemblyKit({
|
|
21
|
+
apiKey: "your-key",
|
|
22
|
+
token: encryptedToken,
|
|
23
|
+
kitMode: KitMode.Marketplace,
|
|
24
|
+
});
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- `kitMode: "local"` (default) → only `apiKey` required. `workspaceId` and `token` are optional.
|
|
28
|
+
- `kitMode: "marketplace"` → either `token` or `workspaceId` must be provided.
|
|
29
|
+
|
|
30
|
+
## createAssemblyKit(options)
|
|
31
|
+
|
|
32
|
+
| Option | Type | Default | Description |
|
|
33
|
+
| ------------------- | ------------------------- | -------------------------- | ---------------------------------------------------------- |
|
|
34
|
+
| `apiKey` | `string` | — | Required. Assembly API key. |
|
|
35
|
+
| `token` | `string` | — | Encrypted token. Takes precedence over `workspaceId`. |
|
|
36
|
+
| `workspaceId` | `string` | — | Workspace ID. Required when `token` is not provided. |
|
|
37
|
+
| `kitMode` | `KitMode` | `"local"` | `"local"` or `"marketplace"`. See Quick Start above. |
|
|
38
|
+
| `validateResponses` | `boolean` | `true` | Validate all API responses through Zod schemas. |
|
|
39
|
+
| `baseUrl` | `string` | `https://api.assembly.com` | Base URL for all API requests. |
|
|
40
|
+
| `retryCount` | `number` | `2` | Number of retry attempts for retryable errors. |
|
|
41
|
+
| `requestsPerSecond` | `number` | `20` | Maximum requests per second (sliding-window rate limiter). |
|
|
42
|
+
| `fetch` | `typeof globalThis.fetch` | — | Injectable fetch function for testing. |
|
|
43
|
+
|
|
44
|
+
## Resource Namespaces
|
|
45
|
+
|
|
46
|
+
Access API resources via `kit.<namespace>.<method>()`:
|
|
47
|
+
|
|
48
|
+
| Namespace | Methods |
|
|
49
|
+
| ----------------------- | ------------------------------------------------------------------ |
|
|
50
|
+
| `workspace` | `retrieve()` |
|
|
51
|
+
| `clients` | `list()` `retrieve()` `create()` `delete()` `listAll()` |
|
|
52
|
+
| `companies` | `list()` `retrieve()` `create()` `update()` `delete()` `listAll()` |
|
|
53
|
+
| `internalUsers` | `list()` `retrieve()` `listAll()` |
|
|
54
|
+
| `notes` | `list()` `retrieve()` `create()` `update()` `delete()` `listAll()` |
|
|
55
|
+
| `tasks` | `list()` `retrieve()` `create()` `update()` `delete()` `listAll()` |
|
|
56
|
+
| `taskTemplates` | `list()` `retrieve()` `listAll()` |
|
|
57
|
+
| `invoices` | `list()` `retrieve()` `create()` `listAll()` |
|
|
58
|
+
| `invoiceTemplates` | `list()` `listAll()` |
|
|
59
|
+
| `subscriptions` | `list()` `retrieve()` `create()` `cancel()` `listAll()` |
|
|
60
|
+
| `subscriptionTemplates` | `list()` `listAll()` |
|
|
61
|
+
| `payments` | `list()` `listAll()` |
|
|
62
|
+
| `products` | `list()` `retrieve()` `listAll()` |
|
|
63
|
+
| `prices` | `list()` `retrieve()` `listAll()` |
|
|
64
|
+
| `contracts` | `retrieve()` `send()` |
|
|
65
|
+
| `contractTemplates` | `list()` `retrieve()` |
|
|
66
|
+
| `forms` | `list()` `retrieve()` `listAll()` |
|
|
67
|
+
| `formResponses` | `list()` `create()` |
|
|
68
|
+
| `files` | `list()` `retrieve()` `delete()` `listAll()` |
|
|
69
|
+
| `fileChannels` | `list()` `retrieve()` `create()` `listAll()` |
|
|
70
|
+
| `messageChannels` | `list()` `retrieve()` `create()` `listAll()` |
|
|
71
|
+
| `messages` | `list()` `send()` `listAll()` |
|
|
72
|
+
| `events` | `list()` `retrieve()` `create()` `listAll()` |
|
|
73
|
+
| `notifications` | `list()` `create()` `delete()` `markRead()` `markUnread()` |
|
|
74
|
+
| `customFields` | `list()` |
|
|
75
|
+
| `customFieldOptions` | `list()` |
|
|
76
|
+
| `appConnections` | `list()` `create()` |
|
|
77
|
+
| `appInstalls` | `list()` `retrieve()` |
|
|
78
|
+
|
|
79
|
+
## Pagination
|
|
80
|
+
|
|
81
|
+
`listAll()` auto-paginates and returns `Promise<T[]>`. For manual pagination use `list()` and handle `nextToken`:
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
const allCompanies = await kit.companies.listAll();
|
|
85
|
+
const page = await kit.companies.list({ limit: 100 });
|
|
86
|
+
if (page.nextToken) {
|
|
87
|
+
const next = await kit.companies.list({ limit: 100, nextToken: page.nextToken });
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Typed Custom Fields
|
|
92
|
+
|
|
93
|
+
`createAssemblyKit` accepts optional generic parameters that type the
|
|
94
|
+
`customFields` shape returned from `kit.clients.*` and `kit.companies.*`:
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
// Single shape applied to both clients and companies
|
|
98
|
+
const kit = createAssemblyKit<{ roles: string[] }>({ apiKey, workspaceId });
|
|
99
|
+
const client = await kit.clients.retrieve("id");
|
|
100
|
+
client.customFields; // { roles: string[] } | null | undefined
|
|
101
|
+
|
|
102
|
+
// Different shapes per resource
|
|
103
|
+
const kit = createAssemblyKit<{ roles: string[] }, { industry: string }>({
|
|
104
|
+
apiKey,
|
|
105
|
+
workspaceId,
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The generics only narrow types — runtime parsing still uses the loose
|
|
110
|
+
`Record<string, unknown>` schema, so unexpected fields won't throw.
|
|
111
|
+
|
|
112
|
+
## Token Utilities
|
|
113
|
+
|
|
114
|
+
Standalone token decryption (not required for normal SDK usage):
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
import { AssemblyToken, createToken } from "assembly-kit";
|
|
118
|
+
|
|
119
|
+
const token = new AssemblyToken({ token: encryptedHex, apiKey });
|
|
120
|
+
token.workspaceId; // string
|
|
121
|
+
token.clientId; // string | undefined
|
|
122
|
+
token.companyId; // string | undefined
|
|
123
|
+
token.internalUserId; // string | undefined
|
|
124
|
+
token.isClientUser; // boolean
|
|
125
|
+
token.isInternalUser; // boolean
|
|
126
|
+
|
|
127
|
+
const client = token.ensureIsClient(); // ClientTokenPayload (throws if not client)
|
|
128
|
+
const internal = token.ensureIsInternalUser(); // InternalUserTokenPayload (throws if not internal)
|
|
129
|
+
|
|
130
|
+
// Encrypt a payload into a token
|
|
131
|
+
const encrypted = createToken({
|
|
132
|
+
payload: { workspaceId: "ws-123", clientId: "cl-1", companyId: "co-1" },
|
|
133
|
+
apiKey,
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Error Handling
|
|
138
|
+
|
|
139
|
+
All errors extend `AssemblyError`. Import from `assembly-kit`:
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
import {
|
|
143
|
+
AssemblyError, // base class (statusCode, details)
|
|
144
|
+
AssemblyNoTokenError, // 400 — token required but missing
|
|
145
|
+
AssemblyInvalidTokenError, // 401 — token decryption/validation failed
|
|
146
|
+
AssemblyUnauthorizedError, // 401 — API key rejected or identity assertion failed
|
|
147
|
+
AssemblyForbiddenError, // 403 — insufficient permissions
|
|
148
|
+
AssemblyNotFoundError, // 404 — resource not found
|
|
149
|
+
AssemblyValidationError, // 422 — request payload rejected
|
|
150
|
+
AssemblyRateLimitError, // 429 — rate limited (.retryAfter?: number)
|
|
151
|
+
AssemblyServerError, // 500 — server error
|
|
152
|
+
AssemblyResponseParseError, // 500 — Zod validation failed (.zodError)
|
|
153
|
+
AssemblyConnectionError, // 503 — network error
|
|
154
|
+
} from "assembly-kit";
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
await kit.companies.retrieve(id);
|
|
158
|
+
} catch (err) {
|
|
159
|
+
if (err instanceof AssemblyRateLimitError) {
|
|
160
|
+
// err.retryAfter — seconds until retry
|
|
161
|
+
} else if (err instanceof AssemblyError) {
|
|
162
|
+
// err.message, err.statusCode, err.details
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Schemas
|
|
168
|
+
|
|
169
|
+
Zod 4 schemas and inferred types for all resources:
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
import { ClientSchema, CompanySchema, TaskSchema } from "assembly-kit/schemas";
|
|
173
|
+
import type { Client, Company, Task } from "assembly-kit/schemas";
|
|
174
|
+
|
|
175
|
+
// Response schemas (paginated)
|
|
176
|
+
import { ClientsResponseSchema } from "assembly-kit/schemas";
|
|
177
|
+
|
|
178
|
+
// Request schemas
|
|
179
|
+
import { ClientCreateRequestSchema } from "assembly-kit/schemas";
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Multi-Workspace (React Server Components)
|
|
183
|
+
|
|
184
|
+
Use React `cache()` to deduplicate per request:
|
|
185
|
+
|
|
186
|
+
```ts
|
|
187
|
+
import { cache } from "react";
|
|
188
|
+
import { createAssemblyKit } from "assembly-kit";
|
|
189
|
+
|
|
190
|
+
export const getAssemblyKit = cache((apiKey: string, workspaceId: string) =>
|
|
191
|
+
createAssemblyKit({ apiKey, workspaceId }),
|
|
192
|
+
);
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Entry Points
|
|
196
|
+
|
|
197
|
+
| Import path | Key exports |
|
|
198
|
+
| ------------------------ | --------------------------------------------------------------------------------------------------------- |
|
|
199
|
+
| `assembly-kit` | `createAssemblyKit`, `AssemblyKit`, errors, schemas, token utils |
|
|
200
|
+
| `assembly-kit/schemas` | All Zod schemas and inferred types |
|
|
201
|
+
| `assembly-kit/client` | `createAssemblyKit`, `AssemblyKit`, `AssemblyKitOptions` |
|
|
202
|
+
| `assembly-kit/errors` | All error classes |
|
|
203
|
+
| `assembly-kit/token` | `AssemblyToken`, `createToken` |
|
|
204
|
+
| `assembly-kit/logger` | `createLogger`, `logger` (requires pino peer dep) |
|
|
205
|
+
| `assembly-kit/bridge-ui` | `usePrimaryCta`, `useSecondaryCta`, `useActionsMenu` (requires react + @assembly-js/app-bridge peer deps) |
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 priosshrsth
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|