assembly-kit 0.0.4 → 0.0.7

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 (107) hide show
  1. package/CLAUDE.md +34 -30
  2. package/README.md +39 -31
  3. package/dist/client/index.d.mts +6 -0
  4. package/dist/client/index.mjs +9 -0
  5. package/dist/client/index.mjs.map +1 -1
  6. package/dist/index.d.mts +14 -11
  7. package/dist/index.mjs +14 -11
  8. package/dist/lib/modules/app-installs/resource.d.mts +13 -1
  9. package/dist/lib/modules/app-installs/resource.mjs +25 -1
  10. package/dist/lib/modules/app-installs/resource.mjs.map +1 -1
  11. package/dist/lib/modules/app-installs/schema.d.mts +47 -1
  12. package/dist/lib/modules/app-installs/schema.mjs +37 -1
  13. package/dist/lib/modules/app-installs/schema.mjs.map +1 -1
  14. package/dist/lib/modules/clients/resource.d.mts +3 -1
  15. package/dist/lib/modules/clients/resource.mjs +9 -1
  16. package/dist/lib/modules/clients/resource.mjs.map +1 -1
  17. package/dist/lib/modules/clients/schema.d.mts +11 -3
  18. package/dist/lib/modules/clients/schema.mjs +12 -4
  19. package/dist/lib/modules/clients/schema.mjs.map +1 -1
  20. package/dist/lib/modules/companies/resource.d.mts +7 -1
  21. package/dist/lib/modules/companies/resource.mjs +10 -1
  22. package/dist/lib/modules/companies/resource.mjs.map +1 -1
  23. package/dist/lib/modules/companies/schema.d.mts +18 -1
  24. package/dist/lib/modules/companies/schema.mjs +13 -1
  25. package/dist/lib/modules/companies/schema.mjs.map +1 -1
  26. package/dist/lib/modules/custom-fields/resource.d.mts +3 -1
  27. package/dist/lib/modules/custom-fields/resource.mjs +9 -1
  28. package/dist/lib/modules/custom-fields/resource.mjs.map +1 -1
  29. package/dist/lib/modules/custom-fields/schema.d.mts +19 -1
  30. package/dist/lib/modules/custom-fields/schema.mjs +9 -1
  31. package/dist/lib/modules/custom-fields/schema.mjs.map +1 -1
  32. package/dist/lib/modules/files/resource.d.mts +15 -1
  33. package/dist/lib/modules/files/resource.mjs +29 -1
  34. package/dist/lib/modules/files/resource.mjs.map +1 -1
  35. package/dist/lib/modules/files/schema.d.mts +15 -1
  36. package/dist/lib/modules/files/schema.mjs +8 -1
  37. package/dist/lib/modules/files/schema.mjs.map +1 -1
  38. package/dist/lib/modules/forms/resource.d.mts +15 -1
  39. package/dist/lib/modules/forms/resource.mjs +25 -0
  40. package/dist/lib/modules/forms/resource.mjs.map +1 -1
  41. package/dist/lib/modules/forms/schema.d.mts +35 -1
  42. package/dist/lib/modules/forms/schema.mjs +40 -1
  43. package/dist/lib/modules/forms/schema.mjs.map +1 -1
  44. package/dist/lib/modules/index.d.mts +13 -10
  45. package/dist/lib/modules/index.mjs +3 -0
  46. package/dist/lib/modules/internal-users/resource.d.mts +8 -1
  47. package/dist/lib/modules/internal-users/resource.mjs +17 -1
  48. package/dist/lib/modules/internal-users/resource.mjs.map +1 -1
  49. package/dist/lib/modules/internal-users/schema.d.mts +22 -1
  50. package/dist/lib/modules/internal-users/schema.mjs +22 -1
  51. package/dist/lib/modules/internal-users/schema.mjs.map +1 -1
  52. package/dist/lib/modules/invoices/schema.d.mts +1 -1
  53. package/dist/lib/modules/invoices/schema.mjs +1 -0
  54. package/dist/lib/modules/invoices/schema.mjs.map +1 -1
  55. package/dist/lib/modules/me/resource.d.mts +19 -0
  56. package/dist/lib/modules/me/resource.mjs +23 -0
  57. package/dist/lib/modules/me/resource.mjs.map +1 -0
  58. package/dist/lib/modules/me/schema.d.mts +15 -0
  59. package/dist/lib/modules/me/schema.mjs +13 -0
  60. package/dist/lib/modules/me/schema.mjs.map +1 -0
  61. package/dist/lib/modules/message-channels/resource.d.mts +5 -1
  62. package/dist/lib/modules/message-channels/resource.mjs +9 -1
  63. package/dist/lib/modules/message-channels/resource.mjs.map +1 -1
  64. package/dist/lib/modules/message-channels/schema.d.mts +10 -1
  65. package/dist/lib/modules/message-channels/schema.mjs +7 -1
  66. package/dist/lib/modules/message-channels/schema.mjs.map +1 -1
  67. package/dist/lib/modules/notifications/resource.d.mts +2 -0
  68. package/dist/lib/modules/notifications/resource.mjs +8 -0
  69. package/dist/lib/modules/notifications/resource.mjs.map +1 -1
  70. package/dist/lib/modules/prices/resource.d.mts +3 -1
  71. package/dist/lib/modules/prices/resource.mjs +8 -0
  72. package/dist/lib/modules/prices/resource.mjs.map +1 -1
  73. package/dist/lib/modules/prices/schema.d.mts +14 -1
  74. package/dist/lib/modules/prices/schema.mjs +19 -1
  75. package/dist/lib/modules/prices/schema.mjs.map +1 -1
  76. package/dist/lib/modules/products/resource.d.mts +3 -1
  77. package/dist/lib/modules/products/resource.mjs +8 -0
  78. package/dist/lib/modules/products/resource.mjs.map +1 -1
  79. package/dist/lib/modules/products/schema.d.mts +7 -1
  80. package/dist/lib/modules/products/schema.mjs +6 -1
  81. package/dist/lib/modules/products/schema.mjs.map +1 -1
  82. package/dist/lib/modules/refunds/resource.d.mts +27 -0
  83. package/dist/lib/modules/refunds/resource.mjs +40 -0
  84. package/dist/lib/modules/refunds/resource.mjs.map +1 -0
  85. package/dist/lib/modules/refunds/schema.d.mts +35 -0
  86. package/dist/lib/modules/refunds/schema.mjs +32 -0
  87. package/dist/lib/modules/refunds/schema.mjs.map +1 -0
  88. package/dist/lib/modules/task-comments/resource.d.mts +29 -0
  89. package/dist/lib/modules/task-comments/resource.mjs +44 -0
  90. package/dist/lib/modules/task-comments/resource.mjs.map +1 -0
  91. package/dist/lib/modules/task-comments/schema.d.mts +24 -0
  92. package/dist/lib/modules/task-comments/schema.mjs +21 -0
  93. package/dist/lib/modules/task-comments/schema.mjs.map +1 -0
  94. package/dist/lib/modules/tasks/schema.d.mts +1 -1
  95. package/dist/lib/modules/tasks/schema.mjs +1 -1
  96. package/dist/lib/modules/tasks/schema.mjs.map +1 -1
  97. package/dist/schemas/index.d.mts +14 -11
  98. package/dist/schemas/index.mjs +14 -11
  99. package/dist/token/assembly-token.d.mts +6 -0
  100. package/dist/token/assembly-token.mjs +8 -0
  101. package/dist/token/assembly-token.mjs.map +1 -1
  102. package/dist/transport/http.d.mts +2 -0
  103. package/dist/transport/http.mjs +1 -0
  104. package/dist/transport/http.mjs.map +1 -1
  105. package/dist/version.mjs +1 -1
  106. package/dist/version.mjs.map +1 -1
  107. package/package.json +2 -4
@@ -1 +1 @@
1
- {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/app-installs/resource.ts"],"sourcesContent":["import type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport { AppInstallResponseSchema, AppInstallsResponseSchema } from \"./schema\";\nimport type { AppInstall, AppInstallsResponse } from \"./schema\";\n\nexport class AppInstallsResource {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** List all app installs. */\n async list(): Promise<AppInstallsResponse> {\n const raw: unknown = await this.#transport.get(\"v1/installs\");\n return parseResponse({\n schema: AppInstallsResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n\n /** Retrieve a single app install by ID. */\n async retrieve(installId: string): Promise<AppInstall> {\n const raw: unknown = await this.#transport.get(`v1/installs/${installId}`);\n return parseResponse({ schema: AppInstallResponseSchema, data: raw, validate: this.#validate });\n }\n}\n"],"mappings":";;;AAMA,IAAa,sBAAb,MAAiC;CAC/B;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAqC;AAEzC,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,cAAc;GAI3D,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,SAAS,WAAwC;AAErD,SAAO,cAAc;GAAE,QAAQ;GAA0B,MAAM,MADpC,MAAA,UAAgB,IAAI,eAAe,YAAY;GACN,UAAU,MAAA;GAAgB,CAAC"}
1
+ {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/app-installs/resource.ts"],"sourcesContent":["import type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport {\n AppInstallResponseSchema,\n AppInstallsResponseSchema,\n AppNotificationSettingsResponseSchema,\n} from \"./schema\";\nimport type {\n AppInstall,\n AppInstallsResponse,\n AppNotificationSettingsCreateRequest,\n AppNotificationSettingsResponse,\n AppNotificationSettingsUpdateRequest,\n} from \"./schema\";\n\nexport class AppInstallsResource {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** List all app installs. */\n async list(): Promise<AppInstallsResponse> {\n const raw: unknown = await this.#transport.get(\"v1/installs\");\n return parseResponse({\n schema: AppInstallsResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n\n /** Retrieve a single app install by ID. */\n async retrieve(installId: string): Promise<AppInstall> {\n const raw: unknown = await this.#transport.get(`v1/installs/${installId}`);\n return parseResponse({ schema: AppInstallResponseSchema, data: raw, validate: this.#validate });\n }\n\n /** Retrieve the notification settings the install's backing app declares. */\n async retrieveNotificationSettings(installId: string): Promise<AppNotificationSettingsResponse> {\n const raw: unknown = await this.#transport.get(\n `v1/installs/${installId}/notification-settings`,\n );\n return parseResponse({\n schema: AppNotificationSettingsResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n\n /** Declare the initial notification settings of the install's backing app. Create-only — fails with 409 when settings already exist. */\n async createNotificationSettings(args: {\n installId: string;\n body: AppNotificationSettingsCreateRequest;\n }): Promise<AppNotificationSettingsResponse> {\n const raw: unknown = await this.#transport.post(\n `v1/installs/${args.installId}/notification-settings`,\n args.body,\n );\n return parseResponse({\n schema: AppNotificationSettingsResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n\n /** Apply partial changes to the notification settings of the install's backing app. */\n async updateNotificationSettings(args: {\n installId: string;\n body: AppNotificationSettingsUpdateRequest;\n }): Promise<AppNotificationSettingsResponse> {\n const raw: unknown = await this.#transport.patch(\n `v1/installs/${args.installId}/notification-settings`,\n args.body,\n );\n return parseResponse({\n schema: AppNotificationSettingsResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n}\n"],"mappings":";;;AAgBA,IAAa,sBAAb,MAAiC;CAC/B;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAqC;AAEzC,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,cAAc;GAI3D,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,SAAS,WAAwC;AAErD,SAAO,cAAc;GAAE,QAAQ;GAA0B,MAAM,MADpC,MAAA,UAAgB,IAAI,eAAe,YAAY;GACN,UAAU,MAAA;GAAgB,CAAC;;;CAIjG,MAAM,6BAA6B,WAA6D;AAI9F,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,IACzC,eAAe,UAAU,wBAC1B;GAIC,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,2BAA2B,MAGY;AAK3C,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MANmB,MAAA,UAAgB,KACzC,eAAe,KAAK,UAAU,yBAC9B,KAAK,KACN;GAIC,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,2BAA2B,MAGY;AAK3C,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MANmB,MAAA,UAAgB,MACzC,eAAe,KAAK,UAAU,yBAC9B,KAAK,KACN;GAIC,UAAU,MAAA;GACX,CAAC"}
@@ -17,6 +17,52 @@ interface AppInstallsResponse {
17
17
  data: AppInstall[] | null;
18
18
  }
