@kelpie/schemas 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/company.d.ts +8 -0
  2. package/dist/company.d.ts.map +1 -1
  3. package/dist/company.js +4 -0
  4. package/dist/company.js.map +1 -1
  5. package/dist/consentPurpose.d.ts +49 -0
  6. package/dist/consentPurpose.d.ts.map +1 -0
  7. package/dist/consentPurpose.js +40 -0
  8. package/dist/consentPurpose.js.map +1 -0
  9. package/dist/customField.d.ts +99 -0
  10. package/dist/customField.d.ts.map +1 -0
  11. package/dist/customField.js +133 -0
  12. package/dist/customField.js.map +1 -0
  13. package/dist/deal.d.ts +8 -0
  14. package/dist/deal.d.ts.map +1 -1
  15. package/dist/deal.js +4 -0
  16. package/dist/deal.js.map +1 -1
  17. package/dist/enquiry.d.ts +43 -0
  18. package/dist/enquiry.d.ts.map +1 -0
  19. package/dist/enquiry.js +47 -0
  20. package/dist/enquiry.js.map +1 -0
  21. package/dist/form.d.ts +117 -2
  22. package/dist/form.d.ts.map +1 -1
  23. package/dist/form.js +102 -1
  24. package/dist/form.js.map +1 -1
  25. package/dist/formSubmission.d.ts +29 -0
  26. package/dist/formSubmission.d.ts.map +1 -1
  27. package/dist/formSubmission.js +34 -0
  28. package/dist/formSubmission.js.map +1 -1
  29. package/dist/importExport.d.ts +28 -4
  30. package/dist/importExport.d.ts.map +1 -1
  31. package/dist/importExport.js +24 -1
  32. package/dist/importExport.js.map +1 -1
  33. package/dist/index.d.ts +15 -5
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +7 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/list.d.ts +10 -0
  38. package/dist/list.d.ts.map +1 -1
  39. package/dist/list.js +6 -0
  40. package/dist/list.js.map +1 -1
  41. package/dist/names.d.ts +43 -0
  42. package/dist/names.d.ts.map +1 -0
  43. package/dist/names.js +35 -0
  44. package/dist/names.js.map +1 -0
  45. package/dist/opportunity.d.ts +10 -0
  46. package/dist/opportunity.d.ts.map +1 -1
  47. package/dist/opportunity.js +7 -0
  48. package/dist/opportunity.js.map +1 -1
  49. package/dist/partnership.d.ts +8 -0
  50. package/dist/partnership.d.ts.map +1 -1
  51. package/dist/partnership.js +4 -0
  52. package/dist/partnership.js.map +1 -1
  53. package/dist/person.d.ts +42 -1
  54. package/dist/person.d.ts.map +1 -1
  55. package/dist/person.js +23 -0
  56. package/dist/person.js.map +1 -1
  57. package/dist/personConsent.d.ts +31 -0
  58. package/dist/personConsent.d.ts.map +1 -0
  59. package/dist/personConsent.js +27 -0
  60. package/dist/personConsent.js.map +1 -0
  61. package/dist/raise.d.ts +8 -0
  62. package/dist/raise.d.ts.map +1 -1
  63. package/dist/raise.js +4 -0
  64. package/dist/raise.js.map +1 -1
  65. package/dist/sampleData.d.ts +1 -0
  66. package/dist/sampleData.d.ts.map +1 -1
  67. package/dist/sampleData.js +2 -0
  68. package/dist/sampleData.js.map +1 -1
  69. package/dist/values.d.ts +86 -8
  70. package/dist/values.d.ts.map +1 -1
  71. package/dist/values.js +140 -3
  72. package/dist/values.js.map +1 -1
  73. package/package.json +1 -1
  74. package/src/company.ts +13 -0
  75. package/src/consentPurpose.ts +95 -0
  76. package/src/customField.ts +211 -0
  77. package/src/deal.ts +13 -0
  78. package/src/enquiry.ts +94 -0
  79. package/src/form.ts +230 -2
  80. package/src/formSubmission.ts +63 -0
  81. package/src/importExport.ts +44 -5
  82. package/src/index.ts +70 -2
  83. package/src/list.ts +16 -0
  84. package/src/names.ts +49 -0
  85. package/src/opportunity.ts +18 -0
  86. package/src/partnership.ts +13 -0
  87. package/src/person.ts +69 -1
  88. package/src/personConsent.ts +60 -0
  89. package/src/raise.ts +13 -0
  90. package/src/sampleData.ts +3 -0
  91. package/src/values.ts +169 -3
