@epilot/sdk 2.20.83 → 2.20.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/definitions/phone-integration-runtime.json +1 -1
  2. package/definitions/phone-integration.json +1485 -341
  3. package/dist/apis/access-token.cjs +6 -6
  4. package/dist/apis/access-token.js +1 -1
  5. package/dist/apis/address-suggestions.cjs +6 -6
  6. package/dist/apis/address-suggestions.js +1 -1
  7. package/dist/apis/address.cjs +6 -6
  8. package/dist/apis/address.js +1 -1
  9. package/dist/apis/ai-agents.cjs +6 -6
  10. package/dist/apis/ai-agents.js +1 -1
  11. package/dist/apis/app.cjs +6 -6
  12. package/dist/apis/app.js +1 -1
  13. package/dist/apis/audit-logs.cjs +6 -6
  14. package/dist/apis/audit-logs.js +1 -1
  15. package/dist/apis/automation.cjs +6 -6
  16. package/dist/apis/automation.js +1 -1
  17. package/dist/apis/billing.cjs +6 -6
  18. package/dist/apis/billing.js +1 -1
  19. package/dist/apis/blueprint-manifest.cjs +6 -6
  20. package/dist/apis/blueprint-manifest.js +1 -1
  21. package/dist/apis/calendar.cjs +6 -6
  22. package/dist/apis/calendar.js +1 -1
  23. package/dist/apis/chat.cjs +6 -6
  24. package/dist/apis/chat.js +1 -1
  25. package/dist/apis/configuration-hub.cjs +6 -6
  26. package/dist/apis/configuration-hub.js +1 -1
  27. package/dist/apis/consent.cjs +6 -6
  28. package/dist/apis/consent.js +1 -1
  29. package/dist/apis/customer-portal.cjs +6 -6
  30. package/dist/apis/customer-portal.js +1 -1
  31. package/dist/apis/dashboard.cjs +6 -6
  32. package/dist/apis/dashboard.js +1 -1
  33. package/dist/apis/data-governance.cjs +6 -6
  34. package/dist/apis/data-governance.js +1 -1
  35. package/dist/apis/deduplication.cjs +6 -6
  36. package/dist/apis/deduplication.js +1 -1
  37. package/dist/apis/design.cjs +6 -6
  38. package/dist/apis/design.js +1 -1
  39. package/dist/apis/document.cjs +6 -6
  40. package/dist/apis/document.js +1 -1
  41. package/dist/apis/email-settings.cjs +6 -6
  42. package/dist/apis/email-settings.js +1 -1
  43. package/dist/apis/email-template.cjs +6 -6
  44. package/dist/apis/email-template.js +1 -1
  45. package/dist/apis/entity-mapping.cjs +6 -6
  46. package/dist/apis/entity-mapping.js +1 -1
  47. package/dist/apis/entity.cjs +6 -6
  48. package/dist/apis/entity.js +1 -1
  49. package/dist/apis/environments.cjs +6 -6
  50. package/dist/apis/environments.js +1 -1
  51. package/dist/apis/event-catalog.cjs +6 -6
  52. package/dist/apis/event-catalog.js +1 -1
  53. package/dist/apis/external-values.cjs +6 -6
  54. package/dist/apis/external-values.js +1 -1
  55. package/dist/apis/file.cjs +6 -6
  56. package/dist/apis/file.js +1 -1
  57. package/dist/apis/iban.cjs +6 -6
  58. package/dist/apis/iban.js +1 -1
  59. package/dist/apis/identity.cjs +6 -6
  60. package/dist/apis/identity.js +1 -1
  61. package/dist/apis/integration-toolkit.cjs +6 -6
  62. package/dist/apis/integration-toolkit.js +1 -1
  63. package/dist/apis/journey.cjs +6 -6
  64. package/dist/apis/journey.js +1 -1
  65. package/dist/apis/kanban.cjs +6 -6
  66. package/dist/apis/kanban.js +1 -1
  67. package/dist/apis/message.cjs +6 -6
  68. package/dist/apis/message.js +1 -1
  69. package/dist/apis/metering.cjs +6 -6
  70. package/dist/apis/metering.js +1 -1
  71. package/dist/apis/notes.cjs +6 -6
  72. package/dist/apis/notes.js +1 -1
  73. package/dist/apis/notification.cjs +6 -6
  74. package/dist/apis/notification.js +1 -1
  75. package/dist/apis/organization.cjs +6 -6
  76. package/dist/apis/organization.js +1 -1
  77. package/dist/apis/partner-directory.cjs +6 -6
  78. package/dist/apis/partner-directory.js +1 -1
  79. package/dist/apis/permissions.cjs +6 -6
  80. package/dist/apis/permissions.js +1 -1
  81. package/dist/apis/phone-integration.cjs +8 -8
  82. package/dist/apis/phone-integration.d.cts +2 -2
  83. package/dist/apis/phone-integration.d.ts +2 -2
  84. package/dist/apis/phone-integration.js +2 -2
  85. package/dist/apis/pricing-tier.cjs +6 -6
  86. package/dist/apis/pricing-tier.js +1 -1
  87. package/dist/apis/pricing.cjs +6 -6
  88. package/dist/apis/pricing.js +1 -1
  89. package/dist/apis/purpose.cjs +6 -6
  90. package/dist/apis/purpose.js +1 -1
  91. package/dist/apis/query.cjs +6 -6
  92. package/dist/apis/query.js +1 -1
  93. package/dist/apis/sandbox.cjs +6 -6
  94. package/dist/apis/sandbox.js +1 -1
  95. package/dist/apis/sharing.cjs +6 -6
  96. package/dist/apis/sharing.js +1 -1
  97. package/dist/apis/snapshot.cjs +6 -6
  98. package/dist/apis/snapshot.js +1 -1
  99. package/dist/apis/submission.cjs +6 -6
  100. package/dist/apis/submission.js +1 -1
  101. package/dist/apis/target.cjs +6 -6
  102. package/dist/apis/target.js +1 -1
  103. package/dist/apis/targeting.cjs +6 -6
  104. package/dist/apis/targeting.js +1 -1
  105. package/dist/apis/template-variables.cjs +6 -6
  106. package/dist/apis/template-variables.js +1 -1
  107. package/dist/apis/user.cjs +6 -6
  108. package/dist/apis/user.js +1 -1
  109. package/dist/apis/validation-rules.cjs +6 -6
  110. package/dist/apis/validation-rules.js +1 -1
  111. package/dist/apis/webhooks.cjs +6 -6
  112. package/dist/apis/webhooks.js +1 -1
  113. package/dist/apis/workflow-definition.cjs +6 -6
  114. package/dist/apis/workflow-definition.js +1 -1
  115. package/dist/apis/workflow.cjs +6 -6
  116. package/dist/apis/workflow.js +1 -1
  117. package/dist/chunk-E6N33SVB.js +14 -0
  118. package/dist/{chunk-KGIFSOWS.cjs → chunk-T4WYY7OU.cjs} +2 -2
  119. package/dist/chunk-U4AOZZGW.cjs +14 -0
  120. package/dist/{chunk-HFBZFYTU.js → chunk-ZPG2RR4J.js} +2 -2
  121. package/dist/index.cjs +10 -10
  122. package/dist/index.d.cts +1 -1
  123. package/dist/index.d.ts +1 -1
  124. package/dist/index.js +2 -2
  125. package/dist/phone-integration-6GDKV5EH.js +7 -0
  126. package/dist/phone-integration-UENU7EVN.cjs +7 -0
  127. package/dist/{phone-integration-runtime-7PWKKUBM.cjs → phone-integration-runtime-4SDHGFMR.cjs} +2 -2
  128. package/dist/{phone-integration-runtime-5VAA6Q4L.js → phone-integration-runtime-PWUZOJVD.js} +1 -1
  129. package/dist/phone-integration.d-Cx4ZOtzD.d.cts +1429 -0
  130. package/dist/phone-integration.d-Cx4ZOtzD.d.ts +1429 -0
  131. package/docs/phone-integration.md +772 -0
  132. package/package.json +1 -1
  133. package/dist/chunk-NHA2IXWN.cjs +0 -14
  134. package/dist/chunk-QFTXKO2I.js +0 -14
  135. package/dist/phone-integration-ARSGAHNJ.cjs +0 -7
  136. package/dist/phone-integration-MGH7LYID.js +0 -7
  137. package/dist/phone-integration.d-BNqwHuQ6.d.cts +0 -623
  138. package/dist/phone-integration.d-BNqwHuQ6.d.ts +0 -623