19
19
  declare const AppInstallsResponseSchema: z.ZodType<AppInstallsResponse>;
20
+ type NotificationSurface = "email" | "product";
21
+ declare const NotificationSurfaceSchema: z.ZodType<NotificationSurface>;
22
+ interface AppNotificationActionLabel {
23
+ pluralNoun?: string;
24
+ singularNoun?: string;
25
+ verb?: string;
26
+ }
27
+ declare const AppNotificationActionLabelSchema: z.ZodType<AppNotificationActionLabel>;
28
+ interface AppNotificationSetting {
29
+ default?: {
30
+ email?: boolean;
31
+ product?: boolean;
32
+ };
33
+ id?: string;
34
+ label?: string;
35
+ surfaces?: NotificationSurface[];
36
+ }
37
+ declare const AppNotificationSettingSchema: z.ZodType<AppNotificationSetting>;
38
+ interface AppNotificationSettingsResponse {
39
+ actionLabel?: AppNotificationActionLabel;
40
+ notifications?: AppNotificationSetting[];
41
+ object?: string;
42
+ }
43
+ declare const AppNotificationSettingsResponseSchema: z.ZodType<AppNotificationSettingsResponse>;
44
+ interface AppNotificationSettingsCreateRequest {
45
+ actionLabel?: AppNotificationActionLabel;
46
+ notifications: {
47
+ default?: {
48
+ email?: boolean;
49
+ product?: boolean;
50
+ };
51
+ id?: string;
52
+ label: string;
53
+ surfaces: NotificationSurface[];
54
+ }[];
55
+ }
56
+ declare const AppNotificationSettingsCreateRequestSchema: z.ZodType<AppNotificationSettingsCreateRequest>;
57
+ /**
58
+ * Per-setting deltas: an entry without `id` adds a setting, an entry with only
59
+ * an `id` deletes it, and an entry with both patches it.
60
+ */
61
+ interface AppNotificationSettingsUpdateRequest {
62
+ actionLabel?: AppNotificationActionLabel;
63
+ notifications?: AppNotificationSetting[];
64
+ }
65
+ declare const AppNotificationSettingsUpdateRequestSchema: z.ZodType<AppNotificationSettingsUpdateRequest>;
20
66
  //#endregion
21
- export { AppInstall, AppInstallResponse, AppInstallResponseSchema, AppInstallSchema, AppInstallType, AppInstallTypeSchema, AppInstallsResponse, AppInstallsResponseSchema };
67
+ export { AppInstall, AppInstallResponse, AppInstallResponseSchema, AppInstallSchema, AppInstallType, AppInstallTypeSchema, AppInstallsResponse, AppInstallsResponseSchema, AppNotificationActionLabel, AppNotificationActionLabelSchema, AppNotificationSetting, AppNotificationSettingSchema, AppNotificationSettingsCreateRequest, AppNotificationSettingsCreateRequestSchema, AppNotificationSettingsResponse, AppNotificationSettingsResponseSchema, AppNotificationSettingsUpdateRequest, AppNotificationSettingsUpdateRequestSchema, NotificationSurface, NotificationSurfaceSchema };
22
68
  //# sourceMappingURL=schema.d.mts.map
@@ -17,7 +17,43 @@ const AppInstallSchema = z.object({
17
17
  });
18
18
  const AppInstallResponseSchema = AppInstallSchema;
19
19
  const AppInstallsResponseSchema = z.object({ data: z.array(AppInstallSchema).nullable() });
20
+ const NotificationSurfaceSchema = z.enum(["product", "email"]);
21
+ const AppNotificationActionLabelSchema = z.object({
22
+ pluralNoun: z.string().optional(),
23
+ singularNoun: z.string().optional(),
24
+ verb: z.string().optional()
25
+ });
26
+ const AppNotificationSettingSchema = z.object({
27
+ default: z.object({
28
+ email: z.boolean().optional(),
29
+ product: z.boolean().optional()
30
+ }).optional(),
31
+ id: z.string().optional(),
32
+ label: z.string().optional(),
33
+ surfaces: z.array(NotificationSurfaceSchema).optional()
34
+ });
35
+ const AppNotificationSettingsResponseSchema = z.object({
36
+ actionLabel: AppNotificationActionLabelSchema.optional(),
37
+ notifications: z.array(AppNotificationSettingSchema).optional(),
38
+ object: z.string().optional()
39
+ });
40
+ const AppNotificationSettingsCreateRequestSchema = z.object({
41
+ actionLabel: AppNotificationActionLabelSchema.optional(),
42
+ notifications: z.array(z.object({
43
+ default: z.object({
44
+ email: z.boolean().optional(),
45
+ product: z.boolean().optional()
46
+ }).optional(),
47
+ id: z.string().optional(),
48
+ label: z.string().max(100),
49
+ surfaces: z.array(NotificationSurfaceSchema).min(1)
50
+ })).min(1).max(50)
51
+ });
52
+ const AppNotificationSettingsUpdateRequestSchema = z.object({
53
+ actionLabel: AppNotificationActionLabelSchema.optional(),
54
+ notifications: z.array(AppNotificationSettingSchema).max(50).optional()
55
+ });
20
56
  //#endregion
21
- export { AppInstallResponseSchema, AppInstallSchema, AppInstallTypeSchema, AppInstallsResponseSchema };
57
+ export { AppInstallResponseSchema, AppInstallSchema, AppInstallTypeSchema, AppInstallsResponseSchema, AppNotificationActionLabelSchema, AppNotificationSettingSchema, AppNotificationSettingsCreateRequestSchema, AppNotificationSettingsResponseSchema, AppNotificationSettingsUpdateRequestSchema, NotificationSurfaceSchema };
22
58
 
23
59
  //# sourceMappingURL=schema.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/app-installs/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ---------------------------------------------------------------------------\n// Base types\n// ---------------------------------------------------------------------------\n\nexport type AppInstallType = \"core\" | \"custom\" | \"embed\" | \"link\" | \"manual\" | \"marketplace\";\n\nexport const AppInstallTypeSchema: z.ZodType<AppInstallType> = z.enum([\n \"core\",\n \"custom\",\n \"embed\",\n \"link\",\n \"manual\",\n \"marketplace\",\n]);\n\nexport interface AppInstall {\n appId?: string;\n displayName?: string;\n id: string;\n object: \"appInstall\";\n type?: AppInstallType;\n}\n\nexport const AppInstallSchema: z.ZodType<AppInstall> = z.object({\n appId: z.string().optional(),\n displayName: z.string().optional(),\n id: z.string(),\n object: z.literal(\"appInstall\"),\n type: AppInstallTypeSchema.optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Response types\n// ---------------------------------------------------------------------------\n\nexport const AppInstallResponseSchema: z.ZodType<AppInstall> = AppInstallSchema;\nexport type AppInstallResponse = AppInstall;\n\nexport interface AppInstallsResponse {\n data: AppInstall[] | null;\n}\n\nexport const AppInstallsResponseSchema: z.ZodType<AppInstallsResponse> = z.object({\n data: z.array(AppInstallSchema).nullable(),\n});\n"],"mappings":";;AAQA,MAAa,uBAAkD,EAAE,KAAK;CACpE;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAUF,MAAa,mBAA0C,EAAE,OAAO;CAC9D,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,aAAa,EAAE,QAAQ,CAAC,UAAU;CAClC,IAAI,EAAE,QAAQ;CACd,QAAQ,EAAE,QAAQ,aAAa;CAC/B,MAAM,qBAAqB,UAAU;CACtC,CAAC;AAMF,MAAa,2BAAkD;AAO/D,MAAa,4BAA4D,EAAE,OAAO,EAChF,MAAM,EAAE,MAAM,iBAAiB,CAAC,UAAU,EAC3C,CAAC"}
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/app-installs/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ---------------------------------------------------------------------------\n// Base types\n// ---------------------------------------------------------------------------\n\nexport type AppInstallType = \"core\" | \"custom\" | \"embed\" | \"link\" | \"manual\" | \"marketplace\";\n\nexport const AppInstallTypeSchema: z.ZodType<AppInstallType> = z.enum([\n \"core\",\n \"custom\",\n \"embed\",\n \"link\",\n \"manual\",\n \"marketplace\",\n]);\n\nexport interface AppInstall {\n appId?: string;\n displayName?: string;\n id: string;\n object: \"appInstall\";\n type?: AppInstallType;\n}\n\nexport const AppInstallSchema: z.ZodType<AppInstall> = z.object({\n appId: z.string().optional(),\n displayName: z.string().optional(),\n id: z.string(),\n object: z.literal(\"appInstall\"),\n type: AppInstallTypeSchema.optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Response types\n// ---------------------------------------------------------------------------\n\nexport const AppInstallResponseSchema: z.ZodType<AppInstall> = AppInstallSchema;\nexport type AppInstallResponse = AppInstall;\n\nexport interface AppInstallsResponse {\n data: AppInstall[] | null;\n}\n\nexport const AppInstallsResponseSchema: z.ZodType<AppInstallsResponse> = z.object({\n data: z.array(AppInstallSchema).nullable(),\n});\n\n// ─── Notification settings ────────────────────────────────────────────────────\n\nexport type NotificationSurface = \"email\" | \"product\";\n\nexport const NotificationSurfaceSchema: z.ZodType<NotificationSurface> = z.enum([\n \"product\",\n \"email\",\n]);\n\nexport interface AppNotificationActionLabel {\n pluralNoun?: string;\n singularNoun?: string;\n verb?: string;\n}\n\nexport const AppNotificationActionLabelSchema: z.ZodType<AppNotificationActionLabel> = z.object({\n pluralNoun: z.string().optional(),\n singularNoun: z.string().optional(),\n verb: z.string().optional(),\n});\n\nexport interface AppNotificationSetting {\n default?: {\n email?: boolean;\n product?: boolean;\n };\n id?: string;\n label?: string;\n surfaces?: NotificationSurface[];\n}\n\nexport const AppNotificationSettingSchema: z.ZodType<AppNotificationSetting> = z.object({\n default: z\n .object({\n email: z.boolean().optional(),\n product: z.boolean().optional(),\n })\n .optional(),\n id: z.string().optional(),\n label: z.string().optional(),\n surfaces: z.array(NotificationSurfaceSchema).optional(),\n});\n\nexport interface AppNotificationSettingsResponse {\n actionLabel?: AppNotificationActionLabel;\n notifications?: AppNotificationSetting[];\n object?: string;\n}\n\nexport const AppNotificationSettingsResponseSchema: z.ZodType<AppNotificationSettingsResponse> =\n z.object({\n actionLabel: AppNotificationActionLabelSchema.optional(),\n notifications: z.array(AppNotificationSettingSchema).optional(),\n object: z.string().optional(),\n });\n\nexport interface AppNotificationSettingsCreateRequest {\n actionLabel?: AppNotificationActionLabel;\n notifications: {\n default?: { email?: boolean; product?: boolean };\n id?: string;\n label: string;\n surfaces: NotificationSurface[];\n }[];\n}\n\nexport const AppNotificationSettingsCreateRequestSchema: z.ZodType<AppNotificationSettingsCreateRequest> =\n z.object({\n actionLabel: AppNotificationActionLabelSchema.optional(),\n notifications: z\n .array(\n z.object({\n default: z\n .object({ email: z.boolean().optional(), product: z.boolean().optional() })\n .optional(),\n id: z.string().optional(),\n label: z.string().max(100),\n surfaces: z.array(NotificationSurfaceSchema).min(1),\n }),\n )\n .min(1)\n .max(50),\n });\n\n/**\n * Per-setting deltas: an entry without `id` adds a setting, an entry with only\n * an `id` deletes it, and an entry with both patches it.\n */\nexport interface AppNotificationSettingsUpdateRequest {\n actionLabel?: AppNotificationActionLabel;\n notifications?: AppNotificationSetting[];\n}\n\nexport const AppNotificationSettingsUpdateRequestSchema: z.ZodType<AppNotificationSettingsUpdateRequest> =\n z.object({\n actionLabel: AppNotificationActionLabelSchema.optional(),\n notifications: z.array(AppNotificationSettingSchema).max(50).optional(),\n });\n"],"mappings":";;AAQA,MAAa,uBAAkD,EAAE,KAAK;CACpE;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAUF,MAAa,mBAA0C,EAAE,OAAO;CAC9D,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,aAAa,EAAE,QAAQ,CAAC,UAAU;CAClC,IAAI,EAAE,QAAQ;CACd,QAAQ,EAAE,QAAQ,aAAa;CAC/B,MAAM,qBAAqB,UAAU;CACtC,CAAC;AAMF,MAAa,2BAAkD;AAO/D,MAAa,4BAA4D,EAAE,OAAO,EAChF,MAAM,EAAE,MAAM,iBAAiB,CAAC,UAAU,EAC3C,CAAC;AAMF,MAAa,4BAA4D,EAAE,KAAK,CAC9E,WACA,QACD,CAAC;AAQF,MAAa,mCAA0E,EAAE,OAAO;CAC9F,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC5B,CAAC;AAYF,MAAa,+BAAkE,EAAE,OAAO;CACtF,SAAS,EACN,OAAO;EACN,OAAO,EAAE,SAAS,CAAC,UAAU;EAC7B,SAAS,EAAE,SAAS,CAAC,UAAU;EAChC,CAAC,CACD,UAAU;CACb,IAAI,EAAE,QAAQ,CAAC,UAAU;CACzB,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,UAAU,EAAE,MAAM,0BAA0B,CAAC,UAAU;CACxD,CAAC;AAQF,MAAa,wCACX,EAAE,OAAO;CACP,aAAa,iCAAiC,UAAU;CACxD,eAAe,EAAE,MAAM,6BAA6B,CAAC,UAAU;CAC/D,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC9B,CAAC;AAYJ,MAAa,6CACX,EAAE,OAAO;CACP,aAAa,iCAAiC,UAAU;CACxD,eAAe,EACZ,MACC,EAAE,OAAO;EACP,SAAS,EACN,OAAO;GAAE,OAAO,EAAE,SAAS,CAAC,UAAU;GAAE,SAAS,EAAE,SAAS,CAAC,UAAU;GAAE,CAAC,CAC1E,UAAU;EACb,IAAI,EAAE,QAAQ,CAAC,UAAU;EACzB,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI;EAC1B,UAAU,EAAE,MAAM,0BAA0B,CAAC,IAAI,EAAE;EACpD,CAAC,CACH,CACA,IAAI,EAAE,CACN,IAAI,GAAG;CACX,CAAC;AAWJ,MAAa,6CACX,EAAE,OAAO;CACP,aAAa,iCAAiC,UAAU;CACxD,eAAe,EAAE,MAAM,6BAA6B,CAAC,IAAI,GAAG,CAAC,UAAU;CACxE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Transport } from "../../../transport/http.mjs";
2
2
  import { ListArgs } from "../../pagination/paginate.mjs";
