@fiado/type-kit 3.603.0 → 3.605.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 (101) hide show
  1. package/_test_/unit/retailIntegration/retailMovementsContracts.test.ts +13 -0
  2. package/_test_/unit/retailIntegration/retailSaleContracts.test.ts +11 -2
  3. package/bin/index.d.ts +1 -0
  4. package/bin/index.js +4 -1
  5. package/bin/meetings/constants/MeetingLimits.d.ts +11 -0
  6. package/bin/meetings/constants/MeetingLimits.js +14 -0
  7. package/bin/meetings/dtos/MeetingAttendanceResponse.d.ts +61 -0
  8. package/bin/meetings/dtos/MeetingAttendanceResponse.js +21 -0
  9. package/bin/meetings/dtos/MeetingFormResponse.d.ts +28 -0
  10. package/bin/meetings/dtos/MeetingFormResponse.js +13 -0
  11. package/bin/meetings/dtos/MeetingLeadResponse.d.ts +43 -0
  12. package/bin/meetings/dtos/MeetingLeadResponse.js +17 -0
  13. package/bin/meetings/dtos/MeetingPollRef.d.ts +5 -0
  14. package/bin/meetings/dtos/MeetingPollRef.js +8 -0
  15. package/bin/meetings/dtos/MeetingQuestionRef.d.ts +5 -0
  16. package/bin/meetings/dtos/MeetingQuestionRef.js +7 -0
  17. package/bin/meetings/dtos/MeetingQuestionResponse.d.ts +48 -0
  18. package/bin/meetings/dtos/MeetingQuestionResponse.js +20 -0
  19. package/bin/meetings/dtos/MeetingQueueEvents.d.ts +85 -0
  20. package/bin/meetings/dtos/MeetingQueueEvents.js +11 -0
  21. package/bin/meetings/dtos/MeetingResponse.d.ts +131 -0
  22. package/bin/meetings/dtos/MeetingResponse.js +20 -0
  23. package/bin/meetings/dtos/MeetingRuleResponse.d.ts +43 -0
  24. package/bin/meetings/dtos/MeetingRuleResponse.js +17 -0
  25. package/bin/meetings/dtos/MeetingSessionRef.d.ts +8 -0
  26. package/bin/meetings/dtos/MeetingSessionRef.js +7 -0
  27. package/bin/meetings/enums/MeetingAttendanceRoleEnum.d.ts +5 -0
  28. package/bin/meetings/enums/MeetingAttendanceRoleEnum.js +9 -0
  29. package/bin/meetings/enums/MeetingAttendanceSourceEnum.d.ts +5 -0
  30. package/bin/meetings/enums/MeetingAttendanceSourceEnum.js +9 -0
  31. package/bin/meetings/enums/MeetingAttendanceStatusEnum.d.ts +7 -0
  32. package/bin/meetings/enums/MeetingAttendanceStatusEnum.js +11 -0
  33. package/bin/meetings/enums/MeetingEventTypeEnum.d.ts +16 -0
  34. package/bin/meetings/enums/MeetingEventTypeEnum.js +20 -0
  35. package/bin/meetings/enums/MeetingLeadSourceEnum.d.ts +8 -0
  36. package/bin/meetings/enums/MeetingLeadSourceEnum.js +12 -0
  37. package/bin/meetings/enums/MeetingLeadTagEnum.d.ts +10 -0
  38. package/bin/meetings/enums/MeetingLeadTagEnum.js +14 -0
  39. package/bin/meetings/enums/MeetingModalityEnum.d.ts +6 -0
  40. package/bin/meetings/enums/MeetingModalityEnum.js +10 -0
  41. package/bin/meetings/enums/MeetingPlatformEnum.d.ts +7 -0
  42. package/bin/meetings/enums/MeetingPlatformEnum.js +11 -0
  43. package/bin/meetings/enums/MeetingQuestionDataTypeEnum.d.ts +12 -0
  44. package/bin/meetings/enums/MeetingQuestionDataTypeEnum.js +16 -0
  45. package/bin/meetings/enums/MeetingQuestionSurfaceEnum.d.ts +5 -0
  46. package/bin/meetings/enums/MeetingQuestionSurfaceEnum.js +9 -0
  47. package/bin/meetings/enums/MeetingQuestionTypeEnum.d.ts +6 -0
  48. package/bin/meetings/enums/MeetingQuestionTypeEnum.js +10 -0
  49. package/bin/meetings/enums/MeetingRuleActionTypeEnum.d.ts +5 -0
  50. package/bin/meetings/enums/MeetingRuleActionTypeEnum.js +9 -0
  51. package/bin/meetings/enums/MeetingRuleStatusEnum.d.ts +5 -0
  52. package/bin/meetings/enums/MeetingRuleStatusEnum.js +9 -0
  53. package/bin/meetings/enums/MeetingSourceEnum.d.ts +5 -0
  54. package/bin/meetings/enums/MeetingSourceEnum.js +9 -0
  55. package/bin/meetings/enums/MeetingStatusEnum.d.ts +5 -0
  56. package/bin/meetings/enums/MeetingStatusEnum.js +9 -0
  57. package/bin/meetings/enums/MeetingTypeEnum.d.ts +5 -0
  58. package/bin/meetings/enums/MeetingTypeEnum.js +9 -0
  59. package/bin/meetings/index.d.ts +27 -0
  60. package/bin/meetings/index.js +46 -0
  61. package/bin/retailIntegration/constants/retailIntegrationLimits.d.ts +2 -1
  62. package/bin/retailIntegration/constants/retailIntegrationLimits.js +3 -2
  63. package/bin/retailIntegration/dtos/RetailOutboundResponses.d.ts +10 -1
  64. package/bin/usmarketgrowth-business/dtos/PromoterFromLead.d.ts +18 -0
  65. package/bin/usmarketgrowth-business/dtos/PromoterFromLead.js +7 -0
  66. package/bin/usmarketgrowth-business/index.d.ts +1 -0
  67. package/bin/usmarketgrowth-business/index.js +1 -0
  68. package/package.json +1 -1
  69. package/src/index.ts +4 -0
  70. package/src/meetings/constants/MeetingLimits.ts +11 -0
  71. package/src/meetings/dtos/MeetingAttendanceResponse.ts +66 -0
  72. package/src/meetings/dtos/MeetingFormResponse.ts +30 -0
  73. package/src/meetings/dtos/MeetingLeadResponse.ts +47 -0
  74. package/src/meetings/dtos/MeetingPollRef.ts +6 -0
  75. package/src/meetings/dtos/MeetingQuestionRef.ts +5 -0
  76. package/src/meetings/dtos/MeetingQuestionResponse.ts +53 -0
  77. package/src/meetings/dtos/MeetingQueueEvents.ts +102 -0
  78. package/src/meetings/dtos/MeetingResponse.ts +136 -0
  79. package/src/meetings/dtos/MeetingRuleResponse.ts +47 -0
  80. package/src/meetings/dtos/MeetingSessionRef.ts +8 -0
  81. package/src/meetings/enums/MeetingAttendanceRoleEnum.ts +5 -0
  82. package/src/meetings/enums/MeetingAttendanceSourceEnum.ts +5 -0
  83. package/src/meetings/enums/MeetingAttendanceStatusEnum.ts +7 -0
  84. package/src/meetings/enums/MeetingEventTypeEnum.ts +16 -0
  85. package/src/meetings/enums/MeetingLeadSourceEnum.ts +8 -0
  86. package/src/meetings/enums/MeetingLeadTagEnum.ts +10 -0
  87. package/src/meetings/enums/MeetingModalityEnum.ts +6 -0
  88. package/src/meetings/enums/MeetingPlatformEnum.ts +7 -0
  89. package/src/meetings/enums/MeetingQuestionDataTypeEnum.ts +12 -0
  90. package/src/meetings/enums/MeetingQuestionSurfaceEnum.ts +5 -0
  91. package/src/meetings/enums/MeetingQuestionTypeEnum.ts +6 -0
  92. package/src/meetings/enums/MeetingRuleActionTypeEnum.ts +5 -0
  93. package/src/meetings/enums/MeetingRuleStatusEnum.ts +5 -0
  94. package/src/meetings/enums/MeetingSourceEnum.ts +5 -0
  95. package/src/meetings/enums/MeetingStatusEnum.ts +5 -0
  96. package/src/meetings/enums/MeetingTypeEnum.ts +5 -0
  97. package/src/meetings/index.ts +32 -0
  98. package/src/retailIntegration/constants/retailIntegrationLimits.ts +4 -2
  99. package/src/retailIntegration/dtos/RetailOutboundResponses.ts +11 -1
  100. package/src/usmarketgrowth-business/dtos/PromoterFromLead.ts +20 -0
  101. package/src/usmarketgrowth-business/index.ts +1 -0