@@ -32,6 +32,13 @@ const { data } = await phoneIntegrationClient.batchSearchCustomers(...)
32
32
  - [`listPhoneAgents`](#listphoneagents)
33
33
  - [`assignPhoneAgent`](#assignphoneagent)
34
34
  - [`removePhoneAgent`](#removephoneagent)
35
+ - [`getLiveSnapshot`](#getlivesnapshot)
36
+ - [`listLiveAgents`](#listliveagents)
37
+ - [`setAgentRouting`](#setagentrouting)
38
+ - [`previewAgentRouting`](#previewagentrouting)
39
+ - [`listQueues`](#listqueues)
40
+ - [`getQueue`](#getqueue)
41
+ - [`getCallReport`](#getcallreport)
35
42
 
36
43
  **operator**
37
44
  - [`listProviderSetups`](#listprovidersetups)
@@ -49,6 +56,27 @@ const { data } = await phoneIntegrationClient.batchSearchCustomers(...)
49
56
  - [`CustomerSearchResult`](#customersearchresult)
50
57
  - [`CustomerIdentifier`](#customeridentifier)
51
58
  - [`CustomerSummary`](#customersummary)
59
+ - [`AgentState`](#agentstate)
60
+ - [`AgentPresence`](#agentpresence)
61
+ - [`Skill`](#skill)
62
+ - [`QueueRef`](#queueref)
63
+ - [`PersonRef`](#personref)
64
+ - [`EligibilityPath`](#eligibilitypath)
65
+ - [`AgentQueueEligibility`](#agentqueueeligibility)
66
+ - [`LiveAgent`](#liveagent)
67
+ - [`LiveAgentCounters`](#liveagentcounters)
68
+ - [`QueueHealth`](#queuehealth)
69
+ - [`QueueLive`](#queuelive)
70
+ - [`LiveSnapshot`](#livesnapshot)
71
+ - [`QueueRoutingStep`](#queueroutingstep)
72
+ - [`QueueOverview`](#queueoverview)
73
+ - [`EligibleAgent`](#eligibleagent)
74
+ - [`WaitingCall`](#waitingcall)
75
+ - [`QueueDetail`](#queuedetail)
76
+ - [`AgentRoutingRequest`](#agentroutingrequest)
77
+ - [`AgentRouting`](#agentrouting)
78
+ - [`AgentRoutingPreview`](#agentroutingpreview)
79
+ - [`CallReport`](#callreport)
52
80
  - [`ErrorResponse`](#errorresponse)
53
81
 
54
82
  ### `batchSearchCustomers`
@@ -209,6 +237,386 @@ const { data } = await client.removePhoneAgent({
209
237
 
210
238
  ---
211
239
 
240
+ ### `getLiveSnapshot`
241
+
242
+ One snapshot of the organization's live phone state for the control center's Overview: agent
243
+ presence counters and per-queue health (waiting calls, longest wait, eligible vs available
244
+ agents). Read fr
245
+
246
+ `GET /v1/manager/live`
247
+
248
+ ```ts
249
+ const { data } = await client.getLiveSnapshot()
250
+ ```
251
+
252
+ <details>
253
+ <summary>Response</summary>
254
+
255
+ ```json
256
+ {
257
+ "captured_at": "1970-01-01T00:00:00.000Z",
258
+ "agents": {
259
+ "total": 0,
260
+ "online": 0,
261
+ "available": 0,
262
+ "on_call": 0,
263
+ "wrap_up": 0,
264
+ "offline": 0
265
+ },
266
+ "queues": [
267
+ {
268
+ "id": "string",
269
+ "name": "string",
270
+ "waiting": 0,
271
+ "longest_wait_seconds": 0,
272
+ "eligible": 0,
273
+ "available": 0,
274
+ "health": "healthy"
275
+ }
276
+ ],
277
+ "calls_waiting": 0,
278
+ "longest_wait_seconds": 0
279
+ }
280
+ ```
281
+
282
+ </details>
283
+
284
+ ---
285
+
286
+ ### `listLiveAgents`
287
+
288
+ The organization's phone agents with their live phone status, their skills (as the phone system
289
+ holds them) and the queues they can take calls from. Agents that are epilot phone agents carry
290
+ the epilo
291
+
292
+ `GET /v1/manager/agents/live`
293
+
294
+ ```ts
295
+ const { data } = await client.listLiveAgents()
296
+ ```
297
+
298
+ <details>
299
+ <summary>Response</summary>
300
+
301
+ ```json
302
+ {
303
+ "captured_at": "1970-01-01T00:00:00.000Z",
304
+ "results": [
305
+ {
306
+ "provider_agent_id": "string",
307
+ "user_id": "string",
308
+ "name": "string",
309
+ "email": "string",
310
+ "enabled": true,
311
+ "state": "available",
312
+ "presence": {
313
+ "name": "string",
314
+ "label": "string",
315
+ "available": true
316
+ },
317
+ "display_status": "string",
318
+ "skills": ["string"],
319
+ "queues": [
320
+ {
321
+ "id": "string",
322
+ "name": "string",
323
+ "via": ["skill"],
324
+ "skills": ["string"],
325
+ "locked": true
326
+ }
327
+ ],
328
+ "current_call": {
329
+ "started_at": "1970-01-01T00:00:00.000Z",
330
+ "queue_name": "string"
331
+ }
332
+ }
333
+ ]
334
+ }
335
+ ```
336
+
337
+ </details>
338
+
339
+ ---
340
+
341
+ ### `setAgentRouting`
342
+
343
+ Sets an agent's skills and direct queue membership (full sets, not deltas), in this order:
344
+ 1. Skills: the agent's skills in the phone system are replaced by `skills`, so the phone system
345
+ routes on
346
+
347
+ `PUT /v1/manager/agents/{provider_agent_id}/routing`
348
+
349
+ ```ts
350
+ const { data } = await client.setAgentRouting(
351
+ {
352
+ provider_agent_id: 'example',
353
+ },
354
+ {
355
+ skills: ['string'],
356
+ queue_ids: ['string']
357
+ },
358
+ )
359
+ ```
360
+
361
+ <details>
362
+ <summary>Response</summary>
363
+
364
+ ```json
365
+ {
366
+ "provider_agent_id": "string",
367
+ "skills": ["string"],
368
+ "queues": [
369
+ {
370
+ "id": "string",
371
+ "name": "string",
372
+ "via": ["skill"],
373
+ "skills": ["string"],
374
+ "locked": true
375
+ }
376
+ ]
377
+ }
378
+ ```
379
+
380
+ </details>
381
+
382
+ ---
383
+
384
+ ### `previewAgentRouting`
385
+
386
+ The routing impact of `setAgentRouting` with the same body, without changing anything: the
387
+ queues the agent can take calls from now (as the phone system routes today) and after the
388
+ change, what is add
389
+
390
+ `POST /v1/manager/agents/{provider_agent_id}/routing:preview`
391
+
392
+ ```ts
393
+ const { data } = await client.previewAgentRouting(
394
+ {
395
+ provider_agent_id: 'example',
396
+ },
397
+ {
398
+ skills: ['string'],
399
+ queue_ids: ['string']
400
+ },
401
+ )
402
+ ```
403
+
404
+ <details>
405
+ <summary>Response</summary>
406
+
407
+ ```json
408
+ {
409
+ "provider_agent_id": "string",
410
+ "before": [
411
+ {
412
+ "id": "string",
413
+ "name": "string"
414
+ }
415
+ ],
416
+ "after": [
417
+ {
418
+ "id": "string",
419
+ "name": "string"
420
+ }
421
+ ],
422
+ "added": [
423
+ {
424
+ "id": "string",
425
+ "name": "string"
426
+ }
427
+ ],
428
+ "removed": [
429
+ {
430
+ "id": "string",
431
+ "name": "string"
432
+ }
433
+ ],
434
+ "coverage_lost": [
435
+ {
436
+ "id": "string",
437
+ "name": "string"
438
+ }
439
+ ],
440
+ "locked": [
441
+ {
442
+ "id": "string",
443
+ "name": "string"
444
+ }
445
+ ]
446
+ }
447
+ ```
448
+
449
+ </details>
450
+
451
+ ---
452
+
453
+ ### `listQueues`
454
+
455
+ The organization's queues with live demand (waiting calls, longest wait), staffing (eligible
456
+ vs available agents), derived health and who can take their calls: the routing steps in the
457
+ order the phone
458
+
459
+ `GET /v1/manager/queues`
460
+
461
+ ```ts
462
+ const { data } = await client.listQueues()
463
+ ```
464
+
465
+ <details>
466
+ <summary>Response</summary>
467
+
468
+ ```json
469
+ {
470
+ "captured_at": "1970-01-01T00:00:00.000Z",
471
+ "results": [
472
+ {
473
+ "id": "string",
474
+ "name": "string",
475
+ "waiting": 0,
476
+ "longest_wait_seconds": 0,
477
+ "eligible": 0,
478
+ "available": 0,
479
+ "health": "healthy",
480
+ "numbers": ["string"],
481
+ "routing": [
482
+ {
483
+ "id": "string",
484
+ "order": 0,
485
+ "label": "string",
486
+ "enabled": true,
487
+ "skills": ["string"],
488
+ "people": [
489
+ {
490
+ "provider_agent_id": "string",
491
+ "user_id": "string",
492
+ "name": "string"
493
+ }
494
+ ],
495
+ "managed_by_epilot": true
496
+ }
497
+ ]
498
+ }
499
+ ]
500
+ }
501
+ ```
502
+
503
+ </details>
504
+
505
+ ---
506
+
507
+ ### `getQueue`
508
+
509
+ One queue for the control center's queue drawer: the overview fields plus the agents currently
510
+ eligible for it (with live status and how they are eligible) and the calls waiting in it.
511
+ Requires `phone
512
+
513
+ `GET /v1/manager/queues/{queue_id}`
514
+
515
+ ```ts
516
+ const { data } = await client.getQueue({
517
+ queue_id: 'example',
518
+ })
519
+ ```
520
+
521
+ <details>
522
+ <summary>Response</summary>
523
+
524
+ ```json
525
+ {
526
+ "id": "string",
527
+ "name": "string",
528
+ "waiting": 0,
529
+ "longest_wait_seconds": 0,
530
+ "eligible": 0,
531
+ "available": 0,
532
+ "health": "healthy",
533
+ "numbers": ["string"],
534
+ "routing": [
535
+ {
536
+ "id": "string",
537
+ "order": 0,
538
+ "label": "string",
539
+ "enabled": true,
540
+ "skills": ["string"],
541
+ "people": [
542
+ {
543
+ "provider_agent_id": "string",
544
+ "user_id": "string",
545
+ "name": "string"
546
+ }
547
+ ],
548
+ "managed_by_epilot": true
549
+ }
550
+ ],
551
+ "captured_at": "1970-01-01T00:00:00.000Z",
552
+ "eligible_agents": [
553
+ {
554
+ "provider_agent_id": "string",
555
+ "user_id": "string",
556
+ "name": "string",
557
+ "email": "string",
558
+ "state": "available",
559
+ "presence": {
560
+ "name": "string",
561
+ "label": "string",
562
+ "available": true
563
+ },
564
+ "via": ["skill"],
565
+ "skills": ["string"]
566
+ }
567
+ ],
568
+ "waiting_calls": [
569
+ {
570
+ "id": "string",
571
+ "from_masked": "string",
572
+ "waited_seconds": 0,
573
+ "state": "string"
574
+ }
575
+ ]
576
+ }
577
+ ```
578
+
579
+ </details>
580
+
581
+ ---
582
+
583
+ ### `getCallReport`
584
+
585
+ Inbound call outcomes for a period, from the provider's call reporting: how many inbound calls
586
+ there were, how many an agent handled (bridged) and how many ended without an agent (abandoned
587
+ or failed)
588
+
589
+ `GET /v1/manager/reporting/calls`
590
+
591
+ ```ts
592
+ const { data } = await client.getCallReport({
593
+ from: 'example',
594
+ to: 'example',
595
+ })
596
+ ```
597
+
598
+ <details>
599
+ <summary>Response</summary>
600
+
601
+ ```json
602
+ {
603
+ "from": "1970-01-01T00:00:00.000Z",
604
+ "to": "1970-01-01T00:00:00.000Z",
605
+ "inbound_total": 0,
606
+ "handled_by_agent": 0,
607
+ "abandoned_or_failed": 0,
608
+ "previous_period": {
609
+ "from": "1970-01-01T00:00:00.000Z",
610
+ "to": "1970-01-01T00:00:00.000Z",
611
+ "inbound_total": 0
612
+ }
613
+ }
614
+ ```
615
+
616
+ </details>
617
+
618
+ ---
619
+
212
620
  ### `listProviderSetups`
213
621
 
214
622
  Every organization that has a telephony provider tenant, for the admin portal's overview: the
@@ -493,6 +901,370 @@ type CustomerSummary = {
493
901
  }
494
902
  ```
495
903
 
904
+ ### `AgentState`
905
+
906
+ The agent's live line state as the provider reports it, plus `offline` for an agent whose
907
+ presence is not available (not signed in or on a busy presence) and `unknown` when the
908
+ provider gives no state. `in_call` covers ringing-to-bridged; `wrap_up` is the post-call time.
909
+
910
+
911
+ ```ts
912
+ type AgentState = "available" | "ringing" | "in_call" | "wrap_up" | "busy" | "declined" | "unreachable" | "selected" | "offline" | "unknown"
913
+ ```
914
+
915
+ ### `AgentPresence`
916
+
917
+ The provider presence the agent has selected (e.g. Available, Break, Meeting)
918
+
919
+ ```ts
920
+ type AgentPresence = {
921
+ name: string
922
+ label: string
923
+ available: boolean
924
+ }
925
+ ```
926
+
927
+ ### `Skill`
928
+
929
+ A skill as the phone system holds it (Babelforce: an agent tag). epilot's convention for skills is
930
+ `<skill category>:`<label>`` (e.g. `language:german`), which the control center shows as
931
+ "Category · Label"; a skill without a colon has no category.
932
+
933
+
934
+ ```ts
935
+ type Skill = string
936
+ ```
937
+
938
+ ### `QueueRef`
939
+
940
+ ```ts
941
+ type QueueRef = {
942
+ id: string
943
+ name: string
944
+ }
945
+ ```
946
+
947
+ ### `PersonRef`
948
+
949
+ An agent as a routing step names them
950
+
951
+ ```ts
952
+ type PersonRef = {
953
+ provider_agent_id: string
954
+ user_id?: string
955
+ name: string
956
+ }
957
+ ```
958
+
959
+ ### `EligibilityPath`
960
+
961
+ How an agent can take a queue's calls:
962
+ - `skill`: the queue routes to people with a skill the agent has (changes with the agent's skills);
963
+ - `direct`: the agent is in the queue's epilot-managed step (added from the control center);
964
+ - `routing`: the phone system's own routing names the agent (a team
965
+
966
+ ```ts
967
+ type EligibilityPath = "skill" | "direct" | "routing"
968
+ ```
969
+
970
+ ### `AgentQueueEligibility`
971
+
972
+ A queue an agent can take calls from, and why
973
+
974
+ ```ts
975
+ type AgentQueueEligibility = {
976
+ id: string
977
+ name: string
978
+ via: "skill" | "direct" | "routing"[]
979
+ skills: string[]
980
+ locked: boolean
981
+ }
982
+ ```
983
+
984
+ ### `LiveAgent`
985
+
986
+ ```ts
987
+ type LiveAgent = {
988
+ provider_agent_id: string
989
+ user_id?: string
990
+ name: string
991
+ email?: string
992
+ enabled: boolean
993
+ state: "available" | "ringing" | "in_call" | "wrap_up" | "busy" | "declined" | "unreachable" | "selected" | "offline" | "unknown"
994
+ presence?: {
995
+ name: string
996
+ label: string
997
+ available: boolean
998
+ }
999
+ display_status?: string
1000
+ skills: string[]
1001
+ queues: Array<{
1002
+ id: string
1003
+ name: string
1004
+ via: "skill" | "direct" | "routing"[]
1005
+ skills: string[]
1006
+ locked: boolean
1007
+ }>
1008
+ current_call?: {
1009
+ started_at: string // date-time
1010
+ queue_name?: string
1011
+ }
1012
+ }
1013
+ ```
1014
+
1015
+ ### `LiveAgentCounters`
1016
+
1017
+ Presence counters over the organization's agents
1018
+
1019
+ ```ts
1020
+ type LiveAgentCounters = {
1021
+ total: number
1022
+ online: number
1023
+ available: number
1024
+ on_call: number
1025
+ wrap_up: number
1026
+ offline: number
1027
+ }
1028
+ ```
1029
+
1030
+ ### `QueueHealth`
1031
+
1032
+ `at_risk`: calls are waiting and no eligible agent is available. `healthy`: at least one
1033
+ eligible agent is available. `quiet`: nothing waiting and nobody available.
1034
+
1035
+
1036
+ ```ts
1037
+ type QueueHealth = "healthy" | "at_risk" | "quiet"
1038
+ ```
1039
+
1040
+ ### `QueueLive`
1041
+
1042
+ Live demand and staffing of one queue
1043
+
1044
+ ```ts
1045
+ type QueueLive = {
1046
+ id: string
1047
+ name: string
1048
+ waiting: number
1049
+ longest_wait_seconds?: number
1050
+ eligible: number
1051
+ available: number
1052
+ health: "healthy" | "at_risk" | "quiet"
1053
+ }
1054
+ ```
1055
+
1056
+ ### `LiveSnapshot`
1057
+
1058
+ ```ts
1059
+ type LiveSnapshot = {
1060
+ captured_at: string // date-time
1061
+ agents: {
1062
+ total: number
1063
+ online: number
1064
+ available: number
1065
+ on_call: number
1066
+ wrap_up: number
1067
+ offline: number
1068
+ }
1069
+ queues: Array<{
1070
+ id: string
1071
+ name: string
1072
+ waiting: number
1073
+ longest_wait_seconds?: number
1074
+ eligible: number
1075
+ available: number
1076
+ health: "healthy" | "at_risk" | "quiet"
1077
+ }>
1078
+ calls_waiting: number
1079
+ longest_wait_seconds?: number
1080
+ }
1081
+ ```
1082
+
1083
+ ### `QueueRoutingStep`
1084
+
1085
+ One step of who can take a queue's calls, in the order the phone system tries them. A step
1086
+ offers calls to the people it names and to everyone with any of its skills. Teams set up in the
1087
+ phone system appear as the people they contain. The epilot-managed step holds the people added
1088
+ from the control c
1089
+
1090
+ ```ts
1091
+ type QueueRoutingStep = {
1092
+ id: string
1093
+ order: number
1094
+ label: string
1095
+ enabled: boolean
1096
+ skills: string[]
1097
+ people: Array<{
1098
+ provider_agent_id: string
1099
+ user_id?: string
1100
+ name: string
1101
+ }>
1102
+ managed_by_epilot: boolean
1103
+ }
1104
+ ```
1105
+
1106
+ ### `QueueOverview`
1107
+
1108
+ ```ts
1109
+ type QueueOverview = {
1110
+ id: string
1111
+ name: string
1112
+ waiting: number
1113
+ longest_wait_seconds?: number
1114
+ eligible: number
1115
+ available: number
1116
+ health: "healthy" | "at_risk" | "quiet"
1117
+ numbers?: string[]
1118
+ routing: Array<{
1119
+ id: string
1120
+ order: number
1121
+ label: string
1122
+ enabled: boolean
1123
+ skills: string[]
1124
+ people: Array<{
1125
+ provider_agent_id: { ... }
1126
+ user_id?: { ... }
1127
+ name: { ... }
1128
+ }>
1129
+ managed_by_epilot: boolean
1130
+ }>
1131
+ }
1132
+ ```
1133
+
1134
+ ### `EligibleAgent`
1135
+
1136
+ An agent who can take the queue's calls, with live status
1137
+
1138
+ ```ts
1139
+ type EligibleAgent = {
1140
+ provider_agent_id: string
1141
+ user_id?: string
1142
+ name: string
1143
+ email?: string
1144
+ state: "available" | "ringing" | "in_call" | "wrap_up" | "busy" | "declined" | "unreachable" | "selected" | "offline" | "unknown"
1145
+ presence?: {
1146
+ name: string
1147
+ label: string
1148
+ available: boolean
1149
+ }
1150
+ via: "skill" | "direct" | "routing"[]
1151
+ skills: string[]
1152
+ }
1153
+ ```
1154
+
1155
+ ### `WaitingCall`
1156
+
1157
+ ```ts
1158
+ type WaitingCall = {
1159
+ id: string
1160
+ from_masked?: string
1161
+ waited_seconds: number
1162
+ state: string
1163
+ }
1164
+ ```
1165
+
1166
+ ### `QueueDetail`
1167
+
1168
+ ```ts
1169
+ type QueueDetail = {
1170
+ captured_at: string // date-time
1171
+ eligible_agents: Array<{
1172
+ provider_agent_id: string
1173
+ user_id?: string
1174
+ name: string
1175
+ email?: string
1176
+ state: "available" | "ringing" | "in_call" | "wrap_up" | "busy" | "declined" | "unreachable" | "selected" | "offline" | "unknown"
1177
+ presence?: {
1178
+ name: { ... }
1179
+ label: { ... }
1180
+ available: { ... }
1181
+ }
1182
+ via: "skill" | "direct" | "routing"[]
1183
+ skills: string[]
1184
+ }>
1185
+ waiting_calls: Array<{
1186
+ id: string
1187
+ from_masked?: string
1188
+ waited_seconds: number
1189
+ state: string
1190
+ }>
1191
+ }
1192
+ ```
1193
+
1194
+ ### `AgentRoutingRequest`
1195
+
1196
+ ```ts
1197
+ type AgentRoutingRequest = {
1198
+ skills: string[]
1199
+ queue_ids: string[]
1200
+ }
1201
+ ```
1202
+
1203
+ ### `AgentRouting`
1204
+
1205
+ ```ts
1206
+ type AgentRouting = {
1207
+ provider_agent_id: string
1208
+ skills: string[]
1209
+ queues: Array<{
1210
+ id: string
1211
+ name: string
1212
+ via: "skill" | "direct" | "routing"[]
1213
+ skills: string[]
1214
+ locked: boolean
1215
+ }>
1216
+ }
1217
+ ```
1218
+
1219
+ ### `AgentRoutingPreview`
1220
+
1221
+ ```ts
1222
+ type AgentRoutingPreview = {
1223
+ provider_agent_id: string
1224
+ before: Array<{
1225
+ id: string
1226
+ name: string
1227
+ }>
1228
+ after: Array<{
1229
+ id: string
1230
+ name: string
1231
+ }>
1232
+ added: Array<{
1233
+ id: string
1234
+ name: string
1235
+ }>
1236
+ removed: Array<{
1237
+ id: string
1238
+ name: string
1239
+ }>
1240
+ coverage_lost: Array<{
1241
+ id: string
1242
+ name: string
1243
+ }>
1244
+ locked: Array<{
1245
+ id: string
1246
+ name: string
1247
+ }>
1248
+ }
1249
+ ```
1250
+
1251
+ ### `CallReport`
1252
+
1253
+ ```ts
1254
+ type CallReport = {
1255
+ from: string // date-time
1256
+ to: string // date-time
1257
+ inbound_total: number
1258
+ handled_by_agent: number
1259
+ abandoned_or_failed: number
1260
+ previous_period: {
1261
+ from: string // date-time
1262
+ to: string // date-time
1263
+ inbound_total: number
1264
+ }
1265
+ }
1266
+ ```
1267
+
496
1268
  ### `ErrorResponse`
497
1269
 
498
1270
  ```ts