@epilot/cli 0.1.222 → 0.1.224
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/definitions/phone-integration.json +1485 -341
- package/definitions/targeting.json +77 -3
- package/dist/{access-token-YO42PNUK.js → access-token-HAJWXOQS.js} +2 -2
- package/dist/{add-component-U3ASOMJA.js → add-component-2FNHUGDB.js} +2 -2
- package/dist/{add-function-M4WC7ZQ7.js → add-function-7KSOELWC.js} +2 -2
- package/dist/{address-V2S2RWX7.js → address-AHZ265TU.js} +2 -2
- package/dist/{address-suggestions-JKCIJB3G.js → address-suggestions-IPWHRPX3.js} +2 -2
- package/dist/{ai-agents-MF7PUFBS.js → ai-agents-MPD6YQVT.js} +2 -2
- package/dist/{api-U7NWJQKD.js → api-IIQ2MKEC.js} +2 -2
- package/dist/app-TRQ34G2B.js +26 -0
- package/dist/{audit-logs-MTS3MO4F.js → audit-logs-UYA2MGCQ.js} +2 -2
- package/dist/{automation-ND5QC4ZR.js → automation-LM2RNFHP.js} +2 -2
- package/dist/{billing-LERXUQFB.js → billing-MCBMYEDR.js} +2 -2
- package/dist/bin/epilot.js +61 -61
- package/dist/{blueprint-manifest-BXJQVHOQ.js → blueprint-manifest-SED5YZYT.js} +2 -2
- package/dist/{calendar-M3XNW6A6.js → calendar-7GBFFLFM.js} +2 -2
- package/dist/{chat-VJGSGZFL.js → chat-4RAHZFI3.js} +2 -2
- package/dist/{chunk-FBTE6MF7.js → chunk-D36APSCZ.js} +1 -1
- package/dist/{chunk-UWBOREGJ.js → chunk-NQGW2C4S.js} +1 -1
- package/dist/{chunk-FQQG5OMX.js → chunk-R4TEJP2Y.js} +1 -1
- package/dist/{chunk-WNPAI334.js → chunk-TZ7FZ6QN.js} +8 -1
- package/dist/{completion-2QNPMPKZ.js → completion-JEV2CM5B.js} +1 -1
- package/dist/{configuration-hub-5G637NBO.js → configuration-hub-A2VUDAPJ.js} +2 -2
- package/dist/{consent-FXMOXFS5.js → consent-A5IRMT7H.js} +2 -2
- package/dist/{customer-portal-BZQPOFHR.js → customer-portal-UQERGVEZ.js} +2 -2
- package/dist/{dashboard-KTYB5M7A.js → dashboard-JN7V54MD.js} +2 -2
- package/dist/{data-governance-F3J2A6YD.js → data-governance-26RFTXNN.js} +2 -2
- package/dist/{deduplication-YPRI66NH.js → deduplication-VB6LCAC4.js} +2 -2
- package/dist/{deploy-65YZSHOZ.js → deploy-2SJSM4IE.js} +2 -2
- package/dist/{design-U6YNJLFU.js → design-GLFWTKOO.js} +2 -2
- package/dist/{dev-ESQ3ZA3I.js → dev-VFBNXMBR.js} +2 -2
- package/dist/{document-ITWGS5CS.js → document-YZG4AT5T.js} +2 -2
- package/dist/{email-settings-JF6X4QZQ.js → email-settings-6Q5LD2IP.js} +2 -2
- package/dist/{email-template-CQMWIFSO.js → email-template-UMOZ72AQ.js} +2 -2
- package/dist/{entity-3IYE2PPL.js → entity-AS6WW6TO.js} +2 -2
- package/dist/{entity-mapping-QMAQVJDT.js → entity-mapping-Y466NCQZ.js} +2 -2
- package/dist/{environments-MK6CZYNB.js → environments-W42SGCXW.js} +2 -2
- package/dist/{event-catalog-6C4HEG6J.js → event-catalog-3EVWK5KK.js} +2 -2
- package/dist/{export-H64WD3NR.js → export-XHKO4JFU.js} +2 -2
- package/dist/{external-values-N6DECUP7.js → external-values-OXGLOXZQ.js} +2 -2
- package/dist/{file-EVIVFIJQ.js → file-Q4QHVMN5.js} +2 -2
- package/dist/{iban-Z63UAKBP.js → iban-SA4NIX57.js} +2 -2
- package/dist/{identity-HVFVLP5K.js → identity-IE4XLVFM.js} +2 -2
- package/dist/{init-V52GIE2O.js → init-3M5IS64V.js} +2 -2
- package/dist/{integration-toolkit-VSYY6CHV.js → integration-toolkit-D4AWFB5Q.js} +2 -2
- package/dist/{journey-OKUN7BPZ.js → journey-3DKM4KRR.js} +2 -2
- package/dist/{kanban-ZYIZWLYU.js → kanban-2FLKOMQP.js} +2 -2
- package/dist/{message-KA45TWLE.js → message-72K7Q3FO.js} +2 -2
- package/dist/{metering-VRPWZKGI.js → metering-OG5K5UF2.js} +2 -2
- package/dist/{notes-QRIXU3ZY.js → notes-VWGQUYND.js} +2 -2
- package/dist/{notification-BJX5NNP3.js → notification-SWFBI2IT.js} +2 -2
- package/dist/{organization-2ZH5HP4Y.js → organization-IWLF7O3A.js} +2 -2
- package/dist/{partner-directory-YFEK7AIS.js → partner-directory-O3WRVF2V.js} +2 -2
- package/dist/{permissions-PEHUPVJN.js → permissions-UG32JF2L.js} +2 -2
- package/dist/{phone-integration-WOEW5S7W.js → phone-integration-IOI6J4LB.js} +2 -2
- package/dist/{pricing-D7ZK3DNY.js → pricing-VZ5MWJPJ.js} +2 -2
- package/dist/{pricing-tier-MPC6HXAO.js → pricing-tier-NJMOQLMM.js} +2 -2
- package/dist/{purpose-OMSX4T23.js → purpose-OSTS7PLC.js} +2 -2
- package/dist/{query-QUYAQINO.js → query-WHBGAAPS.js} +2 -2
- package/dist/{remove-component-WLVEEJNW.js → remove-component-BV5K5T6O.js} +2 -2
- package/dist/{review-XX7UGLKK.js → review-NKTRCUKW.js} +2 -2
- package/dist/{sandbox-S23PZ2LO.js → sandbox-WJBNQJUL.js} +2 -2
- package/dist/{sharing-4RTLPIGD.js → sharing-I4AGQEQP.js} +2 -2
- package/dist/{snapshot-HLAJ4MDS.js → snapshot-ZTEN3SDN.js} +2 -2
- package/dist/{submission-IJRHQZZJ.js → submission-Z5QDAD6A.js} +2 -2
- package/dist/{targeting-IGOQZS37.js → targeting-ZTXTVW7K.js} +2 -2
- package/dist/{template-variables-2ZQVJH3P.js → template-variables-RBJHZI5D.js} +2 -2
- package/dist/{upgrade-PUS2OJSI.js → upgrade-OJGZ5NUJ.js} +1 -1
- package/dist/{user-GFRNHX3Y.js → user-CKOEPZCI.js} +2 -2
- package/dist/{validate-N6RM4SW5.js → validate-BUEDSCL2.js} +2 -2
- package/dist/{validation-rules-GLMKZ5IZ.js → validation-rules-Q6R3C2ML.js} +2 -2
- package/dist/{versions-MV4ALIE5.js → versions-LPYQEXFE.js} +2 -2
- package/dist/{webhooks-4P36KBE5.js → webhooks-6J3VXDIN.js} +2 -2
- package/dist/{workflow-7JLCYM3A.js → workflow-JQIGQGGQ.js} +2 -2
- package/dist/{workflow-definition-EEEN6VNT.js → workflow-definition-6B7HZ2YZ.js} +2 -2
- package/package.json +1 -1
- package/dist/app-YYVJOAUH.js +0 -26
|
@@ -424,37 +424,91 @@
|
|
|
424
424
|
}
|
|
425
425
|
}
|
|
426
426
|
},
|
|
427
|
-
"/v1/
|
|
427
|
+
"/v1/manager/live": {
|
|
428
428
|
"get": {
|
|
429
|
-
"operationId": "
|
|
430
|
-
"summary": "
|
|
431
|
-
"description": "
|
|
429
|
+
"operationId": "getLiveSnapshot",
|
|
430
|
+
"summary": "getLiveSnapshot",
|
|
431
|
+
"description": "One snapshot of the organization's live phone state for the control center's Overview: agent\npresence counters and per-queue health (waiting calls, longest wait, eligible vs available\nagents). Read from the provider on every call (no caching); the control center polls it about\nevery 20 seconds. Requires `phone:manage`.\n",
|
|
432
432
|
"tags": [
|
|
433
|
-
"
|
|
433
|
+
"manager"
|
|
434
434
|
],
|
|
435
435
|
"security": [
|
|
436
436
|
{
|
|
437
|
-
"
|
|
437
|
+
"EpilotAuth": []
|
|
438
438
|
}
|
|
439
439
|
],
|
|
440
440
|
"x-epilot-permissions": [
|
|
441
|
-
"
|
|
441
|
+
"phone:manage"
|
|
442
442
|
],
|
|
443
443
|
"responses": {
|
|
444
444
|
"200": {
|
|
445
|
-
"description": "The
|
|
445
|
+
"description": "The live snapshot",
|
|
446
|
+
"content": {
|
|
447
|
+
"application/json": {
|
|
448
|
+
"schema": {
|
|
449
|
+
"$ref": "#/components/schemas/LiveSnapshot"
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
"401": {
|
|
455
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
456
|
+
},
|
|
457
|
+
"403": {
|
|
458
|
+
"$ref": "#/components/responses/Forbidden"
|
|
459
|
+
},
|
|
460
|
+
"409": {
|
|
461
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
462
|
+
"content": {
|
|
463
|
+
"application/json": {
|
|
464
|
+
"schema": {
|
|
465
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"502": {
|
|
471
|
+
"$ref": "#/components/responses/BadGateway"
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
"/v1/manager/agents/live": {
|
|
477
|
+
"get": {
|
|
478
|
+
"operationId": "listLiveAgents",
|
|
479
|
+
"summary": "listLiveAgents",
|
|
480
|
+
"description": "The organization's phone agents with their live phone status, their skills (as the phone system\nholds them) and the queues they can take calls from. Agents that are epilot phone agents carry\nthe epilot `user_id`. Queue eligibility is derived from every queue's routing steps (skills and\npeople). The control center filters and searches this list client-side and polls it about every\n20 seconds. Requires `phone:manage`.\n",
|
|
481
|
+
"tags": [
|
|
482
|
+
"manager"
|
|
483
|
+
],
|
|
484
|
+
"security": [
|
|
485
|
+
{
|
|
486
|
+
"EpilotAuth": []
|
|
487
|
+
}
|
|
488
|
+
],
|
|
489
|
+
"x-epilot-permissions": [
|
|
490
|
+
"phone:manage"
|
|
491
|
+
],
|
|
492
|
+
"responses": {
|
|
493
|
+
"200": {
|
|
494
|
+
"description": "The organization's agents with live state",
|
|
446
495
|
"content": {
|
|
447
496
|
"application/json": {
|
|
448
497
|
"schema": {
|
|
449
498
|
"type": "object",
|
|
450
499
|
"required": [
|
|
500
|
+
"captured_at",
|
|
451
501
|
"results"
|
|
452
502
|
],
|
|
453
503
|
"properties": {
|
|
504
|
+
"captured_at": {
|
|
505
|
+
"type": "string",
|
|
506
|
+
"format": "date-time"
|
|
507
|
+
},
|
|
454
508
|
"results": {
|
|
455
509
|
"type": "array",
|
|
456
510
|
"items": {
|
|
457
|
-
"$ref": "#/components/schemas/
|
|
511
|
+
"$ref": "#/components/schemas/LiveAgent"
|
|
458
512
|
}
|
|
459
513
|
}
|
|
460
514
|
}
|
|
@@ -468,22 +522,29 @@
|
|
|
468
522
|
"403": {
|
|
469
523
|
"$ref": "#/components/responses/Forbidden"
|
|
470
524
|
},
|
|
525
|
+
"409": {
|
|
526
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
527
|
+
"content": {
|
|
528
|
+
"application/json": {
|
|
529
|
+
"schema": {
|
|
530
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
},
|
|
471
535
|
"502": {
|
|
472
536
|
"$ref": "#/components/responses/BadGateway"
|
|
473
|
-
},
|
|
474
|
-
"503": {
|
|
475
|
-
"$ref": "#/components/responses/ServiceUnavailable"
|
|
476
537
|
}
|
|
477
538
|
}
|
|
478
539
|
}
|
|
479
540
|
},
|
|
480
|
-
"/v1/
|
|
541
|
+
"/v1/manager/agents/{provider_agent_id}/routing": {
|
|
481
542
|
"parameters": [
|
|
482
543
|
{
|
|
483
|
-
"name": "
|
|
544
|
+
"name": "provider_agent_id",
|
|
484
545
|
"in": "path",
|
|
485
546
|
"required": true,
|
|
486
|
-
"description": "
|
|
547
|
+
"description": "The phone system's agent id (`LiveAgent.provider_agent_id`)",
|
|
487
548
|
"schema": {
|
|
488
549
|
"type": "string",
|
|
489
550
|
"minLength": 1,
|
|
@@ -492,28 +553,38 @@
|
|
|
492
553
|
}
|
|
493
554
|
}
|
|
494
555
|
],
|
|
495
|
-
"
|
|
496
|
-
"operationId": "
|
|
497
|
-
"summary": "
|
|
498
|
-
"description": "
|
|
556
|
+
"put": {
|
|
557
|
+
"operationId": "setAgentRouting",
|
|
558
|
+
"summary": "setAgentRouting",
|
|
559
|
+
"description": "Sets an agent's skills and direct queue membership (full sets, not deltas), in this order:\n1. Skills: the agent's skills in the phone system are replaced by `skills`, so the phone system\n routes on them right away. The phone system is the source of truth for phone skills; they are\n independent of the skills in epilot's Access Management.\n2. Direct queue membership: each listed queue gets the agent in its epilot-managed routing step\n (created on first use, lowest precedence, never touching the organization's own routing in\n the phone system); every other queue's epilot-managed step drops the agent. Eligibility\n through the phone system's own routing is not changed (`locked`).\nIdempotent; a failure part-way answers `502` and repeating the call completes it. Requires\n`phone:manage`.\n",
|
|
499
560
|
"tags": [
|
|
500
|
-
"
|
|
561
|
+
"manager"
|
|
501
562
|
],
|
|
502
563
|
"security": [
|
|
503
564
|
{
|
|
504
|
-
"
|
|
565
|
+
"EpilotAuth": []
|
|
505
566
|
}
|
|
506
567
|
],
|
|
507
568
|
"x-epilot-permissions": [
|
|
508
|
-
"
|
|
569
|
+
"phone:manage"
|
|
509
570
|
],
|
|
571
|
+
"requestBody": {
|
|
572
|
+
"required": true,
|
|
573
|
+
"content": {
|
|
574
|
+
"application/json": {
|
|
575
|
+
"schema": {
|
|
576
|
+
"$ref": "#/components/schemas/AgentRoutingRequest"
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
},
|
|
510
581
|
"responses": {
|
|
511
582
|
"200": {
|
|
512
|
-
"description": "
|
|
583
|
+
"description": "The agent's skills and queue eligibility after the change",
|
|
513
584
|
"content": {
|
|
514
585
|
"application/json": {
|
|
515
586
|
"schema": {
|
|
516
|
-
"$ref": "#/components/schemas/
|
|
587
|
+
"$ref": "#/components/schemas/AgentRouting"
|
|
517
588
|
}
|
|
518
589
|
}
|
|
519
590
|
}
|
|
@@ -527,22 +598,39 @@
|
|
|
527
598
|
"403": {
|
|
528
599
|
"$ref": "#/components/responses/Forbidden"
|
|
529
600
|
},
|
|
601
|
+
"404": {
|
|
602
|
+
"description": "Unknown agent or queue (code `agent_not_found` / `queue_not_found`)",
|
|
603
|
+
"content": {
|
|
604
|
+
"application/json": {
|
|
605
|
+
"schema": {
|
|
606
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
},
|
|
611
|
+
"409": {
|
|
612
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
613
|
+
"content": {
|
|
614
|
+
"application/json": {
|
|
615
|
+
"schema": {
|
|
616
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
},
|
|
530
621
|
"502": {
|
|
531
622
|
"$ref": "#/components/responses/BadGateway"
|
|
532
|
-
},
|
|
533
|
-
"503": {
|
|
534
|
-
"$ref": "#/components/responses/ServiceUnavailable"
|
|
535
623
|
}
|
|
536
624
|
}
|
|
537
625
|
}
|
|
538
626
|
},
|
|
539
|
-
"/v1/
|
|
627
|
+
"/v1/manager/agents/{provider_agent_id}/routing:preview": {
|
|
540
628
|
"parameters": [
|
|
541
629
|
{
|
|
542
|
-
"name": "
|
|
630
|
+
"name": "provider_agent_id",
|
|
543
631
|
"in": "path",
|
|
544
632
|
"required": true,
|
|
545
|
-
"description": "
|
|
633
|
+
"description": "The phone system's agent id (`LiveAgent.provider_agent_id`)",
|
|
546
634
|
"schema": {
|
|
547
635
|
"type": "string",
|
|
548
636
|
"minLength": 1,
|
|
@@ -552,37 +640,37 @@
|
|
|
552
640
|
}
|
|
553
641
|
],
|
|
554
642
|
"post": {
|
|
555
|
-
"operationId": "
|
|
556
|
-
"summary": "
|
|
557
|
-
"description": "
|
|
643
|
+
"operationId": "previewAgentRouting",
|
|
644
|
+
"summary": "previewAgentRouting",
|
|
645
|
+
"description": "The routing impact of `setAgentRouting` with the same body, without changing anything: the\nqueues the agent can take calls from now (as the phone system routes today) and after the\nchange, what is added and removed, the queues that would lose their last available agent, and\nthe queues the agent stays in through the phone system's own routing. Requires `phone:manage`.\n",
|
|
558
646
|
"tags": [
|
|
559
|
-
"
|
|
647
|
+
"manager"
|
|
560
648
|
],
|
|
561
649
|
"security": [
|
|
562
650
|
{
|
|
563
|
-
"
|
|
651
|
+
"EpilotAuth": []
|
|
564
652
|
}
|
|
565
653
|
],
|
|
566
654
|
"x-epilot-permissions": [
|
|
567
|
-
"
|
|
655
|
+
"phone:manage"
|
|
568
656
|
],
|
|
569
657
|
"requestBody": {
|
|
570
658
|
"required": true,
|
|
571
659
|
"content": {
|
|
572
660
|
"application/json": {
|
|
573
661
|
"schema": {
|
|
574
|
-
"$ref": "#/components/schemas/
|
|
662
|
+
"$ref": "#/components/schemas/AgentRoutingRequest"
|
|
575
663
|
}
|
|
576
664
|
}
|
|
577
665
|
}
|
|
578
666
|
},
|
|
579
667
|
"responses": {
|
|
580
668
|
"200": {
|
|
581
|
-
"description": "
|
|
669
|
+
"description": "The impact preview",
|
|
582
670
|
"content": {
|
|
583
671
|
"application/json": {
|
|
584
672
|
"schema": {
|
|
585
|
-
"$ref": "#/components/schemas/
|
|
673
|
+
"$ref": "#/components/schemas/AgentRoutingPreview"
|
|
586
674
|
}
|
|
587
675
|
}
|
|
588
676
|
}
|
|
@@ -596,8 +684,18 @@
|
|
|
596
684
|
"403": {
|
|
597
685
|
"$ref": "#/components/responses/Forbidden"
|
|
598
686
|
},
|
|
687
|
+
"404": {
|
|
688
|
+
"description": "Unknown agent or queue (code `agent_not_found` / `queue_not_found`)",
|
|
689
|
+
"content": {
|
|
690
|
+
"application/json": {
|
|
691
|
+
"schema": {
|
|
692
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
},
|
|
599
697
|
"409": {
|
|
600
|
-
"description": "The
|
|
698
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
601
699
|
"content": {
|
|
602
700
|
"application/json": {
|
|
603
701
|
"schema": {
|
|
@@ -608,452 +706,1498 @@
|
|
|
608
706
|
},
|
|
609
707
|
"502": {
|
|
610
708
|
"$ref": "#/components/responses/BadGateway"
|
|
611
|
-
},
|
|
612
|
-
"503": {
|
|
613
|
-
"$ref": "#/components/responses/ServiceUnavailable"
|
|
614
709
|
}
|
|
615
710
|
}
|
|
616
711
|
}
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
"description": "The
|
|
623
|
-
"
|
|
624
|
-
"
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
712
|
+
},
|
|
713
|
+
"/v1/manager/queues": {
|
|
714
|
+
"get": {
|
|
715
|
+
"operationId": "listQueues",
|
|
716
|
+
"summary": "listQueues",
|
|
717
|
+
"description": "The organization's queues with live demand (waiting calls, longest wait), staffing (eligible\nvs available agents), derived health and who can take their calls: the routing steps in the\norder the phone system tries them, each naming skills and people. Routing is read-only in the\ncontrol center except the epilot-managed step that `setAgentRouting` maintains. Polled about\nevery 20 seconds. Requires `phone:manage`.\n",
|
|
718
|
+
"tags": [
|
|
719
|
+
"manager"
|
|
720
|
+
],
|
|
721
|
+
"security": [
|
|
722
|
+
{
|
|
723
|
+
"EpilotAuth": []
|
|
628
724
|
}
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
"
|
|
634
|
-
"
|
|
635
|
-
"
|
|
636
|
-
|
|
725
|
+
],
|
|
726
|
+
"x-epilot-permissions": [
|
|
727
|
+
"phone:manage"
|
|
728
|
+
],
|
|
729
|
+
"responses": {
|
|
730
|
+
"200": {
|
|
731
|
+
"description": "The organization's queues",
|
|
732
|
+
"content": {
|
|
733
|
+
"application/json": {
|
|
734
|
+
"schema": {
|
|
735
|
+
"type": "object",
|
|
736
|
+
"required": [
|
|
737
|
+
"captured_at",
|
|
738
|
+
"results"
|
|
739
|
+
],
|
|
740
|
+
"properties": {
|
|
741
|
+
"captured_at": {
|
|
742
|
+
"type": "string",
|
|
743
|
+
"format": "date-time"
|
|
744
|
+
},
|
|
745
|
+
"results": {
|
|
746
|
+
"type": "array",
|
|
747
|
+
"items": {
|
|
748
|
+
"$ref": "#/components/schemas/QueueOverview"
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
}
|
|
637
754
|
}
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
755
|
+
},
|
|
756
|
+
"401": {
|
|
757
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
758
|
+
},
|
|
759
|
+
"403": {
|
|
760
|
+
"$ref": "#/components/responses/Forbidden"
|
|
761
|
+
},
|
|
762
|
+
"409": {
|
|
763
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
764
|
+
"content": {
|
|
765
|
+
"application/json": {
|
|
766
|
+
"schema": {
|
|
767
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
768
|
+
}
|
|
769
|
+
}
|
|
647
770
|
}
|
|
771
|
+
},
|
|
772
|
+
"502": {
|
|
773
|
+
"$ref": "#/components/responses/BadGateway"
|
|
648
774
|
}
|
|
649
775
|
}
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
"/v1/manager/queues/{queue_id}": {
|
|
779
|
+
"parameters": [
|
|
780
|
+
{
|
|
781
|
+
"name": "queue_id",
|
|
782
|
+
"in": "path",
|
|
783
|
+
"required": true,
|
|
784
|
+
"description": "The provider's queue id",
|
|
785
|
+
"schema": {
|
|
786
|
+
"type": "string",
|
|
787
|
+
"minLength": 1,
|
|
788
|
+
"maxLength": 64,
|
|
789
|
+
"pattern": "^[A-Za-z0-9_-]+$"
|
|
658
790
|
}
|
|
659
791
|
}
|
|
660
|
-
|
|
661
|
-
"
|
|
662
|
-
"
|
|
663
|
-
"
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
792
|
+
],
|
|
793
|
+
"get": {
|
|
794
|
+
"operationId": "getQueue",
|
|
795
|
+
"summary": "getQueue",
|
|
796
|
+
"description": "One queue for the control center's queue drawer: the overview fields plus the agents currently\neligible for it (with live status and how they are eligible) and the calls waiting in it.\nRequires `phone:manage`.\n",
|
|
797
|
+
"tags": [
|
|
798
|
+
"manager"
|
|
799
|
+
],
|
|
800
|
+
"security": [
|
|
801
|
+
{
|
|
802
|
+
"EpilotAuth": []
|
|
668
803
|
}
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
804
|
+
],
|
|
805
|
+
"x-epilot-permissions": [
|
|
806
|
+
"phone:manage"
|
|
807
|
+
],
|
|
808
|
+
"responses": {
|
|
809
|
+
"200": {
|
|
810
|
+
"description": "The queue",
|
|
811
|
+
"content": {
|
|
812
|
+
"application/json": {
|
|
813
|
+
"schema": {
|
|
814
|
+
"$ref": "#/components/schemas/QueueDetail"
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
"401": {
|
|
820
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
821
|
+
},
|
|
822
|
+
"403": {
|
|
823
|
+
"$ref": "#/components/responses/Forbidden"
|
|
824
|
+
},
|
|
825
|
+
"404": {
|
|
826
|
+
"description": "Unknown queue (code `queue_not_found`)",
|
|
827
|
+
"content": {
|
|
828
|
+
"application/json": {
|
|
829
|
+
"schema": {
|
|
830
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
},
|
|
835
|
+
"409": {
|
|
836
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
837
|
+
"content": {
|
|
838
|
+
"application/json": {
|
|
839
|
+
"schema": {
|
|
840
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
},
|
|
845
|
+
"502": {
|
|
846
|
+
"$ref": "#/components/responses/BadGateway"
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
"/v1/manager/reporting/calls": {
|
|
852
|
+
"get": {
|
|
853
|
+
"operationId": "getCallReport",
|
|
854
|
+
"summary": "getCallReport",
|
|
855
|
+
"description": "Inbound call outcomes for a period, from the provider's call reporting: how many inbound calls\nthere were, how many an agent handled (bridged) and how many ended without an agent (abandoned\nor failed), plus the inbound total of the period of the same length just before, for the\ntrend. The window is at most 31 days. Requires `phone:manage`.\n",
|
|
856
|
+
"tags": [
|
|
857
|
+
"manager"
|
|
858
|
+
],
|
|
859
|
+
"security": [
|
|
860
|
+
{
|
|
861
|
+
"EpilotAuth": []
|
|
862
|
+
}
|
|
863
|
+
],
|
|
864
|
+
"x-epilot-permissions": [
|
|
865
|
+
"phone:manage"
|
|
866
|
+
],
|
|
867
|
+
"parameters": [
|
|
868
|
+
{
|
|
869
|
+
"name": "from",
|
|
870
|
+
"in": "query",
|
|
871
|
+
"required": true,
|
|
872
|
+
"description": "Start of the period (inclusive), RFC 3339 with an offset",
|
|
873
|
+
"schema": {
|
|
874
|
+
"type": "string"
|
|
875
|
+
}
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"name": "to",
|
|
879
|
+
"in": "query",
|
|
880
|
+
"required": true,
|
|
881
|
+
"description": "End of the period (exclusive), RFC 3339 with an offset",
|
|
882
|
+
"schema": {
|
|
883
|
+
"type": "string"
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
],
|
|
887
|
+
"responses": {
|
|
888
|
+
"200": {
|
|
889
|
+
"description": "The call outcomes of the period",
|
|
890
|
+
"content": {
|
|
891
|
+
"application/json": {
|
|
892
|
+
"schema": {
|
|
893
|
+
"$ref": "#/components/schemas/CallReport"
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
},
|
|
898
|
+
"400": {
|
|
899
|
+
"$ref": "#/components/responses/BadRequest"
|
|
900
|
+
},
|
|
901
|
+
"401": {
|
|
902
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
903
|
+
},
|
|
904
|
+
"403": {
|
|
905
|
+
"$ref": "#/components/responses/Forbidden"
|
|
906
|
+
},
|
|
907
|
+
"409": {
|
|
908
|
+
"description": "The organization is not set up for the phone (code `not_set_up`)",
|
|
909
|
+
"content": {
|
|
910
|
+
"application/json": {
|
|
911
|
+
"schema": {
|
|
912
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
},
|
|
917
|
+
"502": {
|
|
918
|
+
"$ref": "#/components/responses/BadGateway"
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
},
|
|
923
|
+
"/v1/operator/provider-setups": {
|
|
924
|
+
"get": {
|
|
925
|
+
"operationId": "listProviderSetups",
|
|
926
|
+
"summary": "listProviderSetups",
|
|
927
|
+
"description": "Every organization that has a telephony provider tenant, for the admin portal's overview: the\nprovider's sub-accounts (one per organization, keyed by the organization id) joined with this\nservice's setup record. `ready` follows getManagerStatus: an organization whose tenant was created\nby hand, outside `setupProvider`, has no record and is not ready until the setup runs once.\nSorted by organization id; not paged (one tenant per organization, a few hundred at most).\n",
|
|
928
|
+
"tags": [
|
|
929
|
+
"operator"
|
|
930
|
+
],
|
|
931
|
+
"security": [
|
|
932
|
+
{
|
|
933
|
+
"OperatorAuth": []
|
|
934
|
+
}
|
|
935
|
+
],
|
|
936
|
+
"x-epilot-permissions": [
|
|
937
|
+
"internal"
|
|
938
|
+
],
|
|
939
|
+
"responses": {
|
|
940
|
+
"200": {
|
|
941
|
+
"description": "The provider setups",
|
|
942
|
+
"content": {
|
|
943
|
+
"application/json": {
|
|
944
|
+
"schema": {
|
|
945
|
+
"type": "object",
|
|
946
|
+
"required": [
|
|
947
|
+
"results"
|
|
948
|
+
],
|
|
949
|
+
"properties": {
|
|
950
|
+
"results": {
|
|
951
|
+
"type": "array",
|
|
952
|
+
"items": {
|
|
953
|
+
"$ref": "#/components/schemas/ProviderSetupSummary"
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
"401": {
|
|
962
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
963
|
+
},
|
|
964
|
+
"403": {
|
|
965
|
+
"$ref": "#/components/responses/Forbidden"
|
|
966
|
+
},
|
|
967
|
+
"502": {
|
|
968
|
+
"$ref": "#/components/responses/BadGateway"
|
|
969
|
+
},
|
|
970
|
+
"503": {
|
|
971
|
+
"$ref": "#/components/responses/ServiceUnavailable"
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
},
|
|
976
|
+
"/v1/operator/organizations/{org_id}/provider": {
|
|
977
|
+
"parameters": [
|
|
978
|
+
{
|
|
979
|
+
"name": "org_id",
|
|
980
|
+
"in": "path",
|
|
981
|
+
"required": true,
|
|
982
|
+
"description": "epilot organization id",
|
|
983
|
+
"schema": {
|
|
984
|
+
"type": "string",
|
|
985
|
+
"minLength": 1,
|
|
986
|
+
"maxLength": 64,
|
|
987
|
+
"pattern": "^[A-Za-z0-9_-]+$"
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
],
|
|
991
|
+
"get": {
|
|
992
|
+
"operationId": "getProviderSetup",
|
|
993
|
+
"summary": "getProviderSetup",
|
|
994
|
+
"description": "What has been set up at the telephony provider for this organization.",
|
|
995
|
+
"tags": [
|
|
996
|
+
"operator"
|
|
997
|
+
],
|
|
998
|
+
"security": [
|
|
999
|
+
{
|
|
1000
|
+
"OperatorAuth": []
|
|
1001
|
+
}
|
|
1002
|
+
],
|
|
1003
|
+
"x-epilot-permissions": [
|
|
1004
|
+
"internal"
|
|
1005
|
+
],
|
|
1006
|
+
"responses": {
|
|
1007
|
+
"200": {
|
|
1008
|
+
"description": "Provider setup state",
|
|
1009
|
+
"content": {
|
|
1010
|
+
"application/json": {
|
|
1011
|
+
"schema": {
|
|
1012
|
+
"$ref": "#/components/schemas/ProviderSetup"
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
},
|
|
1017
|
+
"400": {
|
|
1018
|
+
"$ref": "#/components/responses/BadRequest"
|
|
1019
|
+
},
|
|
1020
|
+
"401": {
|
|
1021
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1022
|
+
},
|
|
1023
|
+
"403": {
|
|
1024
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1025
|
+
},
|
|
1026
|
+
"502": {
|
|
1027
|
+
"$ref": "#/components/responses/BadGateway"
|
|
1028
|
+
},
|
|
1029
|
+
"503": {
|
|
1030
|
+
"$ref": "#/components/responses/ServiceUnavailable"
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
},
|
|
1035
|
+
"/v1/operator/organizations/{org_id}/provider:setup": {
|
|
1036
|
+
"parameters": [
|
|
1037
|
+
{
|
|
1038
|
+
"name": "org_id",
|
|
1039
|
+
"in": "path",
|
|
1040
|
+
"required": true,
|
|
1041
|
+
"description": "epilot organization id",
|
|
1042
|
+
"schema": {
|
|
1043
|
+
"type": "string",
|
|
1044
|
+
"minLength": 1,
|
|
1045
|
+
"maxLength": 64,
|
|
1046
|
+
"pattern": "^[A-Za-z0-9_-]+$"
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
],
|
|
1050
|
+
"post": {
|
|
1051
|
+
"operationId": "setupProvider",
|
|
1052
|
+
"summary": "setupProvider",
|
|
1053
|
+
"description": "Prepares the telephony provider for an organization, idempotently and in order: the provider\ntenant (Babelforce sub-account keyed by the organization id), its SCIM configuration with role\nmanagement on, and its SSO configuration pointing at the identity-api client given here. The\nclient secret is forwarded to the provider and never stored by this service. Re-running updates\nthe SSO configuration (new client or rotated secret) and leaves the rest untouched.\n",
|
|
1054
|
+
"tags": [
|
|
1055
|
+
"operator"
|
|
1056
|
+
],
|
|
1057
|
+
"security": [
|
|
1058
|
+
{
|
|
1059
|
+
"OperatorAuth": []
|
|
1060
|
+
}
|
|
1061
|
+
],
|
|
1062
|
+
"x-epilot-permissions": [
|
|
1063
|
+
"internal"
|
|
1064
|
+
],
|
|
1065
|
+
"requestBody": {
|
|
1066
|
+
"required": true,
|
|
1067
|
+
"content": {
|
|
1068
|
+
"application/json": {
|
|
1069
|
+
"schema": {
|
|
1070
|
+
"$ref": "#/components/schemas/ProviderSetupRequest"
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
},
|
|
1075
|
+
"responses": {
|
|
1076
|
+
"200": {
|
|
1077
|
+
"description": "Provider setup state after the run",
|
|
1078
|
+
"content": {
|
|
1079
|
+
"application/json": {
|
|
1080
|
+
"schema": {
|
|
1081
|
+
"$ref": "#/components/schemas/ProviderSetup"
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
},
|
|
1086
|
+
"400": {
|
|
1087
|
+
"$ref": "#/components/responses/BadRequest"
|
|
1088
|
+
},
|
|
1089
|
+
"401": {
|
|
1090
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1091
|
+
},
|
|
1092
|
+
"403": {
|
|
1093
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1094
|
+
},
|
|
1095
|
+
"409": {
|
|
1096
|
+
"description": "The provider refused, for example the account name is taken (code `provider_conflict`)",
|
|
1097
|
+
"content": {
|
|
1098
|
+
"application/json": {
|
|
1099
|
+
"schema": {
|
|
1100
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
"502": {
|
|
1106
|
+
"$ref": "#/components/responses/BadGateway"
|
|
1107
|
+
},
|
|
1108
|
+
"503": {
|
|
1109
|
+
"$ref": "#/components/responses/ServiceUnavailable"
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
},
|
|
1115
|
+
"components": {
|
|
1116
|
+
"responses": {
|
|
1117
|
+
"BadRequest": {
|
|
1118
|
+
"description": "The request is malformed or fails validation",
|
|
1119
|
+
"content": {
|
|
1120
|
+
"application/json": {
|
|
1121
|
+
"schema": {
|
|
1122
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
},
|
|
1127
|
+
"Unauthorized": {
|
|
1128
|
+
"description": "Missing or invalid bearer token",
|
|
1129
|
+
"content": {
|
|
1130
|
+
"application/json": {
|
|
1131
|
+
"schema": {
|
|
1132
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
"Forbidden": {
|
|
1138
|
+
"description": "The caller lacks the required permission",
|
|
1139
|
+
"content": {
|
|
1140
|
+
"application/json": {
|
|
1141
|
+
"schema": {
|
|
1142
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
},
|
|
1147
|
+
"BadGateway": {
|
|
1148
|
+
"description": "A dependency failed: the telephony provider could not be reached or answered unexpectedly (code\n`provider_error`, with the provider's request id when it sent one), or identity-api is\ntemporarily unavailable (code `identity_unavailable`). Retrying is safe.\n",
|
|
1149
|
+
"content": {
|
|
1150
|
+
"application/json": {
|
|
1151
|
+
"schema": {
|
|
1152
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
},
|
|
1157
|
+
"ServiceUnavailable": {
|
|
1158
|
+
"description": "The operator's admin-portal groups could not be checked right now; retry",
|
|
1159
|
+
"content": {
|
|
1160
|
+
"application/json": {
|
|
1161
|
+
"schema": {
|
|
1162
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
},
|
|
1168
|
+
"securitySchemes": {
|
|
1169
|
+
"EpilotAuth": {
|
|
1170
|
+
"type": "http",
|
|
1171
|
+
"scheme": "bearer",
|
|
676
1172
|
"bearerFormat": "JWT"
|
|
677
1173
|
},
|
|
678
|
-
"OperatorAuth": {
|
|
679
|
-
"type": "http",
|
|
680
|
-
"scheme": "bearer",
|
|
681
|
-
"bearerFormat": "JWT",
|
|
682
|
-
"description": "Internal-auth bearer token minted for an epilot admin-portal user in an allowed group (same\npolicy as identity-api's operator API). Customer organization bearers are never accepted.\n"
|
|
683
|
-
}
|
|
684
|
-
},
|
|
685
|
-
"schemas": {
|
|
686
|
-
"ManagerStatus": {
|
|
1174
|
+
"OperatorAuth": {
|
|
1175
|
+
"type": "http",
|
|
1176
|
+
"scheme": "bearer",
|
|
1177
|
+
"bearerFormat": "JWT",
|
|
1178
|
+
"description": "Internal-auth bearer token minted for an epilot admin-portal user in an allowed group (same\npolicy as identity-api's operator API). Customer organization bearers are never accepted.\n"
|
|
1179
|
+
}
|
|
1180
|
+
},
|
|
1181
|
+
"schemas": {
|
|
1182
|
+
"ManagerStatus": {
|
|
1183
|
+
"type": "object",
|
|
1184
|
+
"required": [
|
|
1185
|
+
"provider",
|
|
1186
|
+
"ready",
|
|
1187
|
+
"reasons"
|
|
1188
|
+
],
|
|
1189
|
+
"properties": {
|
|
1190
|
+
"provider": {
|
|
1191
|
+
"type": "string",
|
|
1192
|
+
"description": "Telephony provider behind this organization",
|
|
1193
|
+
"enum": [
|
|
1194
|
+
"babelforce"
|
|
1195
|
+
]
|
|
1196
|
+
},
|
|
1197
|
+
"ready": {
|
|
1198
|
+
"type": "boolean",
|
|
1199
|
+
"description": "Agents can be assigned"
|
|
1200
|
+
},
|
|
1201
|
+
"reasons": {
|
|
1202
|
+
"type": "array",
|
|
1203
|
+
"description": "Why the organization is not ready (empty when ready)",
|
|
1204
|
+
"items": {
|
|
1205
|
+
"type": "string",
|
|
1206
|
+
"enum": [
|
|
1207
|
+
"provider_tenant_missing",
|
|
1208
|
+
"sso_not_configured",
|
|
1209
|
+
"scim_not_configured",
|
|
1210
|
+
"identity_enablement_missing"
|
|
1211
|
+
]
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
},
|
|
1216
|
+
"PhoneAgent": {
|
|
1217
|
+
"type": "object",
|
|
1218
|
+
"required": [
|
|
1219
|
+
"user_id",
|
|
1220
|
+
"email",
|
|
1221
|
+
"status"
|
|
1222
|
+
],
|
|
1223
|
+
"properties": {
|
|
1224
|
+
"user_id": {
|
|
1225
|
+
"type": "string",
|
|
1226
|
+
"description": "epilot user id"
|
|
1227
|
+
},
|
|
1228
|
+
"email": {
|
|
1229
|
+
"type": "string"
|
|
1230
|
+
},
|
|
1231
|
+
"display_name": {
|
|
1232
|
+
"type": "string"
|
|
1233
|
+
},
|
|
1234
|
+
"status": {
|
|
1235
|
+
"type": "string",
|
|
1236
|
+
"description": "`active`: holds the phone and has an enabled provider user. `pending`: assigned in epilot but\nthe provider user is not activated yet. `disabled`: provider user disabled. `missing_provider`:\nholds `phone:use` but no provider user is bound (assign again to repair). `missing_role`:\nassigned here, but the `phone_agent` role (`phone:use`) was removed elsewhere, e.g. in the\nusers and permissions settings (assign again to restore it, or remove to deactivate the\nprovider user).\n",
|
|
1237
|
+
"enum": [
|
|
1238
|
+
"active",
|
|
1239
|
+
"pending",
|
|
1240
|
+
"disabled",
|
|
1241
|
+
"missing_provider",
|
|
1242
|
+
"missing_role"
|
|
1243
|
+
]
|
|
1244
|
+
},
|
|
1245
|
+
"provider_user_id": {
|
|
1246
|
+
"type": "string",
|
|
1247
|
+
"description": "The provider's id of the bound user"
|
|
1248
|
+
},
|
|
1249
|
+
"provider_roles": {
|
|
1250
|
+
"type": "array",
|
|
1251
|
+
"items": {
|
|
1252
|
+
"type": "string"
|
|
1253
|
+
}
|
|
1254
|
+
},
|
|
1255
|
+
"assigned_at": {
|
|
1256
|
+
"type": "string",
|
|
1257
|
+
"format": "date-time"
|
|
1258
|
+
},
|
|
1259
|
+
"assigned_by": {
|
|
1260
|
+
"type": "string",
|
|
1261
|
+
"description": "epilot user id of the manager who assigned the phone"
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
},
|
|
1265
|
+
"AssignPhoneAgentRequest": {
|
|
1266
|
+
"type": "object",
|
|
1267
|
+
"required": [
|
|
1268
|
+
"user_id"
|
|
1269
|
+
],
|
|
1270
|
+
"properties": {
|
|
1271
|
+
"user_id": {
|
|
1272
|
+
"type": "string",
|
|
1273
|
+
"description": "epilot user id of an active member of the caller's organization",
|
|
1274
|
+
"minLength": 1,
|
|
1275
|
+
"maxLength": 64,
|
|
1276
|
+
"pattern": "^[A-Za-z0-9_-]+$"
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
},
|
|
1280
|
+
"ProviderSetup": {
|
|
687
1281
|
"type": "object",
|
|
688
1282
|
"required": [
|
|
689
1283
|
"provider",
|
|
1284
|
+
"org_id",
|
|
690
1285
|
"ready",
|
|
691
|
-
"
|
|
1286
|
+
"tenant",
|
|
1287
|
+
"scim",
|
|
1288
|
+
"sso"
|
|
1289
|
+
],
|
|
1290
|
+
"properties": {
|
|
1291
|
+
"provider": {
|
|
1292
|
+
"type": "string",
|
|
1293
|
+
"enum": [
|
|
1294
|
+
"babelforce"
|
|
1295
|
+
]
|
|
1296
|
+
},
|
|
1297
|
+
"org_id": {
|
|
1298
|
+
"type": "string"
|
|
1299
|
+
},
|
|
1300
|
+
"ready": {
|
|
1301
|
+
"type": "boolean",
|
|
1302
|
+
"description": "Everything below is in place"
|
|
1303
|
+
},
|
|
1304
|
+
"tenant": {
|
|
1305
|
+
"type": "object",
|
|
1306
|
+
"description": "The provider tenant for this organization (null until created)",
|
|
1307
|
+
"nullable": true,
|
|
1308
|
+
"required": [
|
|
1309
|
+
"id",
|
|
1310
|
+
"name",
|
|
1311
|
+
"org_key"
|
|
1312
|
+
],
|
|
1313
|
+
"properties": {
|
|
1314
|
+
"id": {
|
|
1315
|
+
"type": "string"
|
|
1316
|
+
},
|
|
1317
|
+
"name": {
|
|
1318
|
+
"type": "string"
|
|
1319
|
+
},
|
|
1320
|
+
"org_key": {
|
|
1321
|
+
"type": "string"
|
|
1322
|
+
},
|
|
1323
|
+
"created_at": {
|
|
1324
|
+
"type": "string",
|
|
1325
|
+
"format": "date-time"
|
|
1326
|
+
}
|
|
1327
|
+
}
|
|
1328
|
+
},
|
|
1329
|
+
"scim": {
|
|
1330
|
+
"type": "object",
|
|
1331
|
+
"required": [
|
|
1332
|
+
"configured",
|
|
1333
|
+
"roles_enabled"
|
|
1334
|
+
],
|
|
1335
|
+
"properties": {
|
|
1336
|
+
"configured": {
|
|
1337
|
+
"type": "boolean"
|
|
1338
|
+
},
|
|
1339
|
+
"roles_enabled": {
|
|
1340
|
+
"type": "boolean"
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
},
|
|
1344
|
+
"sso": {
|
|
1345
|
+
"type": "object",
|
|
1346
|
+
"required": [
|
|
1347
|
+
"configured"
|
|
1348
|
+
],
|
|
1349
|
+
"properties": {
|
|
1350
|
+
"configured": {
|
|
1351
|
+
"type": "boolean"
|
|
1352
|
+
},
|
|
1353
|
+
"identity_client_id": {
|
|
1354
|
+
"type": "string",
|
|
1355
|
+
"description": "The identity-api client the tenant's SSO configuration points at"
|
|
1356
|
+
},
|
|
1357
|
+
"configured_at": {
|
|
1358
|
+
"type": "string",
|
|
1359
|
+
"format": "date-time"
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1362
|
+
},
|
|
1363
|
+
"last_setup_by": {
|
|
1364
|
+
"type": "string",
|
|
1365
|
+
"description": "Admin-portal operator (email) who last ran the setup"
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
},
|
|
1369
|
+
"ProviderSetupSummary": {
|
|
1370
|
+
"type": "object",
|
|
1371
|
+
"description": "One organization's provider setup, as listed in the overview (no live SCIM or SSO reads).",
|
|
1372
|
+
"required": [
|
|
1373
|
+
"org_id",
|
|
1374
|
+
"provider",
|
|
1375
|
+
"ready",
|
|
1376
|
+
"setup_recorded",
|
|
1377
|
+
"tenant"
|
|
1378
|
+
],
|
|
1379
|
+
"properties": {
|
|
1380
|
+
"org_id": {
|
|
1381
|
+
"type": "string",
|
|
1382
|
+
"description": "epilot organization id (the provider tenant's org key)"
|
|
1383
|
+
},
|
|
1384
|
+
"provider": {
|
|
1385
|
+
"type": "string",
|
|
1386
|
+
"enum": [
|
|
1387
|
+
"babelforce"
|
|
1388
|
+
]
|
|
1389
|
+
},
|
|
1390
|
+
"ready": {
|
|
1391
|
+
"type": "boolean",
|
|
1392
|
+
"description": "Phone agents can be assigned (same rule as getManagerStatus)"
|
|
1393
|
+
},
|
|
1394
|
+
"setup_recorded": {
|
|
1395
|
+
"type": "boolean",
|
|
1396
|
+
"description": "`setupProvider` has run for this organization at least once. `false` for a tenant created by\nhand at the provider: run the setup once to record it.\n"
|
|
1397
|
+
},
|
|
1398
|
+
"tenant": {
|
|
1399
|
+
"type": "object",
|
|
1400
|
+
"required": [
|
|
1401
|
+
"id",
|
|
1402
|
+
"name",
|
|
1403
|
+
"org_key"
|
|
1404
|
+
],
|
|
1405
|
+
"properties": {
|
|
1406
|
+
"id": {
|
|
1407
|
+
"type": "string",
|
|
1408
|
+
"description": "The provider's tenant id (Babelforce sub-account id)"
|
|
1409
|
+
},
|
|
1410
|
+
"name": {
|
|
1411
|
+
"type": "string"
|
|
1412
|
+
},
|
|
1413
|
+
"org_key": {
|
|
1414
|
+
"type": "string"
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
},
|
|
1418
|
+
"sso_identity_client_id": {
|
|
1419
|
+
"type": "string",
|
|
1420
|
+
"description": "The identity-api client the recorded SSO configuration points at"
|
|
1421
|
+
},
|
|
1422
|
+
"last_setup_by": {
|
|
1423
|
+
"type": "string",
|
|
1424
|
+
"description": "The operator who last ran the setup (email)"
|
|
1425
|
+
},
|
|
1426
|
+
"updated_at": {
|
|
1427
|
+
"type": "string",
|
|
1428
|
+
"format": "date-time",
|
|
1429
|
+
"description": "When the setup record last changed"
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
},
|
|
1433
|
+
"ProviderSetupRequest": {
|
|
1434
|
+
"type": "object",
|
|
1435
|
+
"required": [
|
|
1436
|
+
"identity_client_id",
|
|
1437
|
+
"identity_client_secret"
|
|
1438
|
+
],
|
|
1439
|
+
"properties": {
|
|
1440
|
+
"account_name": {
|
|
1441
|
+
"type": "string",
|
|
1442
|
+
"description": "Provider tenant name, unique across the provider (3 to 100 characters). Required the first\ntime (`400` with code `account_name_required` without it); ignored once the tenant exists.\n",
|
|
1443
|
+
"minLength": 3,
|
|
1444
|
+
"maxLength": 100
|
|
1445
|
+
},
|
|
1446
|
+
"identity_client_id": {
|
|
1447
|
+
"type": "string",
|
|
1448
|
+
"description": "identity-api client registered for the provider (its partner application for this stage)",
|
|
1449
|
+
"minLength": 1,
|
|
1450
|
+
"maxLength": 128,
|
|
1451
|
+
"pattern": "^[A-Za-z0-9._~-]+$"
|
|
1452
|
+
},
|
|
1453
|
+
"identity_client_secret": {
|
|
1454
|
+
"type": "string",
|
|
1455
|
+
"description": "The client's current secret, forwarded to the provider's SSO configuration and never stored",
|
|
1456
|
+
"minLength": 12,
|
|
1457
|
+
"maxLength": 512
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
},
|
|
1461
|
+
"CustomerBatchSearchResult": {
|
|
1462
|
+
"type": "object",
|
|
1463
|
+
"additionalProperties": false,
|
|
1464
|
+
"required": [
|
|
1465
|
+
"results"
|
|
1466
|
+
],
|
|
1467
|
+
"properties": {
|
|
1468
|
+
"results": {
|
|
1469
|
+
"type": "array",
|
|
1470
|
+
"description": "One result per distinct identifier",
|
|
1471
|
+
"items": {
|
|
1472
|
+
"$ref": "#/components/schemas/CustomerSearchResult"
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
},
|
|
1477
|
+
"CustomerSearchResult": {
|
|
1478
|
+
"type": "object",
|
|
1479
|
+
"additionalProperties": false,
|
|
1480
|
+
"required": [
|
|
1481
|
+
"identifier",
|
|
1482
|
+
"status"
|
|
1483
|
+
],
|
|
1484
|
+
"properties": {
|
|
1485
|
+
"identifier": {
|
|
1486
|
+
"$ref": "#/components/schemas/CustomerIdentifier"
|
|
1487
|
+
},
|
|
1488
|
+
"status": {
|
|
1489
|
+
"type": "string",
|
|
1490
|
+
"enum": [
|
|
1491
|
+
"found",
|
|
1492
|
+
"not_found",
|
|
1493
|
+
"ambiguous",
|
|
1494
|
+
"invalid",
|
|
1495
|
+
"error"
|
|
1496
|
+
],
|
|
1497
|
+
"description": "- `found` — exactly one contact has the identifier; see `customer`\n- `not_found` — no contact the caller may see has it\n- `ambiguous` — several contacts share it; none is chosen\n- `invalid` — not a usable identifier (a phone number that does\n not parse), so nothing was searched\n- `error` — the search for this identifier failed; try again\n"
|
|
1498
|
+
},
|
|
1499
|
+
"customer": {
|
|
1500
|
+
"$ref": "#/components/schemas/CustomerSummary"
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
},
|
|
1504
|
+
"CustomerIdentifier": {
|
|
1505
|
+
"type": "object",
|
|
1506
|
+
"additionalProperties": false,
|
|
1507
|
+
"required": [
|
|
1508
|
+
"type",
|
|
1509
|
+
"value"
|
|
692
1510
|
],
|
|
693
1511
|
"properties": {
|
|
694
|
-
"
|
|
1512
|
+
"type": {
|
|
695
1513
|
"type": "string",
|
|
696
|
-
"description": "Telephony provider behind this organization",
|
|
697
1514
|
"enum": [
|
|
698
|
-
"
|
|
1515
|
+
"id",
|
|
1516
|
+
"customer_number",
|
|
1517
|
+
"external_id",
|
|
1518
|
+
"phone_number",
|
|
1519
|
+
"email"
|
|
699
1520
|
]
|
|
700
1521
|
},
|
|
701
|
-
"
|
|
702
|
-
"type": "
|
|
703
|
-
"description": "
|
|
704
|
-
|
|
705
|
-
"reasons": {
|
|
706
|
-
"type": "array",
|
|
707
|
-
"description": "Why the organization is not ready (empty when ready)",
|
|
708
|
-
"items": {
|
|
709
|
-
"type": "string",
|
|
710
|
-
"enum": [
|
|
711
|
-
"provider_tenant_missing",
|
|
712
|
-
"sso_not_configured",
|
|
713
|
-
"scim_not_configured",
|
|
714
|
-
"identity_enablement_missing"
|
|
715
|
-
]
|
|
716
|
-
}
|
|
1522
|
+
"value": {
|
|
1523
|
+
"type": "string",
|
|
1524
|
+
"description": "The identifier as sent",
|
|
1525
|
+
"example": "+4917012345678"
|
|
717
1526
|
}
|
|
718
1527
|
}
|
|
719
1528
|
},
|
|
720
|
-
"
|
|
1529
|
+
"CustomerSummary": {
|
|
721
1530
|
"type": "object",
|
|
1531
|
+
"additionalProperties": false,
|
|
1532
|
+
"description": "Present when `status` is `found`",
|
|
722
1533
|
"required": [
|
|
723
|
-
"
|
|
724
|
-
"
|
|
725
|
-
"status"
|
|
1534
|
+
"id",
|
|
1535
|
+
"name"
|
|
726
1536
|
],
|
|
727
1537
|
"properties": {
|
|
728
|
-
"
|
|
1538
|
+
"id": {
|
|
729
1539
|
"type": "string",
|
|
730
|
-
"description": "epilot
|
|
731
|
-
|
|
732
|
-
"email": {
|
|
733
|
-
"type": "string"
|
|
734
|
-
},
|
|
735
|
-
"display_name": {
|
|
736
|
-
"type": "string"
|
|
1540
|
+
"description": "epilot entity id of the customer (Contact)",
|
|
1541
|
+
"example": "dba8e5f9-8b3f-4608-b887-cd0798fce624"
|
|
737
1542
|
},
|
|
738
|
-
"
|
|
1543
|
+
"name": {
|
|
739
1544
|
"type": "string",
|
|
740
|
-
"
|
|
741
|
-
"
|
|
742
|
-
|
|
743
|
-
"pending",
|
|
744
|
-
"disabled",
|
|
745
|
-
"missing_provider",
|
|
746
|
-
"missing_role"
|
|
747
|
-
]
|
|
1545
|
+
"nullable": true,
|
|
1546
|
+
"description": "The contact's title, else its first and last name; null when it has neither",
|
|
1547
|
+
"example": "Max Mustermann"
|
|
748
1548
|
},
|
|
749
|
-
"
|
|
1549
|
+
"customer_number": {
|
|
750
1550
|
"type": "string",
|
|
751
|
-
"description": "
|
|
1551
|
+
"description": "Omitted when the contact has none",
|
|
1552
|
+
"example": "4711"
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
},
|
|
1556
|
+
"AgentState": {
|
|
1557
|
+
"type": "string",
|
|
1558
|
+
"description": "The agent's live line state as the provider reports it, plus `offline` for an agent whose\npresence is not available (not signed in or on a busy presence) and `unknown` when the\nprovider gives no state. `in_call` covers ringing-to-bridged; `wrap_up` is the post-call time.\n",
|
|
1559
|
+
"enum": [
|
|
1560
|
+
"available",
|
|
1561
|
+
"ringing",
|
|
1562
|
+
"in_call",
|
|
1563
|
+
"wrap_up",
|
|
1564
|
+
"busy",
|
|
1565
|
+
"declined",
|
|
1566
|
+
"unreachable",
|
|
1567
|
+
"selected",
|
|
1568
|
+
"offline",
|
|
1569
|
+
"unknown"
|
|
1570
|
+
]
|
|
1571
|
+
},
|
|
1572
|
+
"AgentPresence": {
|
|
1573
|
+
"type": "object",
|
|
1574
|
+
"description": "The provider presence the agent has selected (e.g. Available, Break, Meeting)",
|
|
1575
|
+
"required": [
|
|
1576
|
+
"name",
|
|
1577
|
+
"label",
|
|
1578
|
+
"available"
|
|
1579
|
+
],
|
|
1580
|
+
"properties": {
|
|
1581
|
+
"name": {
|
|
1582
|
+
"type": "string"
|
|
752
1583
|
},
|
|
753
|
-
"
|
|
754
|
-
"type": "
|
|
755
|
-
"items": {
|
|
756
|
-
"type": "string"
|
|
757
|
-
}
|
|
1584
|
+
"label": {
|
|
1585
|
+
"type": "string"
|
|
758
1586
|
},
|
|
759
|
-
"
|
|
760
|
-
"type": "
|
|
761
|
-
"
|
|
1587
|
+
"available": {
|
|
1588
|
+
"type": "boolean",
|
|
1589
|
+
"description": "Whether this presence lets the agent take calls"
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
},
|
|
1593
|
+
"Skill": {
|
|
1594
|
+
"type": "string",
|
|
1595
|
+
"description": "A skill as the phone system holds it (Babelforce: an agent tag). epilot's convention for skills is\n`<skill category>:<label>` (e.g. `language:german`), which the control center shows as\n\"Category · Label\"; a skill without a colon has no category.\n",
|
|
1596
|
+
"minLength": 1,
|
|
1597
|
+
"maxLength": 100,
|
|
1598
|
+
"pattern": "^\\S(.*\\S)?$"
|
|
1599
|
+
},
|
|
1600
|
+
"QueueRef": {
|
|
1601
|
+
"type": "object",
|
|
1602
|
+
"required": [
|
|
1603
|
+
"id",
|
|
1604
|
+
"name"
|
|
1605
|
+
],
|
|
1606
|
+
"properties": {
|
|
1607
|
+
"id": {
|
|
1608
|
+
"type": "string"
|
|
762
1609
|
},
|
|
763
|
-
"
|
|
764
|
-
"type": "string"
|
|
765
|
-
"description": "epilot user id of the manager who assigned the phone"
|
|
1610
|
+
"name": {
|
|
1611
|
+
"type": "string"
|
|
766
1612
|
}
|
|
767
1613
|
}
|
|
768
1614
|
},
|
|
769
|
-
"
|
|
1615
|
+
"PersonRef": {
|
|
770
1616
|
"type": "object",
|
|
1617
|
+
"description": "An agent as a routing step names them",
|
|
771
1618
|
"required": [
|
|
772
|
-
"
|
|
1619
|
+
"provider_agent_id",
|
|
1620
|
+
"name"
|
|
773
1621
|
],
|
|
774
1622
|
"properties": {
|
|
1623
|
+
"provider_agent_id": {
|
|
1624
|
+
"type": "string"
|
|
1625
|
+
},
|
|
775
1626
|
"user_id": {
|
|
776
1627
|
"type": "string",
|
|
777
|
-
"description": "epilot user id
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
"
|
|
1628
|
+
"description": "The epilot user id, when the agent is an epilot phone agent"
|
|
1629
|
+
},
|
|
1630
|
+
"name": {
|
|
1631
|
+
"type": "string"
|
|
781
1632
|
}
|
|
782
1633
|
}
|
|
783
1634
|
},
|
|
784
|
-
"
|
|
1635
|
+
"EligibilityPath": {
|
|
1636
|
+
"type": "string",
|
|
1637
|
+
"description": "How an agent can take a queue's calls:\n- `skill`: the queue routes to people with a skill the agent has (changes with the agent's skills);\n- `direct`: the agent is in the queue's epilot-managed step (added from the control center);\n- `routing`: the phone system's own routing names the agent (a team or a person set up there);\n epilot does not change it.\n",
|
|
1638
|
+
"enum": [
|
|
1639
|
+
"skill",
|
|
1640
|
+
"direct",
|
|
1641
|
+
"routing"
|
|
1642
|
+
]
|
|
1643
|
+
},
|
|
1644
|
+
"AgentQueueEligibility": {
|
|
785
1645
|
"type": "object",
|
|
1646
|
+
"description": "A queue an agent can take calls from, and why",
|
|
786
1647
|
"required": [
|
|
787
|
-
"
|
|
788
|
-
"
|
|
789
|
-
"
|
|
790
|
-
"
|
|
791
|
-
"
|
|
792
|
-
"sso"
|
|
1648
|
+
"id",
|
|
1649
|
+
"name",
|
|
1650
|
+
"via",
|
|
1651
|
+
"skills",
|
|
1652
|
+
"locked"
|
|
793
1653
|
],
|
|
794
1654
|
"properties": {
|
|
795
|
-
"
|
|
1655
|
+
"id": {
|
|
1656
|
+
"type": "string"
|
|
1657
|
+
},
|
|
1658
|
+
"name": {
|
|
1659
|
+
"type": "string"
|
|
1660
|
+
},
|
|
1661
|
+
"via": {
|
|
1662
|
+
"type": "array",
|
|
1663
|
+
"minItems": 1,
|
|
1664
|
+
"items": {
|
|
1665
|
+
"$ref": "#/components/schemas/EligibilityPath"
|
|
1666
|
+
}
|
|
1667
|
+
},
|
|
1668
|
+
"skills": {
|
|
1669
|
+
"type": "array",
|
|
1670
|
+
"description": "The agent's skills that make the queue route to them (empty unless `via` has `skill`)",
|
|
1671
|
+
"items": {
|
|
1672
|
+
"type": "string"
|
|
1673
|
+
}
|
|
1674
|
+
},
|
|
1675
|
+
"locked": {
|
|
1676
|
+
"type": "boolean",
|
|
1677
|
+
"description": "The phone system's own routing names the agent (`via` has `routing`), so changing skills or\ndirect membership cannot remove the queue; the control center shows it checked and disabled.\n"
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
},
|
|
1681
|
+
"LiveAgent": {
|
|
1682
|
+
"type": "object",
|
|
1683
|
+
"required": [
|
|
1684
|
+
"provider_agent_id",
|
|
1685
|
+
"name",
|
|
1686
|
+
"enabled",
|
|
1687
|
+
"state",
|
|
1688
|
+
"skills",
|
|
1689
|
+
"queues"
|
|
1690
|
+
],
|
|
1691
|
+
"properties": {
|
|
1692
|
+
"provider_agent_id": {
|
|
796
1693
|
"type": "string",
|
|
797
|
-
"
|
|
798
|
-
"babelforce"
|
|
799
|
-
]
|
|
1694
|
+
"description": "The phone system's agent id"
|
|
800
1695
|
},
|
|
801
|
-
"
|
|
1696
|
+
"user_id": {
|
|
1697
|
+
"type": "string",
|
|
1698
|
+
"description": "The epilot user id, when the agent is an epilot phone agent (matched by email)"
|
|
1699
|
+
},
|
|
1700
|
+
"name": {
|
|
802
1701
|
"type": "string"
|
|
803
1702
|
},
|
|
804
|
-
"
|
|
1703
|
+
"email": {
|
|
1704
|
+
"type": "string"
|
|
1705
|
+
},
|
|
1706
|
+
"enabled": {
|
|
805
1707
|
"type": "boolean",
|
|
806
|
-
"description": "
|
|
1708
|
+
"description": "Whether the phone system routes queue calls to this agent at all"
|
|
807
1709
|
},
|
|
808
|
-
"
|
|
809
|
-
"
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
"
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
},
|
|
824
|
-
"org_key": {
|
|
825
|
-
"type": "string"
|
|
826
|
-
},
|
|
827
|
-
"created_at": {
|
|
828
|
-
"type": "string",
|
|
829
|
-
"format": "date-time"
|
|
830
|
-
}
|
|
1710
|
+
"state": {
|
|
1711
|
+
"$ref": "#/components/schemas/AgentState"
|
|
1712
|
+
},
|
|
1713
|
+
"presence": {
|
|
1714
|
+
"$ref": "#/components/schemas/AgentPresence"
|
|
1715
|
+
},
|
|
1716
|
+
"display_status": {
|
|
1717
|
+
"type": "string",
|
|
1718
|
+
"description": "The phone system's human-readable status label"
|
|
1719
|
+
},
|
|
1720
|
+
"skills": {
|
|
1721
|
+
"type": "array",
|
|
1722
|
+
"description": "The agent's skills as the phone system holds them (the source of truth for phone routing)",
|
|
1723
|
+
"items": {
|
|
1724
|
+
"$ref": "#/components/schemas/Skill"
|
|
831
1725
|
}
|
|
832
1726
|
},
|
|
833
|
-
"
|
|
834
|
-
"type": "
|
|
835
|
-
"
|
|
836
|
-
|
|
837
|
-
"
|
|
838
|
-
],
|
|
839
|
-
"properties": {
|
|
840
|
-
"configured": {
|
|
841
|
-
"type": "boolean"
|
|
842
|
-
},
|
|
843
|
-
"roles_enabled": {
|
|
844
|
-
"type": "boolean"
|
|
845
|
-
}
|
|
1727
|
+
"queues": {
|
|
1728
|
+
"type": "array",
|
|
1729
|
+
"description": "Queues the agent can take calls from, derived from every queue's routing steps",
|
|
1730
|
+
"items": {
|
|
1731
|
+
"$ref": "#/components/schemas/AgentQueueEligibility"
|
|
846
1732
|
}
|
|
847
1733
|
},
|
|
848
|
-
"
|
|
1734
|
+
"current_call": {
|
|
849
1735
|
"type": "object",
|
|
1736
|
+
"description": "The call the agent is on, when the phone system reports one",
|
|
850
1737
|
"required": [
|
|
851
|
-
"
|
|
1738
|
+
"started_at"
|
|
852
1739
|
],
|
|
853
1740
|
"properties": {
|
|
854
|
-
"
|
|
855
|
-
"type": "boolean"
|
|
856
|
-
},
|
|
857
|
-
"identity_client_id": {
|
|
858
|
-
"type": "string",
|
|
859
|
-
"description": "The identity-api client the tenant's SSO configuration points at"
|
|
860
|
-
},
|
|
861
|
-
"configured_at": {
|
|
1741
|
+
"started_at": {
|
|
862
1742
|
"type": "string",
|
|
863
1743
|
"format": "date-time"
|
|
1744
|
+
},
|
|
1745
|
+
"queue_name": {
|
|
1746
|
+
"type": "string"
|
|
864
1747
|
}
|
|
865
1748
|
}
|
|
1749
|
+
}
|
|
1750
|
+
}
|
|
1751
|
+
},
|
|
1752
|
+
"LiveAgentCounters": {
|
|
1753
|
+
"type": "object",
|
|
1754
|
+
"description": "Presence counters over the organization's agents",
|
|
1755
|
+
"required": [
|
|
1756
|
+
"total",
|
|
1757
|
+
"online",
|
|
1758
|
+
"available",
|
|
1759
|
+
"on_call",
|
|
1760
|
+
"wrap_up",
|
|
1761
|
+
"offline"
|
|
1762
|
+
],
|
|
1763
|
+
"properties": {
|
|
1764
|
+
"total": {
|
|
1765
|
+
"type": "integer"
|
|
1766
|
+
},
|
|
1767
|
+
"online": {
|
|
1768
|
+
"type": "integer",
|
|
1769
|
+
"description": "Agents on an available presence, i.e. everyone not offline (available + on call + wrap-up + other busy line states)"
|
|
1770
|
+
},
|
|
1771
|
+
"available": {
|
|
1772
|
+
"type": "integer"
|
|
1773
|
+
},
|
|
1774
|
+
"on_call": {
|
|
1775
|
+
"type": "integer",
|
|
1776
|
+
"description": "Ringing or bridged"
|
|
1777
|
+
},
|
|
1778
|
+
"wrap_up": {
|
|
1779
|
+
"type": "integer"
|
|
1780
|
+
},
|
|
1781
|
+
"offline": {
|
|
1782
|
+
"type": "integer"
|
|
1783
|
+
}
|
|
1784
|
+
}
|
|
1785
|
+
},
|
|
1786
|
+
"QueueHealth": {
|
|
1787
|
+
"type": "string",
|
|
1788
|
+
"description": "`at_risk`: calls are waiting and no eligible agent is available. `healthy`: at least one\neligible agent is available. `quiet`: nothing waiting and nobody available.\n",
|
|
1789
|
+
"enum": [
|
|
1790
|
+
"healthy",
|
|
1791
|
+
"at_risk",
|
|
1792
|
+
"quiet"
|
|
1793
|
+
]
|
|
1794
|
+
},
|
|
1795
|
+
"QueueLive": {
|
|
1796
|
+
"type": "object",
|
|
1797
|
+
"description": "Live demand and staffing of one queue",
|
|
1798
|
+
"required": [
|
|
1799
|
+
"id",
|
|
1800
|
+
"name",
|
|
1801
|
+
"waiting",
|
|
1802
|
+
"eligible",
|
|
1803
|
+
"available",
|
|
1804
|
+
"health"
|
|
1805
|
+
],
|
|
1806
|
+
"properties": {
|
|
1807
|
+
"id": {
|
|
1808
|
+
"type": "string"
|
|
1809
|
+
},
|
|
1810
|
+
"name": {
|
|
1811
|
+
"type": "string"
|
|
1812
|
+
},
|
|
1813
|
+
"waiting": {
|
|
1814
|
+
"type": "integer",
|
|
1815
|
+
"description": "Calls waiting in the queue right now"
|
|
1816
|
+
},
|
|
1817
|
+
"longest_wait_seconds": {
|
|
1818
|
+
"type": "integer",
|
|
1819
|
+
"description": "How long the longest-waiting call has waited; absent when nothing waits"
|
|
1820
|
+
},
|
|
1821
|
+
"eligible": {
|
|
1822
|
+
"type": "integer",
|
|
1823
|
+
"description": "Agents the queue's routing steps resolve to"
|
|
1824
|
+
},
|
|
1825
|
+
"available": {
|
|
1826
|
+
"type": "integer",
|
|
1827
|
+
"description": "Eligible agents whose state is `available` right now"
|
|
866
1828
|
},
|
|
867
|
-
"
|
|
868
|
-
"
|
|
869
|
-
"description": "Admin-portal operator (email) who last ran the setup"
|
|
1829
|
+
"health": {
|
|
1830
|
+
"$ref": "#/components/schemas/QueueHealth"
|
|
870
1831
|
}
|
|
871
1832
|
}
|
|
872
1833
|
},
|
|
873
|
-
"
|
|
1834
|
+
"LiveSnapshot": {
|
|
874
1835
|
"type": "object",
|
|
875
|
-
"description": "One organization's provider setup, as listed in the overview (no live SCIM or SSO reads).",
|
|
876
1836
|
"required": [
|
|
877
|
-
"
|
|
878
|
-
"
|
|
879
|
-
"
|
|
880
|
-
"
|
|
881
|
-
"tenant"
|
|
1837
|
+
"captured_at",
|
|
1838
|
+
"agents",
|
|
1839
|
+
"queues",
|
|
1840
|
+
"calls_waiting"
|
|
882
1841
|
],
|
|
883
1842
|
"properties": {
|
|
884
|
-
"
|
|
1843
|
+
"captured_at": {
|
|
885
1844
|
"type": "string",
|
|
886
|
-
"
|
|
1845
|
+
"format": "date-time"
|
|
887
1846
|
},
|
|
888
|
-
"
|
|
889
|
-
"
|
|
890
|
-
"enum": [
|
|
891
|
-
"babelforce"
|
|
892
|
-
]
|
|
1847
|
+
"agents": {
|
|
1848
|
+
"$ref": "#/components/schemas/LiveAgentCounters"
|
|
893
1849
|
},
|
|
894
|
-
"
|
|
895
|
-
"type": "
|
|
896
|
-
"
|
|
1850
|
+
"queues": {
|
|
1851
|
+
"type": "array",
|
|
1852
|
+
"items": {
|
|
1853
|
+
"$ref": "#/components/schemas/QueueLive"
|
|
1854
|
+
}
|
|
897
1855
|
},
|
|
898
|
-
"
|
|
1856
|
+
"calls_waiting": {
|
|
1857
|
+
"type": "integer",
|
|
1858
|
+
"description": "Waiting calls across all queues"
|
|
1859
|
+
},
|
|
1860
|
+
"longest_wait_seconds": {
|
|
1861
|
+
"type": "integer",
|
|
1862
|
+
"description": "The longest wait across all queues; absent when nothing waits"
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
},
|
|
1866
|
+
"QueueRoutingStep": {
|
|
1867
|
+
"type": "object",
|
|
1868
|
+
"description": "One step of who can take a queue's calls, in the order the phone system tries them. A step\noffers calls to the people it names and to everyone with any of its skills. Teams set up in the\nphone system appear as the people they contain. The epilot-managed step holds the people added\nfrom the control center; every other step is the organization's own routing, read-only here.\n",
|
|
1869
|
+
"required": [
|
|
1870
|
+
"id",
|
|
1871
|
+
"order",
|
|
1872
|
+
"label",
|
|
1873
|
+
"enabled",
|
|
1874
|
+
"skills",
|
|
1875
|
+
"people",
|
|
1876
|
+
"managed_by_epilot"
|
|
1877
|
+
],
|
|
1878
|
+
"properties": {
|
|
1879
|
+
"id": {
|
|
1880
|
+
"type": "string"
|
|
1881
|
+
},
|
|
1882
|
+
"order": {
|
|
1883
|
+
"type": "integer",
|
|
1884
|
+
"description": "Lower is tried first"
|
|
1885
|
+
},
|
|
1886
|
+
"label": {
|
|
1887
|
+
"type": "string"
|
|
1888
|
+
},
|
|
1889
|
+
"enabled": {
|
|
1890
|
+
"type": "boolean"
|
|
1891
|
+
},
|
|
1892
|
+
"skills": {
|
|
1893
|
+
"type": "array",
|
|
1894
|
+
"description": "Skills the step routes on (anyone with any of them)",
|
|
1895
|
+
"items": {
|
|
1896
|
+
"$ref": "#/components/schemas/Skill"
|
|
1897
|
+
}
|
|
1898
|
+
},
|
|
1899
|
+
"people": {
|
|
1900
|
+
"type": "array",
|
|
1901
|
+
"description": "People the step names, directly or through a team set up in the phone system",
|
|
1902
|
+
"items": {
|
|
1903
|
+
"$ref": "#/components/schemas/PersonRef"
|
|
1904
|
+
}
|
|
1905
|
+
},
|
|
1906
|
+
"managed_by_epilot": {
|
|
899
1907
|
"type": "boolean",
|
|
900
|
-
"description": "
|
|
1908
|
+
"description": "The step `setAgentRouting` maintains; the only one the control center writes"
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
},
|
|
1912
|
+
"QueueOverview": {
|
|
1913
|
+
"allOf": [
|
|
1914
|
+
{
|
|
1915
|
+
"$ref": "#/components/schemas/QueueLive"
|
|
901
1916
|
},
|
|
902
|
-
|
|
1917
|
+
{
|
|
903
1918
|
"type": "object",
|
|
904
1919
|
"required": [
|
|
905
|
-
"
|
|
906
|
-
"name",
|
|
907
|
-
"org_key"
|
|
1920
|
+
"routing"
|
|
908
1921
|
],
|
|
909
1922
|
"properties": {
|
|
910
|
-
"
|
|
911
|
-
"type": "
|
|
912
|
-
"description": "
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
1923
|
+
"numbers": {
|
|
1924
|
+
"type": "array",
|
|
1925
|
+
"description": "Service numbers routed into this queue, when the phone system makes that derivable",
|
|
1926
|
+
"items": {
|
|
1927
|
+
"type": "string"
|
|
1928
|
+
}
|
|
916
1929
|
},
|
|
917
|
-
"
|
|
918
|
-
"type": "
|
|
1930
|
+
"routing": {
|
|
1931
|
+
"type": "array",
|
|
1932
|
+
"description": "Who can take the queue's calls, in the order the phone system tries them",
|
|
1933
|
+
"items": {
|
|
1934
|
+
"$ref": "#/components/schemas/QueueRoutingStep"
|
|
1935
|
+
}
|
|
919
1936
|
}
|
|
920
1937
|
}
|
|
1938
|
+
}
|
|
1939
|
+
]
|
|
1940
|
+
},
|
|
1941
|
+
"EligibleAgent": {
|
|
1942
|
+
"type": "object",
|
|
1943
|
+
"description": "An agent who can take the queue's calls, with live status",
|
|
1944
|
+
"required": [
|
|
1945
|
+
"provider_agent_id",
|
|
1946
|
+
"name",
|
|
1947
|
+
"state",
|
|
1948
|
+
"via",
|
|
1949
|
+
"skills"
|
|
1950
|
+
],
|
|
1951
|
+
"properties": {
|
|
1952
|
+
"provider_agent_id": {
|
|
1953
|
+
"type": "string"
|
|
921
1954
|
},
|
|
922
|
-
"
|
|
923
|
-
"type": "string"
|
|
924
|
-
"description": "The identity-api client the recorded SSO configuration points at"
|
|
1955
|
+
"user_id": {
|
|
1956
|
+
"type": "string"
|
|
925
1957
|
},
|
|
926
|
-
"
|
|
927
|
-
"type": "string"
|
|
928
|
-
"description": "The operator who last ran the setup (email)"
|
|
1958
|
+
"name": {
|
|
1959
|
+
"type": "string"
|
|
929
1960
|
},
|
|
930
|
-
"
|
|
931
|
-
"type": "string"
|
|
932
|
-
|
|
933
|
-
|
|
1961
|
+
"email": {
|
|
1962
|
+
"type": "string"
|
|
1963
|
+
},
|
|
1964
|
+
"state": {
|
|
1965
|
+
"$ref": "#/components/schemas/AgentState"
|
|
1966
|
+
},
|
|
1967
|
+
"presence": {
|
|
1968
|
+
"$ref": "#/components/schemas/AgentPresence"
|
|
1969
|
+
},
|
|
1970
|
+
"via": {
|
|
1971
|
+
"type": "array",
|
|
1972
|
+
"minItems": 1,
|
|
1973
|
+
"items": {
|
|
1974
|
+
"$ref": "#/components/schemas/EligibilityPath"
|
|
1975
|
+
}
|
|
1976
|
+
},
|
|
1977
|
+
"skills": {
|
|
1978
|
+
"type": "array",
|
|
1979
|
+
"description": "The agent's skills that make the queue route to them (empty unless `via` has `skill`)",
|
|
1980
|
+
"items": {
|
|
1981
|
+
"$ref": "#/components/schemas/Skill"
|
|
1982
|
+
}
|
|
934
1983
|
}
|
|
935
1984
|
}
|
|
936
1985
|
},
|
|
937
|
-
"
|
|
1986
|
+
"WaitingCall": {
|
|
938
1987
|
"type": "object",
|
|
939
1988
|
"required": [
|
|
940
|
-
"
|
|
941
|
-
"
|
|
1989
|
+
"id",
|
|
1990
|
+
"waited_seconds",
|
|
1991
|
+
"state"
|
|
942
1992
|
],
|
|
943
1993
|
"properties": {
|
|
944
|
-
"
|
|
945
|
-
"type": "string"
|
|
946
|
-
"description": "Provider tenant name, unique across the provider (3 to 100 characters). Required the first\ntime (`400` with code `account_name_required` without it); ignored once the tenant exists.\n",
|
|
947
|
-
"minLength": 3,
|
|
948
|
-
"maxLength": 100
|
|
1994
|
+
"id": {
|
|
1995
|
+
"type": "string"
|
|
949
1996
|
},
|
|
950
|
-
"
|
|
1997
|
+
"from_masked": {
|
|
951
1998
|
"type": "string",
|
|
952
|
-
"description": "
|
|
953
|
-
"minLength": 1,
|
|
954
|
-
"maxLength": 128,
|
|
955
|
-
"pattern": "^[A-Za-z0-9._~-]+$"
|
|
1999
|
+
"description": "The caller's number with all but the last four digits hidden"
|
|
956
2000
|
},
|
|
957
|
-
"
|
|
2001
|
+
"waited_seconds": {
|
|
2002
|
+
"type": "integer"
|
|
2003
|
+
},
|
|
2004
|
+
"state": {
|
|
958
2005
|
"type": "string",
|
|
959
|
-
"description": "The
|
|
960
|
-
"minLength": 12,
|
|
961
|
-
"maxLength": 512
|
|
2006
|
+
"description": "The provider's call state (e.g. `queued`, `ringing`)"
|
|
962
2007
|
}
|
|
963
2008
|
}
|
|
964
2009
|
},
|
|
965
|
-
"
|
|
2010
|
+
"QueueDetail": {
|
|
2011
|
+
"allOf": [
|
|
2012
|
+
{
|
|
2013
|
+
"$ref": "#/components/schemas/QueueOverview"
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
"type": "object",
|
|
2017
|
+
"required": [
|
|
2018
|
+
"captured_at",
|
|
2019
|
+
"eligible_agents",
|
|
2020
|
+
"waiting_calls"
|
|
2021
|
+
],
|
|
2022
|
+
"properties": {
|
|
2023
|
+
"captured_at": {
|
|
2024
|
+
"type": "string",
|
|
2025
|
+
"format": "date-time"
|
|
2026
|
+
},
|
|
2027
|
+
"eligible_agents": {
|
|
2028
|
+
"type": "array",
|
|
2029
|
+
"items": {
|
|
2030
|
+
"$ref": "#/components/schemas/EligibleAgent"
|
|
2031
|
+
}
|
|
2032
|
+
},
|
|
2033
|
+
"waiting_calls": {
|
|
2034
|
+
"type": "array",
|
|
2035
|
+
"items": {
|
|
2036
|
+
"$ref": "#/components/schemas/WaitingCall"
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
}
|
|
2041
|
+
]
|
|
2042
|
+
},
|
|
2043
|
+
"AgentRoutingRequest": {
|
|
966
2044
|
"type": "object",
|
|
967
|
-
"additionalProperties": false,
|
|
968
2045
|
"required": [
|
|
969
|
-
"
|
|
2046
|
+
"skills",
|
|
2047
|
+
"queue_ids"
|
|
970
2048
|
],
|
|
971
2049
|
"properties": {
|
|
972
|
-
"
|
|
2050
|
+
"skills": {
|
|
973
2051
|
"type": "array",
|
|
974
|
-
"description": "
|
|
2052
|
+
"description": "The agent's skills in the phone system (full set, not a delta); at most 200",
|
|
975
2053
|
"items": {
|
|
976
|
-
"$ref": "#/components/schemas/
|
|
2054
|
+
"$ref": "#/components/schemas/Skill"
|
|
2055
|
+
}
|
|
2056
|
+
},
|
|
2057
|
+
"queue_ids": {
|
|
2058
|
+
"type": "array",
|
|
2059
|
+
"description": "The queues the agent is directly in, through the epilot-managed step (full set); at most 200",
|
|
2060
|
+
"items": {
|
|
2061
|
+
"type": "string",
|
|
2062
|
+
"minLength": 1,
|
|
2063
|
+
"maxLength": 64,
|
|
2064
|
+
"pattern": "^[A-Za-z0-9_-]+$"
|
|
977
2065
|
}
|
|
978
2066
|
}
|
|
979
2067
|
}
|
|
980
2068
|
},
|
|
981
|
-
"
|
|
2069
|
+
"AgentRouting": {
|
|
982
2070
|
"type": "object",
|
|
983
|
-
"additionalProperties": false,
|
|
984
2071
|
"required": [
|
|
985
|
-
"
|
|
986
|
-
"
|
|
2072
|
+
"provider_agent_id",
|
|
2073
|
+
"skills",
|
|
2074
|
+
"queues"
|
|
987
2075
|
],
|
|
988
2076
|
"properties": {
|
|
989
|
-
"
|
|
990
|
-
"
|
|
2077
|
+
"provider_agent_id": {
|
|
2078
|
+
"type": "string"
|
|
991
2079
|
},
|
|
992
|
-
"
|
|
993
|
-
"type": "
|
|
994
|
-
"
|
|
995
|
-
"
|
|
996
|
-
|
|
997
|
-
"ambiguous",
|
|
998
|
-
"invalid",
|
|
999
|
-
"error"
|
|
1000
|
-
],
|
|
1001
|
-
"description": "- `found` — exactly one contact has the identifier; see `customer`\n- `not_found` — no contact the caller may see has it\n- `ambiguous` — several contacts share it; none is chosen\n- `invalid` — not a usable identifier (a phone number that does\n not parse), so nothing was searched\n- `error` — the search for this identifier failed; try again\n"
|
|
2080
|
+
"skills": {
|
|
2081
|
+
"type": "array",
|
|
2082
|
+
"items": {
|
|
2083
|
+
"$ref": "#/components/schemas/Skill"
|
|
2084
|
+
}
|
|
1002
2085
|
},
|
|
1003
|
-
"
|
|
1004
|
-
"
|
|
2086
|
+
"queues": {
|
|
2087
|
+
"type": "array",
|
|
2088
|
+
"items": {
|
|
2089
|
+
"$ref": "#/components/schemas/AgentQueueEligibility"
|
|
2090
|
+
}
|
|
1005
2091
|
}
|
|
1006
2092
|
}
|
|
1007
2093
|
},
|
|
1008
|
-
"
|
|
2094
|
+
"AgentRoutingPreview": {
|
|
1009
2095
|
"type": "object",
|
|
1010
|
-
"additionalProperties": false,
|
|
1011
2096
|
"required": [
|
|
1012
|
-
"
|
|
1013
|
-
"
|
|
2097
|
+
"provider_agent_id",
|
|
2098
|
+
"before",
|
|
2099
|
+
"after",
|
|
2100
|
+
"added",
|
|
2101
|
+
"removed",
|
|
2102
|
+
"coverage_lost",
|
|
2103
|
+
"locked"
|
|
1014
2104
|
],
|
|
1015
2105
|
"properties": {
|
|
1016
|
-
"
|
|
1017
|
-
"type": "string"
|
|
1018
|
-
"enum": [
|
|
1019
|
-
"id",
|
|
1020
|
-
"customer_number",
|
|
1021
|
-
"external_id",
|
|
1022
|
-
"phone_number",
|
|
1023
|
-
"email"
|
|
1024
|
-
]
|
|
2106
|
+
"provider_agent_id": {
|
|
2107
|
+
"type": "string"
|
|
1025
2108
|
},
|
|
1026
|
-
"
|
|
1027
|
-
"type": "
|
|
1028
|
-
"description": "
|
|
1029
|
-
"
|
|
2109
|
+
"before": {
|
|
2110
|
+
"type": "array",
|
|
2111
|
+
"description": "Queues the agent can take calls from now, as the phone system routes today",
|
|
2112
|
+
"items": {
|
|
2113
|
+
"$ref": "#/components/schemas/QueueRef"
|
|
2114
|
+
}
|
|
2115
|
+
},
|
|
2116
|
+
"after": {
|
|
2117
|
+
"type": "array",
|
|
2118
|
+
"items": {
|
|
2119
|
+
"$ref": "#/components/schemas/QueueRef"
|
|
2120
|
+
}
|
|
2121
|
+
},
|
|
2122
|
+
"added": {
|
|
2123
|
+
"type": "array",
|
|
2124
|
+
"items": {
|
|
2125
|
+
"$ref": "#/components/schemas/QueueRef"
|
|
2126
|
+
}
|
|
2127
|
+
},
|
|
2128
|
+
"removed": {
|
|
2129
|
+
"type": "array",
|
|
2130
|
+
"items": {
|
|
2131
|
+
"$ref": "#/components/schemas/QueueRef"
|
|
2132
|
+
}
|
|
2133
|
+
},
|
|
2134
|
+
"coverage_lost": {
|
|
2135
|
+
"type": "array",
|
|
2136
|
+
"description": "Removed queues where this agent is currently the only available eligible agent",
|
|
2137
|
+
"items": {
|
|
2138
|
+
"$ref": "#/components/schemas/QueueRef"
|
|
2139
|
+
}
|
|
2140
|
+
},
|
|
2141
|
+
"locked": {
|
|
2142
|
+
"type": "array",
|
|
2143
|
+
"description": "Queues the agent stays in through the phone system's own routing, which this call cannot remove",
|
|
2144
|
+
"items": {
|
|
2145
|
+
"$ref": "#/components/schemas/QueueRef"
|
|
2146
|
+
}
|
|
1030
2147
|
}
|
|
1031
2148
|
}
|
|
1032
2149
|
},
|
|
1033
|
-
"
|
|
2150
|
+
"CallReport": {
|
|
1034
2151
|
"type": "object",
|
|
1035
|
-
"additionalProperties": false,
|
|
1036
|
-
"description": "Present when `status` is `found`",
|
|
1037
2152
|
"required": [
|
|
1038
|
-
"
|
|
1039
|
-
"
|
|
2153
|
+
"from",
|
|
2154
|
+
"to",
|
|
2155
|
+
"inbound_total",
|
|
2156
|
+
"handled_by_agent",
|
|
2157
|
+
"abandoned_or_failed",
|
|
2158
|
+
"previous_period"
|
|
1040
2159
|
],
|
|
1041
2160
|
"properties": {
|
|
1042
|
-
"
|
|
2161
|
+
"from": {
|
|
1043
2162
|
"type": "string",
|
|
1044
|
-
"
|
|
1045
|
-
"example": "dba8e5f9-8b3f-4608-b887-cd0798fce624"
|
|
2163
|
+
"format": "date-time"
|
|
1046
2164
|
},
|
|
1047
|
-
"
|
|
2165
|
+
"to": {
|
|
1048
2166
|
"type": "string",
|
|
1049
|
-
"
|
|
1050
|
-
"description": "The contact's title, else its first and last name; null when it has neither",
|
|
1051
|
-
"example": "Max Mustermann"
|
|
2167
|
+
"format": "date-time"
|
|
1052
2168
|
},
|
|
1053
|
-
"
|
|
1054
|
-
"type": "
|
|
1055
|
-
|
|
1056
|
-
|
|
2169
|
+
"inbound_total": {
|
|
2170
|
+
"type": "integer"
|
|
2171
|
+
},
|
|
2172
|
+
"handled_by_agent": {
|
|
2173
|
+
"type": "integer",
|
|
2174
|
+
"description": "Inbound calls bridged to an agent"
|
|
2175
|
+
},
|
|
2176
|
+
"abandoned_or_failed": {
|
|
2177
|
+
"type": "integer",
|
|
2178
|
+
"description": "Inbound calls that ended without reaching an agent"
|
|
2179
|
+
},
|
|
2180
|
+
"previous_period": {
|
|
2181
|
+
"type": "object",
|
|
2182
|
+
"description": "The same window shifted back by whole days (its length rounded up to days), for the trend: a\nrunning \"today\" compares with yesterday up to the same time, \"last 7 days\" with the 7 days before\n",
|
|
2183
|
+
"required": [
|
|
2184
|
+
"from",
|
|
2185
|
+
"to",
|
|
2186
|
+
"inbound_total"
|
|
2187
|
+
],
|
|
2188
|
+
"properties": {
|
|
2189
|
+
"from": {
|
|
2190
|
+
"type": "string",
|
|
2191
|
+
"format": "date-time"
|
|
2192
|
+
},
|
|
2193
|
+
"to": {
|
|
2194
|
+
"type": "string",
|
|
2195
|
+
"format": "date-time"
|
|
2196
|
+
},
|
|
2197
|
+
"inbound_total": {
|
|
2198
|
+
"type": "integer"
|
|
2199
|
+
}
|
|
2200
|
+
}
|
|
1057
2201
|
}
|
|
1058
2202
|
}
|
|
1059
2203
|
},
|