lumnisai 0.1.7 → 0.1.9
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/index.cjs +499 -47
- package/dist/index.d.cts +887 -170
- package/dist/index.d.mts +887 -170
- package/dist/index.d.ts +887 -170
- package/dist/index.mjs +481 -48
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -104,6 +104,7 @@ interface ConnectionStatusResponse {
|
|
|
104
104
|
status: ConnectionStatus;
|
|
105
105
|
connectedAt?: string | null;
|
|
106
106
|
errorMessage?: string | null;
|
|
107
|
+
isEnabled?: boolean;
|
|
107
108
|
}
|
|
108
109
|
interface ConnectionInfo {
|
|
109
110
|
connectionId: string | null;
|
|
@@ -183,6 +184,7 @@ interface GetConnectionStatusParams {
|
|
|
183
184
|
userId: string;
|
|
184
185
|
appName: string;
|
|
185
186
|
provider?: ProviderType;
|
|
187
|
+
includeEnabled?: boolean;
|
|
186
188
|
}
|
|
187
189
|
interface GetUserConnectionsParams {
|
|
188
190
|
userId: string;
|
|
@@ -198,6 +200,34 @@ interface UpdateAppStatusParams {
|
|
|
198
200
|
enabled: boolean;
|
|
199
201
|
provider?: ProviderType;
|
|
200
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Request parameters for batch connection status check
|
|
205
|
+
*/
|
|
206
|
+
interface BatchConnectionRequest {
|
|
207
|
+
userId: string;
|
|
208
|
+
appNames: string[];
|
|
209
|
+
provider?: ProviderType;
|
|
210
|
+
includeEnabledStatus?: boolean;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Connection status in batch response
|
|
214
|
+
*/
|
|
215
|
+
interface BatchConnectionStatus {
|
|
216
|
+
appName: string;
|
|
217
|
+
status: ConnectionStatus;
|
|
218
|
+
connectedAt: string | null;
|
|
219
|
+
isEnabled: boolean;
|
|
220
|
+
errorMessage: string | null;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Response from batch connection status check
|
|
224
|
+
*/
|
|
225
|
+
interface BatchConnectionResponse {
|
|
226
|
+
userId: string;
|
|
227
|
+
connections: BatchConnectionStatus[];
|
|
228
|
+
totalChecked: number;
|
|
229
|
+
activeCount: number;
|
|
230
|
+
}
|
|
201
231
|
|
|
202
232
|
type MCPTransport = 'stdio' | 'streamable_http' | 'sse';
|
|
203
233
|
type MCPScope = 'tenant' | 'user';
|
|
@@ -296,6 +326,170 @@ interface ModelAvailability {
|
|
|
296
326
|
requiresApiKey: boolean;
|
|
297
327
|
}
|
|
298
328
|
|
|
329
|
+
/**
|
|
330
|
+
* Available people search data sources
|
|
331
|
+
*/
|
|
332
|
+
declare enum PeopleDataSource {
|
|
333
|
+
PDL = "PDL",
|
|
334
|
+
CORESIGNAL = "CORESIGNAL",
|
|
335
|
+
CRUST_DATA = "CRUST_DATA"
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Salary range projection data.
|
|
339
|
+
* Note: Values represent total compensation (base salary + bonuses + equity),
|
|
340
|
+
* not just base salary. Only available for CoreSignal results.
|
|
341
|
+
*/
|
|
342
|
+
interface SalaryRange {
|
|
343
|
+
/** Minimum total compensation (includes base + bonuses + equity, etc.) */
|
|
344
|
+
min?: number;
|
|
345
|
+
/** Median total compensation projection */
|
|
346
|
+
median?: number;
|
|
347
|
+
/** Maximum total compensation (includes base + bonuses + equity, etc.) */
|
|
348
|
+
max?: number;
|
|
349
|
+
/** Currency code (e.g., "USD", "EUR") */
|
|
350
|
+
currency?: string;
|
|
351
|
+
/** Period (e.g., "yearly", "monthly") */
|
|
352
|
+
period?: string;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Simplified person result model returned in search results.
|
|
356
|
+
* Contains normalized data from multiple sources (PDL, CoreSignal, CrustData).
|
|
357
|
+
*/
|
|
358
|
+
interface PersonResult {
|
|
359
|
+
/** Unique identifier for the person */
|
|
360
|
+
id: string;
|
|
361
|
+
/** Full name */
|
|
362
|
+
name: string;
|
|
363
|
+
/** Current job title */
|
|
364
|
+
currentTitle?: string;
|
|
365
|
+
/** Current company name */
|
|
366
|
+
currentCompany?: string;
|
|
367
|
+
/** Current department */
|
|
368
|
+
currentDepartment?: string;
|
|
369
|
+
/** Full location string */
|
|
370
|
+
location?: string;
|
|
371
|
+
/** City */
|
|
372
|
+
city?: string;
|
|
373
|
+
/** Country */
|
|
374
|
+
country?: string;
|
|
375
|
+
/** Primary email address */
|
|
376
|
+
email?: string;
|
|
377
|
+
/** List of email addresses (up to 3) */
|
|
378
|
+
emails: string[];
|
|
379
|
+
/** LinkedIn profile URL */
|
|
380
|
+
linkedinUrl?: string;
|
|
381
|
+
/** Years of professional experience */
|
|
382
|
+
yearsExperience?: number;
|
|
383
|
+
/** List of skills (up to 15) */
|
|
384
|
+
skills: string[];
|
|
385
|
+
/** Seniority level (e.g., "Senior", "Director", "VP") */
|
|
386
|
+
seniorityLevel?: string;
|
|
387
|
+
/** Whether person is identified as a decision maker */
|
|
388
|
+
isDecisionMaker: boolean;
|
|
389
|
+
/** Number of LinkedIn connections */
|
|
390
|
+
connectionsCount?: number;
|
|
391
|
+
/** Whether person recently changed jobs */
|
|
392
|
+
recentlyChangedJobs: boolean;
|
|
393
|
+
/** Data source identifier ("PDL", "CORESIGNAL", or "CRUST_DATA") */
|
|
394
|
+
source: string;
|
|
395
|
+
/** Confidence score (0.0-1.0) if available */
|
|
396
|
+
confidenceScore?: number;
|
|
397
|
+
/** Salary range projection (CoreSignal only) */
|
|
398
|
+
salaryRange?: SalaryRange;
|
|
399
|
+
/** Number of certifications (CoreSignal only) */
|
|
400
|
+
certificationsCount?: number;
|
|
401
|
+
/** List of languages spoken (CoreSignal only) */
|
|
402
|
+
languages?: string[];
|
|
403
|
+
/** List of education degrees (CoreSignal only, up to 3) */
|
|
404
|
+
educationDegrees?: string[];
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Request model for people search queries.
|
|
408
|
+
*/
|
|
409
|
+
interface PeopleSearchRequest {
|
|
410
|
+
/**
|
|
411
|
+
* Natural language search query describing the people you want to find.
|
|
412
|
+
* Examples:
|
|
413
|
+
* - "Senior software engineers in San Francisco with Python skills"
|
|
414
|
+
* - "Product managers at Google or Meta with MBA"
|
|
415
|
+
* - "Data scientists in NYC with 5+ years experience"
|
|
416
|
+
*/
|
|
417
|
+
query: string;
|
|
418
|
+
/**
|
|
419
|
+
* Maximum number of results to return.
|
|
420
|
+
* Range: 1-100
|
|
421
|
+
* Default: 20
|
|
422
|
+
*/
|
|
423
|
+
limit?: number;
|
|
424
|
+
/**
|
|
425
|
+
* Specific data sources to use for the search.
|
|
426
|
+
* If not provided, all available sources will be used.
|
|
427
|
+
* Valid values: "PDL", "CORESIGNAL", "CRUST_DATA"
|
|
428
|
+
*
|
|
429
|
+
* Note: The API accepts string values. SDKs should use enums for type safety
|
|
430
|
+
* but serialize them as strings when sending the request.
|
|
431
|
+
*/
|
|
432
|
+
dataSources?: PeopleDataSource[];
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Logic operator for filter values
|
|
436
|
+
*/
|
|
437
|
+
type FilterLogic = 'or' | 'and' | 'should';
|
|
438
|
+
/**
|
|
439
|
+
* A filter with values and logic operator.
|
|
440
|
+
* Used in applied_filters response.
|
|
441
|
+
*/
|
|
442
|
+
interface FilterValue {
|
|
443
|
+
/** List of values for this filter */
|
|
444
|
+
values: string[];
|
|
445
|
+
/**
|
|
446
|
+
* Logic operator:
|
|
447
|
+
* - "or": ANY value matches (for alternatives like "SF or NYC")
|
|
448
|
+
* - "and": ALL values must match (for "must have Python AND Java")
|
|
449
|
+
* - "should": Optional/preferred (for "preferably PhD")
|
|
450
|
+
*/
|
|
451
|
+
logic: FilterLogic;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Structure of the applied_filters field in the response.
|
|
455
|
+
* Contains extracted filters from the natural language query.
|
|
456
|
+
*/
|
|
457
|
+
interface AppliedFilters {
|
|
458
|
+
/** Cities for the search */
|
|
459
|
+
cities?: FilterValue;
|
|
460
|
+
/** Countries for the search */
|
|
461
|
+
countries?: FilterValue;
|
|
462
|
+
/** Job titles/roles */
|
|
463
|
+
jobTitles?: FilterValue;
|
|
464
|
+
/** Company names */
|
|
465
|
+
companies?: FilterValue;
|
|
466
|
+
/** Technical skills */
|
|
467
|
+
skills?: FilterValue;
|
|
468
|
+
/** Minimum years of professional experience */
|
|
469
|
+
minYearsExperience?: number;
|
|
470
|
+
/** Seniority levels (entry/junior/mid/senior/lead/principal/staff/director/vp/executive) */
|
|
471
|
+
seniorityLevels?: FilterValue;
|
|
472
|
+
/** Education levels (bachelors/masters/phd/mba) */
|
|
473
|
+
educationLevels?: FilterValue;
|
|
474
|
+
/** Industries/sectors */
|
|
475
|
+
industries?: FilterValue;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Response model for people search endpoint.
|
|
479
|
+
*/
|
|
480
|
+
interface PeopleSearchResponse {
|
|
481
|
+
/** List of matching candidates */
|
|
482
|
+
candidates: PersonResult[];
|
|
483
|
+
/** Total number of unique candidates found (may be more than returned) */
|
|
484
|
+
totalFound: number;
|
|
485
|
+
/** Filters extracted and applied from the query */
|
|
486
|
+
appliedFilters: AppliedFilters;
|
|
487
|
+
/** Execution time in milliseconds */
|
|
488
|
+
executionTimeMs: number;
|
|
489
|
+
/** List of data sources that were actually used */
|
|
490
|
+
dataSourcesUsed: string[];
|
|
491
|
+
}
|
|
492
|
+
|
|
299
493
|
type ResponseStatus = 'queued' | 'in_progress' | 'succeeded' | 'failed' | 'cancelled';
|
|
300
494
|
interface FileAttachment {
|
|
301
495
|
name: string;
|
|
@@ -320,6 +514,25 @@ interface AgentConfig {
|
|
|
320
514
|
interface ModelOverrides {
|
|
321
515
|
[key: string]: string;
|
|
322
516
|
}
|
|
517
|
+
/**
|
|
518
|
+
* Available specialized agents
|
|
519
|
+
*/
|
|
520
|
+
type SpecializedAgentType = 'quick_people_search';
|
|
521
|
+
/**
|
|
522
|
+
* Parameters for specialized agent execution
|
|
523
|
+
*/
|
|
524
|
+
interface SpecializedAgentParams {
|
|
525
|
+
/**
|
|
526
|
+
* Maximum number of results (1-100)
|
|
527
|
+
* Agent-specific: For quick_people_search, limits the number of candidates returned
|
|
528
|
+
*/
|
|
529
|
+
limit?: number;
|
|
530
|
+
/**
|
|
531
|
+
* Specific data sources to use (agent-specific)
|
|
532
|
+
* For quick_people_search: ["PDL", "CORESIGNAL", "CRUST_DATA"]
|
|
533
|
+
*/
|
|
534
|
+
dataSources?: string[];
|
|
535
|
+
}
|
|
323
536
|
interface CreateResponseRequest {
|
|
324
537
|
threadId?: UUID;
|
|
325
538
|
messages: Message[];
|
|
@@ -330,6 +543,15 @@ interface CreateResponseRequest {
|
|
|
330
543
|
responseFormat?: Record<string, any>;
|
|
331
544
|
responseFormatInstructions?: string;
|
|
332
545
|
modelOverrides?: ModelOverrides;
|
|
546
|
+
/**
|
|
547
|
+
* Route to a specialized agent instead of the main Lumnis agent
|
|
548
|
+
* Available agents: 'quick_people_search'
|
|
549
|
+
*/
|
|
550
|
+
specializedAgent?: SpecializedAgentType;
|
|
551
|
+
/**
|
|
552
|
+
* Parameters specific to the specialized agent
|
|
553
|
+
*/
|
|
554
|
+
specializedAgentParams?: SpecializedAgentParams;
|
|
333
555
|
}
|
|
334
556
|
interface ProgressEntry {
|
|
335
557
|
ts: string;
|
|
@@ -430,6 +652,18 @@ interface FeedbackListResponse {
|
|
|
430
652
|
feedback: FeedbackObject[];
|
|
431
653
|
note: string;
|
|
432
654
|
}
|
|
655
|
+
/**
|
|
656
|
+
* Structured output from quick_people_search specialized agent
|
|
657
|
+
* This will be available in ResponseObject.structuredResponse
|
|
658
|
+
* Note: PersonResult is imported from './people' to avoid duplication
|
|
659
|
+
*/
|
|
660
|
+
interface QuickPeopleSearchOutput {
|
|
661
|
+
candidates: PersonResult[];
|
|
662
|
+
totalFound: number;
|
|
663
|
+
appliedFilters: Record<string, any>;
|
|
664
|
+
executionTimeMs: number;
|
|
665
|
+
dataSourcesUsed: string[];
|
|
666
|
+
}
|
|
433
667
|
|
|
434
668
|
interface SkillGuidelineBase {
|
|
435
669
|
name: string;
|
|
@@ -870,6 +1104,11 @@ declare class IntegrationsResource {
|
|
|
870
1104
|
* Check the status of a specific connection
|
|
871
1105
|
*/
|
|
872
1106
|
getConnectionStatus(params: GetConnectionStatusParams): Promise<ConnectionStatusResponse>;
|
|
1107
|
+
/**
|
|
1108
|
+
* Check connection status for multiple apps in a single request
|
|
1109
|
+
* Optimized for onboarding flows - checks multiple connections in parallel
|
|
1110
|
+
*/
|
|
1111
|
+
getConnectionsBatch(params: BatchConnectionRequest): Promise<BatchConnectionResponse>;
|
|
873
1112
|
/**
|
|
874
1113
|
* Get all connections for a user
|
|
875
1114
|
*/
|
|
@@ -973,199 +1212,553 @@ declare class MCPServersResource {
|
|
|
973
1212
|
}): Promise<TestConnectionResponse>;
|
|
974
1213
|
}
|
|
975
1214
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
/**
|
|
984
|
-
* Update multiple model preferences in a single request
|
|
985
|
-
*/
|
|
986
|
-
updateBulk(data: ModelPreferencesBulkUpdate): Promise<TenantModelPreferencesResponse>;
|
|
987
|
-
/**
|
|
988
|
-
* Update a specific model type preference
|
|
989
|
-
*/
|
|
990
|
-
update(modelType: ModelType, data: ModelPreferenceCreate): Promise<TenantModelPreference>;
|
|
991
|
-
/**
|
|
992
|
-
* Delete a model preference to revert to system default
|
|
993
|
-
*/
|
|
994
|
-
delete(modelType: ModelType): Promise<void>;
|
|
995
|
-
/**
|
|
996
|
-
* Check which models are available based on API key configuration
|
|
997
|
-
*/
|
|
998
|
-
checkAvailability(models: ModelPreferenceCreate[]): Promise<ModelAvailability[]>;
|
|
999
|
-
/**
|
|
1000
|
-
* List all model preferences (alias for get)
|
|
1001
|
-
*/
|
|
1002
|
-
list(params?: {
|
|
1003
|
-
includeDefaults?: boolean;
|
|
1004
|
-
}): Promise<TenantModelPreferencesResponse>;
|
|
1215
|
+
/**
|
|
1216
|
+
* Channel types for messaging
|
|
1217
|
+
*/
|
|
1218
|
+
declare enum ChannelType {
|
|
1219
|
+
GMAIL = "gmail",
|
|
1220
|
+
OUTLOOK = "outlook",
|
|
1221
|
+
LINKEDIN = "linkedin"
|
|
1005
1222
|
}
|
|
1006
|
-
|
|
1007
1223
|
/**
|
|
1008
|
-
*
|
|
1224
|
+
* Outreach methods for LinkedIn
|
|
1009
1225
|
*/
|
|
1010
|
-
declare enum
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1226
|
+
declare enum OutreachMethod {
|
|
1227
|
+
CONNECTION_REQUEST = "connection_request",
|
|
1228
|
+
DIRECT_MESSAGE = "direct_message",
|
|
1229
|
+
INMAIL = "inmail",
|
|
1230
|
+
INMAIL_ESCALATION = "inmail_escalation",
|
|
1231
|
+
EMAIL = "email"
|
|
1014
1232
|
}
|
|
1015
1233
|
/**
|
|
1016
|
-
*
|
|
1017
|
-
* Note: Values represent total compensation (base salary + bonuses + equity),
|
|
1018
|
-
* not just base salary. Only available for CoreSignal results.
|
|
1234
|
+
* Conversation status types
|
|
1019
1235
|
*/
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
max?: number;
|
|
1027
|
-
/** Currency code (e.g., "USD", "EUR") */
|
|
1028
|
-
currency?: string;
|
|
1029
|
-
/** Period (e.g., "yearly", "monthly") */
|
|
1030
|
-
period?: string;
|
|
1236
|
+
declare enum ConversationStatus {
|
|
1237
|
+
ACTIVE = "active",
|
|
1238
|
+
NEEDS_RESPONSE = "needs_response",
|
|
1239
|
+
WAITING = "waiting",
|
|
1240
|
+
BOOKED = "booked",
|
|
1241
|
+
CLOSED = "closed"
|
|
1031
1242
|
}
|
|
1032
1243
|
/**
|
|
1033
|
-
*
|
|
1034
|
-
* Contains normalized data from multiple sources (PDL, CoreSignal, CrustData).
|
|
1244
|
+
* Message types in a conversation
|
|
1035
1245
|
*/
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1246
|
+
declare enum MessageType {
|
|
1247
|
+
MESSAGE = "message",
|
|
1248
|
+
CONNECTION_REQUEST = "connection_request",
|
|
1249
|
+
CONNECTION_ACCEPTED = "connection_accepted",
|
|
1250
|
+
INMAIL = "inmail"
|
|
1251
|
+
}
|
|
1252
|
+
/**
|
|
1253
|
+
* Draft status types
|
|
1254
|
+
*/
|
|
1255
|
+
declare enum DraftStatus {
|
|
1256
|
+
PENDING_REVIEW = "pending_review",
|
|
1257
|
+
APPROVED = "approved",
|
|
1258
|
+
SCHEDULED = "scheduled",
|
|
1259
|
+
SENDING = "sending",
|
|
1260
|
+
SENT = "sent",
|
|
1261
|
+
FAILED = "failed",
|
|
1262
|
+
DISCARDED = "discarded"
|
|
1263
|
+
}
|
|
1264
|
+
/**
|
|
1265
|
+
* Sync job status types
|
|
1266
|
+
*/
|
|
1267
|
+
declare enum SyncJobStatus {
|
|
1268
|
+
QUEUED = "queued",
|
|
1269
|
+
IN_PROGRESS = "in_progress",
|
|
1270
|
+
COMPLETED = "completed",
|
|
1271
|
+
FAILED = "failed"
|
|
1272
|
+
}
|
|
1273
|
+
/**
|
|
1274
|
+
* Queue item status types
|
|
1275
|
+
*/
|
|
1276
|
+
declare enum QueueItemStatus {
|
|
1277
|
+
QUEUED = "queued",
|
|
1278
|
+
PROCESSING = "processing",
|
|
1279
|
+
COMPLETED = "completed",
|
|
1280
|
+
FAILED = "failed",
|
|
1281
|
+
CANCELLED = "cancelled"
|
|
1282
|
+
}
|
|
1283
|
+
/**
|
|
1284
|
+
* LinkedIn subscription types
|
|
1285
|
+
*/
|
|
1286
|
+
declare enum LinkedInSubscriptionType {
|
|
1287
|
+
BASIC = "basic",
|
|
1288
|
+
PREMIUM = "premium",// Career Premium - 5 InMails/month
|
|
1289
|
+
SALES_NAVIGATOR = "sales_navigator",
|
|
1290
|
+
RECRUITER_LITE = "recruiter_lite",
|
|
1291
|
+
RECRUITER_CORPORATE = "recruiter_corporate"
|
|
1292
|
+
}
|
|
1293
|
+
/**
|
|
1294
|
+
* LinkedIn network distance values
|
|
1295
|
+
*/
|
|
1296
|
+
declare enum NetworkDistance {
|
|
1297
|
+
FIRST_DEGREE = "FIRST_DEGREE",
|
|
1298
|
+
SECOND_DEGREE = "SECOND_DEGREE",
|
|
1299
|
+
THIRD_DEGREE = "THIRD_DEGREE",
|
|
1300
|
+
OUT_OF_NETWORK = "OUT_OF_NETWORK"
|
|
1301
|
+
}
|
|
1302
|
+
/**
|
|
1303
|
+
* Prospect identifier for sync operations
|
|
1304
|
+
*/
|
|
1305
|
+
interface ProspectSyncIdentifier {
|
|
1306
|
+
prospectId?: string | null;
|
|
1307
|
+
email?: string | null;
|
|
1308
|
+
linkedinUrl?: string | null;
|
|
1309
|
+
providerId?: string | null;
|
|
1310
|
+
}
|
|
1311
|
+
/**
|
|
1312
|
+
* Request to sync conversations (prospects REQUIRED)
|
|
1313
|
+
*/
|
|
1314
|
+
interface SyncRequest {
|
|
1315
|
+
channels?: string[] | null;
|
|
1316
|
+
prospects: ProspectSyncIdentifier[];
|
|
1317
|
+
}
|
|
1318
|
+
/**
|
|
1319
|
+
* Request to sync a single prospect
|
|
1320
|
+
*/
|
|
1321
|
+
interface SyncProspectRequest {
|
|
1322
|
+
email?: string | null;
|
|
1323
|
+
linkedinUrl?: string | null;
|
|
1324
|
+
providerId?: string | null;
|
|
1325
|
+
channel?: string | null;
|
|
1326
|
+
}
|
|
1327
|
+
/**
|
|
1328
|
+
* Request to check LinkedIn connection
|
|
1329
|
+
*/
|
|
1330
|
+
interface CheckLinkedInConnectionRequest {
|
|
1331
|
+
linkedinUrl?: string | null;
|
|
1332
|
+
providerId?: string | null;
|
|
1333
|
+
}
|
|
1334
|
+
/**
|
|
1335
|
+
* Request to send LinkedIn outreach
|
|
1336
|
+
*/
|
|
1337
|
+
interface LinkedInSendRequest {
|
|
1338
|
+
prospectProviderId?: string | null;
|
|
1339
|
+
prospectLinkedInUrl?: string | null;
|
|
1340
|
+
prospectName: string;
|
|
1341
|
+
content: string;
|
|
1342
|
+
isPriority?: boolean;
|
|
1343
|
+
enableEscalation?: boolean;
|
|
1344
|
+
escalationDays?: number;
|
|
1345
|
+
projectId?: string | null;
|
|
1346
|
+
prospectExternalId?: string | null;
|
|
1347
|
+
}
|
|
1348
|
+
/**
|
|
1349
|
+
* Request to send a message
|
|
1350
|
+
*/
|
|
1351
|
+
interface SendMessageRequest {
|
|
1352
|
+
channel: string;
|
|
1353
|
+
recipientId: string;
|
|
1354
|
+
content: string;
|
|
1355
|
+
conversationId?: string | null;
|
|
1356
|
+
subject?: string | null;
|
|
1357
|
+
recipientName?: string | null;
|
|
1358
|
+
projectId?: string | null;
|
|
1359
|
+
prospectExternalId?: string | null;
|
|
1360
|
+
}
|
|
1361
|
+
/**
|
|
1362
|
+
* Request to reply to a conversation
|
|
1363
|
+
*/
|
|
1364
|
+
interface SendReplyRequest {
|
|
1365
|
+
content: string;
|
|
1366
|
+
}
|
|
1367
|
+
/**
|
|
1368
|
+
* Prospect connection check for batch operations
|
|
1369
|
+
*/
|
|
1370
|
+
interface ProspectConnectionCheck {
|
|
1371
|
+
prospectId: string;
|
|
1372
|
+
linkedinUrl?: string | null;
|
|
1373
|
+
providerId?: string | null;
|
|
1374
|
+
}
|
|
1375
|
+
/**
|
|
1376
|
+
* Request to batch check LinkedIn connections
|
|
1377
|
+
*/
|
|
1378
|
+
interface BatchCheckConnectionRequest {
|
|
1379
|
+
prospects: ProspectConnectionCheck[];
|
|
1380
|
+
}
|
|
1381
|
+
/**
|
|
1382
|
+
* Request to create a draft
|
|
1383
|
+
*/
|
|
1384
|
+
interface CreateDraftRequest {
|
|
1385
|
+
channel: string;
|
|
1386
|
+
content: string;
|
|
1387
|
+
recipientEmail?: string | null;
|
|
1388
|
+
recipientLinkedinUrl?: string | null;
|
|
1389
|
+
recipientProviderId?: string | null;
|
|
1390
|
+
recipientName?: string | null;
|
|
1391
|
+
conversationId?: string | null;
|
|
1392
|
+
projectId?: string | null;
|
|
1393
|
+
prospectExternalId?: string | null;
|
|
1394
|
+
subject?: string | null;
|
|
1395
|
+
isPriority?: boolean;
|
|
1396
|
+
outreachMethod?: string | null;
|
|
1397
|
+
}
|
|
1398
|
+
/**
|
|
1399
|
+
* Prospect info for batch draft creation
|
|
1400
|
+
*/
|
|
1401
|
+
interface ProspectInfo {
|
|
1402
|
+
externalId: string;
|
|
1040
1403
|
name: string;
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
country?: string;
|
|
1053
|
-
/** Primary email address */
|
|
1054
|
-
email?: string;
|
|
1055
|
-
/** List of email addresses (up to 3) */
|
|
1056
|
-
emails: string[];
|
|
1057
|
-
/** LinkedIn profile URL */
|
|
1058
|
-
linkedinUrl?: string;
|
|
1059
|
-
/** Years of professional experience */
|
|
1060
|
-
yearsExperience?: number;
|
|
1061
|
-
/** List of skills (up to 15) */
|
|
1062
|
-
skills: string[];
|
|
1063
|
-
/** Seniority level (e.g., "Senior", "Director", "VP") */
|
|
1064
|
-
seniorityLevel?: string;
|
|
1065
|
-
/** Whether person is identified as a decision maker */
|
|
1066
|
-
isDecisionMaker: boolean;
|
|
1067
|
-
/** Number of LinkedIn connections */
|
|
1068
|
-
connectionsCount?: number;
|
|
1069
|
-
/** Whether person recently changed jobs */
|
|
1070
|
-
recentlyChangedJobs: boolean;
|
|
1071
|
-
/** Data source identifier ("PDL", "CORESIGNAL", or "CRUST_DATA") */
|
|
1072
|
-
source: string;
|
|
1073
|
-
/** Confidence score (0.0-1.0) if available */
|
|
1074
|
-
confidenceScore?: number;
|
|
1075
|
-
/** Salary range projection (CoreSignal only) */
|
|
1076
|
-
salaryRange?: SalaryRange;
|
|
1077
|
-
/** Number of certifications (CoreSignal only) */
|
|
1078
|
-
certificationsCount?: number;
|
|
1079
|
-
/** List of languages spoken (CoreSignal only) */
|
|
1080
|
-
languages?: string[];
|
|
1081
|
-
/** List of education degrees (CoreSignal only, up to 3) */
|
|
1082
|
-
educationDegrees?: string[];
|
|
1404
|
+
email?: string | null;
|
|
1405
|
+
linkedinUrl?: string | null;
|
|
1406
|
+
providerId?: string | null;
|
|
1407
|
+
currentTitle?: string | null;
|
|
1408
|
+
currentCompany?: string | null;
|
|
1409
|
+
isPriority?: boolean;
|
|
1410
|
+
selectedChannel?: string | null;
|
|
1411
|
+
/** Outreach method to use for this prospect */
|
|
1412
|
+
outreachMethod?: 'direct_message' | 'connection_request' | 'inmail' | 'email' | null;
|
|
1413
|
+
/** Whether the user is already connected to this prospect on LinkedIn */
|
|
1414
|
+
isConnected?: boolean | null;
|
|
1083
1415
|
}
|
|
1084
1416
|
/**
|
|
1085
|
-
* Request
|
|
1417
|
+
* Request to create batch drafts
|
|
1086
1418
|
*/
|
|
1087
|
-
interface
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
query: string;
|
|
1096
|
-
/**
|
|
1097
|
-
* Maximum number of results to return.
|
|
1098
|
-
* Range: 1-100
|
|
1099
|
-
* Default: 20
|
|
1100
|
-
*/
|
|
1101
|
-
limit?: number;
|
|
1102
|
-
/**
|
|
1103
|
-
* Specific data sources to use for the search.
|
|
1104
|
-
* If not provided, all available sources will be used.
|
|
1105
|
-
* Valid values: "PDL", "CORESIGNAL", "CRUST_DATA"
|
|
1106
|
-
*
|
|
1107
|
-
* Note: The API accepts string values. SDKs should use enums for type safety
|
|
1108
|
-
* but serialize them as strings when sending the request.
|
|
1109
|
-
*/
|
|
1110
|
-
dataSources?: PeopleDataSource[];
|
|
1419
|
+
interface BatchDraftRequest {
|
|
1420
|
+
prospects: ProspectInfo[];
|
|
1421
|
+
projectId: string;
|
|
1422
|
+
channel?: string;
|
|
1423
|
+
subjectTemplate?: string | null;
|
|
1424
|
+
contentTemplate?: string | null;
|
|
1425
|
+
useAiGeneration?: boolean;
|
|
1426
|
+
aiContext?: Record<string, any> | null;
|
|
1111
1427
|
}
|
|
1112
1428
|
/**
|
|
1113
|
-
*
|
|
1429
|
+
* Request to batch send drafts
|
|
1114
1430
|
*/
|
|
1115
|
-
|
|
1431
|
+
interface BatchSendRequest {
|
|
1432
|
+
draftIds: string[];
|
|
1433
|
+
sendRatePerDay?: number;
|
|
1434
|
+
}
|
|
1116
1435
|
/**
|
|
1117
|
-
*
|
|
1118
|
-
* Used in applied_filters response.
|
|
1436
|
+
* Request to update LinkedIn subscription
|
|
1119
1437
|
*/
|
|
1120
|
-
interface
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
/**
|
|
1124
|
-
* Logic operator:
|
|
1125
|
-
* - "or": ANY value matches (for alternatives like "SF or NYC")
|
|
1126
|
-
* - "and": ALL values must match (for "must have Python AND Java")
|
|
1127
|
-
* - "should": Optional/preferred (for "preferably PhD")
|
|
1128
|
-
*/
|
|
1129
|
-
logic: FilterLogic;
|
|
1438
|
+
interface UpdateLinkedInSubscriptionRequest {
|
|
1439
|
+
subscriptionType: LinkedInSubscriptionType | string;
|
|
1440
|
+
inmailCredits?: number | null;
|
|
1130
1441
|
}
|
|
1131
1442
|
/**
|
|
1132
|
-
*
|
|
1133
|
-
* Contains extracted filters from the natural language query.
|
|
1443
|
+
* Statistics from a sync operation
|
|
1134
1444
|
*/
|
|
1135
|
-
interface
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
/** Company names */
|
|
1143
|
-
companies?: FilterValue;
|
|
1144
|
-
/** Technical skills */
|
|
1145
|
-
skills?: FilterValue;
|
|
1146
|
-
/** Minimum years of professional experience */
|
|
1147
|
-
minYearsExperience?: number;
|
|
1148
|
-
/** Seniority levels (entry/junior/mid/senior/lead/principal/staff/director/vp/executive) */
|
|
1149
|
-
seniorityLevels?: FilterValue;
|
|
1150
|
-
/** Education levels (bachelors/masters/phd/mba) */
|
|
1151
|
-
educationLevels?: FilterValue;
|
|
1152
|
-
/** Industries/sectors */
|
|
1153
|
-
industries?: FilterValue;
|
|
1445
|
+
interface SyncStats {
|
|
1446
|
+
synced: number;
|
|
1447
|
+
created: number;
|
|
1448
|
+
updated: number;
|
|
1449
|
+
errors: number;
|
|
1450
|
+
prospectsRequested?: number;
|
|
1451
|
+
prospectsFound?: number;
|
|
1154
1452
|
}
|
|
1155
1453
|
/**
|
|
1156
|
-
* Response
|
|
1454
|
+
* Response from sync operations
|
|
1157
1455
|
*/
|
|
1158
|
-
interface
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1456
|
+
interface SyncJobResponse {
|
|
1457
|
+
jobId: string;
|
|
1458
|
+
status: SyncJobStatus | string;
|
|
1459
|
+
startedAt?: string | null;
|
|
1460
|
+
completedAt?: string | null;
|
|
1461
|
+
stats?: SyncStats | null;
|
|
1462
|
+
error?: string | null;
|
|
1463
|
+
}
|
|
1464
|
+
/**
|
|
1465
|
+
* Result for a single prospect sync
|
|
1466
|
+
*/
|
|
1467
|
+
interface ProspectSyncResult {
|
|
1468
|
+
prospectId?: string | null;
|
|
1469
|
+
email?: string | null;
|
|
1470
|
+
linkedinUrl?: string | null;
|
|
1471
|
+
conversationId?: string | null;
|
|
1472
|
+
messagesSynced: number;
|
|
1473
|
+
status: string;
|
|
1474
|
+
error?: string | null;
|
|
1475
|
+
}
|
|
1476
|
+
/**
|
|
1477
|
+
* Response from single prospect sync
|
|
1478
|
+
*/
|
|
1479
|
+
interface SyncProspectResponse {
|
|
1480
|
+
result: ProspectSyncResult;
|
|
1481
|
+
conversation?: ConversationSummary | null;
|
|
1482
|
+
}
|
|
1483
|
+
/**
|
|
1484
|
+
* LinkedIn connection status
|
|
1485
|
+
*/
|
|
1486
|
+
interface LinkedInConnectionStatus {
|
|
1487
|
+
connected: boolean;
|
|
1488
|
+
providerId?: string | null;
|
|
1489
|
+
chatId?: string | null;
|
|
1490
|
+
canMessage: boolean;
|
|
1491
|
+
canInmail: boolean;
|
|
1492
|
+
isOpenProfile?: boolean;
|
|
1493
|
+
networkDistance?: NetworkDistance | null;
|
|
1494
|
+
}
|
|
1495
|
+
/**
|
|
1496
|
+
* Connection summary for batch operations
|
|
1497
|
+
*/
|
|
1498
|
+
interface ConnectionSummary {
|
|
1499
|
+
total: number;
|
|
1500
|
+
connected: number;
|
|
1501
|
+
notConnected: number;
|
|
1502
|
+
}
|
|
1503
|
+
/**
|
|
1504
|
+
* Response from batch connection check
|
|
1505
|
+
*/
|
|
1506
|
+
interface BatchConnectionStatusResponse {
|
|
1507
|
+
results: Record<string, LinkedInConnectionStatus>;
|
|
1508
|
+
summary: ConnectionSummary;
|
|
1509
|
+
}
|
|
1510
|
+
/**
|
|
1511
|
+
* LinkedIn credits response
|
|
1512
|
+
*/
|
|
1513
|
+
interface LinkedInCreditsResponse {
|
|
1514
|
+
subscriptionType?: string | null;
|
|
1515
|
+
creditsRemaining?: number | null;
|
|
1516
|
+
creditsUpdatedAt?: string | null;
|
|
1517
|
+
isRealTime?: boolean;
|
|
1518
|
+
}
|
|
1519
|
+
/**
|
|
1520
|
+
* Conversation summary
|
|
1521
|
+
*/
|
|
1522
|
+
interface ConversationSummary {
|
|
1523
|
+
id: string;
|
|
1524
|
+
channel: string;
|
|
1525
|
+
outreachMethod?: string | null;
|
|
1526
|
+
status: string;
|
|
1527
|
+
prospectName: string;
|
|
1528
|
+
prospectEmail?: string | null;
|
|
1529
|
+
prospectCompany?: string | null;
|
|
1530
|
+
prospectTitle?: string | null;
|
|
1531
|
+
lastMessageAt?: string | null;
|
|
1532
|
+
lastMessagePreview?: string | null;
|
|
1533
|
+
messageCount: number;
|
|
1534
|
+
aiSuggestedResponse?: string | null;
|
|
1535
|
+
isLinkedinConnected?: boolean | null;
|
|
1536
|
+
networkDistance?: NetworkDistance | null;
|
|
1537
|
+
connectionRequestSentAt?: string | null;
|
|
1538
|
+
connectionAcceptedAt?: string | null;
|
|
1539
|
+
escalationScheduledFor?: string | null;
|
|
1540
|
+
prospectExternalId?: string | null;
|
|
1541
|
+
projectId?: string | null;
|
|
1542
|
+
}
|
|
1543
|
+
/**
|
|
1544
|
+
* Message response
|
|
1545
|
+
*/
|
|
1546
|
+
interface MessageResponse {
|
|
1547
|
+
id: string;
|
|
1548
|
+
messageType?: string;
|
|
1549
|
+
direction: string;
|
|
1550
|
+
content: string;
|
|
1551
|
+
subject?: string | null;
|
|
1552
|
+
senderName: string;
|
|
1553
|
+
sentAt: string;
|
|
1554
|
+
aiGenerated?: boolean;
|
|
1555
|
+
}
|
|
1556
|
+
/**
|
|
1557
|
+
* Conversation detail with messages
|
|
1558
|
+
*/
|
|
1559
|
+
interface ConversationDetail {
|
|
1560
|
+
conversation: ConversationSummary;
|
|
1561
|
+
messages: MessageResponse[];
|
|
1562
|
+
}
|
|
1563
|
+
/**
|
|
1564
|
+
* Email thread summary
|
|
1565
|
+
*/
|
|
1566
|
+
interface EmailThreadSummary {
|
|
1567
|
+
threadId: string;
|
|
1568
|
+
subject?: string | null;
|
|
1569
|
+
lastMessageAt: string;
|
|
1570
|
+
messageCount: number;
|
|
1571
|
+
preview?: string | null;
|
|
1572
|
+
isLumnisInitiated: boolean;
|
|
1573
|
+
}
|
|
1574
|
+
/**
|
|
1575
|
+
* Draft response
|
|
1576
|
+
*/
|
|
1577
|
+
interface DraftResponse {
|
|
1578
|
+
id: string;
|
|
1579
|
+
status: string;
|
|
1580
|
+
content: string;
|
|
1581
|
+
createdAt: string;
|
|
1582
|
+
prospectExternalId?: string | null;
|
|
1583
|
+
conversationId?: string | null;
|
|
1584
|
+
/** Outreach method used for this draft: 'connection_request' | 'direct_message' | 'inmail' | 'email' */
|
|
1585
|
+
outreachMethod?: 'direct_message' | 'connection_request' | 'inmail' | 'email' | null;
|
|
1586
|
+
}
|
|
1587
|
+
/**
|
|
1588
|
+
* Response from batch draft creation
|
|
1589
|
+
*/
|
|
1590
|
+
interface BatchDraftResponse {
|
|
1591
|
+
drafts: DraftResponse[];
|
|
1592
|
+
created: number;
|
|
1593
|
+
errors: number;
|
|
1594
|
+
errorDetails?: Array<Record<string, any>> | null;
|
|
1595
|
+
}
|
|
1596
|
+
/**
|
|
1597
|
+
* Send result (returned by reply, linkedin/send, drafts endpoints)
|
|
1598
|
+
*/
|
|
1599
|
+
interface SendResult {
|
|
1600
|
+
success: boolean;
|
|
1601
|
+
draftId?: string | null;
|
|
1602
|
+
conversationId?: string | null;
|
|
1603
|
+
messageId?: string | null;
|
|
1604
|
+
outreachMethod?: string | null;
|
|
1605
|
+
queued?: boolean | null;
|
|
1606
|
+
isFreeInmail?: boolean | null;
|
|
1607
|
+
error?: string | null;
|
|
1608
|
+
errorCode?: string | null;
|
|
1609
|
+
prospectExternalId?: string | null;
|
|
1610
|
+
}
|
|
1611
|
+
/**
|
|
1612
|
+
* Response from the generic send message endpoint
|
|
1613
|
+
*/
|
|
1614
|
+
interface SendMessageResponse {
|
|
1615
|
+
success: boolean;
|
|
1616
|
+
messageId?: string | null;
|
|
1617
|
+
conversationId?: string | null;
|
|
1618
|
+
externalId?: string | null;
|
|
1619
|
+
}
|
|
1620
|
+
/**
|
|
1621
|
+
* Response from batch send operation
|
|
1622
|
+
*/
|
|
1623
|
+
interface BatchSendResponse {
|
|
1624
|
+
results: SendResult[];
|
|
1625
|
+
sent: number;
|
|
1626
|
+
failed: number;
|
|
1627
|
+
queued: number;
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
declare class MessagingResource {
|
|
1631
|
+
private readonly http;
|
|
1632
|
+
constructor(http: Http);
|
|
1633
|
+
/**
|
|
1634
|
+
* Sync conversations from connected providers for specific prospects.
|
|
1635
|
+
* Prospects list is REQUIRED.
|
|
1636
|
+
*/
|
|
1637
|
+
syncConversations(userId: string, request: SyncRequest): Promise<SyncJobResponse>;
|
|
1638
|
+
/**
|
|
1639
|
+
* Sync conversation for a single prospect on-demand.
|
|
1640
|
+
* Use when viewing a prospect's detail page.
|
|
1641
|
+
*/
|
|
1642
|
+
syncProspect(userId: string, request: SyncProspectRequest): Promise<SyncProspectResponse>;
|
|
1643
|
+
/**
|
|
1644
|
+
* Get sync job status
|
|
1645
|
+
*/
|
|
1646
|
+
getSyncStatus(jobId: string): Promise<SyncJobResponse>;
|
|
1647
|
+
/**
|
|
1648
|
+
* List conversations with filtering
|
|
1649
|
+
*/
|
|
1650
|
+
listConversations(userId: string, params?: {
|
|
1651
|
+
status?: string;
|
|
1652
|
+
channel?: string;
|
|
1653
|
+
projectId?: string;
|
|
1654
|
+
networkDistance?: NetworkDistance | null;
|
|
1655
|
+
limit?: number;
|
|
1656
|
+
offset?: number;
|
|
1657
|
+
}): Promise<ConversationSummary[]>;
|
|
1658
|
+
/**
|
|
1659
|
+
* Get all conversations for a project
|
|
1660
|
+
*/
|
|
1661
|
+
listConversationsByProject(projectId: string, userId: string, params?: {
|
|
1662
|
+
limit?: number;
|
|
1663
|
+
offset?: number;
|
|
1664
|
+
}): Promise<ConversationSummary[]>;
|
|
1665
|
+
/**
|
|
1666
|
+
* Get conversation with messages
|
|
1667
|
+
*/
|
|
1668
|
+
getConversation(conversationId: string, userId: string, params?: {
|
|
1669
|
+
fetchLive?: boolean;
|
|
1670
|
+
}): Promise<ConversationDetail>;
|
|
1671
|
+
/**
|
|
1672
|
+
* Send a message (creates new conversation or adds to existing)
|
|
1673
|
+
*/
|
|
1674
|
+
sendMessage(userId: string, request: SendMessageRequest): Promise<SendMessageResponse>;
|
|
1675
|
+
/**
|
|
1676
|
+
* Reply to an existing conversation
|
|
1677
|
+
*/
|
|
1678
|
+
replyToConversation(conversationId: string, userId: string, request: SendReplyRequest): Promise<SendResult>;
|
|
1679
|
+
/**
|
|
1680
|
+
* Get all email threads with a specific person
|
|
1681
|
+
*/
|
|
1682
|
+
getEmailThreads(emailAddress: string, userId: string, params?: {
|
|
1683
|
+
limit?: number;
|
|
1684
|
+
}): Promise<EmailThreadSummary[]>;
|
|
1685
|
+
/**
|
|
1686
|
+
* Check if user is connected to a prospect on LinkedIn
|
|
1687
|
+
*/
|
|
1688
|
+
checkLinkedInConnection(userId: string, request: CheckLinkedInConnectionRequest): Promise<LinkedInConnectionStatus>;
|
|
1689
|
+
/**
|
|
1690
|
+
* Batch check connection status for multiple prospects
|
|
1691
|
+
*/
|
|
1692
|
+
batchCheckLinkedInConnections(userId: string, request: BatchCheckConnectionRequest): Promise<BatchConnectionStatusResponse>;
|
|
1693
|
+
/**
|
|
1694
|
+
* Smart LinkedIn outreach with automatic method selection
|
|
1695
|
+
*/
|
|
1696
|
+
sendLinkedInOutreach(userId: string, request: LinkedInSendRequest): Promise<SendResult>;
|
|
1697
|
+
/**
|
|
1698
|
+
* Get InMail credit information.
|
|
1699
|
+
* By default returns cached data. Set forceRefresh=true to fetch real-time data from Unipile API.
|
|
1700
|
+
*/
|
|
1701
|
+
getLinkedInCredits(userId: string, options?: {
|
|
1702
|
+
forceRefresh?: boolean;
|
|
1703
|
+
}): Promise<LinkedInCreditsResponse>;
|
|
1704
|
+
/**
|
|
1705
|
+
* Force refresh InMail credits from Unipile API.
|
|
1706
|
+
* Fetches real-time credit balance from provider and updates cache.
|
|
1707
|
+
*/
|
|
1708
|
+
refreshLinkedInCredits(userId: string): Promise<LinkedInCreditsResponse>;
|
|
1709
|
+
/**
|
|
1710
|
+
* Update LinkedIn subscription type and credits
|
|
1711
|
+
*/
|
|
1712
|
+
updateLinkedInSubscription(userId: string, request: UpdateLinkedInSubscriptionRequest): Promise<{
|
|
1713
|
+
success: boolean;
|
|
1714
|
+
}>;
|
|
1715
|
+
/**
|
|
1716
|
+
* Create a single draft message
|
|
1717
|
+
*/
|
|
1718
|
+
createDraft(userId: string, request: CreateDraftRequest): Promise<DraftResponse>;
|
|
1719
|
+
/**
|
|
1720
|
+
* Create drafts for multiple prospects with AI generation
|
|
1721
|
+
*/
|
|
1722
|
+
createBatchDrafts(userId: string, request: BatchDraftRequest): Promise<BatchDraftResponse>;
|
|
1723
|
+
/**
|
|
1724
|
+
* Approve and send a single draft
|
|
1725
|
+
*/
|
|
1726
|
+
sendDraft(draftId: string, userId: string): Promise<SendResult>;
|
|
1727
|
+
/**
|
|
1728
|
+
* Send multiple drafts with rate limiting
|
|
1729
|
+
*/
|
|
1730
|
+
sendBatchDrafts(userId: string, request: BatchSendRequest): Promise<BatchSendResponse>;
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
declare class ModelPreferencesResource {
|
|
1734
|
+
private readonly http;
|
|
1735
|
+
constructor(http: Http);
|
|
1736
|
+
/**
|
|
1737
|
+
* Get all model preferences for the tenant
|
|
1738
|
+
*/
|
|
1739
|
+
get(includeDefaults?: boolean): Promise<TenantModelPreferencesResponse>;
|
|
1740
|
+
/**
|
|
1741
|
+
* Update multiple model preferences in a single request
|
|
1742
|
+
*/
|
|
1743
|
+
updateBulk(data: ModelPreferencesBulkUpdate): Promise<TenantModelPreferencesResponse>;
|
|
1744
|
+
/**
|
|
1745
|
+
* Update a specific model type preference
|
|
1746
|
+
*/
|
|
1747
|
+
update(modelType: ModelType, data: ModelPreferenceCreate): Promise<TenantModelPreference>;
|
|
1748
|
+
/**
|
|
1749
|
+
* Delete a model preference to revert to system default
|
|
1750
|
+
*/
|
|
1751
|
+
delete(modelType: ModelType): Promise<void>;
|
|
1752
|
+
/**
|
|
1753
|
+
* Check which models are available based on API key configuration
|
|
1754
|
+
*/
|
|
1755
|
+
checkAvailability(models: ModelPreferenceCreate[]): Promise<ModelAvailability[]>;
|
|
1756
|
+
/**
|
|
1757
|
+
* List all model preferences (alias for get)
|
|
1758
|
+
*/
|
|
1759
|
+
list(params?: {
|
|
1760
|
+
includeDefaults?: boolean;
|
|
1761
|
+
}): Promise<TenantModelPreferencesResponse>;
|
|
1169
1762
|
}
|
|
1170
1763
|
|
|
1171
1764
|
declare class PeopleResource {
|
|
@@ -1257,6 +1850,23 @@ declare class ResponsesResource {
|
|
|
1257
1850
|
listFeedback(responseId: string, options?: {
|
|
1258
1851
|
progressId?: string;
|
|
1259
1852
|
}): Promise<FeedbackListResponse>;
|
|
1853
|
+
/**
|
|
1854
|
+
* Perform a quick people search using the specialized quick_people_search agent
|
|
1855
|
+
* @param query - Natural language search query (e.g., "Find engineers at Google in SF")
|
|
1856
|
+
* @param options - Optional search parameters
|
|
1857
|
+
* @param options.limit - Maximum number of results (1-100, default: 20)
|
|
1858
|
+
* @param options.dataSources - Specific data sources to use: ["PDL", "CORESIGNAL", "CRUST_DATA"]
|
|
1859
|
+
* @returns Response with structured_response containing:
|
|
1860
|
+
* - candidates: List of person results
|
|
1861
|
+
* - totalFound: Total unique candidates found
|
|
1862
|
+
* - appliedFilters: Extracted search filters
|
|
1863
|
+
* - executionTimeMs: Search duration
|
|
1864
|
+
* - dataSourcesUsed: Which sources were queried
|
|
1865
|
+
*/
|
|
1866
|
+
quickPeopleSearch(query: string, options?: {
|
|
1867
|
+
limit?: number;
|
|
1868
|
+
dataSources?: string[];
|
|
1869
|
+
}): Promise<CreateResponseResponse>;
|
|
1260
1870
|
}
|
|
1261
1871
|
|
|
1262
1872
|
declare class SkillsResource {
|
|
@@ -1449,6 +2059,7 @@ declare class LumnisClient {
|
|
|
1449
2059
|
readonly mcpServers: MCPServersResource;
|
|
1450
2060
|
readonly skills: SkillsResource;
|
|
1451
2061
|
readonly people: PeopleResource;
|
|
2062
|
+
readonly messaging: MessagingResource;
|
|
1452
2063
|
private readonly _scopedUserId?;
|
|
1453
2064
|
private readonly _defaultScope;
|
|
1454
2065
|
constructor(options?: LumnisClientOptions);
|
|
@@ -1483,6 +2094,16 @@ declare class LumnisClient {
|
|
|
1483
2094
|
setAppEnabled(appName: string, enabled: boolean, provider?: string): Promise<UpdateAppStatusResponse>;
|
|
1484
2095
|
initiateConnection(params: Parameters<IntegrationsResource['initiateConnection']>[0]): Promise<InitiateConnectionResponse>;
|
|
1485
2096
|
getConnectionStatus(userId: string, appName: string, provider?: string): Promise<ConnectionStatusResponse>;
|
|
2097
|
+
getConnectionStatus(userId: string, appName: string, options?: {
|
|
2098
|
+
provider?: string;
|
|
2099
|
+
includeEnabled?: boolean;
|
|
2100
|
+
}): Promise<ConnectionStatusResponse>;
|
|
2101
|
+
getConnectionsBatch(params: {
|
|
2102
|
+
userId: string;
|
|
2103
|
+
appNames: string[];
|
|
2104
|
+
provider?: string;
|
|
2105
|
+
includeEnabledStatus?: boolean;
|
|
2106
|
+
}): Promise<BatchConnectionResponse>;
|
|
1486
2107
|
listConnections(userId: string, params?: {
|
|
1487
2108
|
appFilter?: string;
|
|
1488
2109
|
provider?: string;
|
|
@@ -1552,6 +2173,79 @@ declare class SourcesNotAvailableError extends ValidationError {
|
|
|
1552
2173
|
availableSources: string[];
|
|
1553
2174
|
constructor(message: string, availableSources: string[]);
|
|
1554
2175
|
}
|
|
2176
|
+
declare class MessagingAPIError extends LumnisError {
|
|
2177
|
+
constructor(message: string, options?: LumnisErrorOptions);
|
|
2178
|
+
}
|
|
2179
|
+
declare class MessagingNotFoundError extends MessagingAPIError {
|
|
2180
|
+
constructor(message: string, options?: LumnisErrorOptions);
|
|
2181
|
+
}
|
|
2182
|
+
declare class MessagingValidationError extends MessagingAPIError {
|
|
2183
|
+
constructor(message: string, options?: LumnisErrorOptions);
|
|
2184
|
+
}
|
|
2185
|
+
declare class MessagingSendError extends MessagingAPIError {
|
|
2186
|
+
constructor(message: string, options?: LumnisErrorOptions);
|
|
2187
|
+
}
|
|
2188
|
+
declare class MessagingConnectionError extends MessagingAPIError {
|
|
2189
|
+
constructor(message: string, options?: LumnisErrorOptions);
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
/**
|
|
2193
|
+
* Webhook event types
|
|
2194
|
+
*/
|
|
2195
|
+
type WebhookEvent = 'message.sent' | 'message.received' | 'connection.accepted';
|
|
2196
|
+
/**
|
|
2197
|
+
* Base webhook payload structure
|
|
2198
|
+
*/
|
|
2199
|
+
interface WebhookPayload {
|
|
2200
|
+
event: WebhookEvent;
|
|
2201
|
+
data: MessageSentData | MessageReceivedData | ConnectionAcceptedData;
|
|
2202
|
+
timestamp: string;
|
|
2203
|
+
}
|
|
2204
|
+
/**
|
|
2205
|
+
* Data payload for message.sent event
|
|
2206
|
+
* Sent when a queued message is actually sent by the queue processor
|
|
2207
|
+
*/
|
|
2208
|
+
interface MessageSentData {
|
|
2209
|
+
conversationId: string;
|
|
2210
|
+
prospectExternalId: string;
|
|
2211
|
+
projectId?: string | null;
|
|
2212
|
+
channel: string;
|
|
2213
|
+
outreachMethod: string;
|
|
2214
|
+
lastMessage: {
|
|
2215
|
+
id?: string | null;
|
|
2216
|
+
content?: string | null;
|
|
2217
|
+
senderType: 'user';
|
|
2218
|
+
sentAt: string;
|
|
2219
|
+
};
|
|
2220
|
+
}
|
|
2221
|
+
/**
|
|
2222
|
+
* Data payload for message.received event
|
|
2223
|
+
* Sent when a prospect replies to a message
|
|
2224
|
+
*/
|
|
2225
|
+
interface MessageReceivedData {
|
|
2226
|
+
conversationId: string;
|
|
2227
|
+
prospectExternalId: string;
|
|
2228
|
+
projectId?: string | null;
|
|
2229
|
+
channel: string;
|
|
2230
|
+
lastMessage: {
|
|
2231
|
+
id?: string | null;
|
|
2232
|
+
content?: string | null;
|
|
2233
|
+
senderType: 'prospect';
|
|
2234
|
+
senderName?: string | null;
|
|
2235
|
+
sentAt: string;
|
|
2236
|
+
};
|
|
2237
|
+
}
|
|
2238
|
+
/**
|
|
2239
|
+
* Data payload for connection.accepted event
|
|
2240
|
+
* Sent when a LinkedIn connection request is accepted
|
|
2241
|
+
*/
|
|
2242
|
+
interface ConnectionAcceptedData {
|
|
2243
|
+
conversationId: string;
|
|
2244
|
+
prospectExternalId: string;
|
|
2245
|
+
projectId?: string | null;
|
|
2246
|
+
prospectName?: string | null;
|
|
2247
|
+
acceptedAt: string;
|
|
2248
|
+
}
|
|
1555
2249
|
|
|
1556
2250
|
/**
|
|
1557
2251
|
* Utility functions for displaying progress updates
|
|
@@ -1603,5 +2297,28 @@ declare class ProgressTracker {
|
|
|
1603
2297
|
reset(): void;
|
|
1604
2298
|
}
|
|
1605
2299
|
|
|
2300
|
+
/**
|
|
2301
|
+
* Verify webhook signature using HMAC SHA-256
|
|
2302
|
+
*
|
|
2303
|
+
* @param payload - Raw request body as string
|
|
2304
|
+
* @param signature - Signature from x-webhook-signature header
|
|
2305
|
+
* @param secret - Shared secret key (must match backend's FRONTEND_WEBHOOK_SECRET)
|
|
2306
|
+
* @returns true if signature is valid, false otherwise
|
|
2307
|
+
*
|
|
2308
|
+
* @example
|
|
2309
|
+
* ```typescript
|
|
2310
|
+
* const isValid = verifyWebhookSignature(
|
|
2311
|
+
* requestBody,
|
|
2312
|
+
* request.headers.get('x-webhook-signature') || '',
|
|
2313
|
+
* process.env.MESSAGING_WEBHOOK_SECRET!
|
|
2314
|
+
* )
|
|
2315
|
+
*
|
|
2316
|
+
* if (!isValid) {
|
|
2317
|
+
* return NextResponse.json({ error: 'Invalid signature' }, { status: 401 })
|
|
2318
|
+
* }
|
|
2319
|
+
* ```
|
|
2320
|
+
*/
|
|
2321
|
+
declare function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean;
|
|
2322
|
+
|
|
1606
2323
|
export = LumnisClient;
|
|
1607
|
-
export { type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BillingStatus, type BulkDeleteRequest, type BulkDeleteResponse, type BulkUploadResponse, type CancelResponseResponse, type CheckAppEnabledParams, type ChunkingStrategy, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ContentType, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type DatabaseStatus, type DeleteApiKeyResponse, type DisconnectRequest, type DisconnectResponse, type DuplicateHandling, type Email, type ErrorResponse, ExternalAPIKeysResource, type ExternalApiKeyResponse, type FeedbackListResponse, type FeedbackObject, type FeedbackType, type FileAttachment, type FileChunk, type FileContentResponse, type FileListResponse, type FileMetadata, type FileScope, type FileScopeUpdateRequest, type FileSearchRequest, type FileSearchResponse, type FileSearchResult, type FileStatisticsResponse, type FileUploadResponse, FilesResource, type FilterLogic, type FilterValue, type GetConnectionStatusParams, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, IntegrationsResource, InternalServerError, type ListProvidersResponse, LocalFileNotSupportedError, LumnisClient, type LumnisClientOptions, LumnisError, type LumnisErrorOptions, type MCPScope, type MCPServerCreateRequest, type MCPServerListResponse, type MCPServerResponse, type MCPServerUpdateRequest, MCPServersResource, type MCPToolListResponse, type MCPToolResponse, type MCPTransport, type Message, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NoDataSourcesError, NotFoundError, type PaginationInfo, type PaginationParams, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, ProviderType, RateLimitError, type RateLimitErrorOptions, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, type SalaryRange, type Scope, type SelectedSkill, type SkillAnalyticsRequest, type SkillEffectivenessMetrics, type SkillGuidelineBase, type SkillGuidelineCreate, type SkillGuidelineListResponse, type SkillGuidelineResponse, type SkillGuidelineUpdate, type SkillRetrievalMetadata, type SkillUsageBase, type SkillUsageCreate, type SkillUsageListResponse, type SkillUsageResponse, type SkillUsageUpdate, SkillsResource, SourcesNotAvailableError, type StoreApiKeyRequest, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type UUID, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, ValidationError, displayProgress, formatProgressEntry };
|
|
2324
|
+
export { type AgentConfig, type ApiKeyMode, type ApiKeyModeRequest, type ApiKeyModeResponse, type ApiProvider, type AppEnabledResponse, type AppliedFilters, type AppsListResponse, type ArtifactObject, type ArtifactsListResponse, AuthenticationError, type BaseResource, type BatchCheckConnectionRequest, type BatchConnectionRequest, type BatchConnectionResponse, type BatchConnectionStatus, type BatchConnectionStatusResponse, type BatchDraftRequest, type BatchDraftResponse, type BatchSendRequest, type BatchSendResponse, type BillingStatus, type BulkDeleteRequest, type BulkDeleteResponse, type BulkUploadResponse, type CancelResponseResponse, ChannelType, type CheckAppEnabledParams, type CheckLinkedInConnectionRequest, type ChunkingStrategy, type ConnectionAcceptedData, type ConnectionCallbackRequest, type ConnectionCallbackResponse, type ConnectionInfo, type ConnectionStatus, type ConnectionStatusResponse, type ConnectionSummary, type ContentType, type ConversationDetail, ConversationStatus, type ConversationSummary, type CreateDraftRequest, type CreateFeedbackRequest, type CreateFeedbackResponse, type CreateResponseRequest, type CreateResponseResponse, type CreateThreadRequest, type DatabaseStatus, type DeleteApiKeyResponse, type DisconnectRequest, type DisconnectResponse, type DraftResponse, DraftStatus, type DuplicateHandling, type Email, type EmailThreadSummary, type ErrorResponse, ExternalAPIKeysResource, type ExternalApiKeyResponse, type FeedbackListResponse, type FeedbackObject, type FeedbackType, type FileAttachment, type FileChunk, type FileContentResponse, type FileListResponse, type FileMetadata, type FileScope, type FileScopeUpdateRequest, type FileSearchRequest, type FileSearchResponse, type FileSearchResult, type FileStatisticsResponse, type FileUploadResponse, FilesResource, type FilterLogic, type FilterValue, type GetConnectionStatusParams, type GetToolsRequest, type GetToolsResponse, type GetUserConnectionsParams, type InitiateConnectionRequest, type InitiateConnectionResponse, IntegrationsResource, InternalServerError, type LinkedInConnectionStatus, type LinkedInCreditsResponse, type LinkedInSendRequest, LinkedInSubscriptionType, type ListProvidersResponse, LocalFileNotSupportedError, LumnisClient, type LumnisClientOptions, LumnisError, type LumnisErrorOptions, type MCPScope, type MCPServerCreateRequest, type MCPServerListResponse, type MCPServerResponse, type MCPServerUpdateRequest, MCPServersResource, type MCPToolListResponse, type MCPToolResponse, type MCPTransport, type Message, type MessageReceivedData, type MessageResponse, type MessageSentData, MessageType, MessagingAPIError, MessagingConnectionError, MessagingNotFoundError, MessagingResource, MessagingSendError, MessagingValidationError, type ModelAvailability, type ModelOverrides, type ModelPreferenceCreate, type ModelPreferencesBulkUpdate, ModelPreferencesResource, type ModelProvider, type ModelType, NetworkDistance, NoDataSourcesError, NotFoundError, OutreachMethod, type PaginationInfo, type PaginationParams, PeopleDataSource, PeopleResource, type PeopleSearchRequest, type PeopleSearchResponse, type PersonResult, type Plan, type ProcessingStatus, type ProcessingStatusResponse, type ProgressEntry, ProgressTracker, type ProspectConnectionCheck, type ProspectInfo, type ProspectSyncIdentifier, type ProspectSyncResult, ProviderType, QueueItemStatus, type QuickPeopleSearchOutput, RateLimitError, type RateLimitErrorOptions, type ResponseArtifact, type ResponseListResponse, type ResponseObject, type ResponseStatus, ResponsesResource, type SalaryRange, type Scope, type SelectedSkill, type SendMessageRequest, type SendMessageResponse, type SendReplyRequest, type SendResult, type SkillAnalyticsRequest, type SkillEffectivenessMetrics, type SkillGuidelineBase, type SkillGuidelineCreate, type SkillGuidelineListResponse, type SkillGuidelineResponse, type SkillGuidelineUpdate, type SkillRetrievalMetadata, type SkillUsageBase, type SkillUsageCreate, type SkillUsageListResponse, type SkillUsageResponse, type SkillUsageUpdate, SkillsResource, SourcesNotAvailableError, type SpecializedAgentParams, type SpecializedAgentType, type StoreApiKeyRequest, type SyncJobResponse, SyncJobStatus, type SyncProspectRequest, type SyncProspectResponse, type SyncRequest, type SyncStats, type TenantDetailsResponse, TenantInfoResource, type TenantModelPreference, type TenantModelPreferencesResponse, type TestConnectionResponse, type ThreadListResponse, type ThreadObject, type ThreadResponsesParams, ThreadsResource, type ToolInfo, type UUID, type UpdateAppStatusParams, type UpdateAppStatusResponse, type UpdateLinkedInSubscriptionRequest, type UpdateThreadRequest, type UserConnectionsResponse, type UserCreateRequest, type UserDeleteResponse, type UserIdentifier, type UserListResponse, type UserResponse, type UserUpdateRequest, UsersResource, ValidationError, type WebhookEvent, type WebhookPayload, displayProgress, formatProgressEntry, verifyWebhookSignature };
|