@smartytalent/openai-tools 0.1.33-dev.25 → 0.1.33-dev.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tools.json +470 -130
- package/package.json +1 -1
package/dist/tools.json
CHANGED
|
@@ -10561,104 +10561,186 @@
|
|
|
10561
10561
|
"attributes": {
|
|
10562
10562
|
"title": "CallAttributesSchema",
|
|
10563
10563
|
"type": "object",
|
|
10564
|
+
"description": "Cross-protocol call attributes. Mirror of chat with voice-\nspecific extensions: lifecycle covers provider phases (queued\n-> ringing -> in-progress -> completed) plus the operator\nreview window (draft -> scheduled -> queued). aiMode toggles\nwhether the AI agent is the active speaker, a silent observer,\nor fully off. transcript + summary are multilingual dicts\nmirroring email/chat body shape; the call AI translate Step\nFunction fans them across tenant locales.",
|
|
10564
10565
|
"properties": {
|
|
10565
|
-
"name": {
|
|
10566
|
-
"type": "string",
|
|
10567
|
-
"description": "Call title, e.g. Inbound call from John"
|
|
10568
|
-
},
|
|
10569
10566
|
"direction": {
|
|
10570
10567
|
"type": "string",
|
|
10571
10568
|
"enum": [
|
|
10572
10569
|
"inbound",
|
|
10573
|
-
"outbound"
|
|
10574
|
-
"ai-bot"
|
|
10570
|
+
"outbound"
|
|
10575
10571
|
],
|
|
10576
|
-
"description": "Call direction"
|
|
10572
|
+
"description": "Call direction relative to boe (inbound = caller dialed boe; outbound = boe placed the call)."
|
|
10577
10573
|
},
|
|
10578
|
-
"
|
|
10574
|
+
"protocol": {
|
|
10579
10575
|
"type": "string",
|
|
10580
10576
|
"enum": [
|
|
10581
|
-
"
|
|
10582
|
-
"
|
|
10583
|
-
"follow-up",
|
|
10584
|
-
"screening",
|
|
10585
|
-
"reference-check"
|
|
10577
|
+
"phone",
|
|
10578
|
+
"webrtc"
|
|
10586
10579
|
],
|
|
10587
|
-
"description": "
|
|
10580
|
+
"description": "Wire protocol. Phone is PSTN via Twilio; WebRTC reserves the slot for the future recruiter Voice SDK in the admin web app."
|
|
10588
10581
|
},
|
|
10589
|
-
"
|
|
10590
|
-
"type": "integer",
|
|
10591
|
-
"description": "Call duration in seconds"
|
|
10592
|
-
},
|
|
10593
|
-
"outcome": {
|
|
10582
|
+
"status": {
|
|
10594
10583
|
"type": "string",
|
|
10595
10584
|
"enum": [
|
|
10596
|
-
"
|
|
10597
|
-
"
|
|
10598
|
-
"
|
|
10585
|
+
"draft",
|
|
10586
|
+
"scheduled",
|
|
10587
|
+
"cancelled",
|
|
10588
|
+
"queued",
|
|
10589
|
+
"ringing",
|
|
10590
|
+
"in-progress",
|
|
10591
|
+
"completed",
|
|
10592
|
+
"failed",
|
|
10599
10593
|
"no-answer",
|
|
10600
|
-
"busy"
|
|
10594
|
+
"busy",
|
|
10595
|
+
"voicemail",
|
|
10596
|
+
"abandoned",
|
|
10597
|
+
"archived"
|
|
10601
10598
|
],
|
|
10602
|
-
"description": "
|
|
10599
|
+
"description": "Lifecycle state. Outbound rows that go through an operator review window or explicit scheduling start at `draft` (editable) or `scheduled` (Schedule armed for fireAt); on Schedule fire they progress queued -> ringing -> in-progress -> completed (or failed / no-answer / busy / voicemail). `abandoned` covers inbound calls where the caller hung up before the AI answered. `cancelled` is operator hard-kill before dial. `archived` is a terminal soft-delete."
|
|
10603
10600
|
},
|
|
10604
|
-
"
|
|
10601
|
+
"fromIdentifier": {
|
|
10605
10602
|
"type": "string",
|
|
10606
|
-
"description": "Caller
|
|
10603
|
+
"description": "Caller's protocol-native handle (E.164 phone for PSTN, AAD object id for WebRTC)."
|
|
10607
10604
|
},
|
|
10608
|
-
"
|
|
10605
|
+
"fromName": {
|
|
10609
10606
|
"type": "string",
|
|
10610
|
-
"description": "
|
|
10607
|
+
"description": "Display name of the caller at write time. Denormalised from the resolved principal."
|
|
10611
10608
|
},
|
|
10612
|
-
"
|
|
10609
|
+
"fromType": {
|
|
10613
10610
|
"type": "string",
|
|
10614
|
-
"
|
|
10611
|
+
"enum": [
|
|
10612
|
+
"user",
|
|
10613
|
+
"candidate",
|
|
10614
|
+
"talent",
|
|
10615
|
+
"guest"
|
|
10616
|
+
],
|
|
10617
|
+
"description": "Principal type of the caller."
|
|
10618
|
+
},
|
|
10619
|
+
"toIdentifier": {
|
|
10620
|
+
"type": "string",
|
|
10621
|
+
"description": "Callee's protocol-native handle."
|
|
10622
|
+
},
|
|
10623
|
+
"toName": {
|
|
10624
|
+
"type": "string",
|
|
10625
|
+
"description": "Display name of the callee at write time."
|
|
10626
|
+
},
|
|
10627
|
+
"toType": {
|
|
10628
|
+
"type": "string",
|
|
10629
|
+
"enum": [
|
|
10630
|
+
"user",
|
|
10631
|
+
"candidate",
|
|
10632
|
+
"talent",
|
|
10633
|
+
"guest"
|
|
10634
|
+
],
|
|
10635
|
+
"description": "Principal type of the callee."
|
|
10615
10636
|
},
|
|
10616
10637
|
"transcript": {
|
|
10617
10638
|
"type": "object",
|
|
10618
|
-
"description": "
|
|
10639
|
+
"description": "Multilingual transcript keyed by BCP 47 locale (e.g. {`en-US`: `Hi`, `pl-PL`: `Cześć`}). Source locale is captured first; the AI translate Step Function fills in the rest of the tenant's active locales.",
|
|
10640
|
+
"additionalProperties": {
|
|
10641
|
+
"type": "string"
|
|
10642
|
+
}
|
|
10619
10643
|
},
|
|
10620
|
-
"
|
|
10621
|
-
"type": "
|
|
10622
|
-
"description": "
|
|
10623
|
-
"
|
|
10624
|
-
"type": "
|
|
10644
|
+
"summary": {
|
|
10645
|
+
"type": "object",
|
|
10646
|
+
"description": "Multilingual post-call summary keyed by BCP 47 locale. LLM-generated after call ends.",
|
|
10647
|
+
"additionalProperties": {
|
|
10648
|
+
"type": "string"
|
|
10625
10649
|
}
|
|
10626
10650
|
},
|
|
10627
|
-
"
|
|
10651
|
+
"criteriaScoring": {
|
|
10652
|
+
"type": "object",
|
|
10653
|
+
"description": "Per-criterion scoring extracted from the transcript when the call is tied to a job (relationships.job). Map of criterion key -> {score, evidence, confidence}."
|
|
10654
|
+
},
|
|
10655
|
+
"startedAt": {
|
|
10628
10656
|
"type": "string",
|
|
10629
|
-
"description": "
|
|
10657
|
+
"description": "ISO 8601 timestamp when the call started (ringing began). Set on outbound dial or inbound webhook arrival."
|
|
10630
10658
|
},
|
|
10631
|
-
"
|
|
10632
|
-
"type": "
|
|
10633
|
-
"description": "
|
|
10659
|
+
"answeredAt": {
|
|
10660
|
+
"type": "string",
|
|
10661
|
+
"description": "ISO 8601 timestamp when the call connected (recipient picked up)."
|
|
10662
|
+
},
|
|
10663
|
+
"endedAt": {
|
|
10664
|
+
"type": "string",
|
|
10665
|
+
"description": "ISO 8601 timestamp when the call ended (terminal status reached)."
|
|
10634
10666
|
},
|
|
10635
|
-
"
|
|
10667
|
+
"durationSec": {
|
|
10668
|
+
"type": "integer",
|
|
10669
|
+
"description": "Call duration in seconds (endedAt - answeredAt)."
|
|
10670
|
+
},
|
|
10671
|
+
"scheduledFireAt": {
|
|
10672
|
+
"type": "string",
|
|
10673
|
+
"description": "ISO 8601 timestamp at which the Schedule armed for this call will fire and place the outbound dial. Operators can PATCH to reschedule; the eventbus PATCHes the underlying Schedule row in lockstep. Mirror of email/chat scheduledFireAt."
|
|
10674
|
+
},
|
|
10675
|
+
"scheduleId": {
|
|
10676
|
+
"type": "string",
|
|
10677
|
+
"description": "FK denormalisation of relationships.schedule for cheap read paths."
|
|
10678
|
+
},
|
|
10679
|
+
"conferenceSid": {
|
|
10680
|
+
"type": "string",
|
|
10681
|
+
"description": "Twilio conference id when the call is a multi-party (3-way) conference. Null for 1:1."
|
|
10682
|
+
},
|
|
10683
|
+
"isConference": {
|
|
10636
10684
|
"type": "boolean",
|
|
10637
|
-
"description": "
|
|
10685
|
+
"description": "True when the call is a multi-party conference (recruiter joining via Voice SDK + candidate + boe AI). False for 1:1."
|
|
10638
10686
|
},
|
|
10639
|
-
"
|
|
10687
|
+
"aiMode": {
|
|
10688
|
+
"type": "string",
|
|
10689
|
+
"enum": [
|
|
10690
|
+
"active",
|
|
10691
|
+
"observer",
|
|
10692
|
+
"silent"
|
|
10693
|
+
],
|
|
10694
|
+
"description": "How the AI agent participates. `active` = AI speaks (default for boe ↔ candidate). `observer` = AI listens, transcribes, surfaces real-time suggestions to the recruiter UI but does not speak. `silent` = recording + post-call analysis only, no AI in the call."
|
|
10695
|
+
},
|
|
10696
|
+
"plannedTopics": {
|
|
10640
10697
|
"type": "array",
|
|
10641
|
-
"description": "
|
|
10698
|
+
"description": "List of topic keys the AI agent should cover during the call (e.g. ['salary', 'experience', 'languagesSpoken']). Operator-editable in the review window before fire.",
|
|
10642
10699
|
"items": {
|
|
10643
|
-
"type": "
|
|
10700
|
+
"type": "string"
|
|
10644
10701
|
}
|
|
10645
10702
|
},
|
|
10646
|
-
"
|
|
10703
|
+
"systemPrompt": {
|
|
10704
|
+
"type": "string",
|
|
10705
|
+
"description": "Operator-editable agent instructions used as the OpenAI Realtime session's system prompt at fire time. Mirror of email body in the operator review window: edit before fire, the dialed call uses the latest version."
|
|
10706
|
+
},
|
|
10707
|
+
"recording": {
|
|
10647
10708
|
"type": "object",
|
|
10648
|
-
"description": "
|
|
10709
|
+
"description": "Recording artifacts. Raw G.711 µ-law file is captured live; the audio convert Lambda emits the MP3 derivatives post-call.",
|
|
10710
|
+
"properties": {
|
|
10711
|
+
"type": {
|
|
10712
|
+
"type": "string",
|
|
10713
|
+
"enum": [
|
|
10714
|
+
"dual-channel",
|
|
10715
|
+
"mixed"
|
|
10716
|
+
],
|
|
10717
|
+
"description": "Recording layout: dual-channel separates speakers per Twilio leg; mixed is single-track combined."
|
|
10718
|
+
},
|
|
10719
|
+
"rawUrl": {
|
|
10720
|
+
"type": "string",
|
|
10721
|
+
"description": "S3 URI to the raw G.711 µ-law audio."
|
|
10722
|
+
},
|
|
10723
|
+
"mixedMp3Url": {
|
|
10724
|
+
"type": "string",
|
|
10725
|
+
"description": "S3 URI to the mixed conversation MP3."
|
|
10726
|
+
},
|
|
10727
|
+
"humanOnlyMp3Url": {
|
|
10728
|
+
"type": "string",
|
|
10729
|
+
"description": "S3 URI to the human-only MP3 (silent during AI turns)."
|
|
10730
|
+
},
|
|
10731
|
+
"aiOnlyMp3Url": {
|
|
10732
|
+
"type": "string",
|
|
10733
|
+
"description": "S3 URI to the AI-only MP3 (silent during human turns)."
|
|
10734
|
+
}
|
|
10735
|
+
}
|
|
10649
10736
|
},
|
|
10650
|
-
"
|
|
10737
|
+
"languageCode": {
|
|
10651
10738
|
"type": "string",
|
|
10652
|
-
"description": "
|
|
10739
|
+
"description": "BCP 47 locale of the call (the locale key initially populated in transcript). Detected from the caller's settings or call audio."
|
|
10653
10740
|
},
|
|
10654
|
-
"
|
|
10741
|
+
"shortCode": {
|
|
10655
10742
|
"type": "string",
|
|
10656
|
-
"
|
|
10657
|
-
"active",
|
|
10658
|
-
"draft",
|
|
10659
|
-
"archived",
|
|
10660
|
-
"failed"
|
|
10661
|
-
]
|
|
10743
|
+
"description": "Unique short identifier (provider/lookup correlation)."
|
|
10662
10744
|
},
|
|
10663
10745
|
"timestamps": {
|
|
10664
10746
|
"title": "ResourceTimestampsSchema",
|
|
@@ -10679,23 +10761,155 @@
|
|
|
10679
10761
|
"relationships": {
|
|
10680
10762
|
"title": "CallRelationshipsSchema",
|
|
10681
10763
|
"type": "object",
|
|
10764
|
+
"description": "Relationship slots on the call resource. All to-one. Direction\n+ attributes.fromType / toType tell you which side of the\nconversation each principal occupies. Mirror of chat's slot\nset with two voice-specific additions: `job` (call about a\nspecific opening) and `brief` (call collecting / clarifying\na specific brief). `boeUser` is split from `user` so the AI\nagent has a dedicated slot - `user` is reserved for human\ncounterparties (3-way conference recruiter, future user-to-\nuser webapp/Teams chat).",
|
|
10682
10765
|
"properties": {
|
|
10683
|
-
"
|
|
10684
|
-
"title": "
|
|
10766
|
+
"conversation": {
|
|
10767
|
+
"title": "CallRelationshipsConversationSchema",
|
|
10768
|
+
"description": "Thread the call belongs to. Phone calls in the same workflow run share a conversation; per-thread queries via ConversationIdIndex.",
|
|
10685
10769
|
"type": "object",
|
|
10686
10770
|
"properties": {
|
|
10687
10771
|
"data": {
|
|
10688
|
-
"
|
|
10689
|
-
"
|
|
10690
|
-
|
|
10691
|
-
"type":
|
|
10692
|
-
|
|
10693
|
-
|
|
10694
|
-
|
|
10695
|
-
|
|
10696
|
-
|
|
10697
|
-
|
|
10698
|
-
|
|
10772
|
+
"title": "CallRelationshipsConversationDataSchema",
|
|
10773
|
+
"type": "object",
|
|
10774
|
+
"properties": {
|
|
10775
|
+
"type": {
|
|
10776
|
+
"type": "string"
|
|
10777
|
+
},
|
|
10778
|
+
"id": {
|
|
10779
|
+
"type": "string"
|
|
10780
|
+
}
|
|
10781
|
+
}
|
|
10782
|
+
}
|
|
10783
|
+
}
|
|
10784
|
+
},
|
|
10785
|
+
"candidate": {
|
|
10786
|
+
"title": "CallRelationshipsCandidateSchema",
|
|
10787
|
+
"description": "External candidate principal. Set when fromType=candidate (inbound) or toType=candidate (outbound).",
|
|
10788
|
+
"type": "object",
|
|
10789
|
+
"properties": {
|
|
10790
|
+
"data": {
|
|
10791
|
+
"title": "CallRelationshipsCandidateDataSchema",
|
|
10792
|
+
"type": "object",
|
|
10793
|
+
"properties": {
|
|
10794
|
+
"type": {
|
|
10795
|
+
"type": "string"
|
|
10796
|
+
},
|
|
10797
|
+
"id": {
|
|
10798
|
+
"type": "string"
|
|
10799
|
+
}
|
|
10800
|
+
}
|
|
10801
|
+
}
|
|
10802
|
+
}
|
|
10803
|
+
},
|
|
10804
|
+
"talent": {
|
|
10805
|
+
"title": "CallRelationshipsTalentSchema",
|
|
10806
|
+
"description": "External talent principal. Set when fromType=talent (inbound) or toType=talent (outbound).",
|
|
10807
|
+
"type": "object",
|
|
10808
|
+
"properties": {
|
|
10809
|
+
"data": {
|
|
10810
|
+
"title": "CallRelationshipsTalentDataSchema",
|
|
10811
|
+
"type": "object",
|
|
10812
|
+
"properties": {
|
|
10813
|
+
"type": {
|
|
10814
|
+
"type": "string"
|
|
10815
|
+
},
|
|
10816
|
+
"id": {
|
|
10817
|
+
"type": "string"
|
|
10818
|
+
}
|
|
10819
|
+
}
|
|
10820
|
+
}
|
|
10821
|
+
}
|
|
10822
|
+
},
|
|
10823
|
+
"user": {
|
|
10824
|
+
"title": "CallRelationshipsUserSchema",
|
|
10825
|
+
"description": "Internal human user (employee). Reserved for 3-way conference recruiters (boe + recruiter + candidate). Today this is typically null on boe-mediated 1:1 calls - the boe AI agent goes in `boeUser`, not here.",
|
|
10826
|
+
"type": "object",
|
|
10827
|
+
"properties": {
|
|
10828
|
+
"data": {
|
|
10829
|
+
"title": "CallRelationshipsUserDataSchema",
|
|
10830
|
+
"type": "object",
|
|
10831
|
+
"properties": {
|
|
10832
|
+
"type": {
|
|
10833
|
+
"type": "string"
|
|
10834
|
+
},
|
|
10835
|
+
"id": {
|
|
10836
|
+
"type": "string"
|
|
10837
|
+
}
|
|
10838
|
+
}
|
|
10839
|
+
}
|
|
10840
|
+
}
|
|
10841
|
+
},
|
|
10842
|
+
"boeUser": {
|
|
10843
|
+
"title": "CallRelationshipsBoeUserSchema",
|
|
10844
|
+
"description": "Boe AI agent involved in the call. Mirror of tenant.relationships.boeUser - always populated when boe is on the call. Splitting this from the generic `user` slot keeps the semantics clean: `user` is for human counterparties, `boeUser` is the AI agent.",
|
|
10845
|
+
"type": "object",
|
|
10846
|
+
"properties": {
|
|
10847
|
+
"data": {
|
|
10848
|
+
"title": "CallRelationshipsBoeUserDataSchema",
|
|
10849
|
+
"type": "object",
|
|
10850
|
+
"properties": {
|
|
10851
|
+
"type": {
|
|
10852
|
+
"type": "string"
|
|
10853
|
+
},
|
|
10854
|
+
"id": {
|
|
10855
|
+
"type": "string"
|
|
10856
|
+
}
|
|
10857
|
+
}
|
|
10858
|
+
}
|
|
10859
|
+
}
|
|
10860
|
+
},
|
|
10861
|
+
"job": {
|
|
10862
|
+
"title": "CallRelationshipsJobSchema",
|
|
10863
|
+
"description": "Job opening this call is about. Set on screening calls + phone-brief outbound clarifications targeting a specific opening. Drives criteriaScoring against the job's criteria.",
|
|
10864
|
+
"type": "object",
|
|
10865
|
+
"properties": {
|
|
10866
|
+
"data": {
|
|
10867
|
+
"title": "CallRelationshipsJobDataSchema",
|
|
10868
|
+
"type": "object",
|
|
10869
|
+
"properties": {
|
|
10870
|
+
"type": {
|
|
10871
|
+
"type": "string"
|
|
10872
|
+
},
|
|
10873
|
+
"id": {
|
|
10874
|
+
"type": "string"
|
|
10875
|
+
}
|
|
10876
|
+
}
|
|
10877
|
+
}
|
|
10878
|
+
}
|
|
10879
|
+
},
|
|
10880
|
+
"brief": {
|
|
10881
|
+
"title": "CallRelationshipsBriefSchema",
|
|
10882
|
+
"description": "Brief this call is collecting / clarifying. Set on phone-brief discovery + clarification calls. Drives the `Calls for brief X` view in the operator UI.",
|
|
10883
|
+
"type": "object",
|
|
10884
|
+
"properties": {
|
|
10885
|
+
"data": {
|
|
10886
|
+
"title": "CallRelationshipsBriefDataSchema",
|
|
10887
|
+
"type": "object",
|
|
10888
|
+
"properties": {
|
|
10889
|
+
"type": {
|
|
10890
|
+
"type": "string"
|
|
10891
|
+
},
|
|
10892
|
+
"id": {
|
|
10893
|
+
"type": "string"
|
|
10894
|
+
}
|
|
10895
|
+
}
|
|
10896
|
+
}
|
|
10897
|
+
}
|
|
10898
|
+
},
|
|
10899
|
+
"schedule": {
|
|
10900
|
+
"title": "CallRelationshipsScheduleSchema",
|
|
10901
|
+
"description": "Schedule row armed for this call's outbound dial. Set when scheduledFireAt is populated; null on inbound rows or on outbound rows that bypass the review window. Operators reschedule/cancel via PATCH/DELETE on the call resource - the eventbus reflects those changes onto the Schedule row, never the other way around.",
|
|
10902
|
+
"type": "object",
|
|
10903
|
+
"properties": {
|
|
10904
|
+
"data": {
|
|
10905
|
+
"title": "CallRelationshipsScheduleDataSchema",
|
|
10906
|
+
"type": "object",
|
|
10907
|
+
"properties": {
|
|
10908
|
+
"type": {
|
|
10909
|
+
"type": "string"
|
|
10910
|
+
},
|
|
10911
|
+
"id": {
|
|
10912
|
+
"type": "string"
|
|
10699
10913
|
}
|
|
10700
10914
|
}
|
|
10701
10915
|
}
|
|
@@ -10764,104 +10978,186 @@
|
|
|
10764
10978
|
"attributes": {
|
|
10765
10979
|
"title": "CallAttributesSchema",
|
|
10766
10980
|
"type": "object",
|
|
10981
|
+
"description": "Cross-protocol call attributes. Mirror of chat with voice-\nspecific extensions: lifecycle covers provider phases (queued\n-> ringing -> in-progress -> completed) plus the operator\nreview window (draft -> scheduled -> queued). aiMode toggles\nwhether the AI agent is the active speaker, a silent observer,\nor fully off. transcript + summary are multilingual dicts\nmirroring email/chat body shape; the call AI translate Step\nFunction fans them across tenant locales.",
|
|
10767
10982
|
"properties": {
|
|
10768
|
-
"name": {
|
|
10769
|
-
"type": "string",
|
|
10770
|
-
"description": "Call title, e.g. Inbound call from John"
|
|
10771
|
-
},
|
|
10772
10983
|
"direction": {
|
|
10773
10984
|
"type": "string",
|
|
10774
10985
|
"enum": [
|
|
10775
10986
|
"inbound",
|
|
10776
|
-
"outbound"
|
|
10777
|
-
"ai-bot"
|
|
10987
|
+
"outbound"
|
|
10778
10988
|
],
|
|
10779
|
-
"description": "Call direction"
|
|
10989
|
+
"description": "Call direction relative to boe (inbound = caller dialed boe; outbound = boe placed the call)."
|
|
10780
10990
|
},
|
|
10781
|
-
"
|
|
10991
|
+
"protocol": {
|
|
10782
10992
|
"type": "string",
|
|
10783
10993
|
"enum": [
|
|
10784
|
-
"
|
|
10785
|
-
"
|
|
10786
|
-
"follow-up",
|
|
10787
|
-
"screening",
|
|
10788
|
-
"reference-check"
|
|
10994
|
+
"phone",
|
|
10995
|
+
"webrtc"
|
|
10789
10996
|
],
|
|
10790
|
-
"description": "
|
|
10791
|
-
},
|
|
10792
|
-
"duration": {
|
|
10793
|
-
"type": "integer",
|
|
10794
|
-
"description": "Call duration in seconds"
|
|
10997
|
+
"description": "Wire protocol. Phone is PSTN via Twilio; WebRTC reserves the slot for the future recruiter Voice SDK in the admin web app."
|
|
10795
10998
|
},
|
|
10796
|
-
"
|
|
10999
|
+
"status": {
|
|
10797
11000
|
"type": "string",
|
|
10798
11001
|
"enum": [
|
|
10799
|
-
"
|
|
10800
|
-
"
|
|
10801
|
-
"
|
|
11002
|
+
"draft",
|
|
11003
|
+
"scheduled",
|
|
11004
|
+
"cancelled",
|
|
11005
|
+
"queued",
|
|
11006
|
+
"ringing",
|
|
11007
|
+
"in-progress",
|
|
11008
|
+
"completed",
|
|
11009
|
+
"failed",
|
|
10802
11010
|
"no-answer",
|
|
10803
|
-
"busy"
|
|
11011
|
+
"busy",
|
|
11012
|
+
"voicemail",
|
|
11013
|
+
"abandoned",
|
|
11014
|
+
"archived"
|
|
10804
11015
|
],
|
|
10805
|
-
"description": "
|
|
11016
|
+
"description": "Lifecycle state. Outbound rows that go through an operator review window or explicit scheduling start at `draft` (editable) or `scheduled` (Schedule armed for fireAt); on Schedule fire they progress queued -> ringing -> in-progress -> completed (or failed / no-answer / busy / voicemail). `abandoned` covers inbound calls where the caller hung up before the AI answered. `cancelled` is operator hard-kill before dial. `archived` is a terminal soft-delete."
|
|
10806
11017
|
},
|
|
10807
|
-
"
|
|
11018
|
+
"fromIdentifier": {
|
|
10808
11019
|
"type": "string",
|
|
10809
|
-
"description": "Caller
|
|
11020
|
+
"description": "Caller's protocol-native handle (E.164 phone for PSTN, AAD object id for WebRTC)."
|
|
10810
11021
|
},
|
|
10811
|
-
"
|
|
11022
|
+
"fromName": {
|
|
10812
11023
|
"type": "string",
|
|
10813
|
-
"description": "
|
|
11024
|
+
"description": "Display name of the caller at write time. Denormalised from the resolved principal."
|
|
10814
11025
|
},
|
|
10815
|
-
"
|
|
11026
|
+
"fromType": {
|
|
10816
11027
|
"type": "string",
|
|
10817
|
-
"
|
|
11028
|
+
"enum": [
|
|
11029
|
+
"user",
|
|
11030
|
+
"candidate",
|
|
11031
|
+
"talent",
|
|
11032
|
+
"guest"
|
|
11033
|
+
],
|
|
11034
|
+
"description": "Principal type of the caller."
|
|
11035
|
+
},
|
|
11036
|
+
"toIdentifier": {
|
|
11037
|
+
"type": "string",
|
|
11038
|
+
"description": "Callee's protocol-native handle."
|
|
11039
|
+
},
|
|
11040
|
+
"toName": {
|
|
11041
|
+
"type": "string",
|
|
11042
|
+
"description": "Display name of the callee at write time."
|
|
11043
|
+
},
|
|
11044
|
+
"toType": {
|
|
11045
|
+
"type": "string",
|
|
11046
|
+
"enum": [
|
|
11047
|
+
"user",
|
|
11048
|
+
"candidate",
|
|
11049
|
+
"talent",
|
|
11050
|
+
"guest"
|
|
11051
|
+
],
|
|
11052
|
+
"description": "Principal type of the callee."
|
|
10818
11053
|
},
|
|
10819
11054
|
"transcript": {
|
|
10820
11055
|
"type": "object",
|
|
10821
|
-
"description": "
|
|
11056
|
+
"description": "Multilingual transcript keyed by BCP 47 locale (e.g. {`en-US`: `Hi`, `pl-PL`: `Cześć`}). Source locale is captured first; the AI translate Step Function fills in the rest of the tenant's active locales.",
|
|
11057
|
+
"additionalProperties": {
|
|
11058
|
+
"type": "string"
|
|
11059
|
+
}
|
|
10822
11060
|
},
|
|
10823
|
-
"
|
|
10824
|
-
"type": "
|
|
10825
|
-
"description": "
|
|
10826
|
-
"
|
|
10827
|
-
"type": "
|
|
11061
|
+
"summary": {
|
|
11062
|
+
"type": "object",
|
|
11063
|
+
"description": "Multilingual post-call summary keyed by BCP 47 locale. LLM-generated after call ends.",
|
|
11064
|
+
"additionalProperties": {
|
|
11065
|
+
"type": "string"
|
|
10828
11066
|
}
|
|
10829
11067
|
},
|
|
10830
|
-
"
|
|
11068
|
+
"criteriaScoring": {
|
|
11069
|
+
"type": "object",
|
|
11070
|
+
"description": "Per-criterion scoring extracted from the transcript when the call is tied to a job (relationships.job). Map of criterion key -> {score, evidence, confidence}."
|
|
11071
|
+
},
|
|
11072
|
+
"startedAt": {
|
|
10831
11073
|
"type": "string",
|
|
10832
|
-
"description": "
|
|
11074
|
+
"description": "ISO 8601 timestamp when the call started (ringing began). Set on outbound dial or inbound webhook arrival."
|
|
10833
11075
|
},
|
|
10834
|
-
"
|
|
10835
|
-
"type": "
|
|
10836
|
-
"description": "
|
|
11076
|
+
"answeredAt": {
|
|
11077
|
+
"type": "string",
|
|
11078
|
+
"description": "ISO 8601 timestamp when the call connected (recipient picked up)."
|
|
11079
|
+
},
|
|
11080
|
+
"endedAt": {
|
|
11081
|
+
"type": "string",
|
|
11082
|
+
"description": "ISO 8601 timestamp when the call ended (terminal status reached)."
|
|
11083
|
+
},
|
|
11084
|
+
"durationSec": {
|
|
11085
|
+
"type": "integer",
|
|
11086
|
+
"description": "Call duration in seconds (endedAt - answeredAt)."
|
|
11087
|
+
},
|
|
11088
|
+
"scheduledFireAt": {
|
|
11089
|
+
"type": "string",
|
|
11090
|
+
"description": "ISO 8601 timestamp at which the Schedule armed for this call will fire and place the outbound dial. Operators can PATCH to reschedule; the eventbus PATCHes the underlying Schedule row in lockstep. Mirror of email/chat scheduledFireAt."
|
|
11091
|
+
},
|
|
11092
|
+
"scheduleId": {
|
|
11093
|
+
"type": "string",
|
|
11094
|
+
"description": "FK denormalisation of relationships.schedule for cheap read paths."
|
|
11095
|
+
},
|
|
11096
|
+
"conferenceSid": {
|
|
11097
|
+
"type": "string",
|
|
11098
|
+
"description": "Twilio conference id when the call is a multi-party (3-way) conference. Null for 1:1."
|
|
10837
11099
|
},
|
|
10838
|
-
"
|
|
11100
|
+
"isConference": {
|
|
10839
11101
|
"type": "boolean",
|
|
10840
|
-
"description": "
|
|
11102
|
+
"description": "True when the call is a multi-party conference (recruiter joining via Voice SDK + candidate + boe AI). False for 1:1."
|
|
10841
11103
|
},
|
|
10842
|
-
"
|
|
11104
|
+
"aiMode": {
|
|
11105
|
+
"type": "string",
|
|
11106
|
+
"enum": [
|
|
11107
|
+
"active",
|
|
11108
|
+
"observer",
|
|
11109
|
+
"silent"
|
|
11110
|
+
],
|
|
11111
|
+
"description": "How the AI agent participates. `active` = AI speaks (default for boe ↔ candidate). `observer` = AI listens, transcribes, surfaces real-time suggestions to the recruiter UI but does not speak. `silent` = recording + post-call analysis only, no AI in the call."
|
|
11112
|
+
},
|
|
11113
|
+
"plannedTopics": {
|
|
10843
11114
|
"type": "array",
|
|
10844
|
-
"description": "
|
|
11115
|
+
"description": "List of topic keys the AI agent should cover during the call (e.g. ['salary', 'experience', 'languagesSpoken']). Operator-editable in the review window before fire.",
|
|
10845
11116
|
"items": {
|
|
10846
|
-
"type": "
|
|
11117
|
+
"type": "string"
|
|
10847
11118
|
}
|
|
10848
11119
|
},
|
|
10849
|
-
"
|
|
11120
|
+
"systemPrompt": {
|
|
11121
|
+
"type": "string",
|
|
11122
|
+
"description": "Operator-editable agent instructions used as the OpenAI Realtime session's system prompt at fire time. Mirror of email body in the operator review window: edit before fire, the dialed call uses the latest version."
|
|
11123
|
+
},
|
|
11124
|
+
"recording": {
|
|
10850
11125
|
"type": "object",
|
|
10851
|
-
"description": "
|
|
11126
|
+
"description": "Recording artifacts. Raw G.711 µ-law file is captured live; the audio convert Lambda emits the MP3 derivatives post-call.",
|
|
11127
|
+
"properties": {
|
|
11128
|
+
"type": {
|
|
11129
|
+
"type": "string",
|
|
11130
|
+
"enum": [
|
|
11131
|
+
"dual-channel",
|
|
11132
|
+
"mixed"
|
|
11133
|
+
],
|
|
11134
|
+
"description": "Recording layout: dual-channel separates speakers per Twilio leg; mixed is single-track combined."
|
|
11135
|
+
},
|
|
11136
|
+
"rawUrl": {
|
|
11137
|
+
"type": "string",
|
|
11138
|
+
"description": "S3 URI to the raw G.711 µ-law audio."
|
|
11139
|
+
},
|
|
11140
|
+
"mixedMp3Url": {
|
|
11141
|
+
"type": "string",
|
|
11142
|
+
"description": "S3 URI to the mixed conversation MP3."
|
|
11143
|
+
},
|
|
11144
|
+
"humanOnlyMp3Url": {
|
|
11145
|
+
"type": "string",
|
|
11146
|
+
"description": "S3 URI to the human-only MP3 (silent during AI turns)."
|
|
11147
|
+
},
|
|
11148
|
+
"aiOnlyMp3Url": {
|
|
11149
|
+
"type": "string",
|
|
11150
|
+
"description": "S3 URI to the AI-only MP3 (silent during human turns)."
|
|
11151
|
+
}
|
|
11152
|
+
}
|
|
10852
11153
|
},
|
|
10853
|
-
"
|
|
11154
|
+
"languageCode": {
|
|
10854
11155
|
"type": "string",
|
|
10855
|
-
"description": "
|
|
11156
|
+
"description": "BCP 47 locale of the call (the locale key initially populated in transcript). Detected from the caller's settings or call audio."
|
|
10856
11157
|
},
|
|
10857
|
-
"
|
|
11158
|
+
"shortCode": {
|
|
10858
11159
|
"type": "string",
|
|
10859
|
-
"
|
|
10860
|
-
"active",
|
|
10861
|
-
"draft",
|
|
10862
|
-
"archived",
|
|
10863
|
-
"failed"
|
|
10864
|
-
]
|
|
11160
|
+
"description": "Unique short identifier (provider/lookup correlation)."
|
|
10865
11161
|
},
|
|
10866
11162
|
"timestamps": {
|
|
10867
11163
|
"title": "ResourceTimestampsSchema",
|
|
@@ -11068,13 +11364,24 @@
|
|
|
11068
11364
|
"type": "string",
|
|
11069
11365
|
"enum": [
|
|
11070
11366
|
"received",
|
|
11367
|
+
"draft",
|
|
11368
|
+
"scheduled",
|
|
11369
|
+
"cancelled",
|
|
11071
11370
|
"queued",
|
|
11072
11371
|
"sent",
|
|
11073
11372
|
"delivered",
|
|
11074
11373
|
"failed",
|
|
11075
11374
|
"archived"
|
|
11076
11375
|
],
|
|
11077
|
-
"description": "Lifecycle state. Inbound rows go straight to `received`. Outbound
|
|
11376
|
+
"description": "Lifecycle state. Inbound rows go straight to `received`. Outbound rows that go through an operator review window or explicit scheduling start at `draft` (editable) or `scheduled` (Schedule armed for fireAt); on Schedule fire they progress queued -> sent -> delivered (or failed). `cancelled` is the terminal state when an operator hard-killed a draft / scheduled row before fire. `archived` is a terminal soft-delete for both directions."
|
|
11377
|
+
},
|
|
11378
|
+
"scheduledFireAt": {
|
|
11379
|
+
"type": "string",
|
|
11380
|
+
"description": "ISO 8601 timestamp at which the Schedule row armed for this chat will fire. Set on direction=outbound rows that go through a review window or explicit scheduling. Operators can PATCH this to reschedule; the eventbus PATCHes the underlying Schedule row in lockstep. Mirror of email.attributes.scheduledFireAt."
|
|
11381
|
+
},
|
|
11382
|
+
"scheduleId": {
|
|
11383
|
+
"type": "string",
|
|
11384
|
+
"description": "FK denormalisation of relationships.schedule for cheap read paths. Populated by the chat eventbus after it arms a Schedule row in response to chat:created with scheduledFireAt set. Mirror of email.attributes.scheduleId."
|
|
11078
11385
|
},
|
|
11079
11386
|
"languageCode": {
|
|
11080
11387
|
"type": "string",
|
|
@@ -11199,6 +11506,25 @@
|
|
|
11199
11506
|
}
|
|
11200
11507
|
}
|
|
11201
11508
|
}
|
|
11509
|
+
},
|
|
11510
|
+
"schedule": {
|
|
11511
|
+
"title": "ChatRelationshipsScheduleSchema",
|
|
11512
|
+
"description": "Schedule row armed for this chat's outbound dispatch. Set when scheduledFireAt is populated; null on inbound rows or on outbound rows that bypass the review window. Operators reschedule/cancel via PATCH/DELETE on the chat resource - the eventbus reflects those changes onto the Schedule row, never the other way around.",
|
|
11513
|
+
"type": "object",
|
|
11514
|
+
"properties": {
|
|
11515
|
+
"data": {
|
|
11516
|
+
"title": "ChatRelationshipsScheduleDataSchema",
|
|
11517
|
+
"type": "object",
|
|
11518
|
+
"properties": {
|
|
11519
|
+
"type": {
|
|
11520
|
+
"type": "string"
|
|
11521
|
+
},
|
|
11522
|
+
"id": {
|
|
11523
|
+
"type": "string"
|
|
11524
|
+
}
|
|
11525
|
+
}
|
|
11526
|
+
}
|
|
11527
|
+
}
|
|
11202
11528
|
}
|
|
11203
11529
|
}
|
|
11204
11530
|
},
|
|
@@ -11335,13 +11661,24 @@
|
|
|
11335
11661
|
"type": "string",
|
|
11336
11662
|
"enum": [
|
|
11337
11663
|
"received",
|
|
11664
|
+
"draft",
|
|
11665
|
+
"scheduled",
|
|
11666
|
+
"cancelled",
|
|
11338
11667
|
"queued",
|
|
11339
11668
|
"sent",
|
|
11340
11669
|
"delivered",
|
|
11341
11670
|
"failed",
|
|
11342
11671
|
"archived"
|
|
11343
11672
|
],
|
|
11344
|
-
"description": "Lifecycle state. Inbound rows go straight to `received`. Outbound
|
|
11673
|
+
"description": "Lifecycle state. Inbound rows go straight to `received`. Outbound rows that go through an operator review window or explicit scheduling start at `draft` (editable) or `scheduled` (Schedule armed for fireAt); on Schedule fire they progress queued -> sent -> delivered (or failed). `cancelled` is the terminal state when an operator hard-killed a draft / scheduled row before fire. `archived` is a terminal soft-delete for both directions."
|
|
11674
|
+
},
|
|
11675
|
+
"scheduledFireAt": {
|
|
11676
|
+
"type": "string",
|
|
11677
|
+
"description": "ISO 8601 timestamp at which the Schedule row armed for this chat will fire. Set on direction=outbound rows that go through a review window or explicit scheduling. Operators can PATCH this to reschedule; the eventbus PATCHes the underlying Schedule row in lockstep. Mirror of email.attributes.scheduledFireAt."
|
|
11678
|
+
},
|
|
11679
|
+
"scheduleId": {
|
|
11680
|
+
"type": "string",
|
|
11681
|
+
"description": "FK denormalisation of relationships.schedule for cheap read paths. Populated by the chat eventbus after it arms a Schedule row in response to chat:created with scheduledFireAt set. Mirror of email.attributes.scheduleId."
|
|
11345
11682
|
},
|
|
11346
11683
|
"languageCode": {
|
|
11347
11684
|
"type": "string",
|
|
@@ -12128,6 +12465,7 @@
|
|
|
12128
12465
|
"type": "string",
|
|
12129
12466
|
"enum": [
|
|
12130
12467
|
"emails",
|
|
12468
|
+
"chats",
|
|
12131
12469
|
"candidates",
|
|
12132
12470
|
"conversations",
|
|
12133
12471
|
"jobs",
|
|
@@ -12261,6 +12599,7 @@
|
|
|
12261
12599
|
"type": "string",
|
|
12262
12600
|
"enum": [
|
|
12263
12601
|
"emails",
|
|
12602
|
+
"chats",
|
|
12264
12603
|
"candidates",
|
|
12265
12604
|
"conversations",
|
|
12266
12605
|
"jobs",
|
|
@@ -12362,9 +12701,10 @@
|
|
|
12362
12701
|
"properties": {
|
|
12363
12702
|
"filterResourceType": {
|
|
12364
12703
|
"type": "string",
|
|
12365
|
-
"description": "Only return aggregates for this resource type (e.g. emails).",
|
|
12704
|
+
"description": "Only return aggregates for this resource type (e.g. emails, chats).",
|
|
12366
12705
|
"enum": [
|
|
12367
12706
|
"emails",
|
|
12707
|
+
"chats",
|
|
12368
12708
|
"candidates",
|
|
12369
12709
|
"conversations",
|
|
12370
12710
|
"jobs",
|