@dev.smartpricing/message-composer-utils 4.2.14 → 4.3.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.
Files changed (65) hide show
  1. package/dist/schemas/ai-integration.js +34 -0
  2. package/dist/schemas/ai-integration.js.map +1 -0
  3. package/dist/schemas/brand.js +40 -0
  4. package/dist/schemas/brand.js.map +1 -0
  5. package/dist/schemas/common.js +34 -0
  6. package/dist/schemas/common.js.map +1 -0
  7. package/dist/schemas/dynamic-values.js +16 -0
  8. package/dist/schemas/dynamic-values.js.map +1 -0
  9. package/dist/schemas/index.js +15 -0
  10. package/dist/schemas/index.js.map +1 -0
  11. package/dist/schemas/language.js +13 -0
  12. package/dist/schemas/language.js.map +1 -0
  13. package/dist/schemas/media.js +33 -0
  14. package/dist/schemas/media.js.map +1 -0
  15. package/dist/schemas/message-compilation.js +31 -0
  16. package/dist/schemas/message-compilation.js.map +1 -0
  17. package/dist/schemas/message-group.js +70 -0
  18. package/dist/schemas/message-group.js.map +1 -0
  19. package/dist/schemas/message.js +33 -0
  20. package/dist/schemas/message.js.map +1 -0
  21. package/dist/schemas/meta-integration.js +42 -0
  22. package/dist/schemas/meta-integration.js.map +1 -0
  23. package/dist/schemas/onboarding.js +38 -0
  24. package/dist/schemas/onboarding.js.map +1 -0
  25. package/dist/schemas/organization.js +7 -0
  26. package/dist/schemas/organization.js.map +1 -0
  27. package/dist/schemas/property.js +8 -0
  28. package/dist/schemas/property.js.map +1 -0
  29. package/dist/schemas/tracking.js +6 -0
  30. package/dist/schemas/tracking.js.map +1 -0
  31. package/dist/types/api/apiTemplates.js +2 -0
  32. package/dist/types/api/apiTemplates.js.map +1 -0
  33. package/dist/types/template.js +2 -0
  34. package/dist/types/template.js.map +1 -0
  35. package/dist/utils/templates/email-maizzle.js +433 -0
  36. package/dist/utils/templates/email-maizzle.js.map +1 -0
  37. package/dist/utils/templates/email-mjml.js +1 -1
  38. package/dist/utils/templates/email.test.js.map +1 -1
  39. package/package.json +5 -1
  40. package/src/schemas/ai-integration.ts +53 -0
  41. package/src/schemas/brand.ts +57 -0
  42. package/src/schemas/common.ts +43 -0
  43. package/src/schemas/dynamic-values.ts +23 -0
  44. package/src/schemas/index.ts +14 -0
  45. package/src/schemas/language.ts +15 -0
  46. package/src/schemas/media.ts +37 -0
  47. package/src/schemas/message-compilation.ts +38 -0
  48. package/src/schemas/message-group.ts +100 -0
  49. package/src/schemas/message.ts +36 -0
  50. package/src/schemas/meta-integration.ts +47 -0
  51. package/src/schemas/onboarding.ts +44 -0
  52. package/src/schemas/organization.ts +7 -0
  53. package/src/schemas/property.ts +10 -0
  54. package/src/schemas/tracking.ts +6 -0
  55. package/src/types/api/aiIntegration.ts +1 -1
  56. package/src/types/brand.ts +1 -1
  57. package/src/types/dynamic-values.ts +1 -1
  58. package/src/types/kafka-events.ts +1 -1
  59. package/src/types/media.ts +4 -4
  60. package/src/types/message.ts +3 -3
  61. package/src/types/submission-job.ts +2 -2
  62. package/src/utils/templates/brand-cascade.ts +1 -1
  63. package/src/utils/templates/email-mjml.ts +1 -1
  64. package/src/utils/templates/email.test.ts +1 -5
  65. package/src/utils/templates/tiptap.ts +1 -1
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ import { GENERATE_TEXT_PROMPT_MIN_LENGTH, GENERATE_TEXT_PROMPT_MAX_LENGTH, } from "../types/index.js";
3
+ const nonEmptyText = z
4
+ .string()
5
+ .refine((text) => text.trim().length > 0, "Text is required");
6
+ export const refineTextBodySchema = z.object({
7
+ text: nonEmptyText,
8
+ });
9
+ export const translateTextBodySchema = z.object({
10
+ text: nonEmptyText,
11
+ sourceLanguage: z.string().optional(),
12
+ targetLanguages: z
13
+ .array(z.string())
14
+ .min(1, "At least one target language is required"),
15
+ });
16
+ export const generateTextBodySchema = z.object({
17
+ prompt: z
18
+ .string()
19
+ .refine((prompt) => prompt.trim().length >= GENERATE_TEXT_PROMPT_MIN_LENGTH &&
20
+ prompt.trim().length <= GENERATE_TEXT_PROMPT_MAX_LENGTH, `Prompt must be between ${GENERATE_TEXT_PROMPT_MIN_LENGTH} and ${GENERATE_TEXT_PROMPT_MAX_LENGTH} characters`),
21
+ widgetType: z.enum(["heading", "paragraph", "whatsapp_body"]),
22
+ language: z.string().optional(),
23
+ context: z.string().optional(),
24
+ });
25
+ export const refineTextResponseSchema = z.object({
26
+ refinedText: z.string(),
27
+ });
28
+ export const translationResponseSchema = z.object({
29
+ translations: z.record(z.string(), z.string()),
30
+ });
31
+ export const generateTextResponseSchema = z.object({
32
+ suggestions: z.array(z.string()),
33
+ });
34
+ //# sourceMappingURL=ai-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-integration.js","sourceRoot":"","sources":["../../src/schemas/ai-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAOL,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,YAAY;CACnB,CAAwC,CAAC;AAE1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,YAAY;IAClB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,eAAe,EAAE,CAAC;SACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,0CAA0C,CAAC;CACtD,CAA2C,CAAC;AAE7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,+BAA+B;QACvD,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,+BAA+B,EACzD,0BAA0B,+BAA+B,QAAQ,+BAA+B,aAAa,CAC9G;IACH,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC7D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAA0C,CAAC;AAE5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAyC,CAAC;AAE3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/C,CAA0C,CAAC;AAE5C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACjC,CAA2C,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { brandDefaultEmailSettingsSchema, brandDefaultButtonSettingsSchema, brandDataSchema, } from "../types/index.js";
3
+ import { dbTimestampSchema } from "./common.js";
4
+ export const listBrandsQuerySchema = z.object({
5
+ sort_by: z.enum(["created_at", "name"]).catch("created_at"),
6
+ direction: z.enum(["asc", "desc"]).catch("asc"),
7
+ });
8
+ export const byPropertyParamsSchema = z.object({
9
+ propertyId: z.uuid(),
10
+ });
11
+ export const byOrganizationParamsSchema = z.object({
12
+ organizationId: z.uuid(),
13
+ });
14
+ /** Mirrors BrandFromDb as returned today (ADR 0007: mirror fidelity). */
15
+ export const brandResponseSchema = z.object({
16
+ id: z.uuid(),
17
+ name: z.string(),
18
+ organization_id: z.string().nullable(),
19
+ user_id: z.string(),
20
+ logo_media_id: z.string().nullable(),
21
+ colors: z.array(z.string()),
22
+ default_email_settings: brandDefaultEmailSettingsSchema,
23
+ default_button_settings: brandDefaultButtonSettingsSchema,
24
+ default_socials: z.record(z.string(), z.string()).nullable(),
25
+ data: brandDataSchema.nullable(),
26
+ logo_url: z.string().nullable(),
27
+ created_at: dbTimestampSchema,
28
+ updated_at: dbTimestampSchema,
29
+ });
30
+ export const brandWithPropertiesResponseSchema = brandResponseSchema.extend({
31
+ properties: z.array(z.object({ brand_id: z.string(), property_id: z.string() })),
32
+ });
33
+ export const brandWithPropertiesListResponseSchema = z.array(brandWithPropertiesResponseSchema);
34
+ export const brandWithCountResponseSchema = brandResponseSchema.extend({
35
+ brand_count: z.number(),
36
+ });
37
+ export const brandCountResponseSchema = z.object({
38
+ brand_count: z.number(),
39
+ });
40
+ //# sourceMappingURL=brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.js","sourceRoot":"","sources":["../../src/schemas/brand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,eAAe,GAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;CAChD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;CACrB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE;CACzB,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,sBAAsB,EAAE,+BAA+B;IACvD,uBAAuB,EAAE,gCAAgC;IACzD,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5D,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;CAC9B,CAA2C,CAAC;AAE7C,MAAM,CAAC,MAAM,iCAAiC,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAC1E,UAAU,EAAE,CAAC,CAAC,KAAK,CACjB,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC5D;CACF,CAA6E,CAAC;AAE/E,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CAC1D,iCAAiC,CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,mBAAmB,CAAC,MAAM,CAAC;IACrE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * DB timestamp: ISO-8601 string on the JSON wire; at runtime the pg driver
4
+ * hands routes `Date` objects while the shared row types (WithDbTimestamps)
5
+ * claim `string` — so the decoded side accepts both and encodes either to ISO.
6
+ */
7
+ export const dbTimestampSchema = z.codec(z.iso.datetime(), z.union([z.date(), z.iso.datetime()]), {
8
+ decode: (iso) => new Date(iso),
9
+ encode: (value) => (value instanceof Date ? value.toISOString() : value),
10
+ });
11
+ /**
12
+ * The error shape produced by the backend's global error handler (AppError).
13
+ * Kept deliberately wide (ADR 0007): `details` is unknown, code/error may be
14
+ * absent on some 4xx paths.
15
+ */
16
+ export const appErrorSchema = z.object({
17
+ statusCode: z.number(),
18
+ code: z.string().optional(),
19
+ error: z.string().optional(),
20
+ message: z.string(),
21
+ details: z.unknown().optional(),
22
+ });
23
+ /** 204 No Content bodies (delete routes send null). */
24
+ export const noContentResponseSchema = z.null();
25
+ export const idParamsSchema = z.object({
26
+ id: z.uuid(),
27
+ });
28
+ export const messageGroupIdParamsSchema = z.object({
29
+ messageGroupId: z.uuid(),
30
+ });
31
+ export const jobIdParamsSchema = z.object({
32
+ jobId: z.uuid(),
33
+ });
34
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CACtC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAChB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EACrC;IACE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;CACzE,CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,uDAAuD;AACvD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;CAChB,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ export const dynamicValuesQuerySchema = z.object({
3
+ product: z.string({ error: "product query parameter is required" }),
4
+ context: z.string().optional(),
5
+ language: z.string().default("en"),
6
+ });
7
+ export const dynamicValuesResponseSchema = z.record(z.string(), z.object({
8
+ description: z.string(),
9
+ fields: z.array(z.object({
10
+ value: z.string(),
11
+ label: z.string(),
12
+ description: z.string(),
13
+ default: z.string().optional(),
14
+ })),
15
+ }));
16
+ //# sourceMappingURL=dynamic-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-values.js","sourceRoot":"","sources":["../../src/schemas/dynamic-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IACnE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,MAAM,CAAC;IACP,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC,CACH;CACF,CAAC,CACwC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export * from "./common.js";
2
+ export * from "./ai-integration.js";
3
+ export * from "./brand.js";
4
+ export * from "./dynamic-values.js";
5
+ export * from "./language.js";
6
+ export * from "./media.js";
7
+ export * from "./organization.js";
8
+ export * from "./property.js";
9
+ export * from "./message.js";
10
+ export * from "./message-group.js";
11
+ export * from "./message-compilation.js";
12
+ export * from "./meta-integration.js";
13
+ export * from "./onboarding.js";
14
+ export * from "./tracking.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ import { dbTimestampSchema } from "./common.js";
3
+ /** Mirrors Language rows; id is a TEXT primary key (e.g. "en"), not a UUID. */
4
+ export const languageResponseSchema = z.object({
5
+ id: z.string(),
6
+ name: z.string(),
7
+ flag: z.string(),
8
+ meta_language_code: z.string().nullable(),
9
+ created_at: dbTimestampSchema,
10
+ updated_at: dbTimestampSchema,
11
+ });
12
+ export const languageListResponseSchema = z.array(languageResponseSchema);
13
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/schemas/language.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;CAC9B,CAA0D,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { dbTimestampSchema } from "./common.js";
3
+ const DEFAULT_LIMIT = 50;
4
+ const MAX_LIMIT = 200;
5
+ export const listMediaQuerySchema = z.object({
6
+ userId: z.string().optional(),
7
+ organizationId: z.string().optional(),
8
+ smartnessEventId: z.uuid().optional(),
9
+ fileType: z.string().optional(),
10
+ limit: z.coerce.number().int().min(1).max(MAX_LIMIT).default(DEFAULT_LIMIT),
11
+ offset: z.coerce.number().int().min(0).default(0),
12
+ });
13
+ /**
14
+ * Mirrors MediaFromDb rows as returned today. Optional columns are also
15
+ * nullable: the shared type says `field?: string` but SELECT * returns
16
+ * explicit nulls (why response schemas carry no `satisfies` pin yet).
17
+ */
18
+ export const mediaResponseSchema = z.object({
19
+ id: z.uuid(),
20
+ remote_url: z.string(),
21
+ remote_name: z.string(),
22
+ file_name: z.string(),
23
+ file_type: z.string(),
24
+ meta_handle_id: z.string().nullable().optional(),
25
+ smartchat_media_id: z.string().nullable().optional(),
26
+ smartness_event_id: z.string().nullable().optional(),
27
+ organization_id: z.string().nullable().optional(),
28
+ user_id: z.string(),
29
+ created_at: dbTimestampSchema,
30
+ updated_at: dbTimestampSchema,
31
+ });
32
+ export const mediaListResponseSchema = z.array(mediaResponseSchema);
33
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/schemas/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CAClD,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;CAC9B,CAA2C,CAAC;AAE7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ import { previewMessageRequestSchema, } from "../types/index.js";
3
+ export const messageLanguageQuerySchema = z.object({
4
+ language: z.string(),
5
+ fallbackLanguage: z.string().optional(),
6
+ strict_language: z.coerce.boolean().optional(),
7
+ });
8
+ export const compileMessageBodySchema = z.object({
9
+ language: z.string(),
10
+ fallbackLanguage: z.string().optional(),
11
+ parameters: z.record(z.string(), z.unknown()),
12
+ strict: z.boolean().optional(),
13
+ brand_id: z.string().optional(),
14
+ strict_language: z.boolean().optional(),
15
+ });
16
+ export const compileAndSendBodySchema = compileMessageBodySchema.extend({
17
+ from: z.string().min(1, "Missing required parameters"),
18
+ to: z.string().min(1, "Missing required parameters"),
19
+ automationEngineMessageId: z.string().optional(),
20
+ additionalInfo: z.record(z.string(), z.unknown()).optional(),
21
+ provider: z.enum(["SendGrid", "AmazonSES"]).optional(),
22
+ kind: z.string().optional(),
23
+ });
24
+ export const testEmailBodySchema = z.object({
25
+ message: previewMessageRequestSchema.shape.message,
26
+ to: z.string().min(1, "Missing required parameters: message, to"),
27
+ brand_id: z.string().nullable().optional(),
28
+ sender_name: z.string().nullable().optional(),
29
+ from: z.string().optional(),
30
+ });
31
+ //# sourceMappingURL=message-compilation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-compilation.js","sourceRoot":"","sources":["../../src/schemas/message-compilation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGL,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACxC,CAA4C,CAAC;AAE9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,MAAM,CAAC;IACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;IACtD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;IACpD,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChD,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5D,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAA4C,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,OAAO;IAClD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,0CAA0C,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { z } from "zod";
2
+ import { MESSAGE_GROUP_CATEGORIES, MESSAGE_GROUP_VISIBILITY, MESSAGE_STATUS, MESSAGE_RENDER_TYPES, } from "../types/index.js";
3
+ import { dbTimestampSchema } from "./common.js";
4
+ import { messageResponseSchema } from "./message.js";
5
+ export const listMessageGroupsQuerySchema = z.object({
6
+ render_type: z.string().optional(),
7
+ tags: z.union([z.string(), z.array(z.string())]).optional(),
8
+ tags_mode: z.enum(["and", "or"]).default("and"),
9
+ });
10
+ export const updateMessageGroupBodySchema = z.object({
11
+ name: z
12
+ .string()
13
+ .refine((name) => name.trim() !== "", "Name is required and cannot be empty"),
14
+ brand_id: z.string().nullable().optional(),
15
+ });
16
+ export const createMessageGroupBodySchema = z.object({
17
+ name: z.string(),
18
+ category: z.enum(MESSAGE_GROUP_CATEGORIES),
19
+ visibility: z.enum(MESSAGE_GROUP_VISIBILITY).optional(),
20
+ brand_id: z.string().nullable().optional(),
21
+ });
22
+ export const duplicateMessageGroupBodySchema = z
23
+ .object({
24
+ name: z.string().optional(),
25
+ visibility: z.enum(MESSAGE_GROUP_VISIBILITY).optional(),
26
+ brand_id: z.string().nullable().optional(),
27
+ })
28
+ .optional();
29
+ /** Mirrors MessageGroupFromDb rows as returned today. */
30
+ export const messageGroupResponseSchema = z.object({
31
+ id: z.uuid(),
32
+ name: z.string(),
33
+ category: z.enum(MESSAGE_GROUP_CATEGORIES),
34
+ visibility: z.enum(MESSAGE_GROUP_VISIBILITY).nullable().optional(),
35
+ brand_id: z.string().nullable().optional(),
36
+ organization_id: z.string().nullable().optional(),
37
+ user_id: z.string(),
38
+ created_at: dbTimestampSchema,
39
+ updated_at: dbTimestampSchema,
40
+ });
41
+ export const messageGroupWithMessagesResponseSchema = messageGroupResponseSchema.extend({
42
+ messages: z.array(messageResponseSchema),
43
+ tags: z.array(z.string()),
44
+ });
45
+ export const messageGroupWithTagsResponseSchema = messageGroupResponseSchema.extend({
46
+ tags: z.array(z.string()),
47
+ });
48
+ /** List item for GET /message-groups: per-message summaries, no bodies. */
49
+ export const messageGroupWithMessageSummaryResponseSchema = messageGroupWithTagsResponseSchema.extend({
50
+ messages: z.array(z.object({
51
+ id: z.uuid(),
52
+ language: z.string(),
53
+ status: z.enum(MESSAGE_STATUS),
54
+ preview: z.string(),
55
+ render_type: z.enum(MESSAGE_RENDER_TYPES),
56
+ })),
57
+ });
58
+ export const messageGroupSummaryListResponseSchema = z.array(messageGroupWithMessageSummaryResponseSchema);
59
+ export const messageGroupValidationResponseSchema = z.object({
60
+ valid: z.boolean(),
61
+ errors: z.object({
62
+ status: z.array(z.string()),
63
+ languages: z.array(z.string()),
64
+ content: z.record(z.string(), z.object({
65
+ type: z.string(),
66
+ errors: z.array(z.string()),
67
+ })),
68
+ }),
69
+ });
70
+ //# sourceMappingURL=message-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-group.js","sourceRoot":"","sources":["../../src/schemas/message-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { MESSAGE_STATUS, MESSAGE_RENDER_TYPES } from "../types/index.js";
3
+ import { dbTimestampSchema } from "./common.js";
4
+ export const messageBodySchema = z.object({
5
+ message_group_id: z.uuid(),
6
+ language_id: z.string(),
7
+ status: z.enum(MESSAGE_STATUS),
8
+ render_type: z.enum(MESSAGE_RENDER_TYPES),
9
+ body: z.record(z.string(), z.unknown()),
10
+ metadata: z.record(z.string(), z.unknown()),
11
+ });
12
+ /**
13
+ * Mirrors MessageFromDb rows as returned today. body/metadata stay loose
14
+ * records — no full Zod schema exists for the deep block unions (ADR 0004 §5).
15
+ */
16
+ export const messageResponseSchema = z.object({
17
+ id: z.uuid(),
18
+ message_group_id: z.uuid(),
19
+ language_id: z.string(),
20
+ status: z.enum(MESSAGE_STATUS),
21
+ render_type: z.enum(MESSAGE_RENDER_TYPES),
22
+ body: z.record(z.string(), z.unknown()),
23
+ metadata: z.record(z.string(), z.unknown()).nullable(),
24
+ organization_id: z.string().nullable().optional(),
25
+ user_id: z.string(),
26
+ created_at: dbTimestampSchema,
27
+ updated_at: dbTimestampSchema,
28
+ });
29
+ export const messageListResponseSchema = z.array(messageResponseSchema);
30
+ export const messageDeletedResponseSchema = z.object({
31
+ message: z.string(),
32
+ });
33
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/schemas/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CAC5C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ import { dbTimestampSchema } from "./common.js";
3
+ export const messageIdParamsSchema = z.object({
4
+ messageId: z.uuid(),
5
+ });
6
+ export const submitGroupBodySchema = z.object({
7
+ wabaId: z.string().min(1, "Meta WABA ID required in body"),
8
+ });
9
+ /**
10
+ * Mirrors submission_jobs rows as returned today. Note: meta_config is echoed
11
+ * back as stored; accessToken is optional here because the current insert
12
+ * never writes it (the shared SubmissionJob type still claims it required —
13
+ * candidate for a type fix + curation pass).
14
+ */
15
+ export const submissionJobResponseSchema = z.object({
16
+ id: z.uuid(),
17
+ message_group_id: z.uuid(),
18
+ status: z.enum(["queued", "processing", "completed", "failed"]),
19
+ submitted_count: z.number(),
20
+ failed_count: z.number(),
21
+ errors: z
22
+ .array(z.object({ messageId: z.string().optional(), error: z.string() }))
23
+ .nullable(),
24
+ meta_config: z.object({
25
+ wabaId: z.string(),
26
+ accessToken: z.string().optional(),
27
+ apiVersion: z.string().optional(),
28
+ }),
29
+ created_at: dbTimestampSchema,
30
+ updated_at: dbTimestampSchema,
31
+ });
32
+ /** Sync single-message submission result; templateId is finalized via webhook. */
33
+ export const submitMessageResponseSchema = z.object({
34
+ success: z.boolean(),
35
+ templateId: z.string(),
36
+ });
37
+ export const submitGroupAcceptedResponseSchema = z.object({
38
+ jobId: z.uuid(),
39
+ status: z.literal("queued"),
40
+ message: z.string(),
41
+ });
42
+ //# sourceMappingURL=meta-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-integration.js","sourceRoot":"","sources":["../../src/schemas/meta-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;CAC3D,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACxE,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;IACF,UAAU,EAAE,iBAAiB;IAC7B,UAAU,EAAE,iBAAiB;CAC9B,CAA6C,CAAC;AAE/C,kFAAkF;AAClF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAA4C,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ import { brandDefaultEmailSettingsSchema, brandDefaultButtonSettingsSchema, brandSocialsSchema, } from "../types/index.js";
3
+ import { messageGroupWithMessagesResponseSchema } from "./message-group.js";
4
+ export const onboardingResponseSchema = z.object({
5
+ messageGroups: z.array(messageGroupWithMessagesResponseSchema),
6
+ summary: z.object({
7
+ totalGroups: z.number(),
8
+ totalMessages: z.number(),
9
+ }),
10
+ });
11
+ export const onboardingBodySchema = z.object({
12
+ organizationId: z
13
+ .string({ error: "Both organizationId and userId are required" })
14
+ .min(1, "Both organizationId and userId are required"),
15
+ userId: z
16
+ .string({ error: "Both organizationId and userId are required" })
17
+ .min(1, "Both organizationId and userId are required"),
18
+ tags: z.array(z.string()).optional(),
19
+ });
20
+ export const createDefaultBrandBodySchema = z.object({
21
+ organizationId: z
22
+ .string({ error: "organizationId, userId, name, and logoUrl are required" })
23
+ .min(1, "organizationId, userId, name, and logoUrl are required"),
24
+ userId: z
25
+ .string({ error: "organizationId, userId, name, and logoUrl are required" })
26
+ .min(1, "organizationId, userId, name, and logoUrl are required"),
27
+ name: z
28
+ .string({ error: "organizationId, userId, name, and logoUrl are required" })
29
+ .min(1, "organizationId, userId, name, and logoUrl are required"),
30
+ logoUrl: z
31
+ .string({ error: "organizationId, userId, name, and logoUrl are required" })
32
+ .min(1, "organizationId, userId, name, and logoUrl are required"),
33
+ colors: z.array(z.string()).optional(),
34
+ defaultEmailSettings: brandDefaultEmailSettingsSchema.optional(),
35
+ defaultButtonSettings: brandDefaultButtonSettingsSchema.optional(),
36
+ defaultSocials: brandSocialsSchema,
37
+ });
38
+ //# sourceMappingURL=onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/schemas/onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,sCAAsC,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,sCAAsC,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;KAC1B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,cAAc,EAAE,CAAC;SACd,MAAM,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;SAChE,GAAG,CAAC,CAAC,EAAE,6CAA6C,CAAC;IACxD,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;SAChE,GAAG,CAAC,CAAC,EAAE,6CAA6C,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,cAAc,EAAE,CAAC;SACd,MAAM,CAAC,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;SAC3E,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;IACnE,MAAM,EAAE,CAAC;SACN,MAAM,CAAC,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;SAC3E,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;IACnE,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;SAC3E,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;IACnE,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;SAC3E,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,oBAAoB,EAAE,+BAA+B,CAAC,QAAQ,EAAE;IAChE,qBAAqB,EAAE,gCAAgC,CAAC,QAAQ,EAAE;IAClE,cAAc,EAAE,kBAAkB;CACnC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * GET /organization/data passes through OrganizationData from Smartconnect —
4
+ * a flat string map by contract, deliberately loose.
5
+ */
6
+ export const organizationDataResponseSchema = z.record(z.string(), z.string());
7
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/schemas/organization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export const propertyResponseSchema = z.object({
3
+ id: z.string(),
4
+ name: z.string(),
5
+ hasAccess: z.boolean(),
6
+ });
7
+ export const propertyListResponseSchema = z.array(propertyResponseSchema);
8
+ //# sourceMappingURL=property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property.js","sourceRoot":"","sources":["../../src/schemas/property.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAA+B,CAAC;AAEjC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { z } from "zod";
2
+ export const trackingBodySchema = z.object({
3
+ eventName: z.string().min(1, "eventName is required"),
4
+ properties: z.record(z.string(), z.unknown()).optional(),
5
+ });
6
+ //# sourceMappingURL=tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../src/schemas/tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=apiTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiTemplates.js","sourceRoot":"","sources":["../../../src/types/api/apiTemplates.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export const SYSTEM_USER_ID = "SYSTEM";
2
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/types/template.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,cAAc,GAAG,QAAiB,CAAC"}