@customyai/customy-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/dist/index.d.mts +487 -0
- package/dist/index.d.ts +487 -0
- package/dist/index.js +441 -0
- package/dist/index.mjs +408 -0
- package/package.json +42 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
interface CustomyClientConfig {
|
|
2
|
+
/** API key (sk-...) */
|
|
3
|
+
apiKey: string;
|
|
4
|
+
/** Base URL of the Customy Agent API */
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
/** Default timeout in ms (default: 30000) */
|
|
7
|
+
timeout?: number;
|
|
8
|
+
/** Custom fetch implementation */
|
|
9
|
+
fetch?: typeof fetch;
|
|
10
|
+
}
|
|
11
|
+
interface PaginatedResponse<T> {
|
|
12
|
+
data: T[];
|
|
13
|
+
pagination: {
|
|
14
|
+
page: number;
|
|
15
|
+
limit: number;
|
|
16
|
+
total: number;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
interface TaskCreateOptions {
|
|
20
|
+
name: string;
|
|
21
|
+
instructions: string;
|
|
22
|
+
agentId?: string;
|
|
23
|
+
skills?: string[];
|
|
24
|
+
sessions?: string[];
|
|
25
|
+
priority?: "low" | "normal" | "high" | "critical";
|
|
26
|
+
taskType?: "one_off" | "recurring" | "workflow_step";
|
|
27
|
+
trigger?: {
|
|
28
|
+
type: "cron" | "webhook" | "event" | "ai" | "manual";
|
|
29
|
+
expression?: string;
|
|
30
|
+
timezone?: string;
|
|
31
|
+
condition?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
interface NLTaskResult {
|
|
35
|
+
agentId: string;
|
|
36
|
+
name: string;
|
|
37
|
+
instructions: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
skills: string[];
|
|
40
|
+
sessions: string[];
|
|
41
|
+
trigger?: {
|
|
42
|
+
type: string;
|
|
43
|
+
expression?: string;
|
|
44
|
+
timezone?: string;
|
|
45
|
+
condition?: string;
|
|
46
|
+
};
|
|
47
|
+
priority: string;
|
|
48
|
+
taskType: string;
|
|
49
|
+
confidence: number;
|
|
50
|
+
reasoning: string;
|
|
51
|
+
}
|
|
52
|
+
interface TemplateSummary {
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
description: string;
|
|
56
|
+
vertical: string;
|
|
57
|
+
icon: string;
|
|
58
|
+
color: string;
|
|
59
|
+
tags: string[];
|
|
60
|
+
}
|
|
61
|
+
interface AgentTemplate extends TemplateSummary {
|
|
62
|
+
baseAgentId: string;
|
|
63
|
+
suggestedModel: string;
|
|
64
|
+
suggestedSkills: string[];
|
|
65
|
+
suggestedSessions: string[];
|
|
66
|
+
systemPromptAddition: string;
|
|
67
|
+
personality: {
|
|
68
|
+
tone: string;
|
|
69
|
+
language: string;
|
|
70
|
+
emoji: boolean;
|
|
71
|
+
};
|
|
72
|
+
sampleTasks: Array<{
|
|
73
|
+
name: string;
|
|
74
|
+
prompt: string;
|
|
75
|
+
description: string;
|
|
76
|
+
}>;
|
|
77
|
+
suggestedTriggers: Array<{
|
|
78
|
+
name: string;
|
|
79
|
+
type: string;
|
|
80
|
+
config: Record<string, unknown>;
|
|
81
|
+
description: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
interface MarketplaceListing {
|
|
85
|
+
id: string;
|
|
86
|
+
skillId: string;
|
|
87
|
+
title: string;
|
|
88
|
+
shortDescription: string;
|
|
89
|
+
longDescription?: string;
|
|
90
|
+
category: string;
|
|
91
|
+
tags: string[];
|
|
92
|
+
vertical?: string;
|
|
93
|
+
pricingType: string;
|
|
94
|
+
priceCredits: number;
|
|
95
|
+
installCount: number;
|
|
96
|
+
avgRating: number;
|
|
97
|
+
reviewCount: number;
|
|
98
|
+
status: string;
|
|
99
|
+
version: string;
|
|
100
|
+
publisherName: string;
|
|
101
|
+
publisherVerified: boolean;
|
|
102
|
+
}
|
|
103
|
+
interface MarketplaceInstall {
|
|
104
|
+
id: string;
|
|
105
|
+
listingId: string;
|
|
106
|
+
organizationId: string;
|
|
107
|
+
environmentId: string;
|
|
108
|
+
installedVersion: string;
|
|
109
|
+
isEnabled: boolean;
|
|
110
|
+
listing?: MarketplaceListing;
|
|
111
|
+
}
|
|
112
|
+
interface AITriggerEvalResult {
|
|
113
|
+
triggered: boolean;
|
|
114
|
+
confidence: number;
|
|
115
|
+
reasoning: string;
|
|
116
|
+
extractedFacts: string[];
|
|
117
|
+
}
|
|
118
|
+
interface BrowserSession {
|
|
119
|
+
id: string;
|
|
120
|
+
organizationId: string;
|
|
121
|
+
environmentId: string;
|
|
122
|
+
name?: string;
|
|
123
|
+
platform: string;
|
|
124
|
+
accountIdentifier: string;
|
|
125
|
+
status: "pending_auth" | "active" | "expired" | "revoked";
|
|
126
|
+
sessionDataRef?: string;
|
|
127
|
+
userAgent?: string;
|
|
128
|
+
metadata?: Record<string, unknown>;
|
|
129
|
+
createdAt: string;
|
|
130
|
+
updatedAt: string;
|
|
131
|
+
lastUsedAt?: string;
|
|
132
|
+
expiresAt?: string;
|
|
133
|
+
}
|
|
134
|
+
interface BrowserSessionAccount {
|
|
135
|
+
id: string;
|
|
136
|
+
sessionId: string;
|
|
137
|
+
platform: string;
|
|
138
|
+
accountIdentifier: string;
|
|
139
|
+
status: "active" | "expired" | "logged_out";
|
|
140
|
+
authenticatedAt?: string;
|
|
141
|
+
lastVerifiedAt?: string;
|
|
142
|
+
}
|
|
143
|
+
interface AgentBrowserTask {
|
|
144
|
+
id: string;
|
|
145
|
+
organizationId: string;
|
|
146
|
+
environmentId: string;
|
|
147
|
+
agentRunId?: string;
|
|
148
|
+
sessionId?: string;
|
|
149
|
+
taskDescription: string;
|
|
150
|
+
taskType?: string;
|
|
151
|
+
status: "pending" | "running" | "waiting_human" | "completed" | "failed" | "cancelled" | "timeout";
|
|
152
|
+
progress?: number;
|
|
153
|
+
interruptionType?: "captcha" | "two_factor" | "login_required" | "security_check" | "manual_input" | "confirmation";
|
|
154
|
+
interruptionMessage?: string;
|
|
155
|
+
liveViewUrl?: string;
|
|
156
|
+
liveViewExpiresAt?: string;
|
|
157
|
+
currentUrl?: string;
|
|
158
|
+
result?: unknown;
|
|
159
|
+
screenshotRef?: string;
|
|
160
|
+
recordingRef?: string;
|
|
161
|
+
errorMessage?: string;
|
|
162
|
+
errorCode?: string;
|
|
163
|
+
createdAt: string;
|
|
164
|
+
startedAt?: string;
|
|
165
|
+
completedAt?: string;
|
|
166
|
+
}
|
|
167
|
+
interface PaymentIntentCreateOptions {
|
|
168
|
+
amountMinor: number;
|
|
169
|
+
currency: string;
|
|
170
|
+
description?: string;
|
|
171
|
+
provider?: string;
|
|
172
|
+
customerEmail?: string;
|
|
173
|
+
customerName?: string;
|
|
174
|
+
metadata?: Record<string, unknown>;
|
|
175
|
+
}
|
|
176
|
+
interface PaymentIntentResult {
|
|
177
|
+
id: string;
|
|
178
|
+
status: "pending" | "processing" | "succeeded" | "failed" | "cancelled";
|
|
179
|
+
amountMinor: number;
|
|
180
|
+
currency: string;
|
|
181
|
+
checkoutUrl?: string;
|
|
182
|
+
paymentLinkUrl?: string;
|
|
183
|
+
createdAt: string;
|
|
184
|
+
}
|
|
185
|
+
interface VoiceCallInitiateOptions {
|
|
186
|
+
agentId: string;
|
|
187
|
+
phoneNumber: string;
|
|
188
|
+
dynamicVariables?: Record<string, string>;
|
|
189
|
+
recordAudio?: boolean;
|
|
190
|
+
}
|
|
191
|
+
interface VoiceCallResult {
|
|
192
|
+
callId: string;
|
|
193
|
+
agentId: string;
|
|
194
|
+
status: "queued" | "initiated" | "in_progress" | "completed" | "failed";
|
|
195
|
+
durationSeconds?: number;
|
|
196
|
+
transcript?: string;
|
|
197
|
+
summary?: string;
|
|
198
|
+
recordingUrl?: string;
|
|
199
|
+
createdAt: string;
|
|
200
|
+
}
|
|
201
|
+
interface CRMContactCreateOptions {
|
|
202
|
+
email?: string;
|
|
203
|
+
phone?: string;
|
|
204
|
+
fullName?: string;
|
|
205
|
+
companyName?: string;
|
|
206
|
+
stage?: string;
|
|
207
|
+
tags?: string[];
|
|
208
|
+
customFields?: Record<string, unknown>;
|
|
209
|
+
}
|
|
210
|
+
interface CRMContactResult {
|
|
211
|
+
id: string;
|
|
212
|
+
email?: string;
|
|
213
|
+
phone?: string;
|
|
214
|
+
fullName?: string;
|
|
215
|
+
companyName?: string;
|
|
216
|
+
stage?: string;
|
|
217
|
+
tags?: string[];
|
|
218
|
+
createdAt: string;
|
|
219
|
+
}
|
|
220
|
+
interface EventPublishOptions {
|
|
221
|
+
eventType: string;
|
|
222
|
+
aggregateId?: string;
|
|
223
|
+
payload: Record<string, unknown>;
|
|
224
|
+
idempotencyKey?: string;
|
|
225
|
+
}
|
|
226
|
+
interface EventPublishResult {
|
|
227
|
+
eventId: string;
|
|
228
|
+
accepted: boolean;
|
|
229
|
+
publishedAt: string;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
declare class CustomyClient {
|
|
233
|
+
private baseUrl;
|
|
234
|
+
private apiKey;
|
|
235
|
+
private timeout;
|
|
236
|
+
private fetchFn;
|
|
237
|
+
constructor(config: CustomyClientConfig);
|
|
238
|
+
private request;
|
|
239
|
+
tasks: {
|
|
240
|
+
/** Parse a natural language prompt into a structured task */
|
|
241
|
+
createFromNaturalLanguage: (prompt: string) => Promise<NLTaskResult>;
|
|
242
|
+
/** Create a task with explicit parameters */
|
|
243
|
+
create: (options: TaskCreateOptions) => Promise<{
|
|
244
|
+
id: string;
|
|
245
|
+
}>;
|
|
246
|
+
/** Get a task by ID */
|
|
247
|
+
get: (id: string) => Promise<Record<string, unknown>>;
|
|
248
|
+
/** List tasks with pagination */
|
|
249
|
+
list: (options?: {
|
|
250
|
+
page?: number;
|
|
251
|
+
limit?: number;
|
|
252
|
+
status?: string;
|
|
253
|
+
}) => Promise<{
|
|
254
|
+
tasks: Record<string, unknown>[];
|
|
255
|
+
total: number;
|
|
256
|
+
}>;
|
|
257
|
+
};
|
|
258
|
+
templates: {
|
|
259
|
+
/** List all available agent templates */
|
|
260
|
+
list: (options?: {
|
|
261
|
+
vertical?: string;
|
|
262
|
+
tag?: string;
|
|
263
|
+
}) => Promise<{
|
|
264
|
+
templates: TemplateSummary[];
|
|
265
|
+
total: number;
|
|
266
|
+
}>;
|
|
267
|
+
/** Get full template details */
|
|
268
|
+
get: (id: string) => Promise<AgentTemplate>;
|
|
269
|
+
/** Instantiate a template into an agent config */
|
|
270
|
+
instantiate: (templateId: string, options?: {
|
|
271
|
+
displayName?: string;
|
|
272
|
+
modelOverride?: string;
|
|
273
|
+
}) => Promise<{
|
|
274
|
+
message: string;
|
|
275
|
+
agentConfig: Record<string, unknown>;
|
|
276
|
+
}>;
|
|
277
|
+
};
|
|
278
|
+
marketplace: {
|
|
279
|
+
/** Browse marketplace listings */
|
|
280
|
+
browse: (options?: {
|
|
281
|
+
category?: string;
|
|
282
|
+
tag?: string;
|
|
283
|
+
sort?: string;
|
|
284
|
+
page?: number;
|
|
285
|
+
limit?: number;
|
|
286
|
+
}) => Promise<{
|
|
287
|
+
listings: MarketplaceListing[];
|
|
288
|
+
pagination: {
|
|
289
|
+
page: number;
|
|
290
|
+
limit: number;
|
|
291
|
+
total: number;
|
|
292
|
+
};
|
|
293
|
+
}>;
|
|
294
|
+
/** Get listing details */
|
|
295
|
+
get: (id: string) => Promise<MarketplaceListing>;
|
|
296
|
+
/** Install a skill from the marketplace */
|
|
297
|
+
install: (listingId: string) => Promise<MarketplaceInstall>;
|
|
298
|
+
/** Submit a review */
|
|
299
|
+
review: (listingId: string, review: {
|
|
300
|
+
rating: number;
|
|
301
|
+
title?: string;
|
|
302
|
+
body?: string;
|
|
303
|
+
}) => Promise<Record<string, unknown>>;
|
|
304
|
+
/** List installed skills */
|
|
305
|
+
installed: () => Promise<{
|
|
306
|
+
installs: MarketplaceInstall[];
|
|
307
|
+
total: number;
|
|
308
|
+
}>;
|
|
309
|
+
};
|
|
310
|
+
triggers: {
|
|
311
|
+
/** Create an AI-powered trigger */
|
|
312
|
+
createAI: (options: {
|
|
313
|
+
name: string;
|
|
314
|
+
condition: string;
|
|
315
|
+
workflowId?: string;
|
|
316
|
+
confidenceThreshold?: number;
|
|
317
|
+
cooldownMs?: number;
|
|
318
|
+
}) => Promise<Record<string, unknown>>;
|
|
319
|
+
/** Test an AI trigger evaluation */
|
|
320
|
+
evaluateAI: (options: {
|
|
321
|
+
condition: string;
|
|
322
|
+
data: unknown;
|
|
323
|
+
confidenceThreshold?: number;
|
|
324
|
+
}) => Promise<AITriggerEvalResult>;
|
|
325
|
+
/** List AI triggers */
|
|
326
|
+
listAI: () => Promise<{
|
|
327
|
+
triggers: Record<string, unknown>[];
|
|
328
|
+
total: number;
|
|
329
|
+
}>;
|
|
330
|
+
};
|
|
331
|
+
browser: {
|
|
332
|
+
sessions: {
|
|
333
|
+
/** List browser sessions */
|
|
334
|
+
list: (options?: {
|
|
335
|
+
platform?: string;
|
|
336
|
+
status?: string;
|
|
337
|
+
}) => Promise<{
|
|
338
|
+
sessions: BrowserSession[];
|
|
339
|
+
total: number;
|
|
340
|
+
}>;
|
|
341
|
+
/** Get a specific session */
|
|
342
|
+
get: (sessionId: string) => Promise<BrowserSession>;
|
|
343
|
+
/** Revoke a session manually */
|
|
344
|
+
revoke: (sessionId: string) => Promise<{
|
|
345
|
+
ok: boolean;
|
|
346
|
+
status: string;
|
|
347
|
+
}>;
|
|
348
|
+
};
|
|
349
|
+
tasks: {
|
|
350
|
+
/** List browser tasks */
|
|
351
|
+
list: (options?: {
|
|
352
|
+
taskId?: string;
|
|
353
|
+
}) => Promise<{
|
|
354
|
+
tasks: AgentBrowserTask[];
|
|
355
|
+
total: number;
|
|
356
|
+
}>;
|
|
357
|
+
/** Resume a task waiting for human input */
|
|
358
|
+
resume: (taskId: string, action: "continue" | "cancel") => Promise<{
|
|
359
|
+
ok: boolean;
|
|
360
|
+
taskId: string;
|
|
361
|
+
action: string;
|
|
362
|
+
}>;
|
|
363
|
+
/** Get tasks currently waiting for a human */
|
|
364
|
+
getWaiting: () => Promise<{
|
|
365
|
+
tasks: AgentBrowserTask[];
|
|
366
|
+
}>;
|
|
367
|
+
};
|
|
368
|
+
/**
|
|
369
|
+
* Helper: Executes a browser task and waits for its completion.
|
|
370
|
+
* Resolves when the task is 'completed', 'failed', 'cancelled', 'timeout',
|
|
371
|
+
* or 'waiting_human' (meaning it needs intervention).
|
|
372
|
+
*/
|
|
373
|
+
executeAndWait: (taskId: string, pollIntervalMs?: number) => Promise<AgentBrowserTask>;
|
|
374
|
+
};
|
|
375
|
+
payments: {
|
|
376
|
+
/** Create a payment intent */
|
|
377
|
+
createIntent: (options: PaymentIntentCreateOptions) => Promise<PaymentIntentResult>;
|
|
378
|
+
/** Get payment intent status */
|
|
379
|
+
getIntent: (intentId: string) => Promise<PaymentIntentResult>;
|
|
380
|
+
/** List payment intents */
|
|
381
|
+
listIntents: (query?: {
|
|
382
|
+
limit?: string;
|
|
383
|
+
startingAfter?: string;
|
|
384
|
+
}) => Promise<PaginatedResponse<PaymentIntentResult>>;
|
|
385
|
+
};
|
|
386
|
+
voice: {
|
|
387
|
+
/** Initiate an autonomous voice call */
|
|
388
|
+
initiateCall: (options: VoiceCallInitiateOptions) => Promise<VoiceCallResult>;
|
|
389
|
+
/** Get voice call details and transcript */
|
|
390
|
+
getCall: (callId: string) => Promise<VoiceCallResult>;
|
|
391
|
+
/** List voice calls */
|
|
392
|
+
listCalls: (query?: {
|
|
393
|
+
agentId?: string;
|
|
394
|
+
limit?: string;
|
|
395
|
+
}) => Promise<PaginatedResponse<VoiceCallResult>>;
|
|
396
|
+
};
|
|
397
|
+
crm: {
|
|
398
|
+
/** Create or upsert a contact */
|
|
399
|
+
createContact: (options: CRMContactCreateOptions) => Promise<CRMContactResult>;
|
|
400
|
+
/** Get contact details */
|
|
401
|
+
getContact: (contactId: string) => Promise<CRMContactResult>;
|
|
402
|
+
/** List contacts */
|
|
403
|
+
listContacts: (query?: {
|
|
404
|
+
stage?: string;
|
|
405
|
+
limit?: string;
|
|
406
|
+
}) => Promise<PaginatedResponse<CRMContactResult>>;
|
|
407
|
+
};
|
|
408
|
+
events: {
|
|
409
|
+
/** Publish an event to the Customy Event Backbone */
|
|
410
|
+
publish: (options: EventPublishOptions) => Promise<EventPublishResult>;
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Product/service SDK boundary for the Customy portfolio.
|
|
416
|
+
*
|
|
417
|
+
* This layer deliberately owns transport, auth and tenant-safe URL handling
|
|
418
|
+
* only. Domain methods belong in the SDK for the corresponding bounded
|
|
419
|
+
* context once that service publishes its OpenAPI contract.
|
|
420
|
+
*/
|
|
421
|
+
declare const CUSTOMY_PRODUCT_KEYS: readonly ["agent", "ads", "analytics", "atlas", "bookings", "campaigns", "commerce", "content", "crm", "data", "design", "domains", "engagement", "flows", "forms", "links", "mission-control", "pages", "payments", "send", "sitesight", "support", "tables", "tasks", "voice", "whatsapp", "work"];
|
|
422
|
+
declare const CUSTOMY_PLATFORM_SERVICE_KEYS: readonly ["access", "audit", "billing", "events", "integrations", "realtime", "scheduler", "storage"];
|
|
423
|
+
type CustomyProductKey = (typeof CUSTOMY_PRODUCT_KEYS)[number];
|
|
424
|
+
type CustomyPlatformServiceKey = (typeof CUSTOMY_PLATFORM_SERVICE_KEYS)[number];
|
|
425
|
+
type CustomySdkKey = CustomyProductKey | CustomyPlatformServiceKey;
|
|
426
|
+
type CustomyHttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD";
|
|
427
|
+
type CustomyQuery = Record<string, string | number | boolean | null | undefined | Array<string | number | boolean>>;
|
|
428
|
+
type CustomySdkRequestOptions = {
|
|
429
|
+
query?: CustomyQuery;
|
|
430
|
+
body?: unknown;
|
|
431
|
+
headers?: Record<string, string>;
|
|
432
|
+
signal?: AbortSignal;
|
|
433
|
+
timeoutMs?: number;
|
|
434
|
+
maxBytes?: number;
|
|
435
|
+
};
|
|
436
|
+
type CustomySdkConfig = {
|
|
437
|
+
/** Shared fallback URL. Prefer `baseUrls` for multi-service applications. */
|
|
438
|
+
baseUrl?: string;
|
|
439
|
+
baseUrls?: Partial<Record<CustomySdkKey, string>>;
|
|
440
|
+
apiKey?: string;
|
|
441
|
+
bearerToken?: string;
|
|
442
|
+
internalKey?: string;
|
|
443
|
+
headers?: Record<string, string>;
|
|
444
|
+
timeoutMs?: number;
|
|
445
|
+
fetch?: typeof fetch;
|
|
446
|
+
};
|
|
447
|
+
declare class CustomySdkError extends Error {
|
|
448
|
+
readonly product: CustomySdkKey;
|
|
449
|
+
readonly status: number;
|
|
450
|
+
readonly code: string;
|
|
451
|
+
readonly body?: unknown | undefined;
|
|
452
|
+
constructor(product: CustomySdkKey, status: number, code: string, body?: unknown | undefined);
|
|
453
|
+
}
|
|
454
|
+
/** One isolated client for one Customy bounded context. */
|
|
455
|
+
declare class CustomyProductClient {
|
|
456
|
+
readonly product: CustomySdkKey;
|
|
457
|
+
private readonly configuredBaseUrl?;
|
|
458
|
+
private readonly config;
|
|
459
|
+
private readonly fetchImpl;
|
|
460
|
+
constructor(product: CustomySdkKey, config: CustomySdkConfig);
|
|
461
|
+
get baseUrl(): string;
|
|
462
|
+
request<TResponse = unknown>(method: CustomyHttpMethod, path: string, options?: CustomySdkRequestOptions): Promise<TResponse>;
|
|
463
|
+
get<TResponse = unknown>(path: string, options?: Omit<CustomySdkRequestOptions, "body">): Promise<TResponse>;
|
|
464
|
+
post<TResponse = unknown>(path: string, body?: unknown, options?: Omit<CustomySdkRequestOptions, "body">): Promise<TResponse>;
|
|
465
|
+
put<TResponse = unknown>(path: string, body?: unknown, options?: Omit<CustomySdkRequestOptions, "body">): Promise<TResponse>;
|
|
466
|
+
patch<TResponse = unknown>(path: string, body?: unknown, options?: Omit<CustomySdkRequestOptions, "body">): Promise<TResponse>;
|
|
467
|
+
delete<TResponse = unknown>(path: string, options?: Omit<CustomySdkRequestOptions, "body">): Promise<TResponse>;
|
|
468
|
+
}
|
|
469
|
+
type CustomyProductClients = {
|
|
470
|
+
[K in CustomySdkKey]: CustomyProductClient;
|
|
471
|
+
};
|
|
472
|
+
/** One install with isolated clients for every Customy product and platform service. */
|
|
473
|
+
declare class CustomyPortfolioSdk {
|
|
474
|
+
readonly clients: CustomyProductClients;
|
|
475
|
+
readonly products: {
|
|
476
|
+
[K in CustomyProductKey]: CustomyProductClient;
|
|
477
|
+
};
|
|
478
|
+
readonly platform: {
|
|
479
|
+
[K in CustomyPlatformServiceKey]: CustomyProductClient;
|
|
480
|
+
};
|
|
481
|
+
constructor(config: CustomySdkConfig);
|
|
482
|
+
product<K extends CustomyProductKey>(key: K): CustomyProductClient;
|
|
483
|
+
service<K extends CustomyPlatformServiceKey>(key: K): CustomyProductClient;
|
|
484
|
+
}
|
|
485
|
+
declare const createCustomySdk: (config: CustomySdkConfig) => CustomyPortfolioSdk;
|
|
486
|
+
|
|
487
|
+
export { type AITriggerEvalResult, type AgentBrowserTask, type BrowserSession, type BrowserSessionAccount, type CRMContactCreateOptions, type CRMContactResult, CUSTOMY_PLATFORM_SERVICE_KEYS, CUSTOMY_PRODUCT_KEYS, CustomyClient, type CustomyClientConfig, type CustomyHttpMethod, type CustomyPlatformServiceKey, CustomyPortfolioSdk, CustomyProductClient, type CustomyProductClients, type CustomyProductKey, type CustomyQuery, type CustomySdkConfig, CustomySdkError, type CustomySdkKey, type CustomySdkRequestOptions, type EventPublishOptions, type EventPublishResult, type MarketplaceInstall, type MarketplaceListing, type PaginatedResponse, type PaymentIntentCreateOptions, type PaymentIntentResult, type TaskCreateOptions, type VoiceCallInitiateOptions, type VoiceCallResult, createCustomySdk };
|