@voyantjs/sellability 0.6.8 → 0.7.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.
package/dist/routes.d.ts CHANGED
@@ -372,6 +372,8 @@ export declare const sellabilityRoutes: import("hono/hono-base").HonoBase<Env, {
372
372
  costAmountCents: number;
373
373
  title: string;
374
374
  validFrom: string | null;
375
+ contactEmail: string | null;
376
+ contactPhone: string | null;
375
377
  marketId: string | null;
376
378
  baseCurrency: string | null;
377
379
  fxRateSetId: string | null;
@@ -380,6 +382,14 @@ export declare const sellabilityRoutes: import("hono/hono-base").HonoBase<Env, {
380
382
  opportunityId: string | null;
381
383
  quoteId: string | null;
382
384
  sourceChannelId: string | null;
385
+ contactFirstName: string | null;
386
+ contactLastName: string | null;
387
+ contactPreferredLanguage: string | null;
388
+ contactCountry: string | null;
389
+ contactRegion: string | null;
390
+ contactCity: string | null;
391
+ contactAddressLine1: string | null;
392
+ contactPostalCode: string | null;
383
393
  subtotalAmountCents: number;
384
394
  taxAmountCents: number;
385
395
  feeAmountCents: number;
@@ -389,11 +399,11 @@ export declare const sellabilityRoutes: import("hono/hono-base").HonoBase<Env, {
389
399
  acceptedAt: string | null;
390
400
  convertedAt: string | null;
391
401
  };
392
- participants: {
402
+ travelers: {
393
403
  id: string;
394
404
  offerId: string;
395
405
  personId: string | null;
396
- participantType: "staff" | "other" | "traveler" | "booker" | "contact" | "occupant";
406
+ participantType: "staff" | "other" | "traveler" | "occupant";
397
407
  travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
398
408
  firstName: string;
399
409
  lastName: string;
@@ -406,6 +416,40 @@ export declare const sellabilityRoutes: import("hono/hono-base").HonoBase<Env, {
406
416
  createdAt: string;
407
417
  updatedAt: string;
408
418
  }[];
419
+ contactAssignments: {
420
+ metadata: import("hono/utils/types").JSONValue;
421
+ id: string;
422
+ createdAt: string;
423
+ updatedAt: string;
424
+ email: string | null;
425
+ role: "other" | "primary_contact";
426
+ notes: string | null;
427
+ firstName: string;
428
+ lastName: string;
429
+ phone: string | null;
430
+ isPrimary: boolean;
431
+ personId: string | null;
432
+ offerId: string;
433
+ preferredLanguage: string | null;
434
+ offerItemId: string | null;
435
+ }[];
436
+ staffAssignments: {
437
+ metadata: import("hono/utils/types").JSONValue;
438
+ id: string;
439
+ createdAt: string;
440
+ updatedAt: string;
441
+ email: string | null;
442
+ role: "other" | "service_assignee";
443
+ notes: string | null;
444
+ firstName: string;
445
+ lastName: string;
446
+ phone: string | null;
447
+ isPrimary: boolean;
448
+ personId: string | null;
449
+ offerId: string;
450
+ preferredLanguage: string | null;
451
+ offerItemId: string | null;
452
+ }[];
409
453
  items: {
410
454
  metadata: import("hono/utils/types").JSONValue;
411
455
  id: string;
@@ -434,12 +478,12 @@ export declare const sellabilityRoutes: import("hono/hono-base").HonoBase<Env, {
434
478
  unitCostAmountCents: number | null;
435
479
  totalCostAmountCents: number | null;
436
480
  }[];
437
- itemParticipants: {
481
+ itemTravelers: {
438
482
  id: string;
439
483
  createdAt: string;
440
484
  role: "other" | "traveler" | "occupant" | "primary_contact" | "beneficiary" | "service_assignee";
441
485
  isPrimary: boolean;
442
- participantId: string;
486
+ travelerId: string;
443
487
  offerItemId: string;
444
488
  }[];
445
489
  };
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AA2BjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAuM1B,CAAA;AAEJ,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AA2BjE,KAAK,GAAG,GAAG;IACT,SAAS,EAAE;QACT,EAAE,EAAE,kBAAkB,CAAA;QACtB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAuM1B,CAAA;AAEJ,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA"}
package/dist/service.d.ts CHANGED
@@ -160,6 +160,8 @@ export declare const sellabilityService: {
160
160
  costAmountCents: number;
161
161
  title: string;
162
162
  validFrom: string | null;
163
+ contactEmail: string | null;
164
+ contactPhone: string | null;
163
165
  marketId: string | null;
164
166
  baseCurrency: string | null;
165
167
  fxRateSetId: string | null;
@@ -168,6 +170,14 @@ export declare const sellabilityService: {
168
170
  opportunityId: string | null;
169
171
  quoteId: string | null;
170
172
  sourceChannelId: string | null;
173
+ contactFirstName: string | null;
174
+ contactLastName: string | null;
175
+ contactPreferredLanguage: string | null;
176
+ contactCountry: string | null;
177
+ contactRegion: string | null;
178
+ contactCity: string | null;
179
+ contactAddressLine1: string | null;
180
+ contactPostalCode: string | null;
171
181
  subtotalAmountCents: number;
172
182
  taxAmountCents: number;
173
183
  feeAmountCents: number;
@@ -177,11 +187,11 @@ export declare const sellabilityService: {
177
187
  acceptedAt: Date | null;
178
188
  convertedAt: Date | null;
179
189
  };
180
- participants: {
190
+ travelers: {
181
191
  id: string;
182
192
  offerId: string;
183
193
  personId: string | null;
184
- participantType: "staff" | "other" | "traveler" | "booker" | "contact" | "occupant";
194
+ participantType: "staff" | "other" | "traveler" | "occupant";
185
195
  travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
186
196
  firstName: string;
187
197
  lastName: string;
@@ -194,6 +204,40 @@ export declare const sellabilityService: {
194
204
  createdAt: Date;
195
205
  updatedAt: Date;
196
206
  }[];
207
+ contactAssignments: {
208
+ metadata: unknown;
209
+ id: string;
210
+ createdAt: Date;
211
+ updatedAt: Date;
212
+ email: string | null;
213
+ role: "other" | "primary_contact";
214
+ notes: string | null;
215
+ firstName: string;
216
+ lastName: string;
217
+ phone: string | null;
218
+ isPrimary: boolean;
219
+ personId: string | null;
220
+ offerId: string;
221
+ preferredLanguage: string | null;
222
+ offerItemId: string | null;
223
+ }[];
224
+ staffAssignments: {
225
+ metadata: unknown;
226
+ id: string;
227
+ createdAt: Date;
228
+ updatedAt: Date;
229
+ email: string | null;
230
+ role: "other" | "service_assignee";
231
+ notes: string | null;
232
+ firstName: string;
233
+ lastName: string;
234
+ phone: string | null;
235
+ isPrimary: boolean;
236
+ personId: string | null;
237
+ offerId: string;
238
+ preferredLanguage: string | null;
239
+ offerItemId: string | null;
240
+ }[];
197
241
  items: {
198
242
  metadata: unknown;
199
243
  id: string;
@@ -222,12 +266,12 @@ export declare const sellabilityService: {
222
266
  unitCostAmountCents: number | null;
223
267
  totalCostAmountCents: number | null;
224
268
  }[];
225
- itemParticipants: {
269
+ itemTravelers: {
226
270
  id: string;
227
271
  createdAt: Date;
228
272
  role: "other" | "traveler" | "occupant" | "primary_contact" | "beneficiary" | "service_assignee";
229
273
  isPrimary: boolean;
230
- participantId: string;
274
+ travelerId: string;
231
275
  offerItemId: string;
232
276
  }[];
233
277
  } | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -118,9 +118,6 @@ function defaultItemParticipantRole(participant) {
118
118
  return participant.itemParticipantRole;
119
119
  if (participant.participantType === "occupant")
120
120
  return "occupant";
121
- if (participant.participantType === "booker" || participant.participantType === "contact") {
122
- return "primary_contact";
123
- }
124
121
  if (participant.participantType === "staff")
125
122
  return "service_assignee";
126
123
  return "traveler";
@@ -317,6 +314,7 @@ export const sellabilityService = {
317
314
  .filter((index) => index >= 0);
318
315
  const fallbackLinkableItemIndex = linkableItemIndexes[0] ?? (itemDrafts.length > 0 ? 0 : null);
319
316
  const itemParticipants = [];
317
+ const contactAssignments = [];
320
318
  input.participants.forEach((participant, participantIndex) => {
321
319
  const explicitRefs = new Set(participant.requestedUnitRefs);
322
320
  let targetIndexes = itemDrafts
@@ -327,11 +325,6 @@ export const sellabilityService = {
327
325
  isAssignableParticipantType(participant.participantType)) {
328
326
  targetIndexes = linkableItemIndexes;
329
327
  }
330
- else if (participant.isPrimary &&
331
- (participant.participantType === "booker" || participant.participantType === "contact") &&
332
- fallbackLinkableItemIndex !== null) {
333
- targetIndexes = [fallbackLinkableItemIndex];
334
- }
335
328
  }
336
329
  const dedupedIndexes = [...new Set(targetIndexes)];
337
330
  dedupedIndexes.forEach((itemIndex, linkIndex) => {
@@ -343,6 +336,49 @@ export const sellabilityService = {
343
336
  });
344
337
  });
345
338
  });
339
+ input.contactAssignments.forEach((contactAssignment) => {
340
+ const explicitRefs = new Set(contactAssignment.requestedUnitRefs);
341
+ let targetIndexes = itemDrafts
342
+ .map((item, itemIndex) => item.requestRef && explicitRefs.has(item.requestRef) ? itemIndex : -1)
343
+ .filter((itemIndex) => itemIndex >= 0);
344
+ if (targetIndexes.length === 0) {
345
+ if (contactAssignment.assignToAllItems) {
346
+ targetIndexes = linkableItemIndexes;
347
+ }
348
+ else if (contactAssignment.isPrimary && fallbackLinkableItemIndex !== null) {
349
+ targetIndexes = [fallbackLinkableItemIndex];
350
+ }
351
+ }
352
+ const dedupedIndexes = [...new Set(targetIndexes)];
353
+ if (dedupedIndexes.length === 0) {
354
+ contactAssignments.push({
355
+ role: contactAssignment.role,
356
+ personId: contactAssignment.personId ?? null,
357
+ firstName: contactAssignment.firstName,
358
+ lastName: contactAssignment.lastName,
359
+ email: contactAssignment.email ?? null,
360
+ phone: contactAssignment.phone ?? null,
361
+ preferredLanguage: contactAssignment.preferredLanguage ?? null,
362
+ isPrimary: Boolean(contactAssignment.isPrimary),
363
+ notes: contactAssignment.notes ?? null,
364
+ });
365
+ return;
366
+ }
367
+ dedupedIndexes.forEach((itemIndex, linkIndex) => {
368
+ contactAssignments.push({
369
+ itemIndex,
370
+ role: contactAssignment.role,
371
+ personId: contactAssignment.personId ?? null,
372
+ firstName: contactAssignment.firstName,
373
+ lastName: contactAssignment.lastName,
374
+ email: contactAssignment.email ?? null,
375
+ phone: contactAssignment.phone ?? null,
376
+ preferredLanguage: contactAssignment.preferredLanguage ?? null,
377
+ isPrimary: Boolean(contactAssignment.isPrimary) && linkIndex === 0,
378
+ notes: contactAssignment.notes ?? null,
379
+ });
380
+ });
381
+ });
346
382
  const selectedCandidateIndex = resolved.data.findIndex((row) => row.slot.id === candidate.slot.id);
347
383
  const created = await transactionsService.createOfferBundle(db, {
348
384
  offer: {
@@ -353,6 +389,16 @@ export const sellabilityService = {
353
389
  organizationId: input.offer.organizationId ?? null,
354
390
  opportunityId: input.offer.opportunityId ?? null,
355
391
  quoteId: input.offer.quoteId ?? null,
392
+ contactFirstName: input.offer.contactFirstName ?? null,
393
+ contactLastName: input.offer.contactLastName ?? null,
394
+ contactEmail: input.offer.contactEmail ?? null,
395
+ contactPhone: input.offer.contactPhone ?? null,
396
+ contactPreferredLanguage: input.offer.contactPreferredLanguage ?? null,
397
+ contactCountry: input.offer.contactCountry ?? null,
398
+ contactRegion: input.offer.contactRegion ?? null,
399
+ contactCity: input.offer.contactCity ?? null,
400
+ contactAddressLine1: input.offer.contactAddressLine1 ?? null,
401
+ contactPostalCode: input.offer.contactPostalCode ?? null,
356
402
  marketId: candidate.market?.id ?? input.query.marketId ?? null,
357
403
  sourceChannelId: candidate.channel?.id ?? input.query.channelId ?? null,
358
404
  currency: candidate.pricing.currencyCode,
@@ -377,9 +423,10 @@ export const sellabilityService = {
377
423
  },
378
424
  },
379
425
  },
380
- participants: bundleParticipants,
426
+ travelers: bundleParticipants,
427
+ contactAssignments,
381
428
  items: itemDrafts.map(({ requestRef: _requestRef, participantLinkable: _participantLinkable, ...item }) => item),
382
- itemParticipants,
429
+ itemTravelers: itemParticipants,
383
430
  });
384
431
  if (!created) {
385
432
  return null;
@@ -79,8 +79,6 @@ export declare const sellabilityOfferParticipantSchema: z.ZodObject<{
79
79
  staff: "staff";
80
80
  other: "other";
81
81
  traveler: "traveler";
82
- booker: "booker";
83
- contact: "contact";
84
82
  occupant: "occupant";
85
83
  }>>;
86
84
  travelerCategory: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
@@ -105,11 +103,26 @@ export declare const sellabilityOfferParticipantSchema: z.ZodObject<{
105
103
  other: "other";
106
104
  traveler: "traveler";
107
105
  occupant: "occupant";
108
- primary_contact: "primary_contact";
109
106
  beneficiary: "beneficiary";
110
107
  service_assignee: "service_assignee";
111
108
  }>>;
112
109
  }, z.core.$strip>;
110
+ export declare const sellabilityOfferContactAssignmentSchema: z.ZodObject<{
111
+ personId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
112
+ role: z.ZodDefault<z.ZodEnum<{
113
+ other: "other";
114
+ primary_contact: "primary_contact";
115
+ }>>;
116
+ firstName: z.ZodString;
117
+ lastName: z.ZodString;
118
+ email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
120
+ preferredLanguage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
121
+ isPrimary: z.ZodDefault<z.ZodBoolean>;
122
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
123
+ requestedUnitRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
124
+ assignToAllItems: z.ZodDefault<z.ZodBoolean>;
125
+ }, z.core.$strip>;
113
126
  export declare const sellabilityConstructOfferSchema: z.ZodObject<{
114
127
  query: z.ZodObject<{
115
128
  productId: z.ZodOptional<z.ZodString>;
@@ -145,6 +158,16 @@ export declare const sellabilityConstructOfferSchema: z.ZodObject<{
145
158
  organizationId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
146
159
  opportunityId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
147
160
  quoteId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
161
+ contactFirstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
162
+ contactLastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
163
+ contactEmail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
164
+ contactPhone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
165
+ contactPreferredLanguage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
166
+ contactCountry: z.ZodOptional<z.ZodNullable<z.ZodString>>;
167
+ contactRegion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
168
+ contactCity: z.ZodOptional<z.ZodNullable<z.ZodString>>;
169
+ contactAddressLine1: z.ZodOptional<z.ZodNullable<z.ZodString>>;
170
+ contactPostalCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
148
171
  validFrom: z.ZodOptional<z.ZodNullable<z.ZodString>>;
149
172
  validUntil: z.ZodOptional<z.ZodNullable<z.ZodString>>;
150
173
  notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -156,8 +179,6 @@ export declare const sellabilityConstructOfferSchema: z.ZodObject<{
156
179
  staff: "staff";
157
180
  other: "other";
158
181
  traveler: "traveler";
159
- booker: "booker";
160
- contact: "contact";
161
182
  occupant: "occupant";
162
183
  }>>;
163
184
  travelerCategory: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
@@ -182,11 +203,26 @@ export declare const sellabilityConstructOfferSchema: z.ZodObject<{
182
203
  other: "other";
183
204
  traveler: "traveler";
184
205
  occupant: "occupant";
185
- primary_contact: "primary_contact";
186
206
  beneficiary: "beneficiary";
187
207
  service_assignee: "service_assignee";
188
208
  }>>;
189
209
  }, z.core.$strip>>>;
210
+ contactAssignments: z.ZodDefault<z.ZodArray<z.ZodObject<{
211
+ personId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
212
+ role: z.ZodDefault<z.ZodEnum<{
213
+ other: "other";
214
+ primary_contact: "primary_contact";
215
+ }>>;
216
+ firstName: z.ZodString;
217
+ lastName: z.ZodString;
218
+ email: z.ZodOptional<z.ZodNullable<z.ZodString>>;
219
+ phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
220
+ preferredLanguage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
221
+ isPrimary: z.ZodDefault<z.ZodBoolean>;
222
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
223
+ requestedUnitRefs: z.ZodDefault<z.ZodArray<z.ZodString>>;
224
+ assignToAllItems: z.ZodDefault<z.ZodBoolean>;
225
+ }, z.core.$strip>>>;
190
226
  }, z.core.$strip>;
191
227
  export declare const sellabilityPersistSnapshotSchema: z.ZodObject<{
192
228
  query: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;iBAYxC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;EAAuD,CAAA;AACnG,eAAO,MAAM,4BAA4B;;;;;;EAMvC,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;EAStC,CAAA;AACF,eAAO,MAAM,mCAAmC;;;;;EAK9C,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;EAK3C,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;;;;EAQ3C,CAAA;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoB5C,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqB1C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;iBAG3C,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;iBAU7C,CAAA;AAEF,eAAO,MAAM,sCAAsC;;;;;;;;iBAQjD,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBActC,CAAA;AACF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAA;AACxE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwC,CAAA;AAClF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU3C,CAAA;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;iBAQ5C,CAAA;AACF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;iBAAoC,CAAA;AACpF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;iBAA8C,CAAA;AAC9F,eAAO,MAAM,sCAAsC;;;;;;;;;;;;iBAOjD,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAQpC,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBAA4B,CAAA;AACpE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBAAsC,CAAA;AAC9E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;iBAMzC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;iBAQzC,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;iBAAiC,CAAA;AAC9E,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;iBAA2C,CAAA;AACxF,eAAO,MAAM,mCAAmC;;;;;;;;;;;iBAM9C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;iBAQ3C,CAAA;AACF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAAmC,CAAA;AAClF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAA6C,CAAA;AAC5F,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;iBAMhD,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACnF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAC5F,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;iBAYxC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;EAAuD,CAAA;AACnG,eAAO,MAAM,4BAA4B;;;;;;EAMvC,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;EAStC,CAAA;AACF,eAAO,MAAM,mCAAmC;;;;;EAK9C,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;EAK3C,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;;;;EAQ3C,CAAA;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkB5C,CAAA;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;;;;;iBAYlD,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgC1C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;iBAG3C,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;iBAU7C,CAAA;AAEF,eAAO,MAAM,sCAAsC;;;;;;;;iBAQjD,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBActC,CAAA;AACF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8B,CAAA;AACxE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwC,CAAA;AAClF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU3C,CAAA;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;iBAQ5C,CAAA;AACF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;iBAAoC,CAAA;AACpF,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;iBAA8C,CAAA;AAC9F,eAAO,MAAM,sCAAsC;;;;;;;;;;;;iBAOjD,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAQpC,CAAA;AACF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBAA4B,CAAA;AACpE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBAAsC,CAAA;AAC9E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;iBAMzC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;iBAQzC,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;iBAAiC,CAAA;AAC9E,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;iBAA2C,CAAA;AACxF,eAAO,MAAM,mCAAmC;;;;;;;;;;;iBAM9C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;iBAQ3C,CAAA;AACF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAAmC,CAAA;AAClF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;iBAA6C,CAAA;AAC5F,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;iBAMhD,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACnF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAC5F,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA"}
@@ -67,9 +67,7 @@ export const sellabilityExplanationTypeSchema = z.enum([
67
67
  ]);
68
68
  export const sellabilityOfferParticipantSchema = z.object({
69
69
  personId: z.string().nullable().optional(),
70
- participantType: z
71
- .enum(["traveler", "booker", "contact", "occupant", "staff", "other"])
72
- .default("traveler"),
70
+ participantType: z.enum(["traveler", "occupant", "staff", "other"]).default("traveler"),
73
71
  travelerCategory: z.enum(["adult", "child", "infant", "senior", "other"]).nullable().optional(),
74
72
  firstName: z.string().min(1).max(255),
75
73
  lastName: z.string().min(1).max(255),
@@ -83,9 +81,22 @@ export const sellabilityOfferParticipantSchema = z.object({
83
81
  requestedUnitRefs: z.array(z.string().min(1).max(100)).default([]),
84
82
  assignToAllItems: z.boolean().default(false),
85
83
  itemParticipantRole: z
86
- .enum(["traveler", "occupant", "primary_contact", "beneficiary", "service_assignee", "other"])
84
+ .enum(["traveler", "occupant", "beneficiary", "service_assignee", "other"])
87
85
  .optional(),
88
86
  });
87
+ export const sellabilityOfferContactAssignmentSchema = z.object({
88
+ personId: z.string().nullable().optional(),
89
+ role: z.enum(["primary_contact", "other"]).default("primary_contact"),
90
+ firstName: z.string().min(1).max(255),
91
+ lastName: z.string().min(1).max(255),
92
+ email: z.string().email().nullable().optional(),
93
+ phone: z.string().max(50).nullable().optional(),
94
+ preferredLanguage: z.string().max(35).nullable().optional(),
95
+ isPrimary: z.boolean().default(false),
96
+ notes: z.string().nullable().optional(),
97
+ requestedUnitRefs: z.array(z.string().min(1).max(100)).default([]),
98
+ assignToAllItems: z.boolean().default(false),
99
+ });
89
100
  export const sellabilityConstructOfferSchema = z.object({
90
101
  query: sellabilityResolveQuerySchema.omit({ limit: true }).extend({
91
102
  slotId: z.string(),
@@ -101,12 +112,23 @@ export const sellabilityConstructOfferSchema = z.object({
101
112
  organizationId: z.string().nullable().optional(),
102
113
  opportunityId: z.string().nullable().optional(),
103
114
  quoteId: z.string().nullable().optional(),
115
+ contactFirstName: z.string().max(255).nullable().optional(),
116
+ contactLastName: z.string().max(255).nullable().optional(),
117
+ contactEmail: z.string().email().nullable().optional(),
118
+ contactPhone: z.string().max(50).nullable().optional(),
119
+ contactPreferredLanguage: z.string().max(35).nullable().optional(),
120
+ contactCountry: z.string().max(100).nullable().optional(),
121
+ contactRegion: z.string().max(255).nullable().optional(),
122
+ contactCity: z.string().max(255).nullable().optional(),
123
+ contactAddressLine1: z.string().max(255).nullable().optional(),
124
+ contactPostalCode: z.string().max(50).nullable().optional(),
104
125
  validFrom: z.string().nullable().optional(),
105
126
  validUntil: z.string().nullable().optional(),
106
127
  notes: z.string().nullable().optional(),
107
128
  metadata: z.record(z.string(), z.unknown()).nullable().optional(),
108
129
  }),
109
130
  participants: z.array(sellabilityOfferParticipantSchema).default([]),
131
+ contactAssignments: z.array(sellabilityOfferContactAssignmentSchema).default([]),
110
132
  });
111
133
  export const sellabilityPersistSnapshotSchema = z.object({
112
134
  query: sellabilityResolveQuerySchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/sellability",
3
- "version": "0.6.8",
3
+ "version": "0.7.0",
4
4
  "license": "FSL-1.1-Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -25,15 +25,15 @@
25
25
  "drizzle-orm": "^0.45.2",
26
26
  "hono": "^4.12.10",
27
27
  "zod": "^4.3.6",
28
- "@voyantjs/availability": "0.6.8",
29
- "@voyantjs/core": "0.6.8",
30
- "@voyantjs/db": "0.6.8",
31
- "@voyantjs/distribution": "0.6.8",
32
- "@voyantjs/hono": "0.6.8",
33
- "@voyantjs/markets": "0.6.8",
34
- "@voyantjs/pricing": "0.6.8",
35
- "@voyantjs/products": "0.6.8",
36
- "@voyantjs/transactions": "0.6.8"
28
+ "@voyantjs/availability": "0.7.0",
29
+ "@voyantjs/core": "0.7.0",
30
+ "@voyantjs/db": "0.7.0",
31
+ "@voyantjs/distribution": "0.7.0",
32
+ "@voyantjs/hono": "0.7.0",
33
+ "@voyantjs/markets": "0.7.0",
34
+ "@voyantjs/pricing": "0.7.0",
35
+ "@voyantjs/products": "0.7.0",
36
+ "@voyantjs/transactions": "0.7.0"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "^6.0.2",