3
- import { Client, ClientCreateRequest, ClientUpdateRequest, ClientsResponse } from "./schema.mjs";
3
+ import { Client, ClientCreateRequest, ClientUpdateRequest, ClientWithAppVisibility, ClientsResponse } from "./schema.mjs";
4
4
 
5
5
  //#region src/lib/modules/clients/resource.d.ts
6
6
  interface ListClientsArgs extends ListArgs {
@@ -27,6 +27,8 @@ declare class ClientsResource<TCustomFields extends Record<string, unknown> = Re
27
27
  list(args?: ListClientsArgs): Promise<ClientsResponse<TCustomFields>>;
28
28
  /** Retrieve a single client by ID. */
29
29
  retrieve(id: string): Promise<Client<TCustomFields>>;
30
+ /** Retrieve a client by ID together with the apps visible to them, grouped by company. */
31
+ retrieveWithAppVisibility(id: string): Promise<ClientWithAppVisibility<TCustomFields>>;
30
32
  /** Update a client (PATCH — partial update). */
31
33
  update(args: {
32
34
  id: string;
@@ -1,7 +1,7 @@
1
1
  import { buildSearchParams } from "../../../transport/build-search-params.mjs";
2
2
  import { parseResponse } from "../../../transport/parse-response.mjs";
3
3
  import { paginate } from "../../pagination/paginate.mjs";
4
- import { ClientResponseSchema, ClientsResponseSchema } from "./schema.mjs";
4
+ import { ClientResponseSchema, ClientWithAppVisibilitySchema, ClientsResponseSchema } from "./schema.mjs";
5
5
  //#region src/lib/modules/clients/resource.ts
6
6
  var ClientsResource = class {
7
7
  #transport;
@@ -35,6 +35,14 @@ var ClientsResource = class {
35
35
  validate: this.#validate
36
36
  });
37
37
  }
38
+ /** Retrieve a client by ID together with the apps visible to them, grouped by company. */
39
+ async retrieveWithAppVisibility(id) {
40
+ return parseResponse({
41
+ schema: ClientWithAppVisibilitySchema,
42
+ data: await this.#transport.get(`v1/clients/${id}/app-visibility`),
43
+ validate: this.#validate
44
+ });
45
+ }
38
46
  /** Update a client (PATCH — partial update). */
39
47
  async update(args) {
40
48
  const searchParams = args.sendInvite !== void 0 ? buildSearchParams({ sendInvite: args.sendInvite }) : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/clients/resource.ts"],"sourcesContent":["import { paginate } from \"src/lib/pagination\";\nimport type { ListArgs } from \"src/lib/pagination\";\nimport { buildSearchParams } from \"src/transport/build-search-params\";\nimport type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport { ClientResponseSchema, ClientsResponseSchema } from \"./schema\";\nimport type { Client, ClientCreateRequest, ClientUpdateRequest, ClientsResponse } from \"./schema\";\n\nexport interface ListClientsArgs extends ListArgs {\n companyId?: string;\n email?: string;\n familyName?: string;\n givenName?: string;\n}\n\nexport class ClientsResource<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** Create a new client. */\n async create(args: {\n body: ClientCreateRequest;\n sendInvite?: boolean;\n }): Promise<Client<TCustomFields>> {\n const searchParams =\n args.sendInvite !== undefined\n ? buildSearchParams({ sendInvite: args.sendInvite })\n : undefined;\n const raw: unknown = await this.#transport.post(\"v1/clients\", args.body, { searchParams });\n return parseResponse({\n schema: ClientResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Client<TCustomFields>;\n }\n\n /** List clients with optional filters. */\n async list(args: ListClientsArgs = {}): Promise<ClientsResponse<TCustomFields>> {\n const raw: unknown = await this.#transport.get(\"v1/clients\", {\n searchParams: buildSearchParams(args),\n });\n return parseResponse({\n schema: ClientsResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as ClientsResponse<TCustomFields>;\n }\n\n /** Retrieve a single client by ID. */\n async retrieve(id: string): Promise<Client<TCustomFields>> {\n const raw: unknown = await this.#transport.get(`v1/clients/${id}`);\n return parseResponse({\n schema: ClientResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Client<TCustomFields>;\n }\n\n /** Update a client (PATCH — partial update). */\n async update(args: {\n id: string;\n body: ClientUpdateRequest;\n sendInvite?: boolean;\n }): Promise<Client<TCustomFields>> {\n const searchParams =\n args.sendInvite !== undefined\n ? buildSearchParams({ sendInvite: args.sendInvite })\n : undefined;\n const raw: unknown = await this.#transport.patch(`v1/clients/${args.id}`, args.body, {\n searchParams,\n });\n return parseResponse({\n schema: ClientResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Client<TCustomFields>;\n }\n\n /** Delete a client by ID. */\n async delete(id: string): Promise<void> {\n await this.#transport.delete(`v1/clients/${id}`);\n }\n\n /** Iterate over all clients, automatically paginating. Default limit per page: 5000. */\n async listAll(args: Omit<ListClientsArgs, \"nextToken\"> = {}): Promise<Client<TCustomFields>[]> {\n return paginate<Client<TCustomFields>>((listArgs) => this.list({ ...args, ...listArgs }), {\n limit: args.limit ?? 5_000,\n });\n }\n}\n"],"mappings":";;;;;AAgBA,IAAa,kBAAb,MAEE;CACA;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAO,MAGsB;EACjC,MAAM,eACJ,KAAK,eAAe,KAAA,IAChB,kBAAkB,EAAE,YAAY,KAAK,YAAY,CAAC,GAClD,KAAA;AAEN,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,KAAK,cAAc,KAAK,MAAM,EAAE,cAAc,CAAC;GAIxF,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,KAAK,OAAwB,EAAE,EAA2C;AAI9E,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,IAAI,cAAc,EAC3D,cAAc,kBAAkB,KAAK,EACtC,CAAC;GAIA,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,SAAS,IAA4C;AAEzD,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,cAAc,KAAK;GAIhE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,MAIsB;EACjC,MAAM,eACJ,KAAK,eAAe,KAAA,IAChB,kBAAkB,EAAE,YAAY,KAAK,YAAY,CAAC,GAClD,KAAA;AAIN,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,MAAM,cAAc,KAAK,MAAM,KAAK,MAAM,EACnF,cACD,CAAC;GAIA,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,IAA2B;AACtC,QAAM,MAAA,UAAgB,OAAO,cAAc,KAAK;;;CAIlD,MAAM,QAAQ,OAA2C,EAAE,EAAoC;AAC7F,SAAO,UAAiC,aAAa,KAAK,KAAK;GAAE,GAAG;GAAM,GAAG;GAAU,CAAC,EAAE,EACxF,OAAO,KAAK,SAAS,KACtB,CAAC"}
1
+ {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/clients/resource.ts"],"sourcesContent":["import { paginate } from \"src/lib/pagination\";\nimport type { ListArgs } from \"src/lib/pagination\";\nimport { buildSearchParams } from \"src/transport/build-search-params\";\nimport type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport {\n ClientResponseSchema,\n ClientWithAppVisibilitySchema,\n ClientsResponseSchema,\n} from \"./schema\";\nimport type {\n Client,\n ClientCreateRequest,\n ClientUpdateRequest,\n ClientWithAppVisibility,\n ClientsResponse,\n} from \"./schema\";\n\nexport interface ListClientsArgs extends ListArgs {\n companyId?: string;\n email?: string;\n familyName?: string;\n givenName?: string;\n}\n\nexport class ClientsResource<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** Create a new client. */\n async create(args: {\n body: ClientCreateRequest;\n sendInvite?: boolean;\n }): Promise<Client<TCustomFields>> {\n const searchParams =\n args.sendInvite !== undefined\n ? buildSearchParams({ sendInvite: args.sendInvite })\n : undefined;\n const raw: unknown = await this.#transport.post(\"v1/clients\", args.body, { searchParams });\n return parseResponse({\n schema: ClientResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Client<TCustomFields>;\n }\n\n /** List clients with optional filters. */\n async list(args: ListClientsArgs = {}): Promise<ClientsResponse<TCustomFields>> {\n const raw: unknown = await this.#transport.get(\"v1/clients\", {\n searchParams: buildSearchParams(args),\n });\n return parseResponse({\n schema: ClientsResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as ClientsResponse<TCustomFields>;\n }\n\n /** Retrieve a single client by ID. */\n async retrieve(id: string): Promise<Client<TCustomFields>> {\n const raw: unknown = await this.#transport.get(`v1/clients/${id}`);\n return parseResponse({\n schema: ClientResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Client<TCustomFields>;\n }\n\n /** Retrieve a client by ID together with the apps visible to them, grouped by company. */\n async retrieveWithAppVisibility(id: string): Promise<ClientWithAppVisibility<TCustomFields>> {\n const raw: unknown = await this.#transport.get(`v1/clients/${id}/app-visibility`);\n return parseResponse({\n schema: ClientWithAppVisibilitySchema,\n data: raw,\n validate: this.#validate,\n }) as ClientWithAppVisibility<TCustomFields>;\n }\n\n /** Update a client (PATCH — partial update). */\n async update(args: {\n id: string;\n body: ClientUpdateRequest;\n sendInvite?: boolean;\n }): Promise<Client<TCustomFields>> {\n const searchParams =\n args.sendInvite !== undefined\n ? buildSearchParams({ sendInvite: args.sendInvite })\n : undefined;\n const raw: unknown = await this.#transport.patch(`v1/clients/${args.id}`, args.body, {\n searchParams,\n });\n return parseResponse({\n schema: ClientResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Client<TCustomFields>;\n }\n\n /** Delete a client by ID. */\n async delete(id: string): Promise<void> {\n await this.#transport.delete(`v1/clients/${id}`);\n }\n\n /** Iterate over all clients, automatically paginating. Default limit per page: 5000. */\n async listAll(args: Omit<ListClientsArgs, \"nextToken\"> = {}): Promise<Client<TCustomFields>[]> {\n return paginate<Client<TCustomFields>>((listArgs) => this.list({ ...args, ...listArgs }), {\n limit: args.limit ?? 5_000,\n });\n }\n}\n"],"mappings":";;;;;AA0BA,IAAa,kBAAb,MAEE;CACA;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAO,MAGsB;EACjC,MAAM,eACJ,KAAK,eAAe,KAAA,IAChB,kBAAkB,EAAE,YAAY,KAAK,YAAY,CAAC,GAClD,KAAA;AAEN,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,KAAK,cAAc,KAAK,MAAM,EAAE,cAAc,CAAC;GAIxF,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,KAAK,OAAwB,EAAE,EAA2C;AAI9E,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,IAAI,cAAc,EAC3D,cAAc,kBAAkB,KAAK,EACtC,CAAC;GAIA,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,SAAS,IAA4C;AAEzD,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,cAAc,KAAK;GAIhE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,0BAA0B,IAA6D;AAE3F,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,cAAc,GAAG,iBAAiB;GAI/E,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,MAIsB;EACjC,MAAM,eACJ,KAAK,eAAe,KAAA,IAChB,kBAAkB,EAAE,YAAY,KAAK,YAAY,CAAC,GAClD,KAAA;AAIN,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,MAAM,cAAc,KAAK,MAAM,KAAK,MAAM,EACnF,cACD,CAAC;GAIA,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,IAA2B;AACtC,QAAM,MAAA,UAAgB,OAAO,cAAc,KAAK;;;CAIlD,MAAM,QAAQ,OAA2C,EAAE,EAAoC;AAC7F,SAAO,UAAiC,aAAa,KAAK,KAAK;GAAE,GAAG;GAAM,GAAG;GAAU,CAAC,EAAE,EACxF,OAAO,KAAK,SAAS,KACtB,CAAC"}
@@ -5,7 +5,7 @@ interface Client<TCustomFields extends Record<string, unknown> = Record<string,
5
5
  avatarImageUrl: string | null;
