@elqnt/admin 2.3.0 → 2.3.1

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.
@@ -22,7 +22,7 @@ var api_exports = {};
22
22
  __export(api_exports, {
23
23
  acceptInviteApi: () => acceptInviteApi,
24
24
  cancelSubscriptionApi: () => cancelSubscriptionApi,
25
- clearGatewayTokenCache: () => import_browser5.clearGatewayTokenCache,
25
+ clearGatewayTokenCache: () => import_browser4.clearGatewayTokenCache,
26
26
  completeOnboardingApi: () => completeOnboardingApi,
27
27
  createAgentWithSkillsApi: () => createAgentWithSkillsApi,
28
28
  createCheckoutSessionApi: () => createCheckoutSessionApi,
@@ -36,22 +36,14 @@ __export(api_exports, {
36
36
  createUserApi: () => createUserApi,
37
37
  deleteOrgApi: () => deleteOrgApi,
38
38
  deleteUserApi: () => deleteUserApi,
39
- getAgentsAnalyticsApi: () => getAgentsAnalyticsApi,
40
- getAnalyticsEventsApi: () => getAnalyticsEventsApi,
41
- getAnalyticsSummaryApi: () => getAnalyticsSummaryApi,
42
39
  getBillingPlansApi: () => getBillingPlansApi,
43
- getChatsAnalyticsApi: () => getChatsAnalyticsApi,
44
40
  getCreditsApi: () => getCreditsApi,
45
- getDailyAnalyticsApi: () => getDailyAnalyticsApi,
46
- getGlobalOrgsAnalyticsApi: () => getGlobalOrgsAnalyticsApi,
47
- getGlobalSummaryApi: () => getGlobalSummaryApi,
48
41
  getInviteApi: () => getInviteApi,
49
42
  getOnboardingStatusApi: () => getOnboardingStatusApi,
50
43
  getOrgApi: () => getOrgApi,
51
44
  getOrgInfoApi: () => getOrgInfoApi,
52
45
  getOrgSettingsApi: () => getOrgSettingsApi,
53
46
  getSubscriptionApi: () => getSubscriptionApi,
54
- getUsageAnalyticsApi: () => getUsageAnalyticsApi,
55
47
  getUserApi: () => getUserApi,
56
48
  getUserByEmailApi: () => getUserByEmailApi,
57
49
  getUserByPhoneApi: () => getUserByPhoneApi,
@@ -59,7 +51,6 @@ __export(api_exports, {
59
51
  listInvitesApi: () => listInvitesApi,
60
52
  listOrgsApi: () => listOrgsApi,
61
53
  listUsersApi: () => listUsersApi,
62
- logAnalyticsEventApi: () => logAnalyticsEventApi,
63
54
  provisionAllOnboardingApi: () => provisionAllOnboardingApi,
64
55
  provisionDefaultAgentsApi: () => provisionDefaultAgentsApi,
65
56
  provisionEntitiesApi: () => provisionEntitiesApi,
@@ -82,7 +73,7 @@ __export(api_exports, {
82
73
  updateWorkflowDefinitionsApi: () => updateWorkflowDefinitionsApi
83
74
  });
84
75
  module.exports = __toCommonJS(api_exports);
85
- var import_browser5 = require("@elqnt/api-client/browser");
76
+ var import_browser4 = require("@elqnt/api-client/browser");
86
77
 
87
78
  // api/orgs.ts
88
79
  var import_browser = require("@elqnt/api-client/browser");
@@ -238,94 +229,16 @@ async function acceptInviteApi(inviteId, options) {
238
229
  });
239
230
  }
240
231
 
241
- // api/analytics.ts
242
- var import_browser4 = require("@elqnt/api-client/browser");
243
- function buildDateFilterParams(filter) {
244
- if (!filter) return "";
245
- const params = new URLSearchParams();
246
- if (filter.from) params.set("from", filter.from);
247
- if (filter.to) params.set("to", filter.to);
248
- const queryString = params.toString();
249
- return queryString ? `?${queryString}` : "";
250
- }
251
- async function getAnalyticsSummaryApi(filter, options) {
252
- const queryString = buildDateFilterParams(filter);
253
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/summary${queryString}`, {
254
- method: "GET",
255
- ...options
256
- });
257
- }
258
- async function getChatsAnalyticsApi(filter, agentId, options) {
259
- const params = new URLSearchParams();
260
- if (filter?.from) params.set("from", filter.from);
261
- if (filter?.to) params.set("to", filter.to);
262
- if (agentId) params.set("agent_id", agentId);
263
- const queryString = params.toString();
264
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/chats${queryString ? `?${queryString}` : ""}`, {
265
- method: "GET",
266
- ...options
267
- });
268
- }
269
- async function getAgentsAnalyticsApi(filter, options) {
270
- const queryString = buildDateFilterParams(filter);
271
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/agents${queryString}`, {
272
- method: "GET",
273
- ...options
274
- });
275
- }
276
- async function getUsageAnalyticsApi(filter, options) {
277
- const queryString = buildDateFilterParams(filter);
278
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/usage${queryString}`, {
279
- method: "GET",
280
- ...options
281
- });
282
- }
283
- async function getDailyAnalyticsApi(filter, options) {
284
- const queryString = buildDateFilterParams(filter);
285
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/daily${queryString}`, {
286
- method: "GET",
287
- ...options
288
- });
289
- }
290
- async function getAnalyticsEventsApi(filter, options) {
291
- const queryString = buildDateFilterParams(filter);
292
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/events${queryString}`, {
293
- method: "GET",
294
- ...options
295
- });
296
- }
297
- async function logAnalyticsEventApi(event, options) {
298
- return (0, import_browser4.browserApiRequest)("/api/v1/analytics/events", {
299
- method: "POST",
300
- body: event,
301
- ...options
302
- });
303
- }
304
- async function getGlobalSummaryApi(filter, options) {
305
- const queryString = buildDateFilterParams(filter);
306
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/global/summary${queryString}`, {
307
- method: "GET",
308
- ...options
309
- });
310
- }
311
- async function getGlobalOrgsAnalyticsApi(filter, options) {
312
- const queryString = buildDateFilterParams(filter);
313
- return (0, import_browser4.browserApiRequest)(`/api/v1/analytics/global/orgs${queryString}`, {
314
- method: "GET",
315
- ...options
316
- });
317
- }
318
-
319
232
  // api/index.ts
320
233
  async function getOnboardingStatusApi(options) {
321
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/status", {
234
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/status", {
322
235
  method: "GET",
323
236
  ...options,
324
237
  orgId: options.orgId || ""
325
238
  });
326
239
  }
327
240
  async function startOnboardingApi(options) {
328
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/start", {
241
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/start", {
329
242
  method: "POST",
330
243
  body: {},
331
244
  ...options,
@@ -333,7 +246,7 @@ async function startOnboardingApi(options) {
333
246
  });
334
247
  }
335
248
  async function createPaymentSessionApi(params, options) {
336
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/step/payment", {
249
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/payment", {
337
250
  method: "POST",
338
251
  body: params,
339
252
  ...options,
@@ -341,7 +254,7 @@ async function createPaymentSessionApi(params, options) {
341
254
  });
342
255
  }
343
256
  async function createOrganizationApi(org, options) {
344
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/step/organization", {
257
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/organization", {
345
258
  method: "POST",
346
259
  body: org,
347
260
  ...options,
@@ -349,7 +262,7 @@ async function createOrganizationApi(org, options) {
349
262
  });
350
263
  }
351
264
  async function sendOnboardingInvitesApi(invites, options) {
352
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/step/invites", {
265
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/invites", {
353
266
  method: "POST",
354
267
  body: { invites },
355
268
  ...options,
@@ -357,7 +270,7 @@ async function sendOnboardingInvitesApi(invites, options) {
357
270
  });
358
271
  }
359
272
  async function createOnboardingKnowledgeApi(knowledge, options) {
360
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/step/knowledge", {
273
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/knowledge", {
361
274
  method: "POST",
362
275
  body: knowledge,
363
276
  ...options,
@@ -365,7 +278,7 @@ async function createOnboardingKnowledgeApi(knowledge, options) {
365
278
  });
366
279
  }
367
280
  async function createOnboardingAgentApi(agent, options) {
368
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/step/agent", {
281
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/step/agent", {
369
282
  method: "POST",
370
283
  body: agent,
371
284
  ...options,
@@ -373,7 +286,7 @@ async function createOnboardingAgentApi(agent, options) {
373
286
  });
374
287
  }
375
288
  async function createAgentWithSkillsApi(payload, options) {
376
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/agent-with-skills", {
289
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/agent-with-skills", {
377
290
  method: "POST",
378
291
  body: payload,
379
292
  ...options,
@@ -381,7 +294,7 @@ async function createAgentWithSkillsApi(payload, options) {
381
294
  });
382
295
  }
383
296
  async function completeOnboardingApi(options) {
384
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/complete", {
297
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/complete", {
385
298
  method: "POST",
386
299
  body: {},
387
300
  ...options,
@@ -389,7 +302,7 @@ async function completeOnboardingApi(options) {
389
302
  });
390
303
  }
391
304
  async function skipOnboardingStepApi(step, options) {
392
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/skip-step", {
305
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/skip-step", {
393
306
  method: "POST",
394
307
  body: { step },
395
308
  ...options,
@@ -397,7 +310,7 @@ async function skipOnboardingStepApi(step, options) {
397
310
  });
398
311
  }
399
312
  async function startOnboardingProvisioningApi(options) {
400
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/provisioning/start", {
313
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/provisioning/start", {
401
314
  method: "POST",
402
315
  body: {},
403
316
  ...options,
@@ -405,7 +318,7 @@ async function startOnboardingProvisioningApi(options) {
405
318
  });
406
319
  }
407
320
  async function provisionAllOnboardingApi(request, options) {
408
- return (0, import_browser5.browserApiRequest)("/api/v1/onboarding/provision-all", {
321
+ return (0, import_browser4.browserApiRequest)("/api/v1/onboarding/provision-all", {
409
322
  method: "POST",
410
323
  body: request,
411
324
  ...options,
@@ -440,7 +353,7 @@ function settingsToOrgRow(settings) {
440
353
  }
441
354
  async function getOrgSettingsApi(options) {
442
355
  const orgId = options.orgId ?? "";
443
- const response = await (0, import_browser5.browserApiRequest)(
356
+ const response = await (0, import_browser4.browserApiRequest)(
444
357
  `/api/v1/admin/orgs/${orgId}`,
445
358
  { method: "GET", ...options }
446
359
  );
@@ -460,7 +373,7 @@ async function createOrgSettingsApi(settings, options) {
460
373
  }
461
374
  async function updateOrgSettingsApi(settings, options) {
462
375
  const orgId = options.orgId ?? "";
463
- const response = await (0, import_browser5.browserApiRequest)(
376
+ const response = await (0, import_browser4.browserApiRequest)(
464
377
  `/api/v1/admin/orgs/${orgId}`,
465
378
  {
466
379
  method: "PUT",
@@ -474,88 +387,88 @@ async function updateOrgSettingsApi(settings, options) {
474
387
  return getOrgSettingsApi(options);
475
388
  }
476
389
  async function updateOrgAgentsApi(agentIds, options) {
477
- return (0, import_browser5.browserApiRequest)("/api/v1/org/agents", {
390
+ return (0, import_browser4.browserApiRequest)("/api/v1/org/agents", {
478
391
  method: "PUT",
479
392
  body: { agentIds },
480
393
  ...options
481
394
  });
482
395
  }
483
396
  async function updateEntityDefinitionsApi(entityNames, options) {
484
- return (0, import_browser5.browserApiRequest)("/api/v1/org/entities", {
397
+ return (0, import_browser4.browserApiRequest)("/api/v1/org/entities", {
485
398
  method: "PUT",
486
399
  body: { entityNames },
487
400
  ...options
488
401
  });
489
402
  }
490
403
  async function updateWorkflowDefinitionsApi(workflowIds, options) {
491
- return (0, import_browser5.browserApiRequest)("/api/v1/org/workflows", {
404
+ return (0, import_browser4.browserApiRequest)("/api/v1/org/workflows", {
492
405
  method: "PUT",
493
406
  body: { workflowIds },
494
407
  ...options
495
408
  });
496
409
  }
497
410
  async function getBillingPlansApi(options) {
498
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/plans", {
411
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/plans", {
499
412
  method: "GET",
500
413
  ...options
501
414
  });
502
415
  }
503
416
  async function getSubscriptionApi(options) {
504
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/subscription", {
417
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/subscription", {
505
418
  method: "GET",
506
419
  ...options
507
420
  });
508
421
  }
509
422
  async function getCreditsApi(options) {
510
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/credits", {
423
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/credits", {
511
424
  method: "GET",
512
425
  ...options
513
426
  });
514
427
  }
515
428
  async function createCheckoutSessionApi(params, options) {
516
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/checkout", {
429
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/checkout", {
517
430
  method: "POST",
518
431
  body: params,
519
432
  ...options
520
433
  });
521
434
  }
522
435
  async function createPortalSessionApi(params, options) {
523
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/portal", {
436
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/portal", {
524
437
  method: "POST",
525
438
  body: params,
526
439
  ...options
527
440
  });
528
441
  }
529
442
  async function cancelSubscriptionApi(options) {
530
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/subscription/cancel", {
443
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/subscription/cancel", {
531
444
  method: "POST",
532
445
  body: {},
533
446
  ...options
534
447
  });
535
448
  }
536
449
  async function purchaseCreditsApi(params, options) {
537
- return (0, import_browser5.browserApiRequest)("/api/v1/billing/credits/purchase", {
450
+ return (0, import_browser4.browserApiRequest)("/api/v1/billing/credits/purchase", {
538
451
  method: "POST",
539
452
  body: params,
540
453
  ...options
541
454
  });
542
455
  }
543
456
  async function provisionDefaultAgentsApi(definitions, options) {
544
- return (0, import_browser5.browserApiRequest)("/api/v1/admin/provision/agents", {
457
+ return (0, import_browser4.browserApiRequest)("/api/v1/admin/provision/agents", {
545
458
  method: "POST",
546
459
  body: { definitions },
547
460
  ...options
548
461
  });
549
462
  }
550
463
  async function provisionEntitiesApi(definitions, options) {
551
- return (0, import_browser5.browserApiRequest)("/api/v1/admin/entities/update", {
464
+ return (0, import_browser4.browserApiRequest)("/api/v1/admin/entities/update", {
552
465
  method: "POST",
553
466
  body: { definitions },
554
467
  ...options
555
468
  });
556
469
  }
557
470
  async function provisionWorkflowsApi(definitions, options) {
558
- return (0, import_browser5.browserApiRequest)("/api/v1/admin/provision/workflows", {
471
+ return (0, import_browser4.browserApiRequest)("/api/v1/admin/provision/workflows", {
559
472
  method: "POST",
560
473
  body: { definitions },
561
474
  ...options
@@ -579,22 +492,14 @@ async function provisionWorkflowsApi(definitions, options) {
579
492
  createUserApi,
580
493
  deleteOrgApi,
581
494
  deleteUserApi,
582
- getAgentsAnalyticsApi,
583
- getAnalyticsEventsApi,
584
- getAnalyticsSummaryApi,
585
495
  getBillingPlansApi,
586
- getChatsAnalyticsApi,
587
496
  getCreditsApi,
588
- getDailyAnalyticsApi,
589
- getGlobalOrgsAnalyticsApi,
590
- getGlobalSummaryApi,
591
497
  getInviteApi,
592
498
  getOnboardingStatusApi,
593
499
  getOrgApi,
594
500
  getOrgInfoApi,
595
501
  getOrgSettingsApi,
596
502
  getSubscriptionApi,
597
- getUsageAnalyticsApi,
598
503
  getUserApi,
599
504
  getUserByEmailApi,
600
505
  getUserByPhoneApi,
@@ -602,7 +507,6 @@ async function provisionWorkflowsApi(definitions, options) {
602
507
  listInvitesApi,
603
508
  listOrgsApi,
604
509
  listUsersApi,
605
- logAnalyticsEventApi,
606
510
  provisionAllOnboardingApi,
607
511
  provisionDefaultAgentsApi,
608
512
  provisionEntitiesApi,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../api/index.ts","../../api/orgs.ts","../../api/users.ts","../../api/invites.ts","../../api/analytics.ts"],"sourcesContent":["/**\n * Admin API functions (internal)\n *\n * Low-level API functions that call browserApiRequest directly.\n * These are the building blocks for @elqnt/admin/hooks.\n *\n * **Apps should use hooks (`@elqnt/admin/hooks`) instead of these functions.**\n * Hooks provide loading/error state management on top of these API calls.\n * Only use these directly if you're building a new hook or need an operation\n * that no hook covers yet.\n */\n\nimport { browserApiRequest, clearGatewayTokenCache } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\n\n// Re-export utility function\nexport { clearGatewayTokenCache };\nimport type { ResponseMetadata } from \"@elqnt/types\";\nimport type {\n OnboardingState,\n OnboardingResponse,\n CreateOrgResponse,\n SendInvitesResponse,\n CreateKnowledgeResponse,\n CreateAgentResponse,\n CompleteOnboardingResponse,\n PaymentSessionResponse,\n OrgSettings,\n OrgSettingsResponse,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n CreateCheckoutResponse,\n PortalSessionResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n} from \"../models\";\n\n// =============================================================================\n// ONBOARDING API OPTIONS\n// =============================================================================\n\n/**\n * Onboarding API options - orgId is optional since user may not have org yet\n */\nexport interface OnboardingApiOptions {\n baseUrl: string;\n orgId?: string;\n userId?: string;\n userEmail?: string;\n headers?: Record<string, string>;\n}\n\n// =============================================================================\n// ONBOARDING API\n// =============================================================================\n\nexport async function getOnboardingStatusApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/status\", {\n method: \"GET\",\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function startOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createPaymentSessionApi(\n params: { plan: string; billingCycle: string; seats: number; successUrl: string; cancelUrl: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<PaymentSessionResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/payment\", {\n method: \"POST\",\n body: params,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOrganizationApi(\n org: { name: string; industry?: string; size?: string; stripeSessionId?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateOrgResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/organization\", {\n method: \"POST\",\n body: org,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function sendOnboardingInvitesApi(\n invites: Array<{ email: string; role?: string }>,\n options: OnboardingApiOptions\n): Promise<ApiResponse<SendInvitesResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingKnowledgeApi(\n knowledge: { name: string; description?: string; websites?: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateKnowledgeResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/knowledge\", {\n method: \"POST\",\n body: knowledge,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingAgentApi(\n agent: { name: string; description?: string; goal?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/agent\", {\n method: \"POST\",\n body: agent,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createAgentWithSkillsApi(\n payload: { agent: Record<string, unknown>; skills: Record<string, unknown>[]; enabledSkillNames: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/agent-with-skills\", {\n method: \"POST\",\n body: payload,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function completeOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<CompleteOnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/complete\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function skipOnboardingStepApi(\n step: string,\n options: OnboardingApiOptions\n): Promise<ApiResponse<{ nextStep: string; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/onboarding/skip-step\", {\n method: \"POST\",\n body: { step },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport interface StartProvisioningResponse {\n orgId: string;\n status: string;\n metadata?: ResponseMetadata;\n}\n\n/**\n * Start provisioning for an onboarding org.\n * Returns the org ID so the frontend can connect to the SSE stream for progress.\n */\nexport async function startOnboardingProvisioningApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<StartProvisioningResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provisioning/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n/**\n * Request body for unified onboarding provisioning\n */\nexport interface ProvisionAllRequest {\n plan: {\n plan: string;\n billingCycle: string;\n seats: number;\n stripeSessionId?: string;\n inviteCode?: string; // If present, this is a free trial (skipped payment)\n };\n org: {\n title: string;\n mainDomain: string;\n // (product field removed — product is implicit in the admin DB)\n industry?: string;\n size?: string;\n };\n invites?: Array<{\n email: string;\n role: string;\n }>;\n knowledge: {\n name: string;\n documents?: Array<{\n title: string;\n fileUrl: string;\n }>;\n };\n agent: {\n name: string;\n goal: string;\n personality: string;\n skills?: string[];\n };\n}\n\n/**\n * Response from unified onboarding provisioning\n */\nexport interface ProvisionAllResponse {\n orgId: string;\n userId: string;\n status: string;\n metadata: ResponseMetadata;\n}\n\n/**\n * Unified onboarding provisioning - collects all data then creates org and provisions everything.\n * This is the new flow where data is collected first, then provisioned via SSE.\n */\nexport async function provisionAllOnboardingApi(\n request: ProvisionAllRequest,\n options: OnboardingApiOptions\n): Promise<ApiResponse<ProvisionAllResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provision-all\", {\n method: \"POST\",\n body: request,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n// =============================================================================\n// ORG SETTINGS API\n// =============================================================================\n\n/**\n * Org settings live on the canonical admin Org row (since v2.3) — the old\n * /api/v1/org/settings path against integrations is gone. These helpers keep\n * the legacy `OrgSettings` wire shape so consumers (org-settings form, the\n * OrganizationProvider hydration action, etc.) don't need to change. The\n * actual fetch/PUT happens against /admin/orgs/{orgId}.\n */\n\ninterface OrgRowSlice {\n id?: string;\n title?: string;\n description?: string;\n logoUrl?: string;\n defaultLang?: string;\n timezone?: string;\n settings?: { [key: string]: any };\n}\n\nfunction orgRowToSettings(\n orgId: string,\n row: OrgRowSlice | undefined,\n): OrgSettings {\n return {\n id: row?.id ?? \"\",\n org_id: orgId,\n title: row?.title ?? \"\",\n description: row?.description ?? \"\",\n logo_url: row?.logoUrl ?? \"\",\n default_lang: row?.defaultLang ?? \"en\",\n timezone: row?.timezone ?? \"UTC\",\n additional_settings: row?.settings ?? {},\n created_at: \"\",\n updated_at: \"\",\n created_by: \"\",\n updated_by: \"\",\n };\n}\n\nfunction settingsToOrgRow(settings: Partial<OrgSettings>): Partial<OrgRowSlice> {\n return {\n title: settings.title,\n description: settings.description,\n logoUrl: settings.logo_url,\n defaultLang: settings.default_lang,\n timezone: settings.timezone,\n settings: settings.additional_settings,\n };\n}\n\nexport async function getOrgSettingsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ organization?: OrgRowSlice }>(\n `/api/v1/admin/orgs/${orgId}`,\n { method: \"GET\", ...options },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n return {\n status: response.status,\n data: {\n success: true,\n settings: orgRowToSettings(orgId, response.data?.organization),\n } as OrgSettingsResponse,\n };\n}\n\n/**\n * @deprecated Org settings rows always exist on the admin Org. Kept as an\n * alias for backward compatibility — calls updateOrgSettingsApi.\n */\nexport async function createOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse & { id?: string }>> {\n return updateOrgSettingsApi(settings, options);\n}\n\nexport async function updateOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ message?: string }>(\n `/api/v1/admin/orgs/${orgId}`,\n {\n method: \"PUT\",\n body: settingsToOrgRow(settings),\n ...options,\n },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n // Admin update returns { message: \"...\" }; round-trip a fresh GET so the\n // caller gets the full settings shape (with new updated_at, etc.).\n return getOrgSettingsApi(options);\n}\n\nexport async function updateOrgAgentsApi(\n agentIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/org/agents\", {\n method: \"PUT\",\n body: { agentIds },\n ...options,\n });\n}\n\nexport async function updateEntityDefinitionsApi(\n entityNames: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/org/entities\", {\n method: \"PUT\",\n body: { entityNames },\n ...options,\n });\n}\n\nexport async function updateWorkflowDefinitionsApi(\n workflowIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/org/workflows\", {\n method: \"PUT\",\n body: { workflowIds },\n ...options,\n });\n}\n\n// =============================================================================\n// BILLING API\n// =============================================================================\n\nexport async function getBillingPlansApi(\n options: ApiClientOptions\n): Promise<ApiResponse<PlansResponse>> {\n return browserApiRequest(\"/api/v1/billing/plans\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<SubscriptionResponse>> {\n return browserApiRequest(\"/api/v1/billing/subscription\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getCreditsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<CreditsResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function createCheckoutSessionApi(\n params: { priceId: string; seats?: number; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/checkout\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function createPortalSessionApi(\n params: { returnUrl: string },\n options: ApiClientOptions\n): Promise<ApiResponse<PortalSessionResponse>> {\n return browserApiRequest(\"/api/v1/billing/portal\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function cancelSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/billing/subscription/cancel\", {\n method: \"POST\",\n body: {},\n ...options,\n });\n}\n\nexport async function purchaseCreditsApi(\n params: { packageId: string; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits/purchase\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\n// =============================================================================\n// PROVISIONING API (DEPRECATED - use domain packages instead)\n// =============================================================================\n\n/**\n * @deprecated Use `provisionAgentsApi` from `@elqnt/agents/api` instead\n */\nexport async function provisionDefaultAgentsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/agents\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionEntitiesApi` from `@elqnt/entity/api` instead\n */\nexport async function provisionEntitiesApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/admin/entities/update\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionWorkflowsApi` from `@elqnt/workflow/api` instead (coming soon)\n */\nexport async function provisionWorkflowsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/workflows\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n// =============================================================================\n// ADMIN CRUD APIs\n// =============================================================================\n\nexport * from \"./orgs\";\nexport * from \"./users\";\nexport * from \"./invites\";\nexport * from \"./analytics\";\n// (provisioning API removed — per-org artifact provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n\n// =============================================================================\n// RE-EXPORTS\n// =============================================================================\n\nexport type {\n OnboardingState,\n OnboardingResponse,\n OrgSettings,\n OrgSettingsResponse,\n Plan,\n OrganizationBilling,\n UsageSummary,\n CreditBalance,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n // Org types\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n // User types\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n // Invite types\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n","/**\n * Organizations Admin API\n *\n * Browser-side API client for organization management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n OrgStatusTS,\n OrgTypeTS,\n} from \"../models\";\n\n// =============================================================================\n// FILTER TYPES\n// =============================================================================\n\n/**\n * Filter options for listing organizations\n *\n * `product` is routing metadata: it selects which admin_<product> DB to read\n * from (empty → eloquent). It is not a stored column on the org.\n */\nexport interface ListOrgsFilter {\n status?: OrgStatusTS;\n type?: OrgTypeTS;\n product?: string;\n}\n\n// =============================================================================\n// ORGANIZATIONS CRUD\n// =============================================================================\n\n/**\n * List all organizations (admin scope required)\n * @param filter - Optional filter criteria\n * @param options - API client options\n */\nexport async function listOrgsApi(\n filter: ListOrgsFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<ListOrgsResponse>> {\n const params = new URLSearchParams();\n if (filter?.status) params.set(\"status\", filter.status);\n if (filter?.type) params.set(\"type\", filter.type);\n if (filter?.product) params.set(\"product\", filter.product);\n\n const queryString = params.toString();\n const url = queryString ? `/api/v1/admin/orgs?${queryString}` : \"/api/v1/admin/orgs\";\n\n return browserApiRequest(url, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new organization\n */\nexport async function createOrgApi(\n // `product` is transient routing metadata (which admin_<product> DB to write\n // to) sent alongside the org fields — it is not persisted on the org.\n org: Partial<Org> & { product?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(\"/api/v1/admin/orgs\", {\n method: \"POST\",\n body: org,\n ...options,\n });\n}\n\n/**\n * Get an organization by ID\n */\nexport async function getOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update an organization\n */\nexport async function updateOrgApi(\n orgId: string,\n updates: Partial<Org>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete an organization\n */\nexport async function deleteOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Get organization info (lightweight response)\n */\nexport async function getOrgInfoApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgInfoResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}/info`, {\n method: \"GET\",\n ...options,\n });\n}\n\n// (createOrgWithSchemasApi removed — per-org schema provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n","/**\n * Users Admin API\n *\n * Browser-side API client for user management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n} from \"../models\";\n\n// =============================================================================\n// USERS CRUD\n// =============================================================================\n\n/**\n * List all users in the organization\n */\nexport async function listUsersApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListUsersResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new user\n */\nexport async function createUserApi(\n user: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"POST\",\n body: user,\n ...options,\n });\n}\n\n/**\n * Get a user by ID\n */\nexport async function getUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by email\n */\nexport async function getUserByEmailApi(\n email: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-email?email=${encodeURIComponent(email)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by phone number (stored in metadata.phoneNumber)\n */\nexport async function getUserByPhoneApi(\n phone: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-phone?phone=${encodeURIComponent(phone)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update a user\n */\nexport async function updateUserApi(\n userId: string,\n updates: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete a user\n */\nexport async function deleteUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n// =============================================================================\n// USER SETTINGS\n// =============================================================================\n\n/**\n * Get user settings\n */\nexport async function getUserSettingsApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update user settings\n */\nexport async function updateUserSettingsApi(\n userId: string,\n settings: {\n settings?: UserSettings;\n notificationPreferences?: NotificationPreferences;\n },\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"PUT\",\n body: settings,\n ...options,\n });\n}\n","/**\n * Invites Admin API\n *\n * Browser-side API client for invitation management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n\n// =============================================================================\n// INVITES CRUD\n// =============================================================================\n\n/**\n * List all invites in the organization\n */\nexport async function listInvitesApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListInvitesResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Send invites to multiple users\n */\nexport async function sendInvitesApi(\n invites: InviteInput[],\n options: ApiClientOptions\n): Promise<ApiResponse<InvitesResult>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n });\n}\n\n/**\n * Send a single invite\n */\nexport async function sendInviteApi(\n invite: InviteInput,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites/single\", {\n method: \"POST\",\n body: invite,\n ...options,\n });\n}\n\n/**\n * Get an invite by ID\n */\nexport async function getInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Resend an invite\n */\nexport async function resendInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/resend`, {\n method: \"POST\",\n ...options,\n });\n}\n\n/**\n * Revoke an invite\n */\nexport async function revokeInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Accept an invite (used by invited users)\n */\nexport async function acceptInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/accept`, {\n method: \"POST\",\n ...options,\n });\n}\n","/**\n * Product Analytics API\n *\n * Browser-side API client for product analytics.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n DateFilter,\n SummaryResponse,\n ChatsResponse,\n AgentsAnalyticsResponse,\n UsageResponse,\n DailyResponse,\n EventsResponse,\n AnalyticsEvent,\n GlobalSummaryResponse,\n OrgAnalyticsResponse,\n} from \"../models/analytics\";\n\n// =============================================================================\n// QUERY STRING HELPERS\n// =============================================================================\n\nfunction buildDateFilterParams(filter?: DateFilter): string {\n if (!filter) return \"\";\n const params = new URLSearchParams();\n if (filter.from) params.set(\"from\", filter.from);\n if (filter.to) params.set(\"to\", filter.to);\n const queryString = params.toString();\n return queryString ? `?${queryString}` : \"\";\n}\n\n// =============================================================================\n// ORG ANALYTICS (Per-Organization)\n// =============================================================================\n\n/**\n * Get analytics summary (total chats, messages, tokens, cost, users)\n */\nexport async function getAnalyticsSummaryApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<SummaryResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/summary${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get chat analytics with filters\n */\nexport async function getChatsAnalyticsApi(\n filter: DateFilter | undefined,\n agentId: string | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<ChatsResponse>> {\n const params = new URLSearchParams();\n if (filter?.from) params.set(\"from\", filter.from);\n if (filter?.to) params.set(\"to\", filter.to);\n if (agentId) params.set(\"agent_id\", agentId);\n const queryString = params.toString();\n return browserApiRequest(`/api/v1/analytics/chats${queryString ? `?${queryString}` : \"\"}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get per-agent analytics\n */\nexport async function getAgentsAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<AgentsAnalyticsResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/agents${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get token/cost usage analytics by service and model\n */\nexport async function getUsageAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<UsageResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/usage${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get daily analytics for charts\n */\nexport async function getDailyAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<DailyResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/daily${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get analytics events log\n */\nexport async function getAnalyticsEventsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<EventsResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/events${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Log an analytics event from frontend\n */\nexport async function logAnalyticsEventApi(\n event: AnalyticsEvent,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(\"/api/v1/analytics/events\", {\n method: \"POST\",\n body: event,\n ...options,\n });\n}\n\n// =============================================================================\n// GLOBAL ANALYTICS (Platform Admin)\n// =============================================================================\n\n/**\n * Get platform-wide analytics summary (admin only)\n */\nexport async function getGlobalSummaryApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<GlobalSummaryResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/global/summary${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get per-org analytics comparison (admin only)\n */\nexport async function getGlobalOrgsAnalyticsApi(\n filter: DateFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgAnalyticsResponse>> {\n const queryString = buildDateFilterParams(filter);\n return browserApiRequest(`/api/v1/analytics/global/orgs${queryString}`, {\n method: \"GET\",\n ...options,\n });\n}\n"],"mappings":"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","names":["import_browser","import_browser","import_browser","import_browser"]}
1
+ {"version":3,"sources":["../../api/index.ts","../../api/orgs.ts","../../api/users.ts","../../api/invites.ts"],"sourcesContent":["/**\n * Admin API functions (internal)\n *\n * Low-level API functions that call browserApiRequest directly.\n * These are the building blocks for @elqnt/admin/hooks.\n *\n * **Apps should use hooks (`@elqnt/admin/hooks`) instead of these functions.**\n * Hooks provide loading/error state management on top of these API calls.\n * Only use these directly if you're building a new hook or need an operation\n * that no hook covers yet.\n */\n\nimport { browserApiRequest, clearGatewayTokenCache } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\n\n// Re-export utility function\nexport { clearGatewayTokenCache };\nimport type { ResponseMetadata } from \"@elqnt/types\";\nimport type {\n OnboardingState,\n OnboardingResponse,\n CreateOrgResponse,\n SendInvitesResponse,\n CreateKnowledgeResponse,\n CreateAgentResponse,\n CompleteOnboardingResponse,\n PaymentSessionResponse,\n OrgSettings,\n OrgSettingsResponse,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n CreateCheckoutResponse,\n PortalSessionResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n} from \"../models\";\n\n// =============================================================================\n// ONBOARDING API OPTIONS\n// =============================================================================\n\n/**\n * Onboarding API options - orgId is optional since user may not have org yet\n */\nexport interface OnboardingApiOptions {\n baseUrl: string;\n orgId?: string;\n userId?: string;\n userEmail?: string;\n headers?: Record<string, string>;\n}\n\n// =============================================================================\n// ONBOARDING API\n// =============================================================================\n\nexport async function getOnboardingStatusApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/status\", {\n method: \"GET\",\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function startOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<OnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createPaymentSessionApi(\n params: { plan: string; billingCycle: string; seats: number; successUrl: string; cancelUrl: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<PaymentSessionResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/payment\", {\n method: \"POST\",\n body: params,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOrganizationApi(\n org: { name: string; industry?: string; size?: string; stripeSessionId?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateOrgResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/organization\", {\n method: \"POST\",\n body: org,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function sendOnboardingInvitesApi(\n invites: Array<{ email: string; role?: string }>,\n options: OnboardingApiOptions\n): Promise<ApiResponse<SendInvitesResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingKnowledgeApi(\n knowledge: { name: string; description?: string; websites?: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateKnowledgeResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/knowledge\", {\n method: \"POST\",\n body: knowledge,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createOnboardingAgentApi(\n agent: { name: string; description?: string; goal?: string },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/step/agent\", {\n method: \"POST\",\n body: agent,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function createAgentWithSkillsApi(\n payload: { agent: Record<string, unknown>; skills: Record<string, unknown>[]; enabledSkillNames: string[] },\n options: OnboardingApiOptions\n): Promise<ApiResponse<CreateAgentResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/agent-with-skills\", {\n method: \"POST\",\n body: payload,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function completeOnboardingApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<CompleteOnboardingResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/complete\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport async function skipOnboardingStepApi(\n step: string,\n options: OnboardingApiOptions\n): Promise<ApiResponse<{ nextStep: string; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/onboarding/skip-step\", {\n method: \"POST\",\n body: { step },\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\nexport interface StartProvisioningResponse {\n orgId: string;\n status: string;\n metadata?: ResponseMetadata;\n}\n\n/**\n * Start provisioning for an onboarding org.\n * Returns the org ID so the frontend can connect to the SSE stream for progress.\n */\nexport async function startOnboardingProvisioningApi(\n options: OnboardingApiOptions\n): Promise<ApiResponse<StartProvisioningResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provisioning/start\", {\n method: \"POST\",\n body: {},\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n/**\n * Request body for unified onboarding provisioning\n */\nexport interface ProvisionAllRequest {\n plan: {\n plan: string;\n billingCycle: string;\n seats: number;\n stripeSessionId?: string;\n inviteCode?: string; // If present, this is a free trial (skipped payment)\n };\n org: {\n title: string;\n mainDomain: string;\n // (product field removed — product is implicit in the admin DB)\n industry?: string;\n size?: string;\n };\n invites?: Array<{\n email: string;\n role: string;\n }>;\n knowledge: {\n name: string;\n documents?: Array<{\n title: string;\n fileUrl: string;\n }>;\n };\n agent: {\n name: string;\n goal: string;\n personality: string;\n skills?: string[];\n };\n}\n\n/**\n * Response from unified onboarding provisioning\n */\nexport interface ProvisionAllResponse {\n orgId: string;\n userId: string;\n status: string;\n metadata: ResponseMetadata;\n}\n\n/**\n * Unified onboarding provisioning - collects all data then creates org and provisions everything.\n * This is the new flow where data is collected first, then provisioned via SSE.\n */\nexport async function provisionAllOnboardingApi(\n request: ProvisionAllRequest,\n options: OnboardingApiOptions\n): Promise<ApiResponse<ProvisionAllResponse>> {\n return browserApiRequest(\"/api/v1/onboarding/provision-all\", {\n method: \"POST\",\n body: request,\n ...options,\n orgId: options.orgId || \"\",\n });\n}\n\n// =============================================================================\n// ORG SETTINGS API\n// =============================================================================\n\n/**\n * Org settings live on the canonical admin Org row (since v2.3) — the old\n * /api/v1/org/settings path against integrations is gone. These helpers keep\n * the legacy `OrgSettings` wire shape so consumers (org-settings form, the\n * OrganizationProvider hydration action, etc.) don't need to change. The\n * actual fetch/PUT happens against /admin/orgs/{orgId}.\n */\n\ninterface OrgRowSlice {\n id?: string;\n title?: string;\n description?: string;\n logoUrl?: string;\n defaultLang?: string;\n timezone?: string;\n settings?: { [key: string]: any };\n}\n\nfunction orgRowToSettings(\n orgId: string,\n row: OrgRowSlice | undefined,\n): OrgSettings {\n return {\n id: row?.id ?? \"\",\n org_id: orgId,\n title: row?.title ?? \"\",\n description: row?.description ?? \"\",\n logo_url: row?.logoUrl ?? \"\",\n default_lang: row?.defaultLang ?? \"en\",\n timezone: row?.timezone ?? \"UTC\",\n additional_settings: row?.settings ?? {},\n created_at: \"\",\n updated_at: \"\",\n created_by: \"\",\n updated_by: \"\",\n };\n}\n\nfunction settingsToOrgRow(settings: Partial<OrgSettings>): Partial<OrgRowSlice> {\n return {\n title: settings.title,\n description: settings.description,\n logoUrl: settings.logo_url,\n defaultLang: settings.default_lang,\n timezone: settings.timezone,\n settings: settings.additional_settings,\n };\n}\n\nexport async function getOrgSettingsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ organization?: OrgRowSlice }>(\n `/api/v1/admin/orgs/${orgId}`,\n { method: \"GET\", ...options },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n return {\n status: response.status,\n data: {\n success: true,\n settings: orgRowToSettings(orgId, response.data?.organization),\n } as OrgSettingsResponse,\n };\n}\n\n/**\n * @deprecated Org settings rows always exist on the admin Org. Kept as an\n * alias for backward compatibility — calls updateOrgSettingsApi.\n */\nexport async function createOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse & { id?: string }>> {\n return updateOrgSettingsApi(settings, options);\n}\n\nexport async function updateOrgSettingsApi(\n settings: Partial<OrgSettings>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgSettingsResponse>> {\n const orgId = options.orgId ?? \"\";\n const response = await browserApiRequest<{ message?: string }>(\n `/api/v1/admin/orgs/${orgId}`,\n {\n method: \"PUT\",\n body: settingsToOrgRow(settings),\n ...options,\n },\n );\n\n if (response.error) {\n return { error: response.error, status: response.status } as ApiResponse<OrgSettingsResponse>;\n }\n\n // Admin update returns { message: \"...\" }; round-trip a fresh GET so the\n // caller gets the full settings shape (with new updated_at, etc.).\n return getOrgSettingsApi(options);\n}\n\nexport async function updateOrgAgentsApi(\n agentIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/org/agents\", {\n method: \"PUT\",\n body: { agentIds },\n ...options,\n });\n}\n\nexport async function updateEntityDefinitionsApi(\n entityNames: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/org/entities\", {\n method: \"PUT\",\n body: { entityNames },\n ...options,\n });\n}\n\nexport async function updateWorkflowDefinitionsApi(\n workflowIds: string[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/org/workflows\", {\n method: \"PUT\",\n body: { workflowIds },\n ...options,\n });\n}\n\n// =============================================================================\n// BILLING API\n// =============================================================================\n\nexport async function getBillingPlansApi(\n options: ApiClientOptions\n): Promise<ApiResponse<PlansResponse>> {\n return browserApiRequest(\"/api/v1/billing/plans\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<SubscriptionResponse>> {\n return browserApiRequest(\"/api/v1/billing/subscription\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function getCreditsApi(\n options: ApiClientOptions\n): Promise<ApiResponse<CreditsResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits\", {\n method: \"GET\",\n ...options,\n });\n}\n\nexport async function createCheckoutSessionApi(\n params: { priceId: string; seats?: number; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/checkout\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function createPortalSessionApi(\n params: { returnUrl: string },\n options: ApiClientOptions\n): Promise<ApiResponse<PortalSessionResponse>> {\n return browserApiRequest(\"/api/v1/billing/portal\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\nexport async function cancelSubscriptionApi(\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean; metadata: ResponseMetadata }>> {\n return browserApiRequest(\"/api/v1/billing/subscription/cancel\", {\n method: \"POST\",\n body: {},\n ...options,\n });\n}\n\nexport async function purchaseCreditsApi(\n params: { packageId: string; successUrl?: string; cancelUrl?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<CreateCheckoutResponse>> {\n return browserApiRequest(\"/api/v1/billing/credits/purchase\", {\n method: \"POST\",\n body: params,\n ...options,\n });\n}\n\n// =============================================================================\n// PROVISIONING API (DEPRECATED - use domain packages instead)\n// =============================================================================\n\n/**\n * @deprecated Use `provisionAgentsApi` from `@elqnt/agents/api` instead\n */\nexport async function provisionDefaultAgentsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionAgentsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/agents\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionEntitiesApi` from `@elqnt/entity/api` instead\n */\nexport async function provisionEntitiesApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionEntitiesResponse>> {\n return browserApiRequest(\"/api/v1/admin/entities/update\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n/**\n * @deprecated Use `provisionWorkflowsApi` from `@elqnt/workflow/api` instead (coming soon)\n */\nexport async function provisionWorkflowsApi(\n definitions: unknown[],\n options: ApiClientOptions\n): Promise<ApiResponse<ProvisionWorkflowsResponse>> {\n return browserApiRequest(\"/api/v1/admin/provision/workflows\", {\n method: \"POST\",\n body: { definitions },\n ...options,\n });\n}\n\n// =============================================================================\n// ADMIN CRUD APIs\n// =============================================================================\n\nexport * from \"./orgs\";\nexport * from \"./users\";\nexport * from \"./invites\";\n// (analytics API moved to @elqnt/analytics/api.\n// provisioning API removed — per-org artifact provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n\n// =============================================================================\n// RE-EXPORTS\n// =============================================================================\n\nexport type {\n OnboardingState,\n OnboardingResponse,\n OrgSettings,\n OrgSettingsResponse,\n Plan,\n OrganizationBilling,\n UsageSummary,\n CreditBalance,\n PlansResponse,\n SubscriptionResponse,\n CreditsResponse,\n ProvisionAgentsResponse,\n ProvisionEntitiesResponse,\n ProvisionWorkflowsResponse,\n // Org types\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n // User types\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n // Invite types\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n","/**\n * Organizations Admin API\n *\n * Browser-side API client for organization management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Org,\n OrgResponse,\n OrgInfoResponse,\n ListOrgsResponse,\n OrgStatusTS,\n OrgTypeTS,\n} from \"../models\";\n\n// =============================================================================\n// FILTER TYPES\n// =============================================================================\n\n/**\n * Filter options for listing organizations\n *\n * `product` is routing metadata: it selects which admin_<product> DB to read\n * from (empty → eloquent). It is not a stored column on the org.\n */\nexport interface ListOrgsFilter {\n status?: OrgStatusTS;\n type?: OrgTypeTS;\n product?: string;\n}\n\n// =============================================================================\n// ORGANIZATIONS CRUD\n// =============================================================================\n\n/**\n * List all organizations (admin scope required)\n * @param filter - Optional filter criteria\n * @param options - API client options\n */\nexport async function listOrgsApi(\n filter: ListOrgsFilter | undefined,\n options: ApiClientOptions\n): Promise<ApiResponse<ListOrgsResponse>> {\n const params = new URLSearchParams();\n if (filter?.status) params.set(\"status\", filter.status);\n if (filter?.type) params.set(\"type\", filter.type);\n if (filter?.product) params.set(\"product\", filter.product);\n\n const queryString = params.toString();\n const url = queryString ? `/api/v1/admin/orgs?${queryString}` : \"/api/v1/admin/orgs\";\n\n return browserApiRequest(url, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new organization\n */\nexport async function createOrgApi(\n // `product` is transient routing metadata (which admin_<product> DB to write\n // to) sent alongside the org fields — it is not persisted on the org.\n org: Partial<Org> & { product?: string },\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(\"/api/v1/admin/orgs\", {\n method: \"POST\",\n body: org,\n ...options,\n });\n}\n\n/**\n * Get an organization by ID\n */\nexport async function getOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update an organization\n */\nexport async function updateOrgApi(\n orgId: string,\n updates: Partial<Org>,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete an organization\n */\nexport async function deleteOrgApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Get organization info (lightweight response)\n */\nexport async function getOrgInfoApi(\n orgId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<OrgInfoResponse>> {\n return browserApiRequest(`/api/v1/admin/orgs/${orgId}/info`, {\n method: \"GET\",\n ...options,\n });\n}\n\n// (createOrgWithSchemasApi removed — per-org schema provisioning is gone.\n// See docs/_db_v2/03_system_org_split.md.)\n","/**\n * Users Admin API\n *\n * Browser-side API client for user management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n User,\n UserResponse,\n ListUsersResponse,\n UserSettings,\n UserSettingsResponse,\n NotificationPreferences,\n} from \"../models\";\n\n// =============================================================================\n// USERS CRUD\n// =============================================================================\n\n/**\n * List all users in the organization\n */\nexport async function listUsersApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListUsersResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Create a new user\n */\nexport async function createUserApi(\n user: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(\"/api/v1/admin/users\", {\n method: \"POST\",\n body: user,\n ...options,\n });\n}\n\n/**\n * Get a user by ID\n */\nexport async function getUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by email\n */\nexport async function getUserByEmailApi(\n email: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-email?email=${encodeURIComponent(email)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Get a user by phone number (stored in metadata.phoneNumber)\n */\nexport async function getUserByPhoneApi(\n phone: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/by-phone?phone=${encodeURIComponent(phone)}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update a user\n */\nexport async function updateUserApi(\n userId: string,\n updates: Partial<User>,\n options: ApiClientOptions\n): Promise<ApiResponse<UserResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"PUT\",\n body: updates,\n ...options,\n });\n}\n\n/**\n * Delete a user\n */\nexport async function deleteUserApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n// =============================================================================\n// USER SETTINGS\n// =============================================================================\n\n/**\n * Get user settings\n */\nexport async function getUserSettingsApi(\n userId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Update user settings\n */\nexport async function updateUserSettingsApi(\n userId: string,\n settings: {\n settings?: UserSettings;\n notificationPreferences?: NotificationPreferences;\n },\n options: ApiClientOptions\n): Promise<ApiResponse<UserSettingsResponse>> {\n return browserApiRequest(`/api/v1/admin/users/${userId}/settings`, {\n method: \"PUT\",\n body: settings,\n ...options,\n });\n}\n","/**\n * Invites Admin API\n *\n * Browser-side API client for invitation management.\n * Uses @elqnt/api-client for HTTP requests with automatic token management.\n */\n\nimport { browserApiRequest } from \"@elqnt/api-client/browser\";\nimport type { ApiResponse, ApiClientOptions } from \"@elqnt/api-client\";\nimport type {\n Invite,\n InviteResponse,\n ListInvitesResponse,\n InviteInput,\n InvitesResult,\n} from \"../models\";\n\n// =============================================================================\n// INVITES CRUD\n// =============================================================================\n\n/**\n * List all invites in the organization\n */\nexport async function listInvitesApi(\n options: ApiClientOptions\n): Promise<ApiResponse<ListInvitesResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Send invites to multiple users\n */\nexport async function sendInvitesApi(\n invites: InviteInput[],\n options: ApiClientOptions\n): Promise<ApiResponse<InvitesResult>> {\n return browserApiRequest(\"/api/v1/admin/invites\", {\n method: \"POST\",\n body: { invites },\n ...options,\n });\n}\n\n/**\n * Send a single invite\n */\nexport async function sendInviteApi(\n invite: InviteInput,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(\"/api/v1/admin/invites/single\", {\n method: \"POST\",\n body: invite,\n ...options,\n });\n}\n\n/**\n * Get an invite by ID\n */\nexport async function getInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"GET\",\n ...options,\n });\n}\n\n/**\n * Resend an invite\n */\nexport async function resendInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/resend`, {\n method: \"POST\",\n ...options,\n });\n}\n\n/**\n * Revoke an invite\n */\nexport async function revokeInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<{ success: boolean }>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}`, {\n method: \"DELETE\",\n ...options,\n });\n}\n\n/**\n * Accept an invite (used by invited users)\n */\nexport async function acceptInviteApi(\n inviteId: string,\n options: ApiClientOptions\n): Promise<ApiResponse<InviteResponse>> {\n return browserApiRequest(`/api/v1/admin/invites/${inviteId}/accept`, {\n method: \"POST\",\n ...options,\n });\n}\n"],"mappings":"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","names":["import_browser","import_browser","import_browser"]}