@@ -4,9 +4,11 @@ import { validateSync } from 'class-validator';
4
4
  import {
5
5
  GetRetailInventoryRequest,
6
6
  type GetRetailInventoryResponse,
7
+ type InvalidRetailInventoryMovement,
7
8
  ListRetailInventoryMovementsRequest,
8
9
  type ListRetailInventoryMovementsResponse,
9
10
  ReconciliationEntityEnum,
11
+ RetailEventRejectCodeEnum,
10
12
  ReconciliationPageMessage,
11
13
  ReconciliationTriggerEnum,
12
14
  } from '../../../src/retailIntegration';
@@ -61,6 +63,17 @@ describe('ListRetailInventoryMovementsRequest', () => {
61
63
  meta: { count: 1, nextToken: null },
62
64
  };
63
65
  expect(response.meta.nextToken).toBeNull();
66
+ expect(response.invalidItems).toBeUndefined();
67
+ });
68
+
69
+ it('la respuesta lista los movimientos inválidos con índice, eventId opcional y rutas', () => {
70
+ const invalid: InvalidRetailInventoryMovement[] = [
71
+ { index: 3, eventId: 'evt-4', code: RetailEventRejectCodeEnum.INVALID_PAYLOAD, invalidPaths: ['payload.storeId'] },
72
+ { index: 7, code: RetailEventRejectCodeEnum.INVALID_PAYLOAD, invalidPaths: ['eventId', 'occurredAt'] },
73
+ ];
74
+ const response: ListRetailInventoryMovementsResponse = { items: [], meta: { count: 0, nextToken: null }, invalidItems: invalid };
75
+ expect(response.invalidItems?.map((i) => i.index)).toEqual([3, 7]);
76
+ expect(response.invalidItems?.[1].eventId).toBeUndefined();
64
77
  });
65
78
  });
66
79
 
@@ -26,7 +26,7 @@ async function errorsOf(cls: new () => object, plain: object): Promise<string[]>
26
26
  const cashPayment = { method: 'CASH', amount: '400.00', cardLast4: null, authCode: null, speiTrackingKey: null, senderClabe: null } as const;