6
6
  companyIds?: string[];
7
7
  createdAt: string;
8
- creationMethod: "client" | "directSignUp" | "internalUser";
8
+ creationMethod: "client" | "directSignUp" | "import" | "internalUser";
9
9
  /** @deprecated Use `companyIds` instead. */
10
10
  companyId?: string;
11
11
  customFields?: TCustomFields | null;
@@ -18,10 +18,18 @@ interface Client<TCustomFields extends Record<string, unknown> = Record<string,
18
18
  inviteUrl?: string;
19
19
  lastLoginDate: string | null;
20
20
  object: "client";
21
- status: "active" | "invited" | "notInvited";
21
+ status: "active" | "deleted" | "invited" | "notInvited" | "unknown";
22
22
  updatedAt?: string;
23
23
  }
24
24
  declare const ClientSchema: z.ZodType<Client>;
25
+ /**
26
+ * `appVisibility` is documented in prose but absent from the OpenAPI response
27
+ * schema, so its group shape is kept loose rather than guessed at.
28
+ */
29
+ interface ClientWithAppVisibility<TCustomFields extends Record<string, unknown> = Record<string, unknown>> extends Client<TCustomFields> {
30
+ appVisibility?: Record<string, unknown>[];
31
+ }
32
+ declare const ClientWithAppVisibilitySchema: z.ZodType<ClientWithAppVisibility>;
25
33
  declare const ClientResponseSchema: z.ZodType<Client>;
26
34
  type ClientResponse<TCustomFields extends Record<string, unknown> = Record<string, unknown>> = Client<TCustomFields>;