package/dist/company.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
2
3
  import type { AccountType, CompanyStage, IcpFit, SizeBand } from './values.ts';
3
4
  import type { RecordTimestamps } from './wire.ts';
4
5
  /** Wire and write shapes for `/v1/companies`. */
@@ -19,6 +20,8 @@ export interface Company extends RecordTimestamps {
19
20
  readonly tags: readonly string[];
20
21
  /** True when this Company represents the workspace itself ("us"). */
21
22
  readonly isOwn: boolean;
23
+ /** Workspace-defined fields, keyed by definition key. Always present (default `{}`). */
24
+ readonly customFields: CustomFieldValues;
22
25
  }
23
26
  export declare const companySchema: z.ZodType<Company, unknown>;
24
27
  export interface CompanyInput {
@@ -36,6 +39,11 @@ export interface CompanyInput {
36
39
  readonly summary?: string;
37
40
  readonly tags?: readonly string[];
38
41
  readonly isOwn?: boolean;
42
+ /**
43
+ * Partial merge patch: sent keys change, `null` clears a key, absent keys are
44
+ * left alone. Unknown keys are rejected at `422`.
45
+ */
46
+ readonly customFields?: Readonly<Record<string, CustomFieldValue | null>>;
39
47
  }
40
48
  export declare function companyBody(input: CompanyInput): Record<string, unknown>;
41
49
  //# sourceMappingURL=company.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAuCnD,CAAA;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBxE"}
1
+ {"version":3,"file":"company.d.ts","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAyCnD,CAAA;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBxE"}
package/dist/company.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
2
3
  import { ACCOUNT_TYPES, COMPANY_STAGES, ICP_FITS, SIZE_BANDS } from './values.js';
3
4
  import { definedFields, idSchema, recordTimestamps } from './wire.js';
4
5
  export const companySchema = z
@@ -18,6 +19,7 @@ export const companySchema = z
18
19
  summary: z.string(),
19
20
  tags: z.array(z.string()),
20
21
  is_own: z.boolean(),
22
+ custom_fields: customFieldValuesSchema,
21
23
  ...recordTimestamps,
22
24
  })
23
25
  .transform((wire) => ({
@@ -36,6 +38,7 @@ export const companySchema = z
36
38
  summary: wire.summary,
37
39
  tags: wire.tags,
38
40
  isOwn: wire.is_own,
41
+ customFields: wire.custom_fields,
39
42
  createdAt: wire.created_at,
40
43
  updatedAt: wire.updated_at,
41
44
  }));
@@ -55,6 +58,7 @@ export function companyBody(input) {
55
58
  summary: input.summary,
56
59
  tags: input.tags,
57
60
  is_own: input.isOwn,
61
+ custom_fields: input.customFields === undefined ? undefined : customFieldValuesBody(input.customFields),
58
62
  });
59
63
  }
60
64
  //# sourceMappingURL=company.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"company.js","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"company.js","sourceRoot":"","sources":["../src/company.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ import type { ConsentPurposeStatus } from './values.ts';