27
27
  const cardPayment = { method: 'CARD', amount: '200.00', cardLast4: '4242', authCode: 'A1B2C3', speiTrackingKey: null, senderClabe: null } as const;
28
28
  const wirePayment = {
29
- method: 'WIRE', amount: '200.00', cardLast4: null, authCode: null, speiTrackingKey: '123456789012345678', senderClabe: '012180001234567897',
29
+ method: 'WIRE', amount: '200.00', cardLast4: null, authCode: null, speiTrackingKey: 'MBAN01002610160000123ABCD', senderClabe: '012180001234567897',
30
30
  } as const;
31
31
 
32
32
  // Literal tipado: prueba en compilación que la clase sigue aceptando objetos planos.
@@ -145,6 +145,11 @@ describe('RetailSystemSale.payments', () => {
145
145
  expect(await errorsOf(RetailSystemSale, { ...sale, payments: [cashPayment, { ...wirePayment, senderClabe: null }] })).toEqual([]);
146
146
  });
147
147
 
148
+ it('acepta speiTrackingKey de 1 a 30 alfanuméricos', async () => {
149
+ expect(await errorsOf(RetailSystemSale, { ...sale, payments: [cashPayment, { ...wirePayment, speiTrackingKey: '7' }] })).toEqual([]);
150
+ expect(await errorsOf(RetailSystemSale, { ...sale, payments: [cashPayment, { ...wirePayment, speiTrackingKey: 'A'.repeat(30) }] })).toEqual([]);
151
+ });
152
+
148
153
  it('acepta FIADO sin detalle', async () => {
149
154
  expect(await errorsOf(RetailSystemSale, { ...sale, payments: [{ ...cashPayment, method: 'FIADO', amount: '600.00' }] })).toEqual([]);
150
155
  });