27
35
  interface ClientsResponse<TCustomFields extends Record<string, unknown> = Record<string, unknown>> {
@@ -46,5 +54,5 @@ interface ClientUpdateRequest {
46
54
  }
47
55
  declare const ClientUpdateRequestSchema: z.ZodType<ClientUpdateRequest>;
48
56
  //#endregion
49
- export { Client, ClientCreateRequest, ClientCreateRequestSchema, ClientResponse, ClientResponseSchema, ClientSchema, ClientUpdateRequest, ClientUpdateRequestSchema, ClientsResponse, ClientsResponseSchema };
57
+ export { Client, ClientCreateRequest, ClientCreateRequestSchema, ClientResponse, ClientResponseSchema, ClientSchema, ClientUpdateRequest, ClientUpdateRequestSchema, ClientWithAppVisibility, ClientWithAppVisibilitySchema, ClientsResponse, ClientsResponseSchema };
50
58
  //# sourceMappingURL=schema.d.mts.map
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  //#region src/lib/modules/clients/schema.ts
3
- const ClientSchema = z.object({
3
+ const clientShape = {
4
4
  avatarImageUrl: z.string().nullable(),
5
5
  companyId: z.string().optional(),
6
6
  companyIds: z.array(z.string()).optional(),
@@ -8,6 +8,7 @@ const ClientSchema = z.object({
8
8
  creationMethod: z.enum([
9
9
  "client",
10
10
  "directSignUp",
11
+ "import",
11
12
  "internalUser"
12
13
  ]),
13
14
  customFields: z.record(z.string(), z.unknown()).nullable().optional(),
@@ -21,11 +22,18 @@ const ClientSchema = z.object({
21
22
  lastLoginDate: z.string().nullable(),
22
23
  object: z.literal("client"),
23
24
  status: z.enum([
25
+ "unknown",
26
+ "deleted",
24
27
  "active",
25
- "invited",
26
- "notInvited"
28
+ "notInvited",
29
+ "invited"
27
30
  ]),
28
31
  updatedAt: z.iso.datetime().optional()
32
+ };
33
+ const ClientSchema = z.object(clientShape);
34
+ const ClientWithAppVisibilitySchema = z.object({
35
+ ...clientShape,
36
+ appVisibility: z.array(z.record(z.string(), z.unknown())).optional()
29
37
  });
30
38
  const ClientResponseSchema = ClientSchema;
31
39
  const ClientsResponseSchema = z.object({
@@ -47,6 +55,6 @@ const ClientUpdateRequestSchema = z.object({
47
55
  givenName: z.string().optional()
48
56
  });
49
57
  //#endregion
50
- export { ClientCreateRequestSchema, ClientResponseSchema, ClientSchema, ClientUpdateRequestSchema, ClientsResponseSchema };
58
+ export { ClientCreateRequestSchema, ClientResponseSchema, ClientSchema, ClientUpdateRequestSchema, ClientWithAppVisibilitySchema, ClientsResponseSchema };
51
59
 
52
60
  //# sourceMappingURL=schema.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/clients/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Base ─────────────────────────────────────────────────────────────────────\n\nexport interface Client<TCustomFields extends Record<string, unknown> = Record<string, unknown>> {\n avatarImageUrl: string | null;\n companyIds?: string[];\n createdAt: string;\n creationMethod: \"client\" | \"directSignUp\" | \"internalUser\";\n /** @deprecated Use `companyIds` instead. */\n companyId?: string;\n customFields?: TCustomFields | null;\n email: string;\n fallbackColor: string | null;\n familyName: string;\n firstLoginDate: string | null;\n givenName: string;\n id: string;\n inviteUrl?: string;\n lastLoginDate: string | null;\n object: \"client\";\n status: \"active\" | \"invited\" | \"notInvited\";\n updatedAt?: string;\n}\n\nexport const ClientSchema: z.ZodType<Client> = z.object({\n avatarImageUrl: z.string().nullable(),\n companyId: z.string().optional(),\n companyIds: z.array(z.string()).optional(),\n createdAt: z.iso.datetime(),\n creationMethod: z.enum([\"client\", \"directSignUp\", \"internalUser\"]),\n customFields: z.record(z.string(), z.unknown()).nullable().optional(),\n email: z.string(),\n fallbackColor: z.string().nullable(),\n familyName: z.string(),\n firstLoginDate: z.string().nullable(),\n givenName: z.string(),\n id: z.string(),\n inviteUrl: z.string().optional(),\n lastLoginDate: z.string().nullable(),\n object: z.literal(\"client\"),\n status: z.enum([\"active\", \"invited\", \"notInvited\"]),\n updatedAt: z.iso.datetime().optional(),\n});\n\n// ─── Response ─────────────────────────────────────────────────────────────────\n\nexport const ClientResponseSchema: z.ZodType<Client> = ClientSchema;\nexport type ClientResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> = Client<TCustomFields>;\n\nexport interface ClientsResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n data: Client<TCustomFields>[];\n nextToken?: string;\n}\n\nexport const ClientsResponseSchema: z.ZodType<ClientsResponse> = z.object({\n data: z.array(ClientSchema).transform((v) => v || []),\n nextToken: z.string().optional(),\n});\n\n// ─── Requests ─────────────────────────────────────────────────────────────────\n\nexport interface ClientCreateRequest {\n companyIds?: string[];\n customFields?: Record<string, unknown>;\n email: string;\n familyName: string;\n givenName: string;\n}\n\nexport const ClientCreateRequestSchema: z.ZodType<ClientCreateRequest> = z.object({\n companyIds: z.array(z.string()).optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n email: z.email(),\n familyName: z.string(),\n givenName: z.string(),\n});\n\nexport interface ClientUpdateRequest {\n companyIds?: string[];\n customFields?: Record<string, unknown>;\n email?: string;\n familyName?: string;\n givenName?: string;\n}\n\nexport const ClientUpdateRequestSchema: z.ZodType<ClientUpdateRequest> = z.object({\n companyIds: z.array(z.string()).optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n email: z.string().optional(),\n familyName: z.string().optional(),\n givenName: z.string().optional(),\n});\n"],"mappings":";;AAyBA,MAAa,eAAkC,EAAE,OAAO;CACtD,gBAAgB,EAAE,QAAQ,CAAC,UAAU;CACrC,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC1C,WAAW,EAAE,IAAI,UAAU;CAC3B,gBAAgB,EAAE,KAAK;EAAC;EAAU;EAAgB;EAAe,CAAC;CAClE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU;CACrE,OAAO,EAAE,QAAQ;CACjB,eAAe,EAAE,QAAQ,CAAC,UAAU;CACpC,YAAY,EAAE,QAAQ;CACtB,gBAAgB,EAAE,QAAQ,CAAC,UAAU;CACrC,WAAW,EAAE,QAAQ;CACrB,IAAI,EAAE,QAAQ;CACd,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,eAAe,EAAE,QAAQ,CAAC,UAAU;CACpC,QAAQ,EAAE,QAAQ,SAAS;CAC3B,QAAQ,EAAE,KAAK;EAAC;EAAU;EAAW;EAAa,CAAC;CACnD,WAAW,EAAE,IAAI,UAAU,CAAC,UAAU;CACvC,CAAC;AAIF,MAAa,uBAA0C;AAYvD,MAAa,wBAAoD,EAAE,OAAO;CACxE,MAAM,EAAE,MAAM,aAAa,CAAC,WAAW,MAAM,KAAK,EAAE,CAAC;CACrD,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAYF,MAAa,4BAA4D,EAAE,OAAO;CAChF,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC1C,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,OAAO,EAAE,OAAO;CAChB,YAAY,EAAE,QAAQ;CACtB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAUF,MAAa,4BAA4D,EAAE,OAAO;CAChF,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC1C,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC"}
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/clients/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Base ─────────────────────────────────────────────────────────────────────\n\nexport interface Client<TCustomFields extends Record<string, unknown> = Record<string, unknown>> {\n avatarImageUrl: string | null;\n companyIds?: string[];\n createdAt: string;\n creationMethod: \"client\" | \"directSignUp\" | \"import\" | \"internalUser\";\n /** @deprecated Use `companyIds` instead. */\n companyId?: string;\n customFields?: TCustomFields | null;\n email: string;\n fallbackColor: string | null;\n familyName: string;\n firstLoginDate: string | null;\n givenName: string;\n id: string;\n inviteUrl?: string;\n lastLoginDate: string | null;\n object: \"client\";\n status: \"active\" | \"deleted\" | \"invited\" | \"notInvited\" | \"unknown\";\n updatedAt?: string;\n}\n\nconst clientShape = {\n avatarImageUrl: z.string().nullable(),\n companyId: z.string().optional(),\n companyIds: z.array(z.string()).optional(),\n createdAt: z.iso.datetime(),\n creationMethod: z.enum([\"client\", \"directSignUp\", \"import\", \"internalUser\"]),\n customFields: z.record(z.string(), z.unknown()).nullable().optional(),\n email: z.string(),\n fallbackColor: z.string().nullable(),\n familyName: z.string(),\n firstLoginDate: z.string().nullable(),\n givenName: z.string(),\n id: z.string(),\n inviteUrl: z.string().optional(),\n lastLoginDate: z.string().nullable(),\n object: z.literal(\"client\"),\n status: z.enum([\"unknown\", \"deleted\", \"active\", \"notInvited\", \"invited\"]),\n updatedAt: z.iso.datetime().optional(),\n};\n\nexport const ClientSchema: z.ZodType<Client> = z.object(clientShape);\n\n/**\n * `appVisibility` is documented in prose but absent from the OpenAPI response\n * schema, so its group shape is kept loose rather than guessed at.\n */\nexport interface ClientWithAppVisibility<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> extends Client<TCustomFields> {\n appVisibility?: Record<string, unknown>[];\n}\n\nexport const ClientWithAppVisibilitySchema: z.ZodType<ClientWithAppVisibility> = z.object({\n ...clientShape,\n appVisibility: z.array(z.record(z.string(), z.unknown())).optional(),\n});\n\n// ─── Response ─────────────────────────────────────────────────────────────────\n\nexport const ClientResponseSchema: z.ZodType<Client> = ClientSchema;\nexport type ClientResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> = Client<TCustomFields>;\n\nexport interface ClientsResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n data: Client<TCustomFields>[];\n nextToken?: string;\n}\n\nexport const ClientsResponseSchema: z.ZodType<ClientsResponse> = z.object({\n data: z.array(ClientSchema).transform((v) => v || []),\n nextToken: z.string().optional(),\n});\n\n// ─── Requests ─────────────────────────────────────────────────────────────────\n\nexport interface ClientCreateRequest {\n companyIds?: string[];\n customFields?: Record<string, unknown>;\n email: string;\n familyName: string;\n givenName: string;\n}\n\nexport const ClientCreateRequestSchema: z.ZodType<ClientCreateRequest> = z.object({\n companyIds: z.array(z.string()).optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n email: z.email(),\n familyName: z.string(),\n givenName: z.string(),\n});\n\nexport interface ClientUpdateRequest {\n companyIds?: string[];\n customFields?: Record<string, unknown>;\n email?: string;\n familyName?: string;\n givenName?: string;\n}\n\nexport const ClientUpdateRequestSchema: z.ZodType<ClientUpdateRequest> = z.object({\n companyIds: z.array(z.string()).optional(),\n customFields: z.record(z.string(), z.unknown()).optional(),\n email: z.string().optional(),\n familyName: z.string().optional(),\n givenName: z.string().optional(),\n});\n"],"mappings":";;AAyBA,MAAM,cAAc;CAClB,gBAAgB,EAAE,QAAQ,CAAC,UAAU;CACrC,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC1C,WAAW,EAAE,IAAI,UAAU;CAC3B,gBAAgB,EAAE,KAAK;EAAC;EAAU;EAAgB;EAAU;EAAe,CAAC;CAC5E,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU;CACrE,OAAO,EAAE,QAAQ;CACjB,eAAe,EAAE,QAAQ,CAAC,UAAU;CACpC,YAAY,EAAE,QAAQ;CACtB,gBAAgB,EAAE,QAAQ,CAAC,UAAU;CACrC,WAAW,EAAE,QAAQ;CACrB,IAAI,EAAE,QAAQ;CACd,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,eAAe,EAAE,QAAQ,CAAC,UAAU;CACpC,QAAQ,EAAE,QAAQ,SAAS;CAC3B,QAAQ,EAAE,KAAK;EAAC;EAAW;EAAW;EAAU;EAAc;EAAU,CAAC;CACzE,WAAW,EAAE,IAAI,UAAU,CAAC,UAAU;CACvC;AAED,MAAa,eAAkC,EAAE,OAAO,YAAY;AAYpE,MAAa,gCAAoE,EAAE,OAAO;CACxF,GAAG;CACH,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU;CACrE,CAAC;AAIF,MAAa,uBAA0C;AAYvD,MAAa,wBAAoD,EAAE,OAAO;CACxE,MAAM,EAAE,MAAM,aAAa,CAAC,WAAW,MAAM,KAAK,EAAE,CAAC;CACrD,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAYF,MAAa,4BAA4D,EAAE,OAAO;CAChF,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC1C,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,OAAO,EAAE,OAAO;CAChB,YAAY,EAAE,QAAQ;CACtB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAUF,MAAa,4BAA4D,EAAE,OAAO;CAChF,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC1C,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Transport } from "../../../transport/http.mjs";
2
2
  import { ListArgs } from "../../pagination/paginate.mjs";
3
- import { CompaniesResponse, Company, CompanyCreateRequest, CompanyUpdateRequest } from "./schema.mjs";
3
+ import { CompaniesResponse, Company, CompanyAddClientsResponse, CompanyCreateRequest, CompanyUpdateRequest } from "./schema.mjs";
4
4
 
5
5
  //#region src/lib/modules/companies/resource.d.ts
6
6
  interface ListCompaniesArgs extends ListArgs {
@@ -18,6 +18,12 @@ declare class CompaniesResource<TCustomFields extends Record<string, unknown> =
18
18
  });
19
19
  /** Create a new company. */
20
20
  create(body: CompanyCreateRequest): Promise<Company<TCustomFields>>;
21
+ /** Associate existing clients with a company. */
22
+ addClients(args: {
23
+ id: string;
24
+ clientIds: string[];
25
+ confirmPromotePlaceholder?: boolean;
26
+ }): Promise<CompanyAddClientsResponse>;
21
27
  /** List companies with optional filters. */
22
28
  list(args?: ListCompaniesArgs): Promise<CompaniesResponse<TCustomFields>>;
23
29
  /** Retrieve a single company by ID. */
@@ -1,7 +1,7 @@
1
1
  import { buildSearchParams } from "../../../transport/build-search-params.mjs";
2
2
  import { parseResponse } from "../../../transport/parse-response.mjs";
3
3
  import { paginate } from "../../pagination/paginate.mjs";
4
- import { CompaniesResponseSchema, CompanyResponseSchema } from "./schema.mjs";
4
+ import { CompaniesResponseSchema, CompanyAddClientsResponseSchema, CompanyResponseSchema } from "./schema.mjs";
5
5
  //#region src/lib/modules/companies/resource.ts
6
6
  var CompaniesResource = class {
7
7
  #transport;
@@ -18,6 +18,15 @@ var CompaniesResource = class {
18
18
  validate: this.#validate
19
19
  });
20
20
  }
21
+ /** Associate existing clients with a company. */
22
+ async addClients(args) {
23
+ const searchParams = args.confirmPromotePlaceholder !== void 0 ? buildSearchParams({ confirmPromotePlaceholder: args.confirmPromotePlaceholder }) : void 0;
24
+ return parseResponse({
25
+ schema: CompanyAddClientsResponseSchema,
26
+ data: await this.#transport.post(`v1/companies/${args.id}/clients`, { clientIds: args.clientIds }, { searchParams }),
27
+ validate: this.#validate
28
+ });
29
+ }
21
30
  /** List companies with optional filters. */
22
31
  async list(args = {}) {
23
32
  return parseResponse({
@@ -1 +1 @@
1
- {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/companies/resource.ts"],"sourcesContent":["import { paginate } from \"src/lib/pagination\";\nimport type { ListArgs } from \"src/lib/pagination\";\nimport { buildSearchParams } from \"src/transport/build-search-params\";\nimport type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport { CompaniesResponseSchema, CompanyResponseSchema } from \"./schema\";\nimport type {\n CompaniesResponse,\n Company,\n CompanyCreateRequest,\n CompanyUpdateRequest,\n} from \"./schema\";\n\nexport interface ListCompaniesArgs extends ListArgs {\n isPlaceholder?: boolean;\n name?: string;\n}\n\nexport class CompaniesResource<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** Create a new company. */\n async create(body: CompanyCreateRequest): Promise<Company<TCustomFields>> {\n const raw: unknown = await this.#transport.post(\"v1/companies\", body);\n return parseResponse({\n schema: CompanyResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Company<TCustomFields>;\n }\n\n /** List companies with optional filters. */\n async list(args: ListCompaniesArgs = {}): Promise<CompaniesResponse<TCustomFields>> {\n const raw: unknown = await this.#transport.get(\"v1/companies\", {\n searchParams: buildSearchParams(args),\n });\n return parseResponse({\n schema: CompaniesResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as CompaniesResponse<TCustomFields>;\n }\n\n /** Retrieve a single company by ID. */\n async retrieve(id: string): Promise<Company<TCustomFields>> {\n const raw: unknown = await this.#transport.get(`v1/companies/${id}`);\n return parseResponse({\n schema: CompanyResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Company<TCustomFields>;\n }\n\n /** Update a company. */\n async update(args: { id: string; body: CompanyUpdateRequest }): Promise<Company<TCustomFields>> {\n const raw: unknown = await this.#transport.patch(`v1/companies/${args.id}`, args.body);\n return parseResponse({\n schema: CompanyResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Company<TCustomFields>;\n }\n\n /** Delete a company by ID. */\n async delete(id: string): Promise<void> {\n await this.#transport.delete(`v1/companies/${id}`);\n }\n\n /** Iterate over all companies, automatically paginating. Default limit per page: 10000. */\n async listAll(\n args: Omit<ListCompaniesArgs, \"nextToken\"> = {},\n ): Promise<Company<TCustomFields>[]> {\n return paginate<Company<TCustomFields>>((listArgs) => this.list({ ...args, ...listArgs }), {\n limit: args.limit ?? 10_000,\n });\n }\n}\n"],"mappings":";;;;;AAmBA,IAAa,oBAAb,MAEE;CACA;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAO,MAA6D;AAExE,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,KAAK,gBAAgB,KAAK;GAInE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,KAAK,OAA0B,EAAE,EAA6C;AAIlF,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,IAAI,gBAAgB,EAC7D,cAAc,kBAAkB,KAAK,EACtC,CAAC;GAIA,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,SAAS,IAA6C;AAE1D,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,gBAAgB,KAAK;GAIlE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,MAAmF;AAE9F,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,MAAM,gBAAgB,KAAK,MAAM,KAAK,KAAK;GAIpF,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,IAA2B;AACtC,QAAM,MAAA,UAAgB,OAAO,gBAAgB,KAAK;;;CAIpD,MAAM,QACJ,OAA6C,EAAE,EACZ;AACnC,SAAO,UAAkC,aAAa,KAAK,KAAK;GAAE,GAAG;GAAM,GAAG;GAAU,CAAC,EAAE,EACzF,OAAO,KAAK,SAAS,KACtB,CAAC"}
1
+ {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/companies/resource.ts"],"sourcesContent":["import { paginate } from \"src/lib/pagination\";\nimport type { ListArgs } from \"src/lib/pagination\";\nimport { buildSearchParams } from \"src/transport/build-search-params\";\nimport type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport {\n CompaniesResponseSchema,\n CompanyAddClientsResponseSchema,\n CompanyResponseSchema,\n} from \"./schema\";\nimport type {\n CompaniesResponse,\n Company,\n CompanyAddClientsResponse,\n CompanyCreateRequest,\n CompanyUpdateRequest,\n} from \"./schema\";\n\nexport interface ListCompaniesArgs extends ListArgs {\n isPlaceholder?: boolean;\n name?: string;\n}\n\nexport class CompaniesResource<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** Create a new company. */\n async create(body: CompanyCreateRequest): Promise<Company<TCustomFields>> {\n const raw: unknown = await this.#transport.post(\"v1/companies\", body);\n return parseResponse({\n schema: CompanyResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Company<TCustomFields>;\n }\n\n /** Associate existing clients with a company. */\n async addClients(args: {\n id: string;\n clientIds: string[];\n confirmPromotePlaceholder?: boolean;\n }): Promise<CompanyAddClientsResponse> {\n const searchParams =\n args.confirmPromotePlaceholder !== undefined\n ? buildSearchParams({ confirmPromotePlaceholder: args.confirmPromotePlaceholder })\n : undefined;\n const raw: unknown = await this.#transport.post(\n `v1/companies/${args.id}/clients`,\n { clientIds: args.clientIds },\n { searchParams },\n );\n return parseResponse({\n schema: CompanyAddClientsResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n\n /** List companies with optional filters. */\n async list(args: ListCompaniesArgs = {}): Promise<CompaniesResponse<TCustomFields>> {\n const raw: unknown = await this.#transport.get(\"v1/companies\", {\n searchParams: buildSearchParams(args),\n });\n return parseResponse({\n schema: CompaniesResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as CompaniesResponse<TCustomFields>;\n }\n\n /** Retrieve a single company by ID. */\n async retrieve(id: string): Promise<Company<TCustomFields>> {\n const raw: unknown = await this.#transport.get(`v1/companies/${id}`);\n return parseResponse({\n schema: CompanyResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Company<TCustomFields>;\n }\n\n /** Update a company. */\n async update(args: { id: string; body: CompanyUpdateRequest }): Promise<Company<TCustomFields>> {\n const raw: unknown = await this.#transport.patch(`v1/companies/${args.id}`, args.body);\n return parseResponse({\n schema: CompanyResponseSchema,\n data: raw,\n validate: this.#validate,\n }) as Company<TCustomFields>;\n }\n\n /** Delete a company by ID. */\n async delete(id: string): Promise<void> {\n await this.#transport.delete(`v1/companies/${id}`);\n }\n\n /** Iterate over all companies, automatically paginating. Default limit per page: 10000. */\n async listAll(\n args: Omit<ListCompaniesArgs, \"nextToken\"> = {},\n ): Promise<Company<TCustomFields>[]> {\n return paginate<Company<TCustomFields>>((listArgs) => this.list({ ...args, ...listArgs }), {\n limit: args.limit ?? 10_000,\n });\n }\n}\n"],"mappings":";;;;;AAwBA,IAAa,oBAAb,MAEE;CACA;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAO,MAA6D;AAExE,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,KAAK,gBAAgB,KAAK;GAInE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,WAAW,MAIsB;EACrC,MAAM,eACJ,KAAK,8BAA8B,KAAA,IAC/B,kBAAkB,EAAE,2BAA2B,KAAK,2BAA2B,CAAC,GAChF,KAAA;AAMN,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAPmB,MAAA,UAAgB,KACzC,gBAAgB,KAAK,GAAG,WACxB,EAAE,WAAW,KAAK,WAAW,EAC7B,EAAE,cAAc,CACjB;GAIC,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,KAAK,OAA0B,EAAE,EAA6C;AAIlF,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALmB,MAAA,UAAgB,IAAI,gBAAgB,EAC7D,cAAc,kBAAkB,KAAK,EACtC,CAAC;GAIA,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,SAAS,IAA6C;AAE1D,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,IAAI,gBAAgB,KAAK;GAIlE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,MAAmF;AAE9F,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHmB,MAAA,UAAgB,MAAM,gBAAgB,KAAK,MAAM,KAAK,KAAK;GAIpF,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,OAAO,IAA2B;AACtC,QAAM,MAAA,UAAgB,OAAO,gBAAgB,KAAK;;;CAIpD,MAAM,QACJ,OAA6C,EAAE,EACZ;AACnC,SAAO,UAAkC,aAAa,KAAK,KAAK;GAAE,GAAG;GAAM,GAAG;GAAU,CAAC,EAAE,EACzF,OAAO,KAAK,SAAS,KACtB,CAAC"}
@@ -34,6 +34,23 @@ interface CompanyUpdateRequest {
34
34
  name?: string;
35
35
  }
36
36
  declare const CompanyUpdateRequestSchema: z.ZodType<CompanyUpdateRequest>;
37
+ interface CompanyAddClientsRequest {
38
+ clientIds: string[];
39
+ }
40
+ declare const CompanyAddClientsRequestSchema: z.ZodType<CompanyAddClientsRequest>;
41
+ interface CompanyAddClientError {
42
+ clientId?: string;
43
+ error?: {
44
+ code?: string;
45
+ message?: string;
46
+ type?: string;
47
+ };
48
+ }
49
+ interface CompanyAddClientsResponse {
50
+ addClientErrors?: CompanyAddClientError[];
51
+ addedClientIds?: string[];
52
+ }
53
+ declare const CompanyAddClientsResponseSchema: z.ZodType<CompanyAddClientsResponse>;
37
54
  //#endregion
38
- export { CompaniesResponse, CompaniesResponseSchema, Company, CompanyCreateRequest, CompanyCreateRequestSchema, CompanyResponse, CompanyResponseSchema, CompanySchema, CompanyUpdateRequest, CompanyUpdateRequestSchema };
55
+ export { CompaniesResponse, CompaniesResponseSchema, Company, CompanyAddClientError, CompanyAddClientsRequest, CompanyAddClientsRequestSchema, CompanyAddClientsResponse, CompanyAddClientsResponseSchema, CompanyCreateRequest, CompanyCreateRequestSchema, CompanyResponse, CompanyResponseSchema, CompanySchema, CompanyUpdateRequest, CompanyUpdateRequestSchema };
39
56
  //# sourceMappingURL=schema.d.mts.map
@@ -28,7 +28,19 @@ const CompanyUpdateRequestSchema = z.object({
28
28
  iconImageUrl: z.string().optional(),
29
29
  name: z.string().optional()
30
30
  });
31
+ const CompanyAddClientsRequestSchema = z.object({ clientIds: z.array(z.string()).min(1) });
32
+ const CompanyAddClientsResponseSchema = z.object({
33
+ addClientErrors: z.array(z.object({
34
+ clientId: z.string().optional(),
35
+ error: z.object({
36
+ code: z.string().optional(),
37
+ message: z.string().optional(),
38
+ type: z.string().optional()
39
+ }).optional()
40
+ })).optional(),
41
+ addedClientIds: z.array(z.string()).optional()
42
+ });
31
43
  //#endregion
32
- export { CompaniesResponseSchema, CompanyCreateRequestSchema, CompanyResponseSchema, CompanySchema, CompanyUpdateRequestSchema };
44
+ export { CompaniesResponseSchema, CompanyAddClientsRequestSchema, CompanyAddClientsResponseSchema, CompanyCreateRequestSchema, CompanyResponseSchema, CompanySchema, CompanyUpdateRequestSchema };
33
45
 
34
46
  //# sourceMappingURL=schema.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/companies/schema.ts"],"sourcesContent":["import { HexColorSchema } from \"src/schemas/shared/hex-color\";\nimport type { HexColor } from \"src/schemas/shared/hex-color\";\nimport { z } from \"zod\";\n\n// ─── Base ─────────────────────────────────────────────────────────────────────\n\nexport interface Company<TCustomFields extends Record<string, unknown> = Record<string, unknown>> {\n createdAt: string;\n customFields?: TCustomFields | null;\n fallbackColor?: string | null;\n iconImageUrl?: string | null;\n id: string;\n isPlaceholder: boolean;\n name: string;\n object: \"company\";\n updatedAt?: string;\n}\n\nexport const CompanySchema: z.ZodType<Company> = z.object({\n createdAt: z.iso.datetime(),\n customFields: z.record(z.string(), z.unknown()).nullable().optional(),\n fallbackColor: z.string().nullable().optional(),\n iconImageUrl: z.string().nullable().optional(),\n id: z.string(),\n isPlaceholder: z.boolean(),\n name: z.string(),\n object: z.literal(\"company\"),\n updatedAt: z.iso.datetime().optional(),\n});\n\n// ─── Response ─────────────────────────────────────────────────────────────────\n\nexport const CompanyResponseSchema: z.ZodType<Company> = CompanySchema;\nexport type CompanyResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> = Company<TCustomFields>;\n\nexport interface CompaniesResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n data: Company<TCustomFields>[] | null;\n nextToken?: string;\n}\n\nexport const CompaniesResponseSchema: z.ZodType<CompaniesResponse> = z.object({\n data: z.array(CompanySchema).nullable(),\n nextToken: z.string().optional(),\n});\n\n// ─── Requests ─────────────────────────────────────────────────────────────────\n\nexport interface CompanyCreateRequest {\n customFields?: Record<string, unknown>;\n fallbackColor?: HexColor;\n iconImageUrl?: string;\n name: string;\n}\n\nexport const CompanyCreateRequestSchema: z.ZodType<CompanyCreateRequest> = z.object({\n customFields: z.record(z.string(), z.unknown()).optional(),\n fallbackColor: HexColorSchema.optional(),\n iconImageUrl: z.string().optional(),\n name: z.string(),\n});\n\nexport interface CompanyUpdateRequest {\n customFields?: Record<string, unknown>;\n iconImageUrl?: string;\n name?: string;\n}\n\nexport const CompanyUpdateRequestSchema: z.ZodType<CompanyUpdateRequest> = z.object({\n customFields: z.record(z.string(), z.unknown()).optional(),\n iconImageUrl: z.string().optional(),\n name: z.string().optional(),\n});\n"],"mappings":";;;AAkBA,MAAa,gBAAoC,EAAE,OAAO;CACxD,WAAW,EAAE,IAAI,UAAU;CAC3B,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU;CACrE,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CAC/C,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CAC9C,IAAI,EAAE,QAAQ;CACd,eAAe,EAAE,SAAS;CAC1B,MAAM,EAAE,QAAQ;CAChB,QAAQ,EAAE,QAAQ,UAAU;CAC5B,WAAW,EAAE,IAAI,UAAU,CAAC,UAAU;CACvC,CAAC;AAIF,MAAa,wBAA4C;AAYzD,MAAa,0BAAwD,EAAE,OAAO;CAC5E,MAAM,EAAE,MAAM,cAAc,CAAC,UAAU;CACvC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAWF,MAAa,6BAA8D,EAAE,OAAO;CAClF,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,eAAe,eAAe,UAAU;CACxC,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ;CACjB,CAAC;AAQF,MAAa,6BAA8D,EAAE,OAAO;CAClF,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC5B,CAAC"}
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/companies/schema.ts"],"sourcesContent":["import { HexColorSchema } from \"src/schemas/shared/hex-color\";\nimport type { HexColor } from \"src/schemas/shared/hex-color\";\nimport { z } from \"zod\";\n\n// ─── Base ─────────────────────────────────────────────────────────────────────\n\nexport interface Company<TCustomFields extends Record<string, unknown> = Record<string, unknown>> {\n createdAt: string;\n customFields?: TCustomFields | null;\n fallbackColor?: string | null;\n iconImageUrl?: string | null;\n id: string;\n isPlaceholder: boolean;\n name: string;\n object: \"company\";\n updatedAt?: string;\n}\n\nexport const CompanySchema: z.ZodType<Company> = z.object({\n createdAt: z.iso.datetime(),\n customFields: z.record(z.string(), z.unknown()).nullable().optional(),\n fallbackColor: z.string().nullable().optional(),\n iconImageUrl: z.string().nullable().optional(),\n id: z.string(),\n isPlaceholder: z.boolean(),\n name: z.string(),\n object: z.literal(\"company\"),\n updatedAt: z.iso.datetime().optional(),\n});\n\n// ─── Response ─────────────────────────────────────────────────────────────────\n\nexport const CompanyResponseSchema: z.ZodType<Company> = CompanySchema;\nexport type CompanyResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> = Company<TCustomFields>;\n\nexport interface CompaniesResponse<\n TCustomFields extends Record<string, unknown> = Record<string, unknown>,\n> {\n data: Company<TCustomFields>[] | null;\n nextToken?: string;\n}\n\nexport const CompaniesResponseSchema: z.ZodType<CompaniesResponse> = z.object({\n data: z.array(CompanySchema).nullable(),\n nextToken: z.string().optional(),\n});\n\n// ─── Requests ─────────────────────────────────────────────────────────────────\n\nexport interface CompanyCreateRequest {\n customFields?: Record<string, unknown>;\n fallbackColor?: HexColor;\n iconImageUrl?: string;\n name: string;\n}\n\nexport const CompanyCreateRequestSchema: z.ZodType<CompanyCreateRequest> = z.object({\n customFields: z.record(z.string(), z.unknown()).optional(),\n fallbackColor: HexColorSchema.optional(),\n iconImageUrl: z.string().optional(),\n name: z.string(),\n});\n\nexport interface CompanyUpdateRequest {\n customFields?: Record<string, unknown>;\n iconImageUrl?: string;\n name?: string;\n}\n\nexport const CompanyUpdateRequestSchema: z.ZodType<CompanyUpdateRequest> = z.object({\n customFields: z.record(z.string(), z.unknown()).optional(),\n iconImageUrl: z.string().optional(),\n name: z.string().optional(),\n});\n\n// ─── Add clients ──────────────────────────────────────────────────────────────\n\nexport interface CompanyAddClientsRequest {\n clientIds: string[];\n}\n\nexport const CompanyAddClientsRequestSchema: z.ZodType<CompanyAddClientsRequest> = z.object({\n clientIds: z.array(z.string()).min(1),\n});\n\nexport interface CompanyAddClientError {\n clientId?: string;\n error?: {\n code?: string;\n message?: string;\n type?: string;\n };\n}\n\nexport interface CompanyAddClientsResponse {\n addClientErrors?: CompanyAddClientError[];\n addedClientIds?: string[];\n}\n\nexport const CompanyAddClientsResponseSchema: z.ZodType<CompanyAddClientsResponse> = z.object({\n addClientErrors: z\n .array(\n z.object({\n clientId: z.string().optional(),\n error: z\n .object({\n code: z.string().optional(),\n message: z.string().optional(),\n type: z.string().optional(),\n })\n .optional(),\n }),\n )\n .optional(),\n addedClientIds: z.array(z.string()).optional(),\n});\n"],"mappings":";;;AAkBA,MAAa,gBAAoC,EAAE,OAAO;CACxD,WAAW,EAAE,IAAI,UAAU;CAC3B,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU;CACrE,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CAC/C,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CAC9C,IAAI,EAAE,QAAQ;CACd,eAAe,EAAE,SAAS;CAC1B,MAAM,EAAE,QAAQ;CAChB,QAAQ,EAAE,QAAQ,UAAU;CAC5B,WAAW,EAAE,IAAI,UAAU,CAAC,UAAU;CACvC,CAAC;AAIF,MAAa,wBAA4C;AAYzD,MAAa,0BAAwD,EAAE,OAAO;CAC5E,MAAM,EAAE,MAAM,cAAc,CAAC,UAAU;CACvC,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAWF,MAAa,6BAA8D,EAAE,OAAO;CAClF,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,eAAe,eAAe,UAAU;CACxC,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ;CACjB,CAAC;AAQF,MAAa,6BAA8D,EAAE,OAAO;CAClF,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,UAAU;CAC1D,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC5B,CAAC;AAQF,MAAa,iCAAsE,EAAE,OAAO,EAC1F,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EACtC,CAAC;AAgBF,MAAa,kCAAwE,EAAE,OAAO;CAC5F,iBAAiB,EACd,MACC,EAAE,OAAO;EACP,UAAU,EAAE,QAAQ,CAAC,UAAU;EAC/B,OAAO,EACJ,OAAO;GACN,MAAM,EAAE,QAAQ,CAAC,UAAU;GAC3B,SAAS,EAAE,QAAQ,CAAC,UAAU;GAC9B,MAAM,EAAE,QAAQ,CAAC,UAAU;GAC5B,CAAC,CACD,UAAU;EACd,CAAC,CACH,CACA,UAAU;CACb,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC/C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Transport } from "../../../transport/http.mjs";
2
- import { ListCustomFieldResponse } from "./schema.mjs";
2
+ import { CustomFieldsCreateRequest, CustomFieldsCreateResponse, ListCustomFieldResponse } from "./schema.mjs";
3
3
 
4
4
  //#region src/lib/modules/custom-fields/resource.d.ts
5
5
  declare class CustomFieldsResource {
@@ -11,6 +11,8 @@ declare class CustomFieldsResource {
11
11
  transport: Transport;
12
12
  validateResponses: boolean;
13
13
  });
14
+ /** Create one or more custom fields. */
15
+ create(body: CustomFieldsCreateRequest): Promise<CustomFieldsCreateResponse>;
14
16
  /** List custom fields with optional entity type filter. */
15
17
  list(args?: {
16
18
  entityType?: string;
@@ -1,6 +1,6 @@
1
1
  import { buildSearchParams } from "../../../transport/build-search-params.mjs";
2
2
  import { parseResponse } from "../../../transport/parse-response.mjs";
3
- import { ListCustomFieldResponseSchema } from "./schema.mjs";
3
+ import { CustomFieldsCreateResponseSchema, ListCustomFieldResponseSchema } from "./schema.mjs";
4
4
  //#region src/lib/modules/custom-fields/resource.ts
5
5
  var CustomFieldsResource = class {
6
6
  #transport;
@@ -9,6 +9,14 @@ var CustomFieldsResource = class {
9
9
  this.#transport = transport;
10
10
  this.#validate = validateResponses;
11
11
  }
12
+ /** Create one or more custom fields. */
13
+ async create(body) {
14
+ return parseResponse({
15
+ schema: CustomFieldsCreateResponseSchema,
16
+ data: await this.#transport.post("v1/custom-fields", body),
17
+ validate: this.#validate
18
+ });
19
+ }
12
20
  /** List custom fields with optional entity type filter. */
13
21
  async list(args = {}) {
14
22
  return parseResponse({
@@ -1 +1 @@
1
- {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/custom-fields/resource.ts"],"sourcesContent":["import { buildSearchParams } from \"src/transport/build-search-params\";\nimport type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport { ListCustomFieldResponseSchema } from \"./schema\";\nimport type { ListCustomFieldResponse } from \"./schema\";\n\nexport class CustomFieldsResource {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** List custom fields with optional entity type filter. */\n async list(args: { entityType?: string } = {}): Promise<ListCustomFieldResponse> {\n const raw = await this.#transport.get<unknown>(\"v1/custom-fields\", {\n searchParams: buildSearchParams(args),\n });\n return parseResponse({\n schema: ListCustomFieldResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n}\n"],"mappings":";;;;AAOA,IAAa,uBAAb,MAAkC;CAChC;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,KAAK,OAAgC,EAAE,EAAoC;AAI/E,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALU,MAAA,UAAgB,IAAa,oBAAoB,EACjE,cAAc,kBAAkB,KAAK,EACtC,CAAC;GAIA,UAAU,MAAA;GACX,CAAC"}
1
+ {"version":3,"file":"resource.mjs","names":["#transport","#validate"],"sources":["../../../../src/lib/modules/custom-fields/resource.ts"],"sourcesContent":["import { buildSearchParams } from \"src/transport/build-search-params\";\nimport type { Transport } from \"src/transport/http\";\nimport { parseResponse } from \"src/transport/parse-response\";\n\nimport { CustomFieldsCreateResponseSchema, ListCustomFieldResponseSchema } from \"./schema\";\nimport type {\n CustomFieldsCreateRequest,\n CustomFieldsCreateResponse,\n ListCustomFieldResponse,\n} from \"./schema\";\n\nexport class CustomFieldsResource {\n readonly #transport: Transport;\n readonly #validate: boolean;\n\n constructor({\n transport,\n validateResponses,\n }: {\n transport: Transport;\n validateResponses: boolean;\n }) {\n this.#transport = transport;\n this.#validate = validateResponses;\n }\n\n /** Create one or more custom fields. */\n async create(body: CustomFieldsCreateRequest): Promise<CustomFieldsCreateResponse> {\n const raw = await this.#transport.post<unknown>(\"v1/custom-fields\", body);\n return parseResponse({\n schema: CustomFieldsCreateResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n\n /** List custom fields with optional entity type filter. */\n async list(args: { entityType?: string } = {}): Promise<ListCustomFieldResponse> {\n const raw = await this.#transport.get<unknown>(\"v1/custom-fields\", {\n searchParams: buildSearchParams(args),\n });\n return parseResponse({\n schema: ListCustomFieldResponseSchema,\n data: raw,\n validate: this.#validate,\n });\n }\n}\n"],"mappings":";;;;AAWA,IAAa,uBAAb,MAAkC;CAChC;CACA;CAEA,YAAY,EACV,WACA,qBAIC;AACD,QAAA,YAAkB;AAClB,QAAA,WAAiB;;;CAInB,MAAM,OAAO,MAAsE;AAEjF,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MAHU,MAAA,UAAgB,KAAc,oBAAoB,KAAK;GAIvE,UAAU,MAAA;GACX,CAAC;;;CAIJ,MAAM,KAAK,OAAgC,EAAE,EAAoC;AAI/E,SAAO,cAAc;GACnB,QAAQ;GACR,MAAM,MALU,MAAA,UAAgB,IAAa,oBAAoB,EACjE,cAAc,kBAAkB,KAAK,EACtC,CAAC;GAIA,UAAU,MAAA;GACX,CAAC"}
@@ -38,6 +38,24 @@ interface ListCustomFieldResponse {
38
38
  data: CustomField[];
39
39
  }
40
40
  declare const ListCustomFieldResponseSchema: z.ZodType<ListCustomFieldResponse>;
41
+ interface CustomFieldCreateInput {
42
+ entityType: CustomFieldEntityType;
43
+ name: string;
44
+ /** Only valid for `multiSelect` fields. */
45
+ options?: {
46
+ label: string;
47
+ }[];
48
+ type: CustomFieldType;
49
+ }
50
+ declare const CustomFieldCreateInputSchema: z.ZodType<CustomFieldCreateInput>;
51
+ interface CustomFieldsCreateRequest {
52
+ customFields: CustomFieldCreateInput[];
53
+ }
54
+ declare const CustomFieldsCreateRequestSchema: z.ZodType<CustomFieldsCreateRequest>;
55
+ interface CustomFieldsCreateResponse {
56
+ customFields: CustomField[];
57
+ }
58
+ declare const CustomFieldsCreateResponseSchema: z.ZodType<CustomFieldsCreateResponse>;
41
59
  //#endregion
42
- export { AddressValue, AddressValueSchema, CustomField, CustomFieldEntityType, CustomFieldEntityTypeSchema, CustomFieldSchema, CustomFieldType, CustomFieldTypeSchema, CustomFieldValue, CustomFieldValueSchema, ListCustomFieldResponse, ListCustomFieldResponseSchema };
60
+ export { AddressValue, AddressValueSchema, CustomField, CustomFieldCreateInput, CustomFieldCreateInputSchema, CustomFieldEntityType, CustomFieldEntityTypeSchema, CustomFieldSchema, CustomFieldType, CustomFieldTypeSchema, CustomFieldValue, CustomFieldValueSchema, CustomFieldsCreateRequest, CustomFieldsCreateRequestSchema, CustomFieldsCreateResponse, CustomFieldsCreateResponseSchema, ListCustomFieldResponse, ListCustomFieldResponseSchema };
43
61
  //# sourceMappingURL=schema.d.mts.map
@@ -38,7 +38,15 @@ const CustomFieldValueSchema = z.union([
38
38
  z.string()
39
39
  ]);
40
40
  const ListCustomFieldResponseSchema = z.object({ data: z.array(CustomFieldSchema).transform((v) => v || []) });
41
+ const CustomFieldCreateInputSchema = z.object({
42
+ entityType: CustomFieldEntityTypeSchema,
43
+ name: z.string(),
44
+ options: z.array(z.object({ label: z.string() })).optional(),
45
+ type: CustomFieldTypeSchema
46
+ });
47
+ const CustomFieldsCreateRequestSchema = z.object({ customFields: z.array(CustomFieldCreateInputSchema) });
48
+ const CustomFieldsCreateResponseSchema = z.object({ customFields: z.array(CustomFieldSchema).transform((v) => v || []) });
41
49
  //#endregion
42
- export { AddressValueSchema, CustomFieldEntityTypeSchema, CustomFieldSchema, CustomFieldTypeSchema, CustomFieldValueSchema, ListCustomFieldResponseSchema };
50
+ export { AddressValueSchema, CustomFieldCreateInputSchema, CustomFieldEntityTypeSchema, CustomFieldSchema, CustomFieldTypeSchema, CustomFieldValueSchema, CustomFieldsCreateRequestSchema, CustomFieldsCreateResponseSchema, ListCustomFieldResponseSchema };
43
51
 
44
52
  //# sourceMappingURL=schema.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/custom-fields/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport type { CustomFieldOption } from \"../custom-field-options\";\nimport { CustomFieldOptionSchema } from \"../custom-field-options\";\n\n// ─── Base ─────────────────────────────────────────────────────────────────────\n\nexport type CustomFieldType =\n | \"address\"\n | \"email\"\n | \"multiSelect\"\n | \"number\"\n | \"phoneNumber\"\n | \"text\"\n | \"url\";\n\nexport const CustomFieldTypeSchema: z.ZodType<CustomFieldType> = z.enum([\n \"address\",\n \"email\",\n \"phoneNumber\",\n \"text\",\n \"number\",\n \"url\",\n \"multiSelect\",\n]);\n\nexport type CustomFieldEntityType = \"client\" | \"company\";\n\nexport const CustomFieldEntityTypeSchema: z.ZodType<CustomFieldEntityType> = z.enum([\n \"client\",\n \"company\",\n]);\n\nexport interface CustomField {\n entityType: CustomFieldEntityType;\n id: string;\n key: string;\n name: string;\n object: \"customField\";\n options?: CustomFieldOption[];\n order: number;\n type: CustomFieldType;\n}\n\nexport const CustomFieldSchema: z.ZodType<CustomField> = z.object({\n entityType: CustomFieldEntityTypeSchema,\n id: z.string(),\n key: z.string(),\n name: z.string(),\n object: z.literal(\"customField\"),\n options: z.array(CustomFieldOptionSchema).optional(),\n order: z.number(),\n type: CustomFieldTypeSchema,\n});\n\n// ─── Custom field value types ─────────────────────────────────────────────────\n\nexport interface AddressValue {\n addressLine1?: string;\n addressLine2?: string;\n city?: string;\n country: string;\n fullAddress: string;\n postalCode?: string;\n region?: string;\n}\n\nexport const AddressValueSchema: z.ZodType<AddressValue> = z.object({\n addressLine1: z.string().optional(),\n addressLine2: z.string().optional(),\n city: z.string().optional(),\n country: z.string(),\n fullAddress: z.string(),\n postalCode: z.string().optional(),\n region: z.string().optional(),\n});\n\n/**\n * Union of all possible custom field values.\n * Order matters: number and string[] are tried before string to avoid\n * early matching on a less-specific branch.\n */\nexport type CustomFieldValue = AddressValue | number | string | string[];\n\nexport const CustomFieldValueSchema: z.ZodType<CustomFieldValue> = z.union([\n z.number(),\n z.array(z.string()),\n AddressValueSchema,\n z.string(),\n]);\n\n// ─── Response ─────────────────────────────────────────────────────────────────\n\nexport interface ListCustomFieldResponse {\n data: CustomField[];\n}\n\nexport const ListCustomFieldResponseSchema: z.ZodType<ListCustomFieldResponse> = z.object({\n data: z.array(CustomFieldSchema).transform((v) => v || []),\n});\n"],"mappings":";;;;AAgBA,MAAa,wBAAoD,EAAE,KAAK;CACtE;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAIF,MAAa,8BAAgE,EAAE,KAAK,CAClF,UACA,UACD,CAAC;AAaF,MAAa,oBAA4C,EAAE,OAAO;CAChE,YAAY;CACZ,IAAI,EAAE,QAAQ;CACd,KAAK,EAAE,QAAQ;CACf,MAAM,EAAE,QAAQ;CAChB,QAAQ,EAAE,QAAQ,cAAc;CAChC,SAAS,EAAE,MAAM,wBAAwB,CAAC,UAAU;CACpD,OAAO,EAAE,QAAQ;CACjB,MAAM;CACP,CAAC;AAcF,MAAa,qBAA8C,EAAE,OAAO;CAClE,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC3B,SAAS,EAAE,QAAQ;CACnB,aAAa,EAAE,QAAQ;CACvB,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC9B,CAAC;AASF,MAAa,yBAAsD,EAAE,MAAM;CACzE,EAAE,QAAQ;CACV,EAAE,MAAM,EAAE,QAAQ,CAAC;CACnB;CACA,EAAE,QAAQ;CACX,CAAC;AAQF,MAAa,gCAAoE,EAAE,OAAO,EACxF,MAAM,EAAE,MAAM,kBAAkB,CAAC,WAAW,MAAM,KAAK,EAAE,CAAC,EAC3D,CAAC"}
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/lib/modules/custom-fields/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport type { CustomFieldOption } from \"../custom-field-options\";\nimport { CustomFieldOptionSchema } from \"../custom-field-options\";\n\n// ─── Base ─────────────────────────────────────────────────────────────────────\n\nexport type CustomFieldType =\n | \"address\"\n | \"email\"\n | \"multiSelect\"\n | \"number\"\n | \"phoneNumber\"\n | \"text\"\n | \"url\";\n\nexport const CustomFieldTypeSchema: z.ZodType<CustomFieldType> = z.enum([\n \"address\",\n \"email\",\n \"phoneNumber\",\n \"text\",\n \"number\",\n \"url\",\n \"multiSelect\",\n]);\n\nexport type CustomFieldEntityType = \"client\" | \"company\";\n\nexport const CustomFieldEntityTypeSchema: z.ZodType<CustomFieldEntityType> = z.enum([\n \"client\",\n \"company\",\n]);\n\nexport interface CustomField {\n entityType: CustomFieldEntityType;\n id: string;\n key: string;\n name: string;\n object: \"customField\";\n options?: CustomFieldOption[];\n order: number;\n type: CustomFieldType;\n}\n\nexport const CustomFieldSchema: z.ZodType<CustomField> = z.object({\n entityType: CustomFieldEntityTypeSchema,\n id: z.string(),\n key: z.string(),\n name: z.string(),\n object: z.literal(\"customField\"),\n options: z.array(CustomFieldOptionSchema).optional(),\n order: z.number(),\n type: CustomFieldTypeSchema,\n});\n\n// ─── Custom field value types ─────────────────────────────────────────────────\n\nexport interface AddressValue {\n addressLine1?: string;\n addressLine2?: string;\n city?: string;\n country: string;\n fullAddress: string;\n postalCode?: string;\n region?: string;\n}\n\nexport const AddressValueSchema: z.ZodType<AddressValue> = z.object({\n addressLine1: z.string().optional(),\n addressLine2: z.string().optional(),\n city: z.string().optional(),\n country: z.string(),\n fullAddress: z.string(),\n postalCode: z.string().optional(),\n region: z.string().optional(),\n});\n\n/**\n * Union of all possible custom field values.\n * Order matters: number and string[] are tried before string to avoid\n * early matching on a less-specific branch.\n */\nexport type CustomFieldValue = AddressValue | number | string | string[];\n\nexport const CustomFieldValueSchema: z.ZodType<CustomFieldValue> = z.union([\n z.number(),\n z.array(z.string()),\n AddressValueSchema,\n z.string(),\n]);\n\n// ─── Response ─────────────────────────────────────────────────────────────────\n\nexport interface ListCustomFieldResponse {\n data: CustomField[];\n}\n\nexport const ListCustomFieldResponseSchema: z.ZodType<ListCustomFieldResponse> = z.object({\n data: z.array(CustomFieldSchema).transform((v) => v || []),\n});\n\n// ─── Requests ─────────────────────────────────────────────────────────────────\n\nexport interface CustomFieldCreateInput {\n entityType: CustomFieldEntityType;\n name: string;\n /** Only valid for `multiSelect` fields. */\n options?: { label: string }[];\n type: CustomFieldType;\n}\n\nexport const CustomFieldCreateInputSchema: z.ZodType<CustomFieldCreateInput> = z.object({\n entityType: CustomFieldEntityTypeSchema,\n name: z.string(),\n options: z.array(z.object({ label: z.string() })).optional(),\n type: CustomFieldTypeSchema,\n});\n\nexport interface CustomFieldsCreateRequest {\n customFields: CustomFieldCreateInput[];\n}\n\nexport const CustomFieldsCreateRequestSchema: z.ZodType<CustomFieldsCreateRequest> = z.object({\n customFields: z.array(CustomFieldCreateInputSchema),\n});\n\nexport interface CustomFieldsCreateResponse {\n customFields: CustomField[];\n}\n\nexport const CustomFieldsCreateResponseSchema: z.ZodType<CustomFieldsCreateResponse> = z.object({\n customFields: z.array(CustomFieldSchema).transform((v) => v || []),\n});\n"],"mappings":";;;;AAgBA,MAAa,wBAAoD,EAAE,KAAK;CACtE;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAIF,MAAa,8BAAgE,EAAE,KAAK,CAClF,UACA,UACD,CAAC;AAaF,MAAa,oBAA4C,EAAE,OAAO;CAChE,YAAY;CACZ,IAAI,EAAE,QAAQ;CACd,KAAK,EAAE,QAAQ;CACf,MAAM,EAAE,QAAQ;CAChB,QAAQ,EAAE,QAAQ,cAAc;CAChC,SAAS,EAAE,MAAM,wBAAwB,CAAC,UAAU;CACpD,OAAO,EAAE,QAAQ;CACjB,MAAM;CACP,CAAC;AAcF,MAAa,qBAA8C,EAAE,OAAO;CAClE,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,cAAc,EAAE,QAAQ,CAAC,UAAU;CACnC,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC3B,SAAS,EAAE,QAAQ;CACnB,aAAa,EAAE,QAAQ;CACvB,YAAY,EAAE,QAAQ,CAAC,UAAU;CACjC,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC9B,CAAC;AASF,MAAa,yBAAsD,EAAE,MAAM;CACzE,EAAE,QAAQ;CACV,EAAE,MAAM,EAAE,QAAQ,CAAC;CACnB;CACA,EAAE,QAAQ;CACX,CAAC;AAQF,MAAa,gCAAoE,EAAE,OAAO,EACxF,MAAM,EAAE,MAAM,kBAAkB,CAAC,WAAW,MAAM,KAAK,EAAE,CAAC,EAC3D,CAAC;AAYF,MAAa,+BAAkE,EAAE,OAAO;CACtF,YAAY;CACZ,MAAM,EAAE,QAAQ;CAChB,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU;CAC5D,MAAM;CACP,CAAC;AAMF,MAAa,kCAAwE,EAAE,OAAO,EAC5F,cAAc,EAAE,MAAM,6BAA6B,EACpD,CAAC;AAMF,MAAa,mCAA0E,EAAE,OAAO,EAC9F,cAAc,EAAE,MAAM,kBAAkB,CAAC,WAAW,MAAM,KAAK,EAAE,CAAC,EACnE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Transport } from "../../../transport/http.mjs";
2
2
  import { ListArgs } from "../../pagination/paginate.mjs";
3
- import { AssemblyFile, AssemblyFilesResponse } from "./schema.mjs";
3
+ import { AssemblyFile, AssemblyFilesResponse, ClientPermissions, FileDownloadUrlResponse, FilePermissionsResponse } from "./schema.mjs";
4
4
 
5
5
  //#region src/lib/modules/files/resource.d.ts
6
6
  interface ListFilesArgs extends ListArgs {
@@ -30,6 +30,20 @@ declare class FilesResource {
30
30
  list(args: ListFilesArgs): Promise<AssemblyFilesResponse>;
31
31
  /** Retrieve a single file by ID. */
32
32
  retrieve(id: string): Promise<AssemblyFile>;
33
+ /** Retrieve a short-lived presigned download URL for a file's contents. */
34
+ retrieveDownloadUrl(id: string): Promise<FileDownloadUrlResponse>;
35
+ /** Download a file's raw contents. */
36
+ download(id: string): Promise<ArrayBuffer>;
37
+ /** Update the client access level on a folder. */
38
+ updateFolderPermissions(args: {
39
+ id: string;
40
+ clientPermissions: ClientPermissions;
41
+ }): Promise<FilePermissionsResponse>;
42
+ /** Update the client access level on a file channel's root folder. */
43
+ updateRootFolderPermissions(args: {
44
+ channelId: string;
45
+ clientPermissions: ClientPermissions;
46
+ }): Promise<FilePermissionsResponse>;
33
47
  /** Delete a file by ID. */
34
48
  delete(id: string): Promise<void>;
35
49
  /** Iterate over all files in a channel, automatically paginating. Default limit per page: 500. */