3
+ import type { RecordTimestamps } from './wire.ts';
4
+ /**
5
+ * Wire and write shapes for `/v1/consent_purposes`.
6
+ *
7
+ * A workspace defines its own purposes (`contact`, `marketing`, …). Every
8
+ * capture site — forms, lists, imports, the manual override on a Person —
9
+ * names one. Modelled on `custom_field_definitions`: `slug` is immutable and
10
+ * behaves as the key, `default_status` is the workspace default a person
11
+ * without an explicit `person_consents` row inherits, and `sort_order` runs
12
+ * 0..N-1 with the service renumbering on reorder and delete.
13
+ */
14
+ /** A workspace's definition of one consent purpose. */
15
+ export interface ConsentPurpose extends RecordTimestamps {
16
+ readonly id: string;
17
+ /** Immutable after create. Lowercase snake_case, matches `/^[a-z][a-z0-9_]*$/`. */
18
+ readonly slug: string;
19
+ readonly label: string;
20
+ readonly description: string;
21
+ /** The workspace default a person without an explicit row inherits. */
22
+ readonly defaultStatus: ConsentPurposeStatus;
23
+ readonly sortOrder: number;
24
+ }
25
+ export declare const consentPurposeSchema: z.ZodType<ConsentPurpose, unknown>;
26
+ /**
27
+ * The body a create takes. `slug` is only written here; a `PATCH` cannot
28
+ * change it — a rename would strand every stored `person_consents` row and
29
+ * every form/list/import that names the purpose.
30
+ */
31
+ export interface CreateConsentPurposeInput {
32
+ readonly slug: string;
33
+ readonly label: string;
34
+ readonly description?: string;
35
+ readonly defaultStatus?: ConsentPurposeStatus;
36
+ }
37
+ export declare function createConsentPurposeBody(input: CreateConsentPurposeInput): Record<string, unknown>;
38
+ /**
39
+ * What a `PATCH` may change. `slug` is fixed for the purpose's lifetime and
40
+ * the strict body naturally makes it a `422`.
41
+ */
42
+ export interface ConsentPurposeInput {
43
+ readonly label?: string;
44
+ readonly description?: string;
45
+ readonly defaultStatus?: ConsentPurposeStatus;
46
+ readonly sortOrder?: number;
47
+ }
48
+ export declare function consentPurposeBody(input: ConsentPurposeInput): Record<string, unknown>;
49
+ //# sourceMappingURL=consentPurpose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consentPurpose.d.ts","sourceRoot":"","sources":["../src/consentPurpose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD;;;;;;;;;GASG;AAEH,uDAAuD;AACvD,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAA;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAqBjE,CAAA;AAEH;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;CAC9C;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,yBAAyB,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOtF"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ import { CONSENT_PURPOSE_STATUSES } from './values.js';
3
+ import { definedFields, idSchema, recordTimestamps } from './wire.js';
4
+ export const consentPurposeSchema = z
5
+ .object({
6
+ id: idSchema,
7
+ slug: z.string(),
8
+ label: z.string(),
9
+ description: z.string(),
10
+ default_status: z.enum(CONSENT_PURPOSE_STATUSES),
11
+ sort_order: z.number().int(),
12
+ ...recordTimestamps,
13
+ })
14
+ .transform((wire) => ({
15
+ id: wire.id,
16
+ slug: wire.slug,
17
+ label: wire.label,
18
+ description: wire.description,
19
+ defaultStatus: wire.default_status,
20
+ sortOrder: wire.sort_order,
21
+ createdAt: wire.created_at,
22
+ updatedAt: wire.updated_at,
23
+ }));
24
+ export function createConsentPurposeBody(input) {
25
+ return definedFields({
26
+ slug: input.slug,
27
+ label: input.label,
28
+ description: input.description,
29
+ default_status: input.defaultStatus,
30
+ });
31
+ }
32
+ export function consentPurposeBody(input) {
33
+ return definedFields({
34
+ label: input.label,
35
+ description: input.description,
36
+ default_status: input.defaultStatus,
37
+ sort_order: input.sortOrder,
38
+ });
39
+ }
40
+ //# sourceMappingURL=consentPurpose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consentPurpose.js","sourceRoot":"","sources":["../src/consentPurpose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AA0BrE,MAAM,CAAC,MAAM,oBAAoB,GAAuC,CAAC;KACtE,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAkB,EAAE,CAAC,CAAC;IACzB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,aAAa,EAAE,IAAI,CAAC,cAAc;IAClC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAcH,MAAM,UAAU,wBAAwB,CACtC,KAAgC;IAEhC,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,aAAa;KACpC,CAAC,CAAA;AACJ,CAAC;AAaD,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,OAAO,aAAa,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,UAAU,EAAE,KAAK,CAAC,SAAS;KAC5B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ import type { CustomFieldObjectType, CustomFieldType } from './values.ts';
3
+ import type { RecordTimestamps } from './wire.ts';
4
+ /**
5
+ * Wire and write shapes for `/v1/custom_fields`.
6
+ *
7
+ * The definition is workspace-scoped. Every record on the six object types
8
+ * carries a `custom_fields` object keyed by definition key; the values are the
9
+ * shape this file describes. The Zod layer here only checks structure — that a
10
+ * value looks like text / number / boolean / a string list / a money object —
11
+ * because the workspace's definitions are read from the database, not the
12
+ * request. Definition-aware checks (this key exists on this object type, this
13
+ * select value is one of the options) run in the service.
14
+ *
15
+ * Merge semantics on the record's `custom_fields` (documented in `api.md`): a
16
+ * `PATCH` sends the keys that change; `null` clears a key; an unknown key is
17
+ * `422` naming `custom_fields.<key>`.
18
+ */
19
+ /**
20
+ * The value union a custom field can carry on the wire. Structural only — the
21
+ * validator in `@kelpie/server` reads the workspace's definitions and refuses a
22
+ * `number` written into a `text` field, an unknown `select` option, and so on.
23
+ *
24
+ * `text`, `long_text`, `url`, `date` and `select` all serialise as strings; a
25
+ * `multi_select` is a `string[]`; a `currency` is a small object; the rest are
26
+ * primitives. Nothing here reads a definition, so the caps below are the
27
+ * absolute ceilings meant to reject a runaway payload before it reaches the
28
+ * database, not the per-type limits (also enforced by the validator).
29
+ */
30
+ export declare const customFieldWireValue: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString>, z.ZodObject<{
31
+ amount_cents: z.ZodNumber;
32
+ currency: z.ZodString;
33
+ }, z.core.$strict>]>;
34
+ export type CustomFieldWireValue = z.infer<typeof customFieldWireValue>;
35
+ /** A value already parsed and rebuilt as the record the UI holds. */
36
+ export type CustomFieldValue = string | number | boolean | readonly string[] | {
37
+ readonly amountCents: number;
38
+ readonly currency: string;
39
+ };
40
+ /** The `custom_fields` object every record on the six object types carries. */
41
+ export type CustomFieldValues = Readonly<Record<string, CustomFieldValue>>;
42
+ /**
43
+ * Parses the wire object into the record shape the UI works with. Currency is
44
+ * the one type that changes shape (`amount_cents` → `amountCents`); everything
45
+ * else is the same value.
46
+ */
47
+ export declare const customFieldValuesSchema: z.ZodType<CustomFieldValues, unknown>;
48
+ /**
49
+ * The shape a record's `PATCH` accepts for `custom_fields`. A key's value is
50
+ * the wire value, or `null` to clear that key; unknown keys fail at the service
51
+ * layer with `422 custom_fields.<key>`.
52
+ */
53
+ export declare const customFieldsPatchShape: z.ZodType<Readonly<Record<string, CustomFieldWireValue | null>>, unknown>;
54
+ /**
55
+ * Turns the UI's record shape back into the wire object for a `PATCH` body.
56
+ * The inverse of `customFieldValuesSchema`.
57
+ */
58
+ export declare function customFieldValuesBody(values: Readonly<Record<string, CustomFieldValue | null>>): Record<string, CustomFieldWireValue | null>;
59
+ /** A workspace's definition of one custom field, for one object type. */
60
+ export interface CustomFieldDefinition extends RecordTimestamps {
61
+ readonly id: string;
62
+ readonly objectType: CustomFieldObjectType;
63
+ /** Immutable after create. Lowercase snake_case, matches `/^[a-z][a-z0-9_]*$/`. */
64
+ readonly key: string;
65
+ readonly label: string;
66
+ /** Immutable after create. */
67
+ readonly type: CustomFieldType;
68
+ /** Non-empty only for `select` and `multi_select`. */
69
+ readonly options: readonly string[];
70
+ readonly description: string;
71
+ readonly sortOrder: number;
72
+ }
73
+ export declare const customFieldDefinitionSchema: z.ZodType<CustomFieldDefinition, unknown>;
74
+ /**
75
+ * The body a create takes. `object_type`, `key`, and `type` are only written
76
+ * here; a `PATCH` cannot change any of them (see `CustomFieldDefinitionInput`).
77
+ */
78
+ export interface CreateCustomFieldDefinitionInput {
79
+ readonly objectType: CustomFieldObjectType;
80
+ readonly key: string;
81
+ readonly label: string;
82
+ readonly type: CustomFieldType;
83
+ readonly options?: readonly string[];
84
+ readonly description?: string;
85
+ }
86
+ export declare function createCustomFieldDefinitionBody(input: CreateCustomFieldDefinitionInput): Record<string, unknown>;
87
+ /**
88
+ * What a `PATCH` may change. `key` and `type` are fixed for the definition's
89
+ * lifetime — a change would strand records with the wrong value shape — and
90
+ * the strict body naturally makes either a `422`.
91
+ */
92
+ export interface CustomFieldDefinitionInput {
93
+ readonly label?: string;
94
+ readonly options?: readonly string[];
95
+ readonly description?: string;
96
+ readonly sortOrder?: number;
97
+ }
98
+ export declare function customFieldDefinitionBody(input: CustomFieldDefinitionInput): Record<string, unknown>;
99
+ //# sourceMappingURL=customField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customField.d.ts","sourceRoot":"","sources":["../src/customField.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import { z } from 'zod';
2
+ import { CUSTOM_FIELD_OBJECT_TYPES, CUSTOM_FIELD_TYPES, } from './values.js';
3
+ import { definedFields, idSchema, recordTimestamps } from './wire.js';
4
+ /**
5
+ * Wire and write shapes for `/v1/custom_fields`.
6
+ *
7
+ * The definition is workspace-scoped. Every record on the six object types
8
+ * carries a `custom_fields` object keyed by definition key; the values are the
9
+ * shape this file describes. The Zod layer here only checks structure — that a
10
+ * value looks like text / number / boolean / a string list / a money object —
11
+ * because the workspace's definitions are read from the database, not the
12
+ * request. Definition-aware checks (this key exists on this object type, this
13
+ * select value is one of the options) run in the service.
14
+ *
15
+ * Merge semantics on the record's `custom_fields` (documented in `api.md`): a
16
+ * `PATCH` sends the keys that change; `null` clears a key; an unknown key is
17
+ * `422` naming `custom_fields.<key>`.
18
+ */
19
+ /**
20
+ * The value union a custom field can carry on the wire. Structural only — the
21
+ * validator in `@kelpie/server` reads the workspace's definitions and refuses a
22
+ * `number` written into a `text` field, an unknown `select` option, and so on.
23
+ *
24
+ * `text`, `long_text`, `url`, `date` and `select` all serialise as strings; a
25
+ * `multi_select` is a `string[]`; a `currency` is a small object; the rest are
26
+ * primitives. Nothing here reads a definition, so the caps below are the
27
+ * absolute ceilings meant to reject a runaway payload before it reaches the
28
+ * database, not the per-type limits (also enforced by the validator).
29
+ */
30
+ export const customFieldWireValue = z.union([
31
+ z.string().max(65536),
32
+ z.number(),
33
+ z.boolean(),
34
+ z.array(z.string().min(1).max(120)).max(100),
35
+ z.strictObject({
36
+ amount_cents: z.number().int(),
37
+ currency: z.string().regex(/^[A-Z]{3}$/u),
38
+ }),
39
+ ]);
40
+ /**
41
+ * Parses the wire object into the record shape the UI works with. Currency is
42
+ * the one type that changes shape (`amount_cents` → `amountCents`); everything
43
+ * else is the same value.
44
+ */
45
+ export const customFieldValuesSchema = z
46
+ .record(z.string(), customFieldWireValue)
47
+ .transform((wire) => {
48
+ const out = {};
49
+ for (const [key, value] of Object.entries(wire)) {
50
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
51
+ out[key] = { amountCents: value.amount_cents, currency: value.currency };
52
+ }
53
+ else {
54
+ out[key] = value;
55
+ }
56
+ }
57
+ return out;
58
+ });
59
+ /**
60
+ * The shape a record's `PATCH` accepts for `custom_fields`. A key's value is
61
+ * the wire value, or `null` to clear that key; unknown keys fail at the service
62
+ * layer with `422 custom_fields.<key>`.
63
+ */
64
+ export const customFieldsPatchShape = z
65
+ .record(z.string().min(1).max(64), customFieldWireValue.nullable())
66
+ .describe('Workspace-defined fields keyed by definition key. List the workspace\'s definitions with the custom_fields_list tool before writing. A key set to null clears the value; an unknown key is refused.');
67
+ /**
68
+ * Turns the UI's record shape back into the wire object for a `PATCH` body.
69
+ * The inverse of `customFieldValuesSchema`.
70
+ */
71
+ export function customFieldValuesBody(values) {
72
+ const out = {};
73
+ for (const [key, value] of Object.entries(values)) {
74
+ out[key] = wireCustomFieldValue(value);
75
+ }
76
+ return out;
77
+ }
78
+ function wireCustomFieldValue(value) {
79
+ if (value === null)
80
+ return null;
81
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
82
+ return value;
83
+ }
84
+ // Array.isArray does not narrow a `readonly` array literal, so branch on the
85
+ // currency object's shape and treat everything else as the string list.
86
+ if ('amountCents' in value && 'currency' in value) {
87
+ return { amount_cents: value.amountCents, currency: value.currency };
88
+ }
89
+ return [...value];
90
+ }
91
+ export const customFieldDefinitionSchema = z
92
+ .object({
93
+ id: idSchema,
94
+ object_type: z.enum(CUSTOM_FIELD_OBJECT_TYPES),
95
+ key: z.string(),
96
+ label: z.string(),
97
+ type: z.enum(CUSTOM_FIELD_TYPES),
98
+ options: z.array(z.string()),
99
+ description: z.string(),
100
+ sort_order: z.number().int(),
101
+ ...recordTimestamps,
102
+ })
103
+ .transform((wire) => ({
104
+ id: wire.id,
105
+ objectType: wire.object_type,
106
+ key: wire.key,
107
+ label: wire.label,
108
+ type: wire.type,
109
+ options: wire.options,
110
+ description: wire.description,
111
+ sortOrder: wire.sort_order,
112
+ createdAt: wire.created_at,
113
+ updatedAt: wire.updated_at,
114
+ }));
115
+ export function createCustomFieldDefinitionBody(input) {
116
+ return definedFields({
117
+ object_type: input.objectType,
118
+ key: input.key,
119
+ label: input.label,
120
+ type: input.type,
121
+ options: input.options,
122
+ description: input.description,
123
+ });
124
+ }
125
+ export function customFieldDefinitionBody(input) {
126
+ return definedFields({
127
+ label: input.label,
128
+ options: input.options,
129
+ description: input.description,
130
+ sort_order: input.sortOrder,
131
+ });
132
+ }
133
+ //# sourceMappingURL=customField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customField.js","sourceRoot":"","sources":["../src/customField.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAGrE;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC,MAAM,EAAE;IACV,CAAC,CAAC,OAAO,EAAE;IACX,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5C,CAAC,CAAC,YAAY,CAAC;QACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;KAC1C,CAAC;CACH,CAAC,CAAA;AAeF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA0C,CAAC;KAC5E,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC;KACxC,SAAS,CAAC,CAAC,IAAI,EAAqB,EAAE;IACrC,MAAM,GAAG,GAAqC,EAAE,CAAA;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC1E,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA;AAEJ;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAG/B,CAAC;KACF,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC;KAClE,QAAQ,CACP,qMAAqM,CACtM,CAAA;AAEH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAyD;IAEzD,MAAM,GAAG,GAAgD,EAAE,CAAA;IAC3D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B;IAC1D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACzF,OAAO,KAAK,CAAA;IACd,CAAC;IACD,6EAA6E;IAC7E,wEAAwE;IACxE,IAAI,aAAa,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QAClD,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAA;IACtE,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AACnB,CAAC;AAiBD,MAAM,CAAC,MAAM,2BAA2B,GAA8C,CAAC;KACpF,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;IAC9C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAyB,EAAE,CAAC,CAAC;IAChC,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,UAAU,EAAE,IAAI,CAAC,WAAW;IAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAeH,MAAM,UAAU,+BAA+B,CAC7C,KAAuC;IAEvC,OAAO,aAAa,CAAC;QACnB,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAA;AACJ,CAAC;AAcD,MAAM,UAAU,yBAAyB,CACvC,KAAiC;IAEjC,OAAO,aAAa,CAAC;QACnB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,SAAS;KAC5B,CAAC,CAAA;AACJ,CAAC"}
package/dist/deal.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
2
3
  import type { RecordTimestamps } from './wire.ts';