@@ -182,7 +187,11 @@ describe('RetailSystemSale.payments', () => {
182
187
 
183
188
  it.each([
184
189
  ['speiTrackingKey', { speiTrackingKey: null }],
185
- ['speiTrackingKey', { speiTrackingKey: '12345' }],
190
+ ['speiTrackingKey', { speiTrackingKey: '' }],
191
+ ['speiTrackingKey', { speiTrackingKey: 'A'.repeat(31) }],
192
+ ['speiTrackingKey', { speiTrackingKey: 'MBAN-0100-2610' }],
193
+ ['speiTrackingKey', { speiTrackingKey: 'MBAN 01002610' }],
194
+ ['senderClabe', { senderClabe: '01218000123456789A' }],
186
195
  ['senderClabe', { senderClabe: '0121' }],
187
196
  ['cardLast4', { cardLast4: '4242' }],
188
197
  ])('rechaza %s fuera de regla en WIRE', async (field, patch) => {
package/bin/index.d.ts CHANGED
@@ -129,6 +129,7 @@ export * as RewardsEligibility from './rewardsEligibility';
129
129
  export * as DatalakeReports from './datalakeReports';
130
130
  export * as PdfRender from './pdfRender';
131
131
  export * as Rules from './rules';
132
+ export * as Meetings from './meetings';
132
133
  export * as LoanRetailAudit from './loanRetailAudit';
133
134
  export * as TaskManager from './task-manager-business';
134
135
  export * as CustomerMessages from './customerMessages';
package/bin/index.js CHANGED
@@ -38,7 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.FiadoIncFavorite = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.MessageMoments = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.AppContent = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Biometrics = exports.MetamapConnector = exports.Account = exports.Crypto = void 0;
40
40
  exports.RetailCards = exports.RetailCatalog = exports.RetailCommission = exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.WhatsappConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.UsMarketGrowthBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = void 0;
41
- exports.CustomerMessages = exports.TaskManager = exports.LoanRetailAudit = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
41
+ exports.CustomerMessages = exports.TaskManager = exports.LoanRetailAudit = exports.Meetings = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
42
42
  exports.Crypto = __importStar(require("./crypto"));
43
43
  exports.Account = __importStar(require("./account"));
44
44
  exports.MetamapConnector = __importStar(require("./metamapConnector"));
@@ -252,6 +252,9 @@ exports.DatalakeReports = __importStar(require("./datalakeReports"));
252
252
  exports.PdfRender = __importStar(require("./pdfRender"));
253
253
  // Rules: DTOs del lambda central rules-business (catálogo, validación, generación con IA y evaluación de reglas).
254
254
  exports.Rules = __importStar(require("./rules"));
255
+ // Meetings: reuniones, eventos y leads (meetings-business y meeting-connector): el contrato de los
256
+ // endpoints del back office y los eventos de MeetingsBusinessQueue, sin nombrar al proveedor.
257
+ exports.Meetings = __importStar(require("./meetings"));
255
258
  // LoanRetailAudit: contrato del lambda central loan-retail-audit-business (bitácora y accesos a PII
256
259
  // de Loan y Retail): mensaje de su cola, POST /private/pii-access-logs y GET /private/audit-trail.
257
260
  exports.LoanRetailAudit = __importStar(require("./loanRetailAudit"));
@@ -0,0 +1,11 @@
1
+ /** Título de una encuesta o pregunta: lo que ve el asistente en la plataforma. */
2
+ export declare const MEETING_QUESTION_TITLE_MAX_LENGTH = 64;
3
+ /** Una pregunta cerrada lleva entre 2 y 10 opciones; una abierta, ninguna. */
4
+ export declare const MEETING_QUESTION_OPTIONS_MIN = 2;
5
+ export declare const MEETING_QUESTION_OPTIONS_MAX = 10;
6
+ /** Tope de reuniones que crea una repetición semanal (la plataforma limita las creaciones por día). */
7
+ export declare const MEETING_REPEAT_MAX = 12;
8
+ /** Un evento se dimensiona para miles de asistentes, no decenas de miles: por encima se procesa en lotes. */
9
+ export declare const MEETING_EVENT_EXPECTED_MAX_ATTENDEES = 2000;
10
+ /** Entrada "pregunta:opción" de Lead_GT.answers: referencias estables, nunca el texto. */
11
+ export declare const MEETING_ANSWER_TOKEN_SEPARATOR = ":";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MEETING_ANSWER_TOKEN_SEPARATOR = exports.MEETING_EVENT_EXPECTED_MAX_ATTENDEES = exports.MEETING_REPEAT_MAX = exports.MEETING_QUESTION_OPTIONS_MAX = exports.MEETING_QUESTION_OPTIONS_MIN = exports.MEETING_QUESTION_TITLE_MAX_LENGTH = void 0;
4
+ /** Título de una encuesta o pregunta: lo que ve el asistente en la plataforma. */
5
+ exports.MEETING_QUESTION_TITLE_MAX_LENGTH = 64;
6
+ /** Una pregunta cerrada lleva entre 2 y 10 opciones; una abierta, ninguna. */
7
+ exports.MEETING_QUESTION_OPTIONS_MIN = 2;
8
+ exports.MEETING_QUESTION_OPTIONS_MAX = 10;
9
+ /** Tope de reuniones que crea una repetición semanal (la plataforma limita las creaciones por día). */
10
+ exports.MEETING_REPEAT_MAX = 12;
11
+ /** Un evento se dimensiona para miles de asistentes, no decenas de miles: por encima se procesa en lotes. */
12
+ exports.MEETING_EVENT_EXPECTED_MAX_ATTENDEES = 2000;
13
+ /** Entrada "pregunta:opción" de Lead_GT.answers: referencias estables, nunca el texto. */
14
+ exports.MEETING_ANSWER_TOKEN_SEPARATOR = ':';
@@ -0,0 +1,61 @@
1
+ import { MeetingAttendanceRoleEnum } from '../enums/MeetingAttendanceRoleEnum';
2
+ import { MeetingAttendanceSourceEnum } from '../enums/MeetingAttendanceSourceEnum';
3
+ import { MeetingAttendanceStatusEnum } from '../enums/MeetingAttendanceStatusEnum';
4
+ import { MeetingQuestionSurfaceEnum } from '../enums/MeetingQuestionSurfaceEnum';
5
+ /** Una respuesta guardada en el renglón de asistencia (del registro o de la encuesta en vivo). */
6
+ export declare class MeetingAnswer {
7
+ questionId: string;
8
+ version: number;
9
+ surface: MeetingQuestionSurfaceEnum;
10
+ /** El texto que vio la persona, como contexto; las reglas usan las referencias. */
11
+ question?: string;
12
+ answer: string;
13
+ /** Referencias estables de las opciones elegidas (las entradas de Lead_GT.answers salen de acá). */
14
+ optionRefs?: string[];
15
+ /** true = no cumple el dataType declarado; se guarda tal como llegó y no crea lead. */
16
+ invalid?: boolean;
17
+ respondedAt?: string;
18
+ }
19
+ /** Una persona en una reunión, desde que se la invita o se registra. Los anfitriones también. */
20
+ export declare class MeetingAttendanceResponse {
21
+ meetingId: string;
22
+ /** LEAD#<id>; EMAIL#<correo> si todavía no es lead; EXT#<id de participante> si no se pudo identificar. */
23
+ personKey: string;
24
+ role: MeetingAttendanceRoleEnum;
25
+ status: MeetingAttendanceStatusEnum;
26
+ leadId?: string;
27
+ promoterId?: string;
28
+ directoryId?: string;
29
+ meetingStartsAt?: string;
30
+ name?: string;
31
+ email?: string;
32
+ phoneNumber?: string;
33
+ externalRegistrantId?: string;
34
+ registeredAt?: string;
35
+ joinedAt?: string;
36
+ leftAt?: string;
37
+ /** Suma de tramos si se reconecta. */
38
+ durationMinutes?: number;
39
+ wasInvited?: boolean;
40
+ source: MeetingAttendanceSourceEnum;
41
+ markedBy?: string;
42
+ responses?: MeetingAnswer[];
43
+ createdAt?: number;
44
+ updatedAt?: number;
45
+ }
46
+ /** Marcar asistencia fuera de la plataforma: lo marcado queda ATTENDED y los invitados sin marcar, NO_SHOW. */
47
+ export declare class MeetingAttendanceMarkItem {
48
+ /** De un renglón existente; si falta, se crea uno nuevo con los datos de abajo. */
49
+ personKey?: string;
50
+ name?: string;
51
+ email?: string;
52
+ phoneNumber?: string;
53
+ attended: boolean;
54
+ }
55
+ export declare class MeetingAttendanceMarkRequest {
56
+ items: MeetingAttendanceMarkItem[];
57
+ }
58
+ export declare class MeetingAttendanceListResponse {
59
+ items: MeetingAttendanceResponse[];
60
+ index: string | null;
61
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingAttendanceListResponse = exports.MeetingAttendanceMarkRequest = exports.MeetingAttendanceMarkItem = exports.MeetingAttendanceResponse = exports.MeetingAnswer = void 0;
4
+ /** Una respuesta guardada en el renglón de asistencia (del registro o de la encuesta en vivo). */
5
+ class MeetingAnswer {
6
+ }
7
+ exports.MeetingAnswer = MeetingAnswer;
8
+ /** Una persona en una reunión, desde que se la invita o se registra. Los anfitriones también. */
9
+ class MeetingAttendanceResponse {
10
+ }
11
+ exports.MeetingAttendanceResponse = MeetingAttendanceResponse;
12
+ /** Marcar asistencia fuera de la plataforma: lo marcado queda ATTENDED y los invitados sin marcar, NO_SHOW. */
13
+ class MeetingAttendanceMarkItem {
14
+ }
15
+ exports.MeetingAttendanceMarkItem = MeetingAttendanceMarkItem;
16
+ class MeetingAttendanceMarkRequest {
17
+ }
18
+ exports.MeetingAttendanceMarkRequest = MeetingAttendanceMarkRequest;
19
+ class MeetingAttendanceListResponse {
20
+ }
21
+ exports.MeetingAttendanceListResponse = MeetingAttendanceListResponse;
@@ -0,0 +1,28 @@
1
+ /** Un formulario que se manda a los asistentes (el formId de la reunión). Los carga Silvia; no se borran. */
2
+ export declare class MeetingFormResponse {
3
+ id: string;
4
+ name: string;
5
+ /** El link del formulario; hoy, Microsoft Forms. */
6
+ url: string;
7
+ /** Plantilla de messages-business con que se manda el correo. */
8
+ templateId: string;
9
+ /** No se le manda a quien ya es promotor (marcada en el de promotor). */
10
+ skipPromoters: boolean;
11
+ active: boolean;
12
+ tenantId?: string;
13
+ createdAt?: number;
14
+ updatedAt?: number;
15
+ createdBy?: string;
16
+ updatedBy?: string;
17
+ }
18
+ export declare class MeetingFormUpsertRequest {
19
+ name: string;
20
+ url: string;
21
+ templateId: string;
22
+ skipPromoters?: boolean;
23
+ active?: boolean;
24
+ }
25
+ export declare class MeetingFormListResponse {
26
+ items: MeetingFormResponse[];
27
+ index: string | null;
28
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingFormListResponse = exports.MeetingFormUpsertRequest = exports.MeetingFormResponse = void 0;
4
+ /** Un formulario que se manda a los asistentes (el formId de la reunión). Los carga Silvia; no se borran. */
5
+ class MeetingFormResponse {
6
+ }
7
+ exports.MeetingFormResponse = MeetingFormResponse;
8
+ class MeetingFormUpsertRequest {
9
+ }
10
+ exports.MeetingFormUpsertRequest = MeetingFormUpsertRequest;
11
+ class MeetingFormListResponse {
12
+ }
13
+ exports.MeetingFormListResponse = MeetingFormListResponse;
@@ -0,0 +1,43 @@
1
+ import { MeetingLeadSourceEnum } from '../enums/MeetingLeadSourceEnum';
2
+ /** Una persona del padrón, una sola vez. Promotor, directorio o cuenta son estados colgados de la fila. */
3
+ export declare class MeetingLeadResponse {
4
+ id: string;
5
+ name?: string;
6
+ email?: string;
7
+ /** Llave de identidad, normalizado (+1 o +52). */
8
+ phoneNumber?: string;
9
+ /** Derivados del reporte de identificación del lago; no se mantienen a mano. */
10
+ directoryId?: string;
11
+ peopleId?: string;
12
+ hasFiadoAccount?: boolean;
13
+ promoterId?: string;
14
+ source: MeetingLeadSourceEnum;
15
+ lastAttendedAt?: string;
16
+ /** «<ref de pregunta>:<ref de opción>» por opción elegida en una cerrada; lo lee el motor en el lago. */
17
+ answers?: string[];
18
+ /** Correo con el formulario de la reunión (formId). */
19
+ formSentAt?: string;
20
+ formReminderSentAt?: string;
21
+ /** Etiquetas de LeadTags_GT (las sirve el lambda de tags de onboarding-business). */
22
+ tags?: string[];
23
+ tenantId?: string;
24
+ createdAt?: number;
25
+ updatedAt?: number;
26
+ }
27
+ export declare class MeetingLeadListResponse {
28
+ items: MeetingLeadResponse[];
29
+ index: string | null;
30
+ }
31
+ export declare class MeetingLeadCreateRequest {
32
+ name?: string;
33
+ email?: string;
34
+ /** El lead nace cuando aparece el teléfono; a mano se exige. */
35
+ phoneNumber: string;
36
+ }
37
+ /** PUT /leads/{id}/tags: etiquetas a mano, contra la lista blanca de MeetingLeadTagEnum. */
38
+ export declare class MeetingLeadTagsRequest {
39
+ add?: string[];
40
+ remove?: string[];
41
+ /** En qué reunión se ganó, si aplica. */
42
+ meetingId?: string;
43
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingLeadTagsRequest = exports.MeetingLeadCreateRequest = exports.MeetingLeadListResponse = exports.MeetingLeadResponse = void 0;
4
+ /** Una persona del padrón, una sola vez. Promotor, directorio o cuenta son estados colgados de la fila. */
5
+ class MeetingLeadResponse {
6
+ }
7
+ exports.MeetingLeadResponse = MeetingLeadResponse;
8
+ class MeetingLeadListResponse {
9
+ }
10
+ exports.MeetingLeadListResponse = MeetingLeadListResponse;
11
+ class MeetingLeadCreateRequest {
12
+ }
13
+ exports.MeetingLeadCreateRequest = MeetingLeadCreateRequest;
14
+ /** PUT /leads/{id}/tags: etiquetas a mano, contra la lista blanca de MeetingLeadTagEnum. */
15
+ class MeetingLeadTagsRequest {
16
+ }
17
+ exports.MeetingLeadTagsRequest = MeetingLeadTagsRequest;
@@ -0,0 +1,5 @@
1
+ import { MeetingQuestionRef } from './MeetingQuestionRef';
2
+ /** Una encuesta precargada en la plataforma; externalPollId llega al crearla allá. */
3
+ export declare class MeetingPollRef extends MeetingQuestionRef {
4
+ externalPollId?: string;
5
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingPollRef = void 0;
4
+ const MeetingQuestionRef_1 = require("./MeetingQuestionRef");
5
+ /** Una encuesta precargada en la plataforma; externalPollId llega al crearla allá. */
6
+ class MeetingPollRef extends MeetingQuestionRef_1.MeetingQuestionRef {
7
+ }
8
+ exports.MeetingPollRef = MeetingPollRef;
@@ -0,0 +1,5 @@
1
+ /** Una pregunta del catálogo elegida para una reunión, con la versión congelada al elegirla. */
2
+ export declare class MeetingQuestionRef {
3
+ questionId: string;
4
+ version: number;
5
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingQuestionRef = void 0;
4
+ /** Una pregunta del catálogo elegida para una reunión, con la versión congelada al elegirla. */
5
+ class MeetingQuestionRef {
6
+ }
7
+ exports.MeetingQuestionRef = MeetingQuestionRef;
@@ -0,0 +1,48 @@
1
+ import { MeetingQuestionDataTypeEnum } from '../enums/MeetingQuestionDataTypeEnum';
2
+ import { MeetingQuestionSurfaceEnum } from '../enums/MeetingQuestionSurfaceEnum';
3
+ import { MeetingQuestionTypeEnum } from '../enums/MeetingQuestionTypeEnum';
4
+ /** Una opción de una pregunta cerrada. La referencia es estable; el texto puede cambiar. */
5
+ export declare class MeetingQuestionOption {
6
+ ref: string;
7
+ value: string;
8
+ /** Etiqueta que gana quien la elige, si la pregunta es clasificatoria. */
9
+ tag?: string;
10
+ }
11
+ export declare class MeetingQuestionItem {
12
+ /** Referencia estable: las reglas se escriben contra ella, renombrar no rompe nada. */
13
+ ref: string;
14
+ text: string;
15
+ type: MeetingQuestionTypeEnum;
16
+ /** Sólo en abiertas (TEXT) y opcional: lo valida meetings-business al recibir. */
17
+ dataType?: MeetingQuestionDataTypeEnum;
18
+ surfaces: MeetingQuestionSurfaceEnum[];
19
+ /** Sólo aplica en el registro. */
20
+ required?: boolean;
21
+ /** Una abierta clasificatoria se rechaza al guardar: el motor compara valores, no lee texto. */
22
+ classifying?: boolean;
23
+ options?: MeetingQuestionOption[];
24
+ }
25
+ /** Una encuesta del catálogo, versionada: cada edición crea una versión nueva y conserva la vieja. */
26
+ export declare class MeetingQuestionCatalogResponse {
27
+ id: string;
28
+ version: number;
29
+ /** Hasta MEETING_QUESTION_TITLE_MAX_LENGTH caracteres. */
30
+ title: string;
31
+ questions: MeetingQuestionItem[];
32
+ /** Las inactivas no aparecen al crear reuniones. */
33
+ active: boolean;
34
+ tenantId?: string;
35
+ createdAt?: number;
36
+ updatedAt?: number;
37
+ createdBy?: string;
38
+ updatedBy?: string;
39
+ }
40
+ export declare class MeetingQuestionUpsertRequest {
41
+ title: string;
42
+ questions: MeetingQuestionItem[];
43
+ active?: boolean;
44
+ }
45
+ export declare class MeetingQuestionListResponse {
46
+ items: MeetingQuestionCatalogResponse[];
47
+ index: string | null;
48
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingQuestionListResponse = exports.MeetingQuestionUpsertRequest = exports.MeetingQuestionCatalogResponse = exports.MeetingQuestionItem = exports.MeetingQuestionOption = void 0;
4
+ /** Una opción de una pregunta cerrada. La referencia es estable; el texto puede cambiar. */
5
+ class MeetingQuestionOption {
6
+ }
7
+ exports.MeetingQuestionOption = MeetingQuestionOption;
8
+ class MeetingQuestionItem {
9
+ }
10
+ exports.MeetingQuestionItem = MeetingQuestionItem;
11
+ /** Una encuesta del catálogo, versionada: cada edición crea una versión nueva y conserva la vieja. */
12
+ class MeetingQuestionCatalogResponse {
13
+ }
14
+ exports.MeetingQuestionCatalogResponse = MeetingQuestionCatalogResponse;
15
+ class MeetingQuestionUpsertRequest {
16
+ }
17
+ exports.MeetingQuestionUpsertRequest = MeetingQuestionUpsertRequest;
18
+ class MeetingQuestionListResponse {
19
+ }
20
+ exports.MeetingQuestionListResponse = MeetingQuestionListResponse;
@@ -0,0 +1,85 @@
1
+ import { JsonValue } from '../../common';
2
+ import { MeetingEventTypeEnum } from '../enums/MeetingEventTypeEnum';
3
+ /** meeting.created: fechas vacías = reunión sin horario fijo (se guarda cuando empiece cada sesión). */
4
+ export interface MeetingCreatedPayload {
5
+ externalMeetingId: string;
6
+ hostEmail?: string;
7
+ /** Quién la creó en la plataforma, si no es el anfitrión. */
8
+ operator?: string;
9
+ title?: string;
10
+ /** ISO 8601 UTC, una por fecha fija. */
11
+ dates: string[];
12
+ timezone?: string;
13
+ durationMinutes?: number;
14
+ joinUrl?: string;
15
+ }
16
+ export interface MeetingUpdatedPayload {
17
+ externalMeetingId: string;
18
+ /** Lo que cambió, tal como lo reportó la plataforma. */
19
+ changes: Record<string, JsonValue>;
20
+ }
21
+ export interface MeetingDeletedPayload {
22
+ externalMeetingId: string;
23
+ }
24
+ export interface SessionStartedPayload {
25
+ externalMeetingId: string;
26
+ sessionId: string;
27
+ startedAt: string;
28
+ }
29
+ /** El teléfono va tal como lo escribió la persona: lo normaliza meetings-business. */
30
+ export interface PersonRegisteredPayload {
31
+ externalMeetingId: string;
32
+ registrantId: string;
33
+ name?: string;
34
+ email?: string;
35
+ phoneNumber?: string;
36
+ answers?: Array<{
37
+ question: string;
38
+ answer: string;
39
+ }>;
40
+ }
41
+ export interface ParticipantJoinedPayload {
42
+ externalMeetingId: string;
43
+ sessionId: string;
44
+ participantId: string;
45
+ registrantId?: string;
46
+ name?: string;
47
+ email?: string;
48
+ joinedAt: string;
49
+ }
50
+ export interface ParticipantLeftPayload {
51
+ externalMeetingId: string;
52
+ sessionId: string;
53
+ participantId: string;
54
+ registrantId?: string;
55
+ name?: string;
56
+ email?: string;
57
+ leftAt: string;
58
+ }
59
+ export interface MeetingEndedPayload {
60
+ externalMeetingId: string;
61
+ sessionId: string;
62
+ startedAt?: string;
63
+ endedAt: string;
64
+ }
65
+ /** Lo publica usmarketgrowth-business al crear un promotor; el lead guarda su promoterId. */
66
+ export interface PromoterCreatedPayload {
67
+ promoterId: string;
68
+ phoneNumber?: string;
69
+ email?: string;
70
+ name?: string;
71
+ }
72
+ export type MeetingEventPayload = MeetingCreatedPayload | MeetingUpdatedPayload | MeetingDeletedPayload | SessionStartedPayload | PersonRegisteredPayload | ParticipantJoinedPayload | ParticipantLeftPayload | MeetingEndedPayload | PromoterCreatedPayload;
73
+ /**
74
+ * Sobre de todo mensaje de MeetingsBusinessQueue. El connector traduce los avisos de la plataforma a
75
+ * esto: nada nombra al proveedor (la reunión allá es externalMeetingId; una sesión, sessionId).
76
+ * El consumidor es idempotente: un eventId repetido o fuera de orden no duplica nada.
77
+ */
78
+ export declare class MeetingQueueEvent<T = MeetingEventPayload> {
79
+ type: MeetingEventTypeEnum;
80
+ /** Identidad del aviso en el origen, para idempotencia. */
81
+ eventId: string;
82
+ /** Cuándo pasó, ISO 8601 UTC. */
83
+ occurredAt: string;
84
+ payload: T;
85
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MeetingQueueEvent = void 0;
4
+ /**
5
+ * Sobre de todo mensaje de MeetingsBusinessQueue. El connector traduce los avisos de la plataforma a
6
+ * esto: nada nombra al proveedor (la reunión allá es externalMeetingId; una sesión, sessionId).
7
+ * El consumidor es idempotente: un eventId repetido o fuera de orden no duplica nada.
8
+ */
9
+ class MeetingQueueEvent {
10
+ }
11
+ exports.MeetingQueueEvent = MeetingQueueEvent;
@@ -0,0 +1,131 @@
1
+ import { MeetingAttendanceRoleEnum } from '../enums/MeetingAttendanceRoleEnum';
2
+ import { MeetingModalityEnum } from '../enums/MeetingModalityEnum';
3
+ import { MeetingPlatformEnum } from '../enums/MeetingPlatformEnum';
4
+ import { MeetingSourceEnum } from '../enums/MeetingSourceEnum';
5
+ import { MeetingStatusEnum } from '../enums/MeetingStatusEnum';
6
+ import { MeetingTypeEnum } from '../enums/MeetingTypeEnum';
7
+ import { MeetingPollRef } from './MeetingPollRef';
8
+ import { MeetingQuestionRef } from './MeetingQuestionRef';
9
+ import { MeetingSessionRef } from './MeetingSessionRef';
10
+ /** Una reunión (cita o evento) de una fecha. Una clase que se repite son varias filas. */
11
+ export declare class MeetingResponse {
12
+ id: string;
13
+ type: MeetingTypeEnum;
14
+ title: string;
15
+ /** El mensaje de la reunión; va a la plataforma como agenda. */
16
+ description?: string;
17
+ /** Tipo de clase, sólo en eventos; texto con autocompletado, no un enum (decidido el 22-10). */
18
+ classType?: string;
19
+ /** Referencia opcional a una campaña de otro servicio. */
20
+ campaignId?: string;
21
+ /** ISO 8601 UTC. Puede faltar en reuniones capturadas sin fecha. */
22
+ startsAt?: string;
23
+ durationMinutes?: number;
24
+ /** Zona de la reunión, p. ej. America/Los_Angeles. */
25
+ timezone?: string;
26
+ /** AAAA-MM-DD en esa zona; con externalMeetingId identifica la fila de una sesión. */
27
+ localDate?: string;
28
+ /** AAAA-MM en UTC, para el índice de «Todas». */
29
+ month: string;
30
+ /** El responsable único. Los co-anfitriones son renglones de asistencia con role HOST. */
31
+ hostEmail: string;
32
+ hostName?: string;
33
+ modality: MeetingModalityEnum;
34
+ platform?: MeetingPlatformEnum;
35
+ /** En Zoom, el link de registro: lo que se publica por WhatsApp y lleva el QR. */
36
+ meetingUrl?: string;
37
+ address?: string;
38
+ phoneNumber?: string;
39
+ registrationRequired: boolean;
40
+ phoneRequired: boolean;
41
+ /** El formulario que se manda a los asistentes (MeetingForm_GT); vacío = no se manda nada. */
42
+ formId?: string;
43
+ status: MeetingStatusEnum;
44
+ /** Id de la reunión en la plataforma, como texto (en Zoom puede pasar de 10 dígitos). */
45
+ externalMeetingId?: string;
46
+ externalSessions?: MeetingSessionRef[];
47
+ polls?: MeetingPollRef[];
48
+ registrationQuestions?: MeetingQuestionRef[];
49
+ source: MeetingSourceEnum;
50
+ /** Sólo en citas capturadas de la plataforma: pendiente de clasificar en el back office. */
51
+ pendingClassification?: boolean;
52
+ /** Todos los participantes eran del equipo interno: no ensucia reportes, no se borra. */
53
+ internal?: boolean;
54
+ /** Cuántos renglones de asistencia PARTICIPANT tiene (registrados o que entraron). Lo mantiene
55
+ * meetings-business en la fila al cambiar la asistencia; el back office lo muestra sin recalcular. */
56
+ registeredCount?: number;
57
+ /** Cuántos de esos PARTICIPANT quedaron ATTENDED. Mismo mantenimiento que registeredCount. */
58
+ attendedCount?: number;
59
+ tenantId?: string;
60
+ /** Epoch ms, como el resto de la flota. */
61
+ createdAt?: number;
62
+ updatedAt?: number;
63
+ createdBy?: string;
64
+ updatedBy?: string;
65
+ }
66
+ /** Un invitado o co-anfitrión al crear o editar: nace como renglón de asistencia INVITED. */
67
+ export declare class MeetingInviteeRequest {
68
+ role: MeetingAttendanceRoleEnum;
69
+ name?: string;
70
+ /** Obligatorio si la reunión es virtual: es por donde se avisa. */
71
+ email?: string;
72
+ /** Obligatorio si la reunión es por teléfono. */
73
+ phoneNumber?: string;
74
+ leadId?: string;
75
+ promoterId?: string;
76
+ directoryId?: string;
77
+ }
78
+ export declare class MeetingCreateRequest {
79
+ type: MeetingTypeEnum;
80
+ title: string;
81
+ description?: string;
82
+ classType?: string;
83
+ campaignId?: string;
84
+ startsAt: string;
85
+ durationMinutes: number;
86
+ timezone: string;
87
+ hostEmail: string;
88
+ hostName?: string;
89
+ modality: MeetingModalityEnum;
90
+ platform?: MeetingPlatformEnum;
91
+ /** Link cargado a mano cuando no se crea en la plataforma. */
92
+ meetingUrl?: string;
93
+ address?: string;
94
+ phoneNumber?: string;
95
+ /** Marcadas por defecto en el back office. */
96
+ registrationRequired?: boolean;
97
+ phoneRequired?: boolean;
98
+ formId?: string;
99
+ invitees?: MeetingInviteeRequest[];
100
+ registrationQuestions?: MeetingQuestionRef[];
101
+ polls?: MeetingQuestionRef[];
102
+ /** true = pedirle al connector que la cree en la plataforma (botón «Crear en Zoom»). */
103
+ createInPlatform?: boolean;
104
+ /** Repetición semanal: cuántas reuniones independientes crear (tope MEETING_REPEAT_MAX). */
105
+ repeatWeeks?: number;
106
+ }
107
+ export declare class MeetingUpdateRequest {
108
+ title?: string;
109
+ description?: string;
110
+ classType?: string;
111
+ campaignId?: string;
112
+ startsAt?: string;
113
+ durationMinutes?: number;
114
+ timezone?: string;
115
+ hostEmail?: string;
116
+ hostName?: string;
117
+ modality?: MeetingModalityEnum;
118
+ platform?: MeetingPlatformEnum;
119
+ meetingUrl?: string;
120
+ address?: string;
121
+ phoneNumber?: string;
122
+ registrationRequired?: boolean;
123
+ phoneRequired?: boolean;
124
+ formId?: string;
125
+ status?: MeetingStatusEnum;
126
+ invitees?: MeetingInviteeRequest[];
127
+ }
128
+ export declare class MeetingListResponse {
129
+ items: MeetingResponse[];
130
+ index: string | null;
131
+ }