3
4
  /** Wire and write shapes for `/v1/deals`. */
4
5
  export interface Deal extends RecordTimestamps {
@@ -18,6 +19,8 @@ export interface Deal extends RecordTimestamps {
18
19
  readonly summary: string;
19
20
  readonly tags: readonly string[];
20
21
  readonly externalId: string | null;
22
+ /** Workspace-defined fields, keyed by definition key. Always present (default `{}`). */
23
+ readonly customFields: CustomFieldValues;
21
24
  }
22
25
  export declare const dealSchema: z.ZodType<Deal, unknown>;
23
26
  export interface DealInput {
@@ -35,6 +38,11 @@ export interface DealInput {
35
38
  readonly summary?: string;
36
39
  readonly tags?: readonly string[];
37
40
  readonly externalId?: string | null;
41
+ /**
42
+ * Partial merge patch: sent keys change, `null` clears a key, absent keys are
43
+ * left alone. Unknown keys are rejected at `422`.
44
+ */
45
+ readonly customFields?: Readonly<Record<string, CustomFieldValue | null>>;
38
46
  }
39
47
  export declare function dealBody(input: DealInput): Record<string, unknown>;
40
48
  //# sourceMappingURL=deal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,6CAA6C;AAE7C,MAAM,WAAW,IAAK,SAAQ,gBAAgB;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAuC7C,CAAA;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiBlE"}
1
+ {"version":3,"file":"deal.d.ts","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,6CAA6C;AAE7C,MAAM,WAAW,IAAK,SAAQ,gBAAgB;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAyC7C,CAAA;AAEH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBlE"}
package/dist/deal.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
2
3
  import { definedFields, idSchema, recordTimestamps } from './wire.js';
3
4
  export const dealSchema = z
4
5
  .object({
@@ -17,6 +18,7 @@ export const dealSchema = z
17
18
  summary: z.string(),
18
19
  tags: z.array(z.string()),
19
20
  external_id: z.string().nullable(),
21
+ custom_fields: customFieldValuesSchema,
20
22
  ...recordTimestamps,
21
23
  })
22
24
  .transform((wire) => ({
@@ -35,6 +37,7 @@ export const dealSchema = z
35
37
  summary: wire.summary,
36
38
  tags: wire.tags,
37
39
  externalId: wire.external_id,
40
+ customFields: wire.custom_fields,
38
41
  createdAt: wire.created_at,
39
42
  updatedAt: wire.updated_at,
40
43
  }));
@@ -54,6 +57,7 @@ export function dealBody(input) {
54
57
  summary: input.summary,
55
58
  tags: input.tags,
56
59
  external_id: input.externalId,
60
+ custom_fields: input.customFields === undefined ? undefined : customFieldValuesBody(input.customFields),
57
61
  });
58
62
  }
59
63
  //# sourceMappingURL=deal.js.map
package/dist/deal.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"deal.js","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAwBrE,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC;KAClD,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC7B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAQ,EAAE,CAAC,CAAC;IACf,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,UAAU,EAAE,IAAI,CAAC,WAAW;IAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,aAAa,EAAE,IAAI,CAAC,cAAc;IAClC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,MAAM,EAAE,IAAI,CAAC,OAAO;IACpB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,UAAU,EAAE,IAAI,CAAC,WAAW;IAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAmBH,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACvC,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,MAAM;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,UAAU;KAC9B,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"deal.js","sourceRoot":"","sources":["../src/deal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AA0BrE,MAAM,CAAC,MAAM,UAAU,GAA6B,CAAC;KAClD,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC7B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,uBAAuB;IACtC,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAQ,EAAE,CAAC,CAAC;IACf,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,UAAU,EAAE,IAAI,CAAC,WAAW;IAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,aAAa,EAAE,IAAI,CAAC,cAAc;IAClC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,MAAM,EAAE,IAAI,CAAC,OAAO;IACpB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,UAAU,EAAE,IAAI,CAAC,WAAW;IAC5B,YAAY,EAAE,IAAI,CAAC,aAAa;IAChC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAwBH,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACvC,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,MAAM;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,aAAa,EACX,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;KAC3F,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ import type { CustomFieldValue, CustomFieldValues } from './customField.ts';
3
+ import type { RecordTimestamps } from './wire.ts';
4
+ /** Wire and write shapes for `/v1/enquiries`. */
5
+ export interface Enquiry extends RecordTimestamps {
6
+ readonly id: string;
7
+ readonly name: string;
8
+ /** Free text ("Website", "Email", "Referral", …), like Opportunity's `kind`. */
9
+ readonly source: string;
10
+ readonly stageId: string;
11
+ /** Nullable: an early enquiry may arrive before a company is on file. */
12
+ readonly companyId: string | null;
13
+ readonly ownerId: string | null;
14
+ /** Non-null once the enquiry has been converted to a Deal; nulled if that deal is deleted. */
15
+ readonly convertedDealId: string | null;
16
+ readonly personIds: readonly string[];
17
+ readonly summary: string;
18
+ readonly tags: readonly string[];
19
+ /** Workspace-defined fields, keyed by definition key. Always present (default `{}`). */
20
+ readonly customFields: CustomFieldValues;
21
+ }
22
+ export declare const enquirySchema: z.ZodType<Enquiry, unknown>;
23
+ /**
24
+ * `convertedDealId` is deliberately absent from the input: it is set only by
25
+ * `POST /v1/enquiries/:id/convert`, and a `PATCH` that carried it is `422`.
26
+ */
27
+ export interface EnquiryInput {
28
+ readonly name?: string;
29
+ readonly source?: string;
30
+ readonly stageId?: string;
31
+ readonly companyId?: string | null;
32
+ readonly ownerId?: string | null;
33
+ readonly personIds?: readonly string[];
34
+ readonly summary?: string;
35
+ readonly tags?: readonly string[];
36
+ /**
37
+ * Partial merge patch: sent keys change, `null` clears a key, absent keys are
38
+ * left alone. Unknown keys are rejected at `422`.
39
+ */
40
+ readonly customFields?: Readonly<Record<string, CustomFieldValue | null>>;
41
+ }
42
+ export declare function enquiryBody(input: EnquiryInput): Record<string, unknown>;
43
+ //# sourceMappingURL=enquiry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enquiry.d.ts","sourceRoot":"","sources":["../src/enquiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEjD,iDAAiD;AAEjD,MAAM,WAAW,OAAQ,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,wFAAwF;IACxF,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;CACzC;AAED,eAAO,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CA+BnD,CAAA;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAaxE"}
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ import { customFieldValuesBody, customFieldValuesSchema } from './customField.js';
3
+ import { definedFields, idSchema, recordTimestamps } from './wire.js';
4
+ export const enquirySchema = z
5
+ .object({
6
+ id: idSchema,
7
+ name: z.string(),
8
+ source: z.string(),
9
+ stage_id: idSchema,
10
+ company_id: idSchema.nullable(),
11
+ owner_id: idSchema.nullable(),
12
+ converted_deal_id: idSchema.nullable(),
13
+ person_ids: z.array(idSchema),
14
+ summary: z.string(),
15
+ tags: z.array(z.string()),
16
+ custom_fields: customFieldValuesSchema,
17
+ ...recordTimestamps,
18
+ })
19
+ .transform((wire) => ({
20
+ id: wire.id,
21
+ name: wire.name,
22
+ source: wire.source,
23
+ stageId: wire.stage_id,
24
+ companyId: wire.company_id,
25
+ ownerId: wire.owner_id,
26
+ convertedDealId: wire.converted_deal_id,
27
+ personIds: wire.person_ids,
28
+ summary: wire.summary,
29
+ tags: wire.tags,
30
+ customFields: wire.custom_fields,
31
+ createdAt: wire.created_at,
32
+ updatedAt: wire.updated_at,
33
+ }));
34
+ export function enquiryBody(input) {
35
+ return definedFields({
36
+ name: input.name,
37
+ source: input.source,
38
+ stage_id: input.stageId,
39
+ company_id: input.companyId,
40
+ owner_id: input.ownerId,
41
+ person_ids: input.personIds,
42
+ summary: input.summary,
43
+ tags: input.tags,
44
+ custom_fields: input.customFields === undefined ? undefined : customFieldValuesBody(input.customFields),
45
+ });
46
+ }
47
+ //# sourceMappingURL=enquiry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enquiry.js","sourceRoot":"","sources":["../src/enquiry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAuBrE,MAAM,CAAC,MAAM,aAAa,GAAgC,CAAC;KACxD,MAAM,CAAC;IACN,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;IAC7B,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,uBAAuB;IACtC,GAAG,gBAAgB;CACpB,CAAC;KACD,SAAS,CACR,CAAC,IAAI,EAAW,EAAE,CAAC,CAAC;IAClB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;IACtB,eAAe,EAAE,IAAI,CAAC,iBAAiB;IACvC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,YAAY,EAAE,IAAI,CAAC,aAAa;IAChC,SAAS,EAAE,IAAI,CAAC,UAAU;IAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;CAC3B,CAAC,CACH,CAAA;AAsBH,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EACX,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;KAC3F,CAAC,CAAA;AACJ,CAAC"}