@graph8/sdk 0.251.0 → 0.260.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +9 -2
  2. package/dist/cli.js +216 -0
  3. package/dist/index.d.mts +104 -7
  4. package/dist/index.d.ts +104 -7
  5. package/dist/index.js +44 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +44 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react.d.mts +102 -7
  10. package/dist/react.d.ts +102 -7
  11. package/dist/react.js +62 -11
  12. package/dist/react.js.map +1 -1
  13. package/dist/react.mjs +53 -12
  14. package/dist/react.mjs.map +1 -1
  15. package/dist/types/README.md +7 -0
  16. package/dist/types/agency.d.ts +20 -0
  17. package/dist/types/agentSetup.d.ts +57 -0
  18. package/dist/types/api.d.ts +127 -0
  19. package/dist/types/appClient.d.ts +99 -0
  20. package/dist/types/appPlatform.d.ts +269 -0
  21. package/dist/types/appTokens.d.ts +125 -0
  22. package/dist/types/apps.d.ts +130 -0
  23. package/dist/types/audiences.d.ts +88 -0
  24. package/dist/types/calendar.d.ts +55 -0
  25. package/dist/types/campaigns.d.ts +61 -0
  26. package/dist/types/chat.d.ts +35 -0
  27. package/dist/types/cli.d.ts +14 -0
  28. package/dist/types/companies.d.ts +123 -0
  29. package/dist/types/contacts.d.ts +200 -0
  30. package/dist/types/copilot.d.ts +31 -0
  31. package/dist/types/core.d.ts +1052 -0
  32. package/dist/types/deals.d.ts +215 -0
  33. package/dist/types/enrich.d.ts +51 -0
  34. package/dist/types/fields.d.ts +84 -0
  35. package/dist/types/forms.d.ts +16 -0
  36. package/dist/types/http.d.ts +141 -0
  37. package/dist/types/inbox.d.ts +123 -0
  38. package/dist/types/index.d.ts +63 -0
  39. package/dist/types/intent.d.ts +196 -0
  40. package/dist/types/lists.d.ts +44 -0
  41. package/dist/types/mailboxes.d.ts +240 -0
  42. package/dist/types/marketplace.d.ts +62 -0
  43. package/dist/types/meetings.d.ts +70 -0
  44. package/dist/types/newsletter.d.ts +212 -0
  45. package/dist/types/notes.d.ts +57 -0
  46. package/dist/types/objects.d.ts +281 -0
  47. package/dist/types/pipelines.d.ts +135 -0
  48. package/dist/types/quotes.d.ts +143 -0
  49. package/dist/types/react.d.ts +978 -0
  50. package/dist/types/search.d.ts +99 -0
  51. package/dist/types/sequences.d.ts +255 -0
  52. package/dist/types/signals.d.ts +28 -0
  53. package/dist/types/skills.d.ts +176 -0
  54. package/dist/types/snippet.d.ts +24 -0
  55. package/dist/types/studio.d.ts +161 -0
  56. package/dist/types/tasks.d.ts +101 -0
  57. package/dist/types/types.d.ts +45 -0
  58. package/dist/types/utils.d.ts +21 -0
  59. package/dist/types/version.d.ts +10 -0
  60. package/dist/types/visitors.d.ts +29 -0
  61. package/dist/types/voice.d.ts +304 -0
  62. package/dist/types/webhooks.d.ts +71 -0
  63. package/dist/types/workflows.d.ts +229 -0
  64. package/docs/agents.md +748 -0
  65. package/docs/api/README.md +165 -0
  66. package/docs/api/accounts.d.ts +396 -0
  67. package/docs/api/accounts.md +644 -0
  68. package/docs/api/adCampaigns.d.ts +707 -0
  69. package/docs/api/adCampaigns.md +1091 -0
  70. package/docs/api/adCreatives.d.ts +996 -0
  71. package/docs/api/adCreatives.md +1708 -0
  72. package/docs/api/agency.d.ts +556 -0
  73. package/docs/api/agency.md +845 -0
  74. package/docs/api/agent.d.ts +330 -0
  75. package/docs/api/agent.md +514 -0
  76. package/docs/api/agents.d.ts +1622 -0
  77. package/docs/api/agents.md +2860 -0
  78. package/docs/api/aiInbox.d.ts +1984 -0
  79. package/docs/api/aiInbox.md +3490 -0
  80. package/docs/api/analytics.d.ts +1273 -0
  81. package/docs/api/analytics.md +2095 -0
  82. package/docs/api/apiKeys.d.ts +252 -0
  83. package/docs/api/apiKeys.md +318 -0
  84. package/docs/api/appDeployments.d.ts +236 -0
  85. package/docs/api/appDeployments.md +471 -0
  86. package/docs/api/appDomains.d.ts +171 -0
  87. package/docs/api/appDomains.md +281 -0
  88. package/docs/api/appLogs.d.ts +120 -0
  89. package/docs/api/appLogs.md +159 -0
  90. package/docs/api/appObjects.d.ts +415 -0
  91. package/docs/api/appObjects.md +568 -0
  92. package/docs/api/appPages.d.ts +557 -0
  93. package/docs/api/appPages.md +796 -0
  94. package/docs/api/appPlatformTokens.d.ts +123 -0
  95. package/docs/api/appPlatformTokens.md +172 -0
  96. package/docs/api/appointments.d.ts +2361 -0
  97. package/docs/api/appointments.md +3917 -0
  98. package/docs/api/apps.d.ts +822 -0
  99. package/docs/api/apps.md +1342 -0
  100. package/docs/api/assertUpsert.d.ts +286 -0
  101. package/docs/api/assertUpsert.md +370 -0
  102. package/docs/api/audienceSyncs.d.ts +259 -0
  103. package/docs/api/audienceSyncs.md +395 -0
  104. package/docs/api/brandKit.d.ts +686 -0
  105. package/docs/api/brandKit.md +1133 -0
  106. package/docs/api/bugReports.d.ts +181 -0
  107. package/docs/api/bugReports.md +268 -0
  108. package/docs/api/by-path.md +3260 -0
  109. package/docs/api/calendarInvites.d.ts +117 -0
  110. package/docs/api/calendarInvites.md +148 -0
  111. package/docs/api/campaignWorkflows.d.ts +152 -0
  112. package/docs/api/campaignWorkflows.md +200 -0
  113. package/docs/api/campaigns.d.ts +721 -0
  114. package/docs/api/campaigns.md +1236 -0
  115. package/docs/api/channels.d.ts +171 -0
  116. package/docs/api/channels.md +235 -0
  117. package/docs/api/cliCampaigns.d.ts +205 -0
  118. package/docs/api/cliCampaigns.md +256 -0
  119. package/docs/api/cliPipelines.d.ts +324 -0
  120. package/docs/api/cliPipelines.md +562 -0
  121. package/docs/api/clickHouse.d.ts +115 -0
  122. package/docs/api/clickHouse.md +138 -0
  123. package/docs/api/companies.d.ts +1636 -0
  124. package/docs/api/companies.md +2211 -0
  125. package/docs/api/companyIntelligence.d.ts +299 -0
  126. package/docs/api/companyIntelligence.md +488 -0
  127. package/docs/api/contacts.d.ts +2173 -0
  128. package/docs/api/contacts.md +3143 -0
  129. package/docs/api/content.d.ts +968 -0
  130. package/docs/api/content.md +1667 -0
  131. package/docs/api/contentGridSkills.d.ts +177 -0
  132. package/docs/api/contentGridSkills.md +271 -0
  133. package/docs/api/copilot.d.ts +1017 -0
  134. package/docs/api/copilot.md +1765 -0
  135. package/docs/api/crmSyncs.d.ts +215 -0
  136. package/docs/api/crmSyncs.md +301 -0
  137. package/docs/api/customerSuccess.d.ts +491 -0
  138. package/docs/api/customerSuccess.md +776 -0
  139. package/docs/api/deals.d.ts +1696 -0
  140. package/docs/api/deals.md +2432 -0
  141. package/docs/api/deliverability.d.ts +418 -0
  142. package/docs/api/deliverability.md +677 -0
  143. package/docs/api/desk.d.ts +1765 -0
  144. package/docs/api/desk.md +3007 -0
  145. package/docs/api/dialer.d.ts +1185 -0
  146. package/docs/api/dialer.md +2166 -0
  147. package/docs/api/dialerAnalytics.d.ts +187 -0
  148. package/docs/api/dialerAnalytics.md +257 -0
  149. package/docs/api/documents.d.ts +895 -0
  150. package/docs/api/documents.md +1440 -0
  151. package/docs/api/duplicates.d.ts +195 -0
  152. package/docs/api/duplicates.md +315 -0
  153. package/docs/api/eSign.d.ts +38 -0
  154. package/docs/api/eSign.md +54 -0
  155. package/docs/api/eSignature.d.ts +242 -0
  156. package/docs/api/eSignature.md +341 -0
  157. package/docs/api/enrichment.d.ts +3207 -0
  158. package/docs/api/enrichment.md +5225 -0
  159. package/docs/api/events.d.ts +115 -0
  160. package/docs/api/events.md +105 -0
  161. package/docs/api/fields.d.ts +482 -0
  162. package/docs/api/fields.md +566 -0
  163. package/docs/api/forms.d.ts +1012 -0
  164. package/docs/api/forms.md +1542 -0
  165. package/docs/api/gtmCampaigns.d.ts +662 -0
  166. package/docs/api/gtmCampaigns.md +1044 -0
  167. package/docs/api/gtmContext.d.ts +1187 -0
  168. package/docs/api/gtmContext.md +2112 -0
  169. package/docs/api/gtmDeliverability.d.ts +60 -0
  170. package/docs/api/gtmDeliverability.md +63 -0
  171. package/docs/api/gtmKnowledgeBase.d.ts +76 -0
  172. package/docs/api/gtmKnowledgeBase.md +91 -0
  173. package/docs/api/gtmLaunchHelpers.d.ts +123 -0
  174. package/docs/api/gtmLaunchHelpers.md +148 -0
  175. package/docs/api/gtmLibrary.d.ts +448 -0
  176. package/docs/api/gtmLibrary.md +780 -0
  177. package/docs/api/health.d.ts +39 -0
  178. package/docs/api/health.md +58 -0
  179. package/docs/api/imageLibrary.d.ts +341 -0
  180. package/docs/api/imageLibrary.md +569 -0
  181. package/docs/api/imports.d.ts +157 -0
  182. package/docs/api/imports.md +174 -0
  183. package/docs/api/inbox.d.ts +709 -0
  184. package/docs/api/inbox.md +1067 -0
  185. package/docs/api/install.d.ts +213 -0
  186. package/docs/api/install.md +317 -0
  187. package/docs/api/installedApps.d.ts +131 -0
  188. package/docs/api/installedApps.md +241 -0
  189. package/docs/api/integrationStatus.d.ts +142 -0
  190. package/docs/api/integrationStatus.md +205 -0
  191. package/docs/api/integrations.d.ts +2327 -0
  192. package/docs/api/integrations.md +3791 -0
  193. package/docs/api/intent.d.ts +482 -0
  194. package/docs/api/intent.md +858 -0
  195. package/docs/api/knowledge.d.ts +501 -0
  196. package/docs/api/knowledge.md +843 -0
  197. package/docs/api/knowledgeBase.d.ts +84 -0
  198. package/docs/api/knowledgeBase.md +96 -0
  199. package/docs/api/landingPages.d.ts +1411 -0
  200. package/docs/api/landingPages.md +2488 -0
  201. package/docs/api/leads.d.ts +133 -0
  202. package/docs/api/leads.md +180 -0
  203. package/docs/api/library.d.ts +217 -0
  204. package/docs/api/library.md +338 -0
  205. package/docs/api/linkedIn.d.ts +227 -0
  206. package/docs/api/linkedIn.md +289 -0
  207. package/docs/api/linkedInOutreach.d.ts +727 -0
  208. package/docs/api/linkedInOutreach.md +990 -0
  209. package/docs/api/lists.d.ts +1106 -0
  210. package/docs/api/lists.md +1609 -0
  211. package/docs/api/logs.d.ts +71 -0
  212. package/docs/api/logs.md +70 -0
  213. package/docs/api/mailboxes.d.ts +1050 -0
  214. package/docs/api/mailboxes.md +1690 -0
  215. package/docs/api/marketingIntelligence.d.ts +256 -0
  216. package/docs/api/marketingIntelligence.md +454 -0
  217. package/docs/api/marketplace.d.ts +3173 -0
  218. package/docs/api/marketplace.md +5953 -0
  219. package/docs/api/mcp.d.ts +69 -0
  220. package/docs/api/mcp.md +69 -0
  221. package/docs/api/me.d.ts +54 -0
  222. package/docs/api/me.md +56 -0
  223. package/docs/api/meetings.d.ts +539 -0
  224. package/docs/api/meetings.md +747 -0
  225. package/docs/api/newsletter.d.ts +1613 -0
  226. package/docs/api/newsletter.md +2746 -0
  227. package/docs/api/notes.d.ts +517 -0
  228. package/docs/api/notes.md +888 -0
  229. package/docs/api/notifications.d.ts +94 -0
  230. package/docs/api/notifications.md +105 -0
  231. package/docs/api/objects.d.ts +621 -0
  232. package/docs/api/objects.md +1098 -0
  233. package/docs/api/openSearch.d.ts +234 -0
  234. package/docs/api/openSearch.md +297 -0
  235. package/docs/api/ops.d.ts +299 -0
  236. package/docs/api/ops.md +339 -0
  237. package/docs/api/orgGovernance.d.ts +393 -0
  238. package/docs/api/orgGovernance.md +623 -0
  239. package/docs/api/orgVideos.d.ts +184 -0
  240. package/docs/api/orgVideos.md +252 -0
  241. package/docs/api/organizationSettings.d.ts +626 -0
  242. package/docs/api/organizationSettings.md +911 -0
  243. package/docs/api/phoneNumbers.d.ts +484 -0
  244. package/docs/api/phoneNumbers.md +777 -0
  245. package/docs/api/profile.d.ts +329 -0
  246. package/docs/api/profile.md +540 -0
  247. package/docs/api/programmaticPages.d.ts +400 -0
  248. package/docs/api/programmaticPages.md +626 -0
  249. package/docs/api/providerDomains.d.ts +866 -0
  250. package/docs/api/providerDomains.md +1446 -0
  251. package/docs/api/providerUsage.d.ts +129 -0
  252. package/docs/api/providerUsage.md +186 -0
  253. package/docs/api/public.d.ts +69 -0
  254. package/docs/api/public.md +78 -0
  255. package/docs/api/publicCopilot.d.ts +67 -0
  256. package/docs/api/publicCopilot.md +80 -0
  257. package/docs/api/publicSignals.d.ts +66 -0
  258. package/docs/api/publicSignals.md +71 -0
  259. package/docs/api/publicVisitors.d.ts +97 -0
  260. package/docs/api/publicVisitors.md +118 -0
  261. package/docs/api/quotes.d.ts +1564 -0
  262. package/docs/api/quotes.md +2553 -0
  263. package/docs/api/radar.d.ts +808 -0
  264. package/docs/api/radar.md +1431 -0
  265. package/docs/api/radarReports.d.ts +208 -0
  266. package/docs/api/radarReports.md +306 -0
  267. package/docs/api/recordRoles.d.ts +143 -0
  268. package/docs/api/recordRoles.md +175 -0
  269. package/docs/api/repos.d.ts +146 -0
  270. package/docs/api/repos.md +211 -0
  271. package/docs/api/research.d.ts +295 -0
  272. package/docs/api/research.md +534 -0
  273. package/docs/api/revenue.d.ts +402 -0
  274. package/docs/api/revenue.md +608 -0
  275. package/docs/api/revenueAnalytics.d.ts +147 -0
  276. package/docs/api/revenueAnalytics.md +212 -0
  277. package/docs/api/revenueLifecycle.d.ts +207 -0
  278. package/docs/api/revenueLifecycle.md +274 -0
  279. package/docs/api/revenueRecords.d.ts +372 -0
  280. package/docs/api/revenueRecords.md +563 -0
  281. package/docs/api/roles.d.ts +431 -0
  282. package/docs/api/roles.md +812 -0
  283. package/docs/api/salesCoach.d.ts +877 -0
  284. package/docs/api/salesCoach.md +1540 -0
  285. package/docs/api/sandbox.d.ts +210 -0
  286. package/docs/api/sandbox.md +380 -0
  287. package/docs/api/scans.d.ts +104 -0
  288. package/docs/api/scans.md +136 -0
  289. package/docs/api/scheduleBuy.d.ts +293 -0
  290. package/docs/api/scheduleBuy.md +431 -0
  291. package/docs/api/scraping.d.ts +266 -0
  292. package/docs/api/scraping.md +383 -0
  293. package/docs/api/sdrAnalytics.d.ts +138 -0
  294. package/docs/api/sdrAnalytics.md +246 -0
  295. package/docs/api/search.d.ts +598 -0
  296. package/docs/api/search.md +866 -0
  297. package/docs/api/seo.d.ts +447 -0
  298. package/docs/api/seo.md +660 -0
  299. package/docs/api/sequenceLifecycle.d.ts +439 -0
  300. package/docs/api/sequenceLifecycle.md +513 -0
  301. package/docs/api/sequences.d.ts +1936 -0
  302. package/docs/api/sequences.md +3232 -0
  303. package/docs/api/settings.d.ts +448 -0
  304. package/docs/api/settings.md +731 -0
  305. package/docs/api/signals.d.ts +1441 -0
  306. package/docs/api/signals.md +2526 -0
  307. package/docs/api/signatures.d.ts +719 -0
  308. package/docs/api/signatures.md +1247 -0
  309. package/docs/api/skills.d.ts +230 -0
  310. package/docs/api/skills.md +466 -0
  311. package/docs/api/snippet.d.ts +85 -0
  312. package/docs/api/snippet.md +106 -0
  313. package/docs/api/socialPublishing.d.ts +824 -0
  314. package/docs/api/socialPublishing.md +1245 -0
  315. package/docs/api/studioDocuments.d.ts +244 -0
  316. package/docs/api/studioDocuments.md +348 -0
  317. package/docs/api/support.d.ts +90 -0
  318. package/docs/api/support.md +76 -0
  319. package/docs/api/suppressions.d.ts +241 -0
  320. package/docs/api/suppressions.md +343 -0
  321. package/docs/api/surveys.d.ts +847 -0
  322. package/docs/api/surveys.md +1223 -0
  323. package/docs/api/tasks.d.ts +813 -0
  324. package/docs/api/tasks.md +1344 -0
  325. package/docs/api/teamMembers.d.ts +668 -0
  326. package/docs/api/teamMembers.md +1040 -0
  327. package/docs/api/teams.d.ts +784 -0
  328. package/docs/api/teams.md +1395 -0
  329. package/docs/api/usage.d.ts +277 -0
  330. package/docs/api/usage.md +389 -0
  331. package/docs/api/visitors.d.ts +690 -0
  332. package/docs/api/visitors.md +1075 -0
  333. package/docs/api/voice.d.ts +4661 -0
  334. package/docs/api/voice.md +7905 -0
  335. package/docs/api/webAnalytics.d.ts +964 -0
  336. package/docs/api/webAnalytics.md +1452 -0
  337. package/docs/api/webChat.d.ts +1704 -0
  338. package/docs/api/webChat.md +2048 -0
  339. package/docs/api/webhooks.d.ts +251 -0
  340. package/docs/api/webhooks.md +386 -0
  341. package/docs/api/websiteEditor.d.ts +324 -0
  342. package/docs/api/websiteEditor.md +517 -0
  343. package/docs/api/work.d.ts +2298 -0
  344. package/docs/api/work.md +3096 -0
  345. package/docs/api/workbench.d.ts +2962 -0
  346. package/docs/api/workbench.md +4884 -0
  347. package/docs/api/workflows.d.ts +1218 -0
  348. package/docs/api/workflows.md +2302 -0
  349. package/docs/sdk-clients.md +4339 -0
  350. package/package.json +10 -3
@@ -0,0 +1,4661 @@
1
+ /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
+
3
+ /**
4
+ * Types for `g8.api.voice` (Voice): 187 operations.
5
+ *
6
+ * For reading. In code, import from the package instead:
7
+ * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
8
+ * type In = ApiInput<"attach_skills_to_agent_voice_agents__agent_id__skills_post">;
9
+ *
10
+ * Reference with examples: voice.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.voice.<member>` -> the operationId it calls. */
15
+ export interface VoiceMembers {
16
+ attachSkillsToAgent: "attach_skills_to_agent_voice_agents__agent_id__skills_post";
17
+ batchEmailAgent: "batch_email_agent_voice_email_agent_batch_post";
18
+ bulkDeleteVideoRecordings: "bulk_delete_video_recordings_voice_video_recordings_delete";
19
+ calculateWorksheet: "calculate_worksheet_voice_worksheets_calculate_post";
20
+ checkCollectionFileExists: "check_collection_file_exists_voice_collections__collection_id__files_exists_get";
21
+ claimInboundCall: "claim_inbound_call_voice_inbound_calls__room_name__claim_post";
22
+ classifyTopics: "classify_topics_voice_topics_classify_post";
23
+ clearCollectionVectors: "clear_collection_vectors_voice_collections__collection_id__vectors_delete";
24
+ cloneAgent: "clone_agent_voice_agents_clone_post";
25
+ cloneVoice: "clone_voice_voice_voice_library_voices_post";
26
+ composeEmail: "compose_email_voice_email_agent_compose_post";
27
+ createAgentTestCase: "create_agent_test_case_voice_agents__agent_id__test_cases_post";
28
+ createCollection: "create_collection_voice_collections_post";
29
+ createCollectionFolder: "create_collection_folder_voice_collections__collection_id__folders_post";
30
+ createCompanyKnowledge: "create_company_knowledge_voice_company_knowledge_post";
31
+ createDialerSession: "create_dialer_session_voice_dialer_sessions_post";
32
+ createInboundRoute: "create_inbound_route_voice_inbound_routing_rules_post";
33
+ createMcpServer: "create_mcp_server_voice_mcp_servers_post";
34
+ createOnboardingThread: "create_onboarding_thread_voice_campaigns_onboarding_threads_post";
35
+ createPhoneDirectoryEntry: "create_phone_directory_entry_voice_phone_directory_post";
36
+ createScrapeSource: "create_scrape_source_voice_collections__collection_id__scrape_sources_post";
37
+ createTwin: "create_twin_voice_twins_post";
38
+ createVoiceAgent: "create_voice_agent_voice_agents_post";
39
+ createVoiceDisposition: "create_voice_disposition_voice_dispositions_post";
40
+ declineDialerInboundCall: "decline_dialer_inbound_call_voice_inbound_calls_dialer__call_id__decline_post";
41
+ declineInboundCall: "decline_inbound_call_voice_inbound_calls_decline_post";
42
+ deleteAgentDocument: "delete_agent_document_voice_agent_documents__document_id__delete";
43
+ deleteAgentTestCase: "delete_agent_test_case_voice_agents__agent_id__test_cases__test_case_id__delete";
44
+ deleteAllCollectionFiles: "delete_all_collection_files_voice_collections__collection_id__files_all_delete";
45
+ deleteBusinessHours: "delete_business_hours_voice_inbound_routing_business_hours_delete";
46
+ deleteChatAgentConversation: "delete_chat_agent_conversation_voice_chat_agent_conversations__chat_id__delete";
47
+ deleteCollection: "delete_collection_voice_collections__collection_id__delete";
48
+ deleteCollectionFile: "delete_collection_file_voice_collections__collection_id__files_delete";
49
+ deleteCollectionFolder: "delete_collection_folder_voice_collections__collection_id__folders_delete";
50
+ deleteInboundRoute: "delete_inbound_route_voice_inbound_routing_rules__route_id__delete";
51
+ deleteJob: "delete_job_voice_jobs__job_id__delete";
52
+ deleteKnowledgeBaseFile: "delete_knowledge_base_file_voice_knowledge_base_files_delete";
53
+ deleteMcpServer: "delete_mcp_server_voice_mcp_servers__mcp_server_id__delete";
54
+ deleteOnboardingThread: "delete_onboarding_thread_voice_campaigns_onboarding_threads_delete";
55
+ deletePhoneDirectoryEntry: "delete_phone_directory_entry_voice_phone_directory__entry_id__delete";
56
+ deleteScrapeSource: "delete_scrape_source_voice_collections__collection_id__scrape_sources__source_id__delete";
57
+ deleteTwin: "delete_twin_voice_twins__agent_id__delete";
58
+ deleteVideoRecording: "delete_video_recording_voice_video_recordings__video_id__delete";
59
+ deleteVoiceAgent: "delete_voice_agent_voice_agents__agent_id__delete";
60
+ detachSkillFromAgent: "detach_skill_from_agent_voice_agents__agent_id__skills__action_id__delete";
61
+ downloadCallRecording: "download_call_recording_voice_calls__call_id__recording_get";
62
+ downloadHistoricalCallRecording: "download_historical_call_recording_voice_calls__call_id__historical_recording_get";
63
+ downloadKnowledgeBaseFile: "download_knowledge_base_file_voice_knowledge_base_files_download_get";
64
+ downloadTwinFile: "download_twin_file_voice_twins_files_download_get";
65
+ draftEmailReply: "draft_email_reply_voice_email_agent_draft_reply_post";
66
+ enhanceCampaignEmail: "enhance_campaign_email_voice_campaigns_email_enhancements_post";
67
+ ensureReceptionistAgent: "ensure_receptionist_agent_voice_agents_receptionist_post";
68
+ estimateCampaignEmail: "estimate_campaign_email_voice_campaigns_email_estimate_post";
69
+ exportDialerReport: "export_dialer_report_dialer_parallel_calls_analytics_dialer_report_export_get";
70
+ extractTwinLinkedinProfile: "extract_twin_linkedin_profile_voice_twins_extract_linkedin_post";
71
+ generateCallScript: "generate_call_script_voice_call_scripts_generate_post";
72
+ generateCampaignCallScript: "generate_campaign_call_script_voice_campaigns_call_scripts_post";
73
+ generateCampaignCallScripts: "generate_campaign_call_scripts_voice_campaigns_call_scripts_get";
74
+ generateCampaignEmail: "generate_campaign_email_voice_campaigns_emails_post";
75
+ generateCampaignEmails: "generate_campaign_emails_voice_campaigns_email_templates_get";
76
+ generateCampaignTemplate: "generate_campaign_template_voice_campaigns_templates_get";
77
+ generateEmailSpintax: "generate_email_spintax_voice_campaigns_email_spintax_post";
78
+ generateIcpQueries: "generate_icp_queries_voice_icp_queries_post";
79
+ generateLinkedinMessage: "generate_linkedin_message_voice_campaigns_linkedin_messages_post";
80
+ generatePersonalisedVoicemail: "generate_personalised_voicemail_voice_campaigns_voicemails_post";
81
+ getAgentActivity: "get_agent_activity_voice_agents__agent_id__activity_get";
82
+ getAgentDefaults: "get_agent_defaults_voice_agents_defaults_get";
83
+ getAgentGlobalSettings: "get_agent_global_settings_voice_agents_global_settings_get";
84
+ getAgentSkillStats: "get_agent_skill_stats_voice_agents__agent_id__skill_stats_get";
85
+ getAgentTestSuiteStatus: "get_agent_test_suite_status_voice_agents__agent_id__test_suite_status_get";
86
+ getBusinessHours: "get_business_hours_voice_inbound_routing_business_hours_get";
87
+ getCachedMcpTools: "get_cached_mcp_tools_voice_mcp_servers__mcp_server_id__tools_cached_get";
88
+ getCallArtifacts: "get_call_artifacts_voice_calls__call_id__artifacts_get";
89
+ getCallGrading: "get_call_grading_voice_dialer_calls__room_name__grading_get";
90
+ getCallTranscript: "get_call_transcript_voice_dialer_calls__room_name__transcript_get";
91
+ getChatAgentHistory: "get_chat_agent_history_voice_chat_agent_history_post";
92
+ getCollection: "get_collection_voice_collections__collection_id__get";
93
+ getCollectionFileDownloadUrl: "get_collection_file_download_url_voice_collections__collection_id__files_download_url_get";
94
+ getCollectionStats: "get_collection_stats_voice_collections__collection_id__stats_get";
95
+ getCollectionVectorStatus: "get_collection_vector_status_voice_collections__collection_id__vector_status_get";
96
+ getCompanyKnowledge: "get_company_knowledge_voice_company_knowledge_get";
97
+ getDialerSession: "get_dialer_session_dialer_sessions__session_id__get";
98
+ getDialerSettings: "get_dialer_settings_dialer_settings__user_email__get";
99
+ getDialerStats: "get_dialer_stats_voice_dialer_stats_get";
100
+ getDispositionUsage: "get_disposition_usage_dialer_dispositions__disposition_id__usage_get";
101
+ getFormattedCompanyKnowledge: "get_formatted_company_knowledge_voice_company_knowledge_formatted_get";
102
+ getJob: "get_job_voice_jobs__job_id__get";
103
+ getOnboardingThread: "get_onboarding_thread_voice_campaigns_onboarding_threads__thread_id__get";
104
+ getPastConversation: "get_past_conversation_voice_campaigns_past_conversation_get";
105
+ getTwin: "get_twin_voice_twins__agent_id__get";
106
+ getVideoRecording: "get_video_recording_voice_video_recordings__video_id__get";
107
+ getVideoRecordingUrl: "get_video_recording_url_voice_video_recordings__video_id__url_get";
108
+ getVoiceAgent: "get_voice_agent_voice_agents__agent_id__get";
109
+ listAgentDocuments: "list_agent_documents_voice_agents__agent_id__documents_get";
110
+ listAgentPhoneNumbers: "list_agent_phone_numbers_voice_agent_phone_numbers_get";
111
+ listAgentSkills: "list_agent_skills_voice_agents__agent_id__skills_get";
112
+ listAgentTemplates: "list_agent_templates_voice_agent_templates_get";
113
+ listAgentTestCases: "list_agent_test_cases_voice_agents__agent_id__test_cases_get";
114
+ listAgentTestRuns: "list_agent_test_runs_voice_agents__agent_id__test_runs_get";
115
+ listAllCollectionFiles: "list_all_collection_files_voice_collections_files_get";
116
+ listCallResultCampaigns: "list_call_result_campaigns_voice_call_results_campaigns_get";
117
+ listCallsForContact: "list_calls_for_contact_voice_dialer_calls_get";
118
+ listCampaignEmailModels: "list_campaign_email_models_voice_campaigns_email_models_get";
119
+ listChatAgentConversations: "list_chat_agent_conversations_voice_chat_agent_conversations_post";
120
+ listClonedVoices: "list_cloned_voices_voice_voice_library_voices_get";
121
+ listCollections: "list_collections_voice_collections_get";
122
+ listDepartmentColleagues: "list_department_colleagues_voice_phone_directory_departments__department__get";
123
+ listDialerAgents: "list_dialer_agents_voice_dialer_agents_get";
124
+ listDialerNumbers: "list_dialer_numbers_voice_dialer_numbers_get";
125
+ listDialerSessions: "list_dialer_sessions_voice_dialer_sessions_get";
126
+ listInboundCallResults: "list_inbound_call_results_voice_call_results_inbound_get";
127
+ listInboundRoutes: "list_inbound_routes_voice_inbound_routing_rules_get";
128
+ listKnowledgeBaseFiles: "list_knowledge_base_files_voice_knowledge_base_files_get";
129
+ listMcpServerTools: "list_mcp_server_tools_voice_mcp_servers__mcp_server_id__tools_get";
130
+ listMissedCallbacks: "list_missed_callbacks_voice_dialer_missed_callbacks_get";
131
+ listOnboardingThreads: "list_onboarding_threads_voice_campaigns_onboarding_threads_get";
132
+ listPastConversations: "list_past_conversations_voice_campaigns_past_conversations_get";
133
+ listPendingInboundCalls: "list_pending_inbound_calls_voice_inbound_calls_pending_get";
134
+ listPhoneDirectory: "list_phone_directory_voice_phone_directory_get";
135
+ listPresetVoices: "list_preset_voices_voice_voice_library_presets_get";
136
+ listReachableColleagues: "list_reachable_colleagues_voice_phone_directory_reachable_get";
137
+ listScrapeSources: "list_scrape_sources_voice_collections__collection_id__scrape_sources_get";
138
+ listTwins: "list_twins_voice_twins_get";
139
+ listVideoRecordings: "list_video_recordings_voice_video_recordings_get";
140
+ listVoiceAgents: "list_voice_agents_voice_agents_get";
141
+ listVoiceDispositions: "list_voice_dispositions_voice_dispositions_get";
142
+ listVoicemails: "list_voicemails_voice_voicemails_get";
143
+ lookupSessionCalls: "lookup_session_calls_dialer_parallel_calls_sessions__session_id__calls_post";
144
+ markAllVoicemailsRead: "mark_all_voicemails_read_voice_voicemails_read_all_patch";
145
+ markVoicemailRead: "mark_voicemail_read_voice_voicemails__voicemail_id__read_patch";
146
+ pasteTextIntoCollection: "paste_text_into_collection_voice_collections__collection_id__files_paste_text_post";
147
+ pauseDialerSession: "pause_dialer_session_dialer_sessions__session_id__pause_post";
148
+ reindexCollection: "reindex_collection_voice_collections__collection_id__reindex_post";
149
+ renameChatAgentConversation: "rename_chat_agent_conversation_voice_chat_agent_conversations__chat_id__name_put";
150
+ renameCollectionFile: "rename_collection_file_voice_collections__collection_id__files_rename_put";
151
+ renameKnowledgeBaseFile: "rename_knowledge_base_file_voice_knowledge_base_files_rename_put";
152
+ researchBusinessData: "research_business_data_voice_research_business_data_get";
153
+ researchCompany: "research_company_voice_research_company_post";
154
+ researchCompetitors: "research_competitors_voice_research_competitors_get";
155
+ researchFaq: "research_faq_voice_research_faq_get";
156
+ researchKeywords: "research_keywords_voice_research_keywords_get";
157
+ researchOrgChart: "research_org_chart_voice_research_org_chart_post";
158
+ researchProspectCompany: "research_prospect_company_voice_research_prospect_company_get";
159
+ researchProspectData: "research_prospect_data_voice_research_prospect_data_post";
160
+ researchProspectProfile: "research_prospect_profile_voice_research_prospect_profile_post";
161
+ resumeDialerSession: "resume_dialer_session_voice_dialer_sessions__session_id__resume_post";
162
+ runAgentTest: "run_agent_test_voice_agents__agent_id__test_post";
163
+ runAllAgentTests: "run_all_agent_tests_voice_agents__agent_id__test_run_all_post";
164
+ runOnboardingThreadAction: "run_onboarding_thread_action_voice_campaigns_onboarding_threads_actions_post";
165
+ runScrapeSource: "run_scrape_source_voice_collections__collection_id__scrape_sources__source_id__run_post";
166
+ saveAgentAsTemplate: "save_agent_as_template_voice_agents__agent_id__save_as_template_post";
167
+ searchAgentDocuments: "search_agent_documents_voice_agents__agent_id__documents_search_post";
168
+ searchCallResults: "search_call_results_voice_call_results_search_post";
169
+ searchChats: "search_chats_voice_chats_search_post";
170
+ searchCollections: "search_collections_voice_collections_search_post";
171
+ sendChatAgentMessage: "send_chat_agent_message_voice_chat_agent_messages_post";
172
+ sendOnboardingMessage: "send_onboarding_message_voice_campaigns_onboarding_messages_post";
173
+ sendReceptionistMessage: "send_receptionist_message_voice_receptionist_messages_post";
174
+ setAgentGlobalSettings: "set_agent_global_settings_voice_agents_global_settings_post";
175
+ setOnboardingVoice: "set_onboarding_voice_voice_voice_library_onboarding_voice_post";
176
+ startVoiceCall: "start_voice_call_voice_calls_post";
177
+ stopDialerSession: "stop_dialer_session_dialer_sessions__session_id__stop_post";
178
+ storeCampaignMemory: "store_campaign_memory_voice_campaigns_memory_post";
179
+ syncCollection: "sync_collection_voice_collections__collection_id__sync_post";
180
+ testMcpServer: "test_mcp_server_voice_mcp_servers__mcp_server_id__test_post";
181
+ toggleReceptionistAgent: "toggle_receptionist_agent_voice_agents_receptionist_patch";
182
+ transcribeCallFlowExample: "transcribe_call_flow_example_voice_call_flow_examples_transcribe_post";
183
+ transferChatAgentConversation: "transfer_chat_agent_conversation_voice_chat_agent_conversations__chat_id__transfer_to_human_post";
184
+ updateAgentMemory: "update_agent_memory_voice_agents__agent_id__memory_post";
185
+ updateAgentTestCase: "update_agent_test_case_voice_agents__agent_id__test_cases__test_case_id__put";
186
+ updateCollection: "update_collection_voice_collections__collection_id__put";
187
+ updateCompanyKnowledge: "update_company_knowledge_voice_company_knowledge_put";
188
+ updateDialerSessionStatus: "update_dialer_session_status_voice_dialer_sessions__session_id__status_patch";
189
+ updateDialerSettings: "update_dialer_settings_dialer_settings_put";
190
+ updateInboundRoute: "update_inbound_route_voice_inbound_routing_rules__route_id__patch";
191
+ updateMcpServer: "update_mcp_server_voice_mcp_servers__mcp_server_id__put";
192
+ updatePhoneDirectoryEntry: "update_phone_directory_entry_voice_phone_directory__entry_id__put";
193
+ updateScrapeSource: "update_scrape_source_voice_collections__collection_id__scrape_sources__source_id__patch";
194
+ updateTwin: "update_twin_voice_twins__agent_id__put";
195
+ updateVoiceAgent: "update_voice_agent_voice_agents__agent_id__put";
196
+ updateVoiceDisposition: "update_voice_disposition_voice_dispositions__disposition_id__patch";
197
+ uploadAgentDocuments: "upload_agent_documents_voice_agents__agent_id__documents_upload_post";
198
+ uploadCollectionFile: "upload_collection_file_voice_collections__collection_id__files_upload_post";
199
+ uploadCollectionFiles: "upload_collection_files_voice_collections__collection_id__files_upload_multiple_post";
200
+ uploadKnowledgeBaseFile: "upload_knowledge_base_file_voice_knowledge_base_files_upload_post";
201
+ uploadVideoRecording: "upload_video_recording_voice_video_recordings_upload_post";
202
+ upsertBusinessHours: "upsert_business_hours_voice_inbound_routing_business_hours_put";
203
+ }
204
+
205
+ /** Input and output of every `g8.api.voice` operation, keyed by operationId. */
206
+ export interface VoiceOperations {
207
+ /**
208
+ * POST /voice/agents/{agent_id}/skills
209
+ * Give an agent skills it can use
210
+ * tier: write · scope: voice:write
211
+ */
212
+ attach_skills_to_agent_voice_agents__agent_id__skills_post: {
213
+ input: {
214
+ path: {
215
+ /** The agent to equip. */
216
+ agent_id: string;
217
+ };
218
+ headers?: {
219
+ "X-Target-Org-Id"?: string | null;
220
+ };
221
+ body: Body_attach_skills_to_agent_voice_agents__agent_id__skills_post;
222
+ };
223
+ output: ApiResponse_VoicePayload_;
224
+ };
225
+ /**
226
+ * POST /voice/email-agent/batch
227
+ * Draft many emails in one call
228
+ * tier: billable · scope: voice:run
229
+ */
230
+ batch_email_agent_voice_email_agent_batch_post: {
231
+ input: {
232
+ headers?: {
233
+ "X-Target-Org-Id"?: string | null;
234
+ };
235
+ body: BatchEmailProcessing;
236
+ };
237
+ output: ApiResponse_VoicePayload_;
238
+ };
239
+ /**
240
+ * DELETE /voice/video-recordings
241
+ * Delete every recording for one subject
242
+ * tier: destructive · scope: voice:delete
243
+ */
244
+ bulk_delete_video_recordings_voice_video_recordings_delete: {
245
+ input: {
246
+ query: {
247
+ /** Whose recordings to delete. REQUIRED - there is no org-wide delete by omission. */
248
+ user_id: string;
249
+ };
250
+ headers?: {
251
+ "X-Target-Org-Id"?: string | null;
252
+ };
253
+ };
254
+ output: ApiResponse_VoicePayload_;
255
+ };
256
+ /**
257
+ * POST /voice/worksheets/calculate
258
+ * Fill worksheet cells with AI answers
259
+ * tier: billable · scope: voice:run
260
+ */
261
+ calculate_worksheet_voice_worksheets_calculate_post: {
262
+ input: {
263
+ query?: {
264
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
265
+ run_async?: boolean;
266
+ };
267
+ headers?: {
268
+ "X-Target-Org-Id"?: string | null;
269
+ };
270
+ body: Record<string, unknown>;
271
+ };
272
+ output: ApiResponse_VoicePayload_;
273
+ };
274
+ /**
275
+ * GET /voice/collections/{collection_id}/files/exists
276
+ * Check whether a file is already in a collection
277
+ * tier: read · scope: voice:read
278
+ */
279
+ check_collection_file_exists_voice_collections__collection_id__files_exists_get: {
280
+ input: {
281
+ path: {
282
+ /** Collection id. */
283
+ collection_id: number;
284
+ };
285
+ query: {
286
+ /** File name to look for. */
287
+ filename: string;
288
+ /** Folder inside the collection. */
289
+ folder_path?: string;
290
+ };
291
+ headers?: {
292
+ "X-Target-Org-Id"?: string | null;
293
+ };
294
+ };
295
+ output: ApiResponse_VoicePayload_;
296
+ };
297
+ /**
298
+ * POST /voice/inbound-calls/{room_name}/claim
299
+ * Claim a ringing inbound call for one rep
300
+ * tier: external · scope: voice:run
301
+ */
302
+ claim_inbound_call_voice_inbound_calls__room_name__claim_post: {
303
+ input: {
304
+ path: {
305
+ /** The ringing call's room name. */
306
+ room_name: string;
307
+ };
308
+ query: {
309
+ /** The rep taking it. */
310
+ sdr_email: string;
311
+ };
312
+ headers?: {
313
+ "X-Target-Org-Id"?: string | null;
314
+ };
315
+ };
316
+ output: ApiResponse_VoicePayload_;
317
+ };
318
+ /**
319
+ * POST /voice/topics/classify
320
+ * Classify URLs into intent topics
321
+ * tier: billable · scope: voice:run
322
+ */
323
+ classify_topics_voice_topics_classify_post: {
324
+ input: {
325
+ query?: {
326
+ /** Defaults TRUE here, matching voice: a batch of URLs is slow enough that a synchronous call usually times out. Poll `GET /voice/jobs/{job_id}`. */
327
+ run_async?: boolean;
328
+ };
329
+ headers?: {
330
+ "X-Target-Org-Id"?: string | null;
331
+ };
332
+ body: Record<string, unknown>;
333
+ };
334
+ output: ApiResponse_VoicePayload_;
335
+ };
336
+ /**
337
+ * DELETE /voice/collections/{collection_id}/vectors
338
+ * Clear a collection's vectors, keeping the files
339
+ * tier: destructive · scope: voice:delete
340
+ */
341
+ clear_collection_vectors_voice_collections__collection_id__vectors_delete: {
342
+ input: {
343
+ path: {
344
+ /** Collection id. */
345
+ collection_id: number;
346
+ };
347
+ headers?: {
348
+ "X-Target-Org-Id"?: string | null;
349
+ };
350
+ };
351
+ output: ApiResponse_VoicePayload_;
352
+ };
353
+ /**
354
+ * POST /voice/agents/clone
355
+ * Clone an agent, or instantiate one from a template
356
+ * tier: write · scope: voice:write
357
+ */
358
+ clone_agent_voice_agents_clone_post: {
359
+ input: {
360
+ headers?: {
361
+ "X-Target-Org-Id"?: string | null;
362
+ };
363
+ body: Body_clone_agent_voice_agents_clone_post;
364
+ };
365
+ output: ApiResponse_VoicePayload_;
366
+ };
367
+ /**
368
+ * POST /voice/voice-library/voices
369
+ * Clone a voice from a short audio sample
370
+ * tier: billable · scope: voice:run
371
+ */
372
+ clone_voice_voice_voice_library_voices_post: {
373
+ input: {
374
+ headers?: {
375
+ "X-Target-Org-Id"?: string | null;
376
+ };
377
+ };
378
+ output: ApiResponse_VoicePayload_;
379
+ };
380
+ /**
381
+ * POST /voice/email-agent/compose
382
+ * Compose an email with the email agent
383
+ * tier: billable · scope: voice:run
384
+ */
385
+ compose_email_voice_email_agent_compose_post: {
386
+ input: {
387
+ headers?: {
388
+ "X-Target-Org-Id"?: string | null;
389
+ };
390
+ body: Record<string, unknown>;
391
+ };
392
+ output: ApiResponse_VoicePayload_;
393
+ };
394
+ /**
395
+ * POST /voice/agents/{agent_id}/test-cases
396
+ * Save an evaluation case for an agent
397
+ * tier: write · scope: voice:write
398
+ */
399
+ create_agent_test_case_voice_agents__agent_id__test_cases_post: {
400
+ input: {
401
+ path: {
402
+ /** Voice agent id. */
403
+ agent_id: string;
404
+ };
405
+ headers?: {
406
+ "X-Target-Org-Id"?: string | null;
407
+ };
408
+ body: AgentTestCaseCreate;
409
+ };
410
+ output: ApiResponse_VoicePayload_;
411
+ };
412
+ /**
413
+ * POST /voice/collections
414
+ * Create a knowledge collection
415
+ * tier: write · scope: voice:write
416
+ */
417
+ create_collection_voice_collections_post: {
418
+ input: {
419
+ headers?: {
420
+ "X-Target-Org-Id"?: string | null;
421
+ };
422
+ body: CollectionCreateRequest;
423
+ };
424
+ output: ApiResponse_VoicePayload_;
425
+ };
426
+ /**
427
+ * POST /voice/collections/{collection_id}/folders
428
+ * Create a folder in a collection
429
+ * tier: write · scope: voice:write
430
+ */
431
+ create_collection_folder_voice_collections__collection_id__folders_post: {
432
+ input: {
433
+ path: {
434
+ /** Collection id. */
435
+ collection_id: number;
436
+ };
437
+ headers?: {
438
+ "X-Target-Org-Id"?: string | null;
439
+ };
440
+ body: CollectionFolder;
441
+ };
442
+ output: ApiResponse_VoicePayload_;
443
+ };
444
+ /**
445
+ * POST /voice/company-knowledge
446
+ * Create the organisation's company knowledge
447
+ * tier: write · scope: voice:write
448
+ */
449
+ create_company_knowledge_voice_company_knowledge_post: {
450
+ input: {
451
+ headers?: {
452
+ "X-Target-Org-Id"?: string | null;
453
+ };
454
+ body: Record<string, unknown>;
455
+ };
456
+ output: ApiResponse_VoicePayload_;
457
+ };
458
+ /**
459
+ * POST /voice/dialer/sessions
460
+ * Create a parallel-dialer session in PAUSED state
461
+ * tier: external · scope: voice:run
462
+ */
463
+ create_dialer_session_voice_dialer_sessions_post: {
464
+ input: {
465
+ headers?: {
466
+ "X-Target-Org-Id"?: string | null;
467
+ };
468
+ body: DialerSessionCreateRequest;
469
+ };
470
+ output: ApiResponse_DialerSessionCreateResponse_;
471
+ };
472
+ /**
473
+ * POST /voice/inbound-routing/rules
474
+ * Create an inbound routing rule
475
+ * tier: write · scope: voice:write
476
+ */
477
+ create_inbound_route_voice_inbound_routing_rules_post: {
478
+ input: {
479
+ headers?: {
480
+ "X-Target-Org-Id"?: string | null;
481
+ };
482
+ body: InboundRouteCreateRequest;
483
+ };
484
+ output: ApiResponse_VoicePayload_;
485
+ };
486
+ /**
487
+ * POST /voice/mcp-servers
488
+ * Connect an MCP server
489
+ * tier: write · scope: voice:write
490
+ */
491
+ create_mcp_server_voice_mcp_servers_post: {
492
+ input: {
493
+ headers?: {
494
+ "X-Target-Org-Id"?: string | null;
495
+ };
496
+ body: McpServerCreateRequest;
497
+ };
498
+ output: ApiResponse_VoicePayload_;
499
+ };
500
+ /**
501
+ * POST /voice/campaigns/onboarding/threads
502
+ * Start an onboarding conversation thread
503
+ * tier: write · scope: voice:write
504
+ */
505
+ create_onboarding_thread_voice_campaigns_onboarding_threads_post: {
506
+ input: {
507
+ headers?: {
508
+ "X-Target-Org-Id"?: string | null;
509
+ };
510
+ body?: Record<string, unknown>;
511
+ };
512
+ output: ApiResponse_VoicePayload_;
513
+ };
514
+ /**
515
+ * POST /voice/phone-directory
516
+ * Add a colleague to the directory
517
+ * tier: write · scope: voice:write
518
+ */
519
+ create_phone_directory_entry_voice_phone_directory_post: {
520
+ input: {
521
+ headers?: {
522
+ "X-Target-Org-Id"?: string | null;
523
+ };
524
+ body: PhoneDirectoryEntryCreate;
525
+ };
526
+ output: ApiResponse_VoicePayload_;
527
+ };
528
+ /**
529
+ * POST /voice/collections/{collection_id}/scrape-sources
530
+ * Attach a web source and crawl it now
531
+ * tier: billable · scope: voice:run
532
+ */
533
+ create_scrape_source_voice_collections__collection_id__scrape_sources_post: {
534
+ input: {
535
+ path: {
536
+ /** Collection id. */
537
+ collection_id: number;
538
+ };
539
+ headers?: {
540
+ "X-Target-Org-Id"?: string | null;
541
+ };
542
+ body: ScrapeSourceCreateRequest;
543
+ };
544
+ output: ApiResponse_VoicePayload_;
545
+ };
546
+ /**
547
+ * POST /voice/twins
548
+ * Create a twin
549
+ * tier: billable · scope: voice:run
550
+ */
551
+ create_twin_voice_twins_post: {
552
+ input: {
553
+ headers?: {
554
+ "X-Target-Org-Id"?: string | null;
555
+ };
556
+ };
557
+ output: ApiResponse_VoicePayload_;
558
+ };
559
+ /**
560
+ * POST /voice/agents
561
+ * Create a voice agent or twin
562
+ * tier: write · scope: voice:write
563
+ */
564
+ create_voice_agent_voice_agents_post: {
565
+ input: {
566
+ headers?: {
567
+ "X-Target-Org-Id"?: string | null;
568
+ };
569
+ body: VoiceAgentCreateRequest;
570
+ };
571
+ output: ApiResponse_VoiceAgentResponse_;
572
+ };
573
+ /**
574
+ * POST /voice/dispositions
575
+ * Create a custom call disposition
576
+ * tier: external · scope: voice:run
577
+ */
578
+ create_voice_disposition_voice_dispositions_post: {
579
+ input: {
580
+ headers?: {
581
+ "X-Target-Org-Id"?: string | null;
582
+ };
583
+ body: VoiceCustomDispositionCreateRequest;
584
+ };
585
+ output: ApiResponse_VoiceCustomDispositionItem_;
586
+ };
587
+ /**
588
+ * POST /voice/inbound-calls/dialer/{call_id}/decline
589
+ * Decline an inbound call arriving during a dialer session
590
+ * tier: external · scope: voice:run
591
+ */
592
+ decline_dialer_inbound_call_voice_inbound_calls_dialer__call_id__decline_post: {
593
+ input: {
594
+ path: {
595
+ /** Dialer call id. */
596
+ call_id: string;
597
+ };
598
+ headers?: {
599
+ "X-Target-Org-Id"?: string | null;
600
+ };
601
+ };
602
+ output: ApiResponse_VoicePayload_;
603
+ };
604
+ /**
605
+ * POST /voice/inbound-calls/decline
606
+ * Decline or hang up a ringing inbound call
607
+ * tier: external · scope: voice:run
608
+ */
609
+ decline_inbound_call_voice_inbound_calls_decline_post: {
610
+ input: {
611
+ headers?: {
612
+ "X-Target-Org-Id"?: string | null;
613
+ };
614
+ body: Body_decline_inbound_call_voice_inbound_calls_decline_post;
615
+ };
616
+ output: ApiResponse_VoicePayload_;
617
+ };
618
+ /**
619
+ * DELETE /voice/agent-documents/{document_id}
620
+ * Delete a document from an agent's own store
621
+ * tier: destructive · scope: voice:delete
622
+ */
623
+ delete_agent_document_voice_agent_documents__document_id__delete: {
624
+ input: {
625
+ path: {
626
+ /** Document id. */
627
+ document_id: number;
628
+ };
629
+ query: {
630
+ /** The agent the document belongs to. Required: document ids are scoped per agent. */
631
+ agent_id: string;
632
+ };
633
+ headers?: {
634
+ "X-Target-Org-Id"?: string | null;
635
+ };
636
+ };
637
+ output: ApiResponse_VoicePayload_;
638
+ };
639
+ /**
640
+ * DELETE /voice/agents/{agent_id}/test-cases/{test_case_id}
641
+ * Delete a saved case
642
+ * tier: destructive · scope: voice:delete
643
+ */
644
+ delete_agent_test_case_voice_agents__agent_id__test_cases__test_case_id__delete: {
645
+ input: {
646
+ path: {
647
+ /** Voice agent id. */
648
+ agent_id: string;
649
+ /** Saved test case id. */
650
+ test_case_id: string;
651
+ };
652
+ headers?: {
653
+ "X-Target-Org-Id"?: string | null;
654
+ };
655
+ };
656
+ output: ApiResponse_VoicePayload_;
657
+ };
658
+ /**
659
+ * DELETE /voice/collections/{collection_id}/files/all
660
+ * Delete every file in a collection
661
+ * tier: destructive · scope: voice:delete
662
+ */
663
+ delete_all_collection_files_voice_collections__collection_id__files_all_delete: {
664
+ input: {
665
+ path: {
666
+ /** Collection id. */
667
+ collection_id: number;
668
+ };
669
+ headers?: {
670
+ "X-Target-Org-Id"?: string | null;
671
+ };
672
+ };
673
+ output: ApiResponse_VoicePayload_;
674
+ };
675
+ /**
676
+ * DELETE /voice/inbound-routing/business-hours
677
+ * Remove the business-hours schedule for a number
678
+ * tier: destructive · scope: voice:delete
679
+ */
680
+ delete_business_hours_voice_inbound_routing_business_hours_delete: {
681
+ input: {
682
+ query: {
683
+ /** The number to clear. */
684
+ phone_number: string;
685
+ };
686
+ headers?: {
687
+ "X-Target-Org-Id"?: string | null;
688
+ };
689
+ };
690
+ output: ApiResponse_VoicePayload_;
691
+ };
692
+ /**
693
+ * DELETE /voice/chat-agent/conversations/{chat_id}
694
+ * Delete a chat agent conversation
695
+ * tier: destructive · scope: voice:delete
696
+ */
697
+ delete_chat_agent_conversation_voice_chat_agent_conversations__chat_id__delete: {
698
+ input: {
699
+ path: {
700
+ /** Conversation id. */
701
+ chat_id: string;
702
+ };
703
+ query: {
704
+ /** The agent that owns it. */
705
+ agent_id: string;
706
+ };
707
+ headers?: {
708
+ "X-Target-Org-Id"?: string | null;
709
+ };
710
+ };
711
+ output: ApiResponse_VoicePayload_;
712
+ };
713
+ /**
714
+ * DELETE /voice/collections/{collection_id}
715
+ * Delete a collection and everything in it
716
+ * tier: destructive · scope: voice:delete
717
+ */
718
+ delete_collection_voice_collections__collection_id__delete: {
719
+ input: {
720
+ path: {
721
+ /** Collection id. */
722
+ collection_id: number;
723
+ };
724
+ headers?: {
725
+ "X-Target-Org-Id"?: string | null;
726
+ };
727
+ };
728
+ output: ApiResponse_VoicePayload_;
729
+ };
730
+ /**
731
+ * DELETE /voice/collections/{collection_id}/files
732
+ * Delete one file from a collection
733
+ * tier: destructive · scope: voice:delete
734
+ */
735
+ delete_collection_file_voice_collections__collection_id__files_delete: {
736
+ input: {
737
+ path: {
738
+ /** Collection id. */
739
+ collection_id: number;
740
+ };
741
+ query: {
742
+ /** The file to remove. REQUIRED - there is no 'delete everything' by omission. */
743
+ filename: string;
744
+ /** Folder inside the collection. */
745
+ folder_path?: string;
746
+ };
747
+ headers?: {
748
+ "X-Target-Org-Id"?: string | null;
749
+ };
750
+ };
751
+ output: ApiResponse_VoicePayload_;
752
+ };
753
+ /**
754
+ * DELETE /voice/collections/{collection_id}/folders
755
+ * Delete a folder and everything in it
756
+ * tier: destructive · scope: voice:delete
757
+ */
758
+ delete_collection_folder_voice_collections__collection_id__folders_delete: {
759
+ input: {
760
+ path: {
761
+ /** Collection id. */
762
+ collection_id: number;
763
+ };
764
+ query: {
765
+ /** The folder; subfolders go too. */
766
+ folder_path: string;
767
+ };
768
+ headers?: {
769
+ "X-Target-Org-Id"?: string | null;
770
+ };
771
+ };
772
+ output: ApiResponse_VoicePayload_;
773
+ };
774
+ /**
775
+ * DELETE /voice/inbound-routing/rules/{route_id}
776
+ * Delete an inbound routing rule
777
+ * tier: destructive · scope: voice:delete
778
+ */
779
+ delete_inbound_route_voice_inbound_routing_rules__route_id__delete: {
780
+ input: {
781
+ path: {
782
+ /** Rule id. */
783
+ route_id: number;
784
+ };
785
+ headers?: {
786
+ "X-Target-Org-Id"?: string | null;
787
+ };
788
+ };
789
+ output: ApiResponse_VoicePayload_;
790
+ };
791
+ /**
792
+ * DELETE /voice/jobs/{job_id}
793
+ * Cancel an async job
794
+ * tier: destructive · scope: voice:delete
795
+ */
796
+ delete_job_voice_jobs__job_id__delete: {
797
+ input: {
798
+ path: {
799
+ /** Job id. */
800
+ job_id: string;
801
+ };
802
+ query?: {
803
+ /** Which queue the job was placed on. */
804
+ queue?: string;
805
+ };
806
+ headers?: {
807
+ "X-Target-Org-Id"?: string | null;
808
+ };
809
+ };
810
+ output: ApiResponse_VoicePayload_;
811
+ };
812
+ /**
813
+ * DELETE /voice/knowledge-base/files
814
+ * Delete a knowledge-base file
815
+ * tier: destructive · scope: voice:delete
816
+ */
817
+ delete_knowledge_base_file_voice_knowledge_base_files_delete: {
818
+ input: {
819
+ query: {
820
+ /** The file to remove. */
821
+ filename: string;
822
+ };
823
+ headers?: {
824
+ "X-Target-Org-Id"?: string | null;
825
+ };
826
+ };
827
+ output: ApiResponse_VoicePayload_;
828
+ };
829
+ /**
830
+ * DELETE /voice/mcp-servers/{mcp_server_id}
831
+ * Disconnect an MCP server
832
+ * tier: destructive · scope: voice:delete
833
+ */
834
+ delete_mcp_server_voice_mcp_servers__mcp_server_id__delete: {
835
+ input: {
836
+ path: {
837
+ /** MCP server id. */
838
+ mcp_server_id: string;
839
+ };
840
+ headers?: {
841
+ "X-Target-Org-Id"?: string | null;
842
+ };
843
+ };
844
+ output: ApiResponse_VoicePayload_;
845
+ };
846
+ /**
847
+ * DELETE /voice/campaigns/onboarding/threads
848
+ * Delete an onboarding thread
849
+ * tier: destructive · scope: voice:delete
850
+ */
851
+ delete_onboarding_thread_voice_campaigns_onboarding_threads_delete: {
852
+ input: {
853
+ query: {
854
+ /** The thread to delete. */
855
+ thread_id: string;
856
+ };
857
+ headers?: {
858
+ "X-Target-Org-Id"?: string | null;
859
+ };
860
+ };
861
+ output: ApiResponse_VoicePayload_;
862
+ };
863
+ /**
864
+ * DELETE /voice/phone-directory/{entry_id}
865
+ * Remove a directory entry
866
+ * tier: destructive · scope: voice:delete
867
+ */
868
+ delete_phone_directory_entry_voice_phone_directory__entry_id__delete: {
869
+ input: {
870
+ path: {
871
+ /** Directory entry id. */
872
+ entry_id: number;
873
+ };
874
+ headers?: {
875
+ "X-Target-Org-Id"?: string | null;
876
+ };
877
+ };
878
+ output: ApiResponse_VoicePayload_;
879
+ };
880
+ /**
881
+ * DELETE /voice/collections/{collection_id}/scrape-sources/{source_id}
882
+ * Remove a web source and the file it maintained
883
+ * tier: destructive · scope: voice:delete
884
+ */
885
+ delete_scrape_source_voice_collections__collection_id__scrape_sources__source_id__delete: {
886
+ input: {
887
+ path: {
888
+ /** Collection id. */
889
+ collection_id: number;
890
+ /** Scrape source id. */
891
+ source_id: number;
892
+ };
893
+ headers?: {
894
+ "X-Target-Org-Id"?: string | null;
895
+ };
896
+ };
897
+ output: ApiResponse_VoicePayload_;
898
+ };
899
+ /**
900
+ * DELETE /voice/twins/{agent_id}
901
+ * Delete a digital twin
902
+ * tier: destructive · scope: voice:delete
903
+ */
904
+ delete_twin_voice_twins__agent_id__delete: {
905
+ input: {
906
+ path: {
907
+ /** Twin id. */
908
+ agent_id: string;
909
+ };
910
+ headers?: {
911
+ "X-Target-Org-Id"?: string | null;
912
+ };
913
+ };
914
+ output: ApiResponse_VoicePayload_;
915
+ };
916
+ /**
917
+ * DELETE /voice/video-recordings/{video_id}
918
+ * Delete one video recording
919
+ * tier: destructive · scope: voice:delete
920
+ */
921
+ delete_video_recording_voice_video_recordings__video_id__delete: {
922
+ input: {
923
+ path: {
924
+ /** Recording id. */
925
+ video_id: string;
926
+ };
927
+ headers?: {
928
+ "X-Target-Org-Id"?: string | null;
929
+ };
930
+ };
931
+ output: ApiResponse_VoicePayload_;
932
+ };
933
+ /**
934
+ * DELETE /voice/agents/{agent_id}
935
+ * Delete a voice agent or twin
936
+ * tier: destructive · scope: voice:write
937
+ */
938
+ delete_voice_agent_voice_agents__agent_id__delete: {
939
+ input: {
940
+ path: {
941
+ /** Agent UUID. */
942
+ agent_id: string;
943
+ };
944
+ headers?: {
945
+ "X-Target-Org-Id"?: string | null;
946
+ };
947
+ };
948
+ output: ApiResponse_VoiceAgentResponse_;
949
+ };
950
+ /**
951
+ * DELETE /voice/agents/{agent_id}/skills/{action_id}
952
+ * Take a skill away from an agent
953
+ * tier: destructive · scope: voice:delete
954
+ */
955
+ detach_skill_from_agent_voice_agents__agent_id__skills__action_id__delete: {
956
+ input: {
957
+ path: {
958
+ /** The agent. */
959
+ agent_id: string;
960
+ /** The skill to remove. */
961
+ action_id: string;
962
+ };
963
+ headers?: {
964
+ "X-Target-Org-Id"?: string | null;
965
+ };
966
+ };
967
+ output: ApiResponse_VoicePayload_;
968
+ };
969
+ /**
970
+ * GET /voice/calls/{call_id}/recording
971
+ * Stream a call's recording
972
+ * tier: read · scope: voice:read
973
+ */
974
+ download_call_recording_voice_calls__call_id__recording_get: {
975
+ input: {
976
+ path: {
977
+ /** Call id. */
978
+ call_id: string;
979
+ };
980
+ headers?: {
981
+ "X-Target-Org-Id"?: string | null;
982
+ };
983
+ };
984
+ output: void;
985
+ };
986
+ /**
987
+ * GET /voice/calls/{call_id}/historical-recording
988
+ * Recover an old recording by its activity
989
+ * tier: read · scope: voice:read
990
+ */
991
+ download_historical_call_recording_voice_calls__call_id__historical_recording_get: {
992
+ input: {
993
+ path: {
994
+ /** Call id. */
995
+ call_id: string;
996
+ };
997
+ query: {
998
+ /** The activity that proves the recording belongs to this call. */
999
+ activity_id: string;
1000
+ };
1001
+ headers?: {
1002
+ "X-Target-Org-Id"?: string | null;
1003
+ };
1004
+ };
1005
+ output: void;
1006
+ };
1007
+ /**
1008
+ * GET /voice/knowledge-base/files/download
1009
+ * Download a knowledge-base file
1010
+ * tier: read · scope: voice:read
1011
+ */
1012
+ download_knowledge_base_file_voice_knowledge_base_files_download_get: {
1013
+ input: {
1014
+ query: {
1015
+ /** The stored name, as listed. */
1016
+ filename: string;
1017
+ };
1018
+ headers?: {
1019
+ "X-Target-Org-Id"?: string | null;
1020
+ };
1021
+ };
1022
+ output: void;
1023
+ };
1024
+ /**
1025
+ * GET /voice/twins/files/download
1026
+ * Download a twin's stored file
1027
+ * tier: read · scope: voice:read
1028
+ */
1029
+ download_twin_file_voice_twins_files_download_get: {
1030
+ input: {
1031
+ query: {
1032
+ /** The stored key, as returned on the twin. */
1033
+ s3_key: string;
1034
+ };
1035
+ headers?: {
1036
+ "X-Target-Org-Id"?: string | null;
1037
+ };
1038
+ };
1039
+ output: void;
1040
+ };
1041
+ /**
1042
+ * POST /voice/email-agent/draft-reply
1043
+ * Draft a reply to an email
1044
+ * tier: billable · scope: voice:run
1045
+ */
1046
+ draft_email_reply_voice_email_agent_draft_reply_post: {
1047
+ input: {
1048
+ headers?: {
1049
+ "X-Target-Org-Id"?: string | null;
1050
+ };
1051
+ body: Record<string, unknown>;
1052
+ };
1053
+ output: ApiResponse_VoicePayload_;
1054
+ };
1055
+ /**
1056
+ * POST /voice/campaigns/email-enhancements
1057
+ * Rewrite a generated email against an instruction
1058
+ * tier: billable · scope: voice:run
1059
+ */
1060
+ enhance_campaign_email_voice_campaigns_email_enhancements_post: {
1061
+ input: {
1062
+ headers?: {
1063
+ "X-Target-Org-Id"?: string | null;
1064
+ };
1065
+ body: Record<string, unknown>;
1066
+ };
1067
+ output: ApiResponse_VoicePayload_;
1068
+ };
1069
+ /**
1070
+ * POST /voice/agents/receptionist
1071
+ * Get the org's receptionist, creating it if absent
1072
+ * tier: write · scope: voice:write
1073
+ */
1074
+ ensure_receptionist_agent_voice_agents_receptionist_post: {
1075
+ input: {
1076
+ headers?: {
1077
+ "X-Target-Org-Id"?: string | null;
1078
+ };
1079
+ };
1080
+ output: ApiResponse_VoicePayload_;
1081
+ };
1082
+ /**
1083
+ * POST /voice/campaigns/email-estimate
1084
+ * Estimate what generating an email would cost
1085
+ * tier: read · scope: voice:read
1086
+ */
1087
+ estimate_campaign_email_voice_campaigns_email_estimate_post: {
1088
+ input: {
1089
+ headers?: {
1090
+ "X-Target-Org-Id"?: string | null;
1091
+ };
1092
+ body: Record<string, unknown>;
1093
+ };
1094
+ output: ApiResponse_VoicePayload_;
1095
+ };
1096
+ /**
1097
+ * GET /dialer/parallel-calls/analytics/dialer-report/export
1098
+ * Download the dialer report as a spreadsheet
1099
+ * tier: read · scope: voice:read
1100
+ */
1101
+ export_dialer_report_dialer_parallel_calls_analytics_dialer_report_export_get: {
1102
+ input: {
1103
+ query?: {
1104
+ /** One session only. */
1105
+ session_id?: string | null;
1106
+ /** One rep only. */
1107
+ user_email?: string | null;
1108
+ /** YYYY-MM-DD. */
1109
+ date_from?: string | null;
1110
+ /** YYYY-MM-DD. */
1111
+ date_to?: string | null;
1112
+ /** Per-day rows, or one summary. */
1113
+ aggregation?: "daily" | "total";
1114
+ };
1115
+ headers?: {
1116
+ "X-Target-Org-Id"?: string | null;
1117
+ };
1118
+ };
1119
+ output: void;
1120
+ };
1121
+ /**
1122
+ * POST /voice/twins/extract-linkedin
1123
+ * Extract a LinkedIn profile to seed a twin
1124
+ * tier: billable · scope: voice:run
1125
+ */
1126
+ extract_twin_linkedin_profile_voice_twins_extract_linkedin_post: {
1127
+ input: {
1128
+ headers?: {
1129
+ "X-Target-Org-Id"?: string | null;
1130
+ };
1131
+ body: TwinLinkedInExtract;
1132
+ };
1133
+ output: ApiResponse_VoicePayload_;
1134
+ };
1135
+ /**
1136
+ * POST /voice/call-scripts/generate
1137
+ * Generate a call script for one contact
1138
+ * tier: billable · scope: voice:run
1139
+ */
1140
+ generate_call_script_voice_call_scripts_generate_post: {
1141
+ input: {
1142
+ headers?: {
1143
+ "X-Target-Org-Id"?: string | null;
1144
+ };
1145
+ body: CallScriptGenerate;
1146
+ };
1147
+ output: ApiResponse_VoicePayload_;
1148
+ };
1149
+ /**
1150
+ * POST /voice/campaigns/call-scripts
1151
+ * Generate one personalised call script
1152
+ * tier: billable · scope: voice:run
1153
+ */
1154
+ generate_campaign_call_script_voice_campaigns_call_scripts_post: {
1155
+ input: {
1156
+ headers?: {
1157
+ "X-Target-Org-Id"?: string | null;
1158
+ };
1159
+ body: Record<string, unknown>;
1160
+ };
1161
+ output: ApiResponse_VoicePayload_;
1162
+ };
1163
+ /**
1164
+ * GET /voice/campaigns/call-scripts
1165
+ * Generate campaign call scripts
1166
+ * tier: billable · scope: voice:run
1167
+ */
1168
+ generate_campaign_call_scripts_voice_campaigns_call_scripts_get: {
1169
+ input: {
1170
+ query?: {
1171
+ /** Whose voice to write in. */
1172
+ agent_name?: string;
1173
+ };
1174
+ headers?: {
1175
+ "X-Target-Org-Id"?: string | null;
1176
+ };
1177
+ };
1178
+ output: ApiResponse_VoicePayload_;
1179
+ };
1180
+ /**
1181
+ * POST /voice/campaigns/emails
1182
+ * Generate one personalised email
1183
+ * tier: billable · scope: voice:run
1184
+ */
1185
+ generate_campaign_email_voice_campaigns_emails_post: {
1186
+ input: {
1187
+ headers?: {
1188
+ "X-Target-Org-Id"?: string | null;
1189
+ };
1190
+ body: Record<string, unknown>;
1191
+ };
1192
+ output: ApiResponse_VoicePayload_;
1193
+ };
1194
+ /**
1195
+ * GET /voice/campaigns/email-templates
1196
+ * Generate campaign email templates
1197
+ * tier: billable · scope: voice:run
1198
+ */
1199
+ generate_campaign_emails_voice_campaigns_email_templates_get: {
1200
+ input: {
1201
+ query?: {
1202
+ /** Whose voice to write in. */
1203
+ agent_name?: string;
1204
+ };
1205
+ headers?: {
1206
+ "X-Target-Org-Id"?: string | null;
1207
+ };
1208
+ };
1209
+ output: ApiResponse_VoicePayload_;
1210
+ };
1211
+ /**
1212
+ * GET /voice/campaigns/templates
1213
+ * Generate a campaign template for a company
1214
+ * tier: billable · scope: voice:run
1215
+ */
1216
+ generate_campaign_template_voice_campaigns_templates_get: {
1217
+ input: {
1218
+ query: {
1219
+ /** The company website to work from. */
1220
+ customer_url: string;
1221
+ /** Which campaign shape to build. */
1222
+ type_campaign?: string;
1223
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
1224
+ run_async?: boolean;
1225
+ };
1226
+ headers?: {
1227
+ "X-Target-Org-Id"?: string | null;
1228
+ };
1229
+ };
1230
+ output: ApiResponse_VoicePayload_;
1231
+ };
1232
+ /**
1233
+ * POST /voice/campaigns/email-spintax
1234
+ * Turn an email into spintax
1235
+ * tier: billable · scope: voice:run
1236
+ */
1237
+ generate_email_spintax_voice_campaigns_email_spintax_post: {
1238
+ input: {
1239
+ headers?: {
1240
+ "X-Target-Org-Id"?: string | null;
1241
+ };
1242
+ body: Record<string, unknown>;
1243
+ };
1244
+ output: ApiResponse_VoicePayload_;
1245
+ };
1246
+ /**
1247
+ * POST /voice/icp/queries
1248
+ * Generate ICP and TAM query definitions from a website
1249
+ * tier: billable · scope: voice:run
1250
+ */
1251
+ generate_icp_queries_voice_icp_queries_post: {
1252
+ input: {
1253
+ query: {
1254
+ /** The company to build an ICP for. */
1255
+ customer_url: string;
1256
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
1257
+ run_async?: boolean;
1258
+ /** True stores the generated ICP against the org. False returns it only. */
1259
+ persist?: boolean;
1260
+ };
1261
+ headers?: {
1262
+ "X-Target-Org-Id"?: string | null;
1263
+ };
1264
+ };
1265
+ output: ApiResponse_VoicePayload_;
1266
+ };
1267
+ /**
1268
+ * POST /voice/campaigns/linkedin-messages
1269
+ * Generate a LinkedIn message
1270
+ * tier: billable · scope: voice:run
1271
+ */
1272
+ generate_linkedin_message_voice_campaigns_linkedin_messages_post: {
1273
+ input: {
1274
+ headers?: {
1275
+ "X-Target-Org-Id"?: string | null;
1276
+ };
1277
+ body: Record<string, unknown>;
1278
+ };
1279
+ output: ApiResponse_VoicePayload_;
1280
+ };
1281
+ /**
1282
+ * POST /voice/campaigns/voicemails
1283
+ * Generate a personalised voicemail script
1284
+ * tier: billable · scope: voice:run
1285
+ */
1286
+ generate_personalised_voicemail_voice_campaigns_voicemails_post: {
1287
+ input: {
1288
+ query?: {
1289
+ /** Which campaign shape to write for. */
1290
+ campaign_type?: string;
1291
+ };
1292
+ headers?: {
1293
+ "X-Target-Org-Id"?: string | null;
1294
+ };
1295
+ body: Record<string, unknown>;
1296
+ };
1297
+ output: ApiResponse_VoicePayload_;
1298
+ };
1299
+ /**
1300
+ * GET /voice/agents/{agent_id}/activity
1301
+ * An agent's activity feed
1302
+ * tier: read · scope: voice:read
1303
+ */
1304
+ get_agent_activity_voice_agents__agent_id__activity_get: {
1305
+ input: {
1306
+ path: {
1307
+ /** Voice agent id. */
1308
+ agent_id: string;
1309
+ };
1310
+ query?: {
1311
+ /** Maximum rows per activity type. */
1312
+ limit?: number;
1313
+ /** Look-back window in days. */
1314
+ days?: number;
1315
+ };
1316
+ headers?: {
1317
+ "X-Target-Org-Id"?: string | null;
1318
+ };
1319
+ };
1320
+ output: ApiResponse_VoicePayload_;
1321
+ };
1322
+ /**
1323
+ * GET /voice/agents/defaults
1324
+ * The organisation's default agent profile
1325
+ * tier: read · scope: voice:read
1326
+ */
1327
+ get_agent_defaults_voice_agents_defaults_get: {
1328
+ input: {
1329
+ headers?: {
1330
+ "X-Target-Org-Id"?: string | null;
1331
+ };
1332
+ };
1333
+ output: ApiResponse_VoicePayload_;
1334
+ };
1335
+ /**
1336
+ * GET /voice/agents/global-settings
1337
+ * Org-wide inbound call defaults
1338
+ * tier: read · scope: voice:read
1339
+ */
1340
+ get_agent_global_settings_voice_agents_global_settings_get: {
1341
+ input: {
1342
+ headers?: {
1343
+ "X-Target-Org-Id"?: string | null;
1344
+ };
1345
+ };
1346
+ output: ApiResponse_VoicePayload_;
1347
+ };
1348
+ /**
1349
+ * GET /voice/agents/{agent_id}/skill-stats
1350
+ * Run statistics for an agent's skills
1351
+ * tier: read · scope: voice:read
1352
+ */
1353
+ get_agent_skill_stats_voice_agents__agent_id__skill_stats_get: {
1354
+ input: {
1355
+ path: {
1356
+ /** Voice agent id. */
1357
+ agent_id: string;
1358
+ };
1359
+ query?: {
1360
+ /** Look-back window in days. */
1361
+ days?: number;
1362
+ };
1363
+ headers?: {
1364
+ "X-Target-Org-Id"?: string | null;
1365
+ };
1366
+ };
1367
+ output: ApiResponse_VoicePayload_;
1368
+ };
1369
+ /**
1370
+ * GET /voice/agents/{agent_id}/test-suite-status
1371
+ * The activation gate: does the saved suite vouch for this config?
1372
+ * tier: read · scope: voice:read
1373
+ */
1374
+ get_agent_test_suite_status_voice_agents__agent_id__test_suite_status_get: {
1375
+ input: {
1376
+ path: {
1377
+ /** Voice agent id. */
1378
+ agent_id: string;
1379
+ };
1380
+ headers?: {
1381
+ "X-Target-Org-Id"?: string | null;
1382
+ };
1383
+ };
1384
+ output: ApiResponse_VoicePayload_;
1385
+ };
1386
+ /**
1387
+ * GET /voice/inbound-routing/business-hours
1388
+ * Read the business-hours schedule for a number
1389
+ * tier: read · scope: voice:read
1390
+ */
1391
+ get_business_hours_voice_inbound_routing_business_hours_get: {
1392
+ input: {
1393
+ query: {
1394
+ /** The number to read. */
1395
+ phone_number: string;
1396
+ };
1397
+ headers?: {
1398
+ "X-Target-Org-Id"?: string | null;
1399
+ };
1400
+ };
1401
+ output: ApiResponse_VoicePayload_;
1402
+ };
1403
+ /**
1404
+ * GET /voice/mcp-servers/{mcp_server_id}/tools/cached
1405
+ * Last known tool list for an MCP server
1406
+ * tier: read · scope: voice:read
1407
+ */
1408
+ get_cached_mcp_tools_voice_mcp_servers__mcp_server_id__tools_cached_get: {
1409
+ input: {
1410
+ path: {
1411
+ /** MCP server id. */
1412
+ mcp_server_id: string;
1413
+ };
1414
+ headers?: {
1415
+ "X-Target-Org-Id"?: string | null;
1416
+ };
1417
+ };
1418
+ output: ApiResponse_VoiceListPayload_;
1419
+ };
1420
+ /**
1421
+ * GET /voice/calls/{call_id}/artifacts
1422
+ * Whether a call's transcript and recording are ready
1423
+ * tier: read · scope: voice:read
1424
+ */
1425
+ get_call_artifacts_voice_calls__call_id__artifacts_get: {
1426
+ input: {
1427
+ path: {
1428
+ /** Call id. */
1429
+ call_id: string;
1430
+ };
1431
+ headers?: {
1432
+ "X-Target-Org-Id"?: string | null;
1433
+ };
1434
+ };
1435
+ output: ApiResponse_VoicePayload_;
1436
+ };
1437
+ /**
1438
+ * GET /voice/dialer/calls/{room_name}/grading
1439
+ * Get AI call grading for a single dialer call
1440
+ * tier: read · scope: voice:read
1441
+ */
1442
+ get_call_grading_voice_dialer_calls__room_name__grading_get: {
1443
+ input: {
1444
+ path: {
1445
+ /** LiveKit room / call identifier (`livekit_room_name`). */
1446
+ room_name: string;
1447
+ };
1448
+ headers?: {
1449
+ "X-Target-Org-Id"?: string | null;
1450
+ };
1451
+ };
1452
+ output: ApiResponse_CallGradingResponse_;
1453
+ };
1454
+ /**
1455
+ * GET /voice/dialer/calls/{room_name}/transcript
1456
+ * Get the persisted transcript for a single dialer call
1457
+ * tier: read · scope: voice:read
1458
+ */
1459
+ get_call_transcript_voice_dialer_calls__room_name__transcript_get: {
1460
+ input: {
1461
+ path: {
1462
+ /** LiveKit room / call identifier (`livekit_room_name`). */
1463
+ room_name: string;
1464
+ };
1465
+ headers?: {
1466
+ "X-Target-Org-Id"?: string | null;
1467
+ };
1468
+ };
1469
+ output: ApiResponse_CallTranscriptResponse_;
1470
+ };
1471
+ /**
1472
+ * POST /voice/chat-agent/history
1473
+ * Read a chat agent conversation
1474
+ * tier: read · scope: voice:read
1475
+ */
1476
+ get_chat_agent_history_voice_chat_agent_history_post: {
1477
+ input: {
1478
+ headers?: {
1479
+ "X-Target-Org-Id"?: string | null;
1480
+ };
1481
+ body: Record<string, unknown>;
1482
+ };
1483
+ output: ApiResponse_VoiceListPayload_;
1484
+ };
1485
+ /**
1486
+ * GET /voice/collections/{collection_id}
1487
+ * Get one collection
1488
+ * tier: read · scope: voice:read
1489
+ */
1490
+ get_collection_voice_collections__collection_id__get: {
1491
+ input: {
1492
+ path: {
1493
+ /** Collection id. */
1494
+ collection_id: number;
1495
+ };
1496
+ headers?: {
1497
+ "X-Target-Org-Id"?: string | null;
1498
+ };
1499
+ };
1500
+ output: ApiResponse_VoicePayload_;
1501
+ };
1502
+ /**
1503
+ * GET /voice/collections/{collection_id}/files/download-url
1504
+ * Get a temporary download URL for one file
1505
+ * tier: read · scope: voice:read
1506
+ */
1507
+ get_collection_file_download_url_voice_collections__collection_id__files_download_url_get: {
1508
+ input: {
1509
+ path: {
1510
+ /** Collection id. */
1511
+ collection_id: number;
1512
+ };
1513
+ query: {
1514
+ /** File name within the collection. */
1515
+ filename: string;
1516
+ /** Folder inside the collection. Empty is the root. */
1517
+ folder_path?: string;
1518
+ /** How long the URL stays valid, in seconds. */
1519
+ expiration?: number;
1520
+ };
1521
+ headers?: {
1522
+ "X-Target-Org-Id"?: string | null;
1523
+ };
1524
+ };
1525
+ output: ApiResponse_VoicePayload_;
1526
+ };
1527
+ /**
1528
+ * GET /voice/collections/{collection_id}/stats
1529
+ * File statistics for a collection
1530
+ * tier: read · scope: voice:read
1531
+ */
1532
+ get_collection_stats_voice_collections__collection_id__stats_get: {
1533
+ input: {
1534
+ path: {
1535
+ /** Collection id. */
1536
+ collection_id: number;
1537
+ };
1538
+ headers?: {
1539
+ "X-Target-Org-Id"?: string | null;
1540
+ };
1541
+ };
1542
+ output: ApiResponse_VoicePayload_;
1543
+ };
1544
+ /**
1545
+ * GET /voice/collections/{collection_id}/vector-status
1546
+ * Indexing status for a collection
1547
+ * tier: read · scope: voice:read
1548
+ */
1549
+ get_collection_vector_status_voice_collections__collection_id__vector_status_get: {
1550
+ input: {
1551
+ path: {
1552
+ /** Collection id. */
1553
+ collection_id: number;
1554
+ };
1555
+ headers?: {
1556
+ "X-Target-Org-Id"?: string | null;
1557
+ };
1558
+ };
1559
+ output: ApiResponse_VoicePayload_;
1560
+ };
1561
+ /**
1562
+ * GET /voice/company-knowledge
1563
+ * Get the organisation's company knowledge
1564
+ * tier: read · scope: voice:read
1565
+ */
1566
+ get_company_knowledge_voice_company_knowledge_get: {
1567
+ input: {
1568
+ query?: {
1569
+ /** False forces a fresh read. The cache is short-lived; prefer the default. */
1570
+ use_cache?: boolean;
1571
+ };
1572
+ headers?: {
1573
+ "X-Target-Org-Id"?: string | null;
1574
+ };
1575
+ };
1576
+ output: ApiResponse_VoicePayload_;
1577
+ };
1578
+ /**
1579
+ * GET /dialer/sessions/{session_id}
1580
+ * One dialer session
1581
+ * tier: read · scope: voice:read
1582
+ */
1583
+ get_dialer_session_dialer_sessions__session_id__get: {
1584
+ input: {
1585
+ path: {
1586
+ /** Dialer session id. */
1587
+ session_id: string;
1588
+ };
1589
+ headers?: {
1590
+ "X-Target-Org-Id"?: string | null;
1591
+ };
1592
+ };
1593
+ output: ApiResponse_VoicePayload_;
1594
+ };
1595
+ /**
1596
+ * GET /dialer/settings/{user_email}
1597
+ * A rep's dialer settings
1598
+ * tier: read · scope: voice:read
1599
+ */
1600
+ get_dialer_settings_dialer_settings__user_email__get: {
1601
+ input: {
1602
+ path: {
1603
+ /** The rep. */
1604
+ user_email: string;
1605
+ };
1606
+ headers?: {
1607
+ "X-Target-Org-Id"?: string | null;
1608
+ };
1609
+ };
1610
+ output: ApiResponse_VoicePayload_;
1611
+ };
1612
+ /**
1613
+ * GET /voice/dialer/stats
1614
+ * Parallel dialer analytics report
1615
+ * tier: read · scope: voice:read
1616
+ */
1617
+ get_dialer_stats_voice_dialer_stats_get: {
1618
+ input: {
1619
+ query?: {
1620
+ /** Filter to a single session. */
1621
+ session_id?: string | null;
1622
+ /** Filter to one SDR's calls. */
1623
+ user_email?: string | null;
1624
+ /** Start date "YYYY-MM-DD". */
1625
+ date_from?: string | null;
1626
+ /** End date "YYYY-MM-DD". */
1627
+ date_to?: string | null;
1628
+ /** "DAILY" for per-day rows, "TOTAL" for one summary row. */
1629
+ aggregation?: string;
1630
+ };
1631
+ headers?: {
1632
+ "X-Target-Org-Id"?: string | null;
1633
+ };
1634
+ };
1635
+ output: ApiResponse_DialerStatsResponse_;
1636
+ };
1637
+ /**
1638
+ * GET /dialer/dispositions/{disposition_id}/usage
1639
+ * Whether a custom disposition is in use
1640
+ * tier: read · scope: voice:read
1641
+ */
1642
+ get_disposition_usage_dialer_dispositions__disposition_id__usage_get: {
1643
+ input: {
1644
+ path: {
1645
+ /** Custom disposition id. */
1646
+ disposition_id: number;
1647
+ };
1648
+ headers?: {
1649
+ "X-Target-Org-Id"?: string | null;
1650
+ };
1651
+ };
1652
+ output: ApiResponse_VoicePayload_;
1653
+ };
1654
+ /**
1655
+ * GET /voice/company-knowledge/formatted
1656
+ * Get company knowledge as the agent prompt sees it
1657
+ * tier: read · scope: voice:read
1658
+ */
1659
+ get_formatted_company_knowledge_voice_company_knowledge_formatted_get: {
1660
+ input: {
1661
+ headers?: {
1662
+ "X-Target-Org-Id"?: string | null;
1663
+ };
1664
+ };
1665
+ output: ApiResponse_VoicePayload_;
1666
+ };
1667
+ /**
1668
+ * GET /voice/jobs/{job_id}
1669
+ * Poll an async job
1670
+ * tier: read · scope: voice:read
1671
+ */
1672
+ get_job_voice_jobs__job_id__get: {
1673
+ input: {
1674
+ path: {
1675
+ /** Job id from a 202 response. */
1676
+ job_id: string;
1677
+ };
1678
+ query?: {
1679
+ /** Which queue the job was placed on. */
1680
+ queue?: string;
1681
+ };
1682
+ headers?: {
1683
+ "X-Target-Org-Id"?: string | null;
1684
+ };
1685
+ };
1686
+ output: ApiResponse_VoicePayload_;
1687
+ };
1688
+ /**
1689
+ * GET /voice/campaigns/onboarding/threads/{thread_id}
1690
+ * Read an onboarding thread's messages
1691
+ * tier: read · scope: voice:read
1692
+ */
1693
+ get_onboarding_thread_voice_campaigns_onboarding_threads__thread_id__get: {
1694
+ input: {
1695
+ path: {
1696
+ /** Thread id. */
1697
+ thread_id: string;
1698
+ };
1699
+ headers?: {
1700
+ "X-Target-Org-Id"?: string | null;
1701
+ };
1702
+ };
1703
+ output: ApiResponse_VoiceListPayload_;
1704
+ };
1705
+ /**
1706
+ * GET /voice/campaigns/past-conversation
1707
+ * Summary of prior conversation with one contact
1708
+ * tier: read · scope: voice:read
1709
+ */
1710
+ get_past_conversation_voice_campaigns_past_conversation_get: {
1711
+ input: {
1712
+ query: {
1713
+ /** Contact id. */
1714
+ contact_id: string;
1715
+ };
1716
+ headers?: {
1717
+ "X-Target-Org-Id"?: string | null;
1718
+ };
1719
+ };
1720
+ output: ApiResponse_VoicePayload_;
1721
+ };
1722
+ /**
1723
+ * GET /voice/twins/{agent_id}
1724
+ * Get a digital twin
1725
+ * tier: read · scope: voice:read
1726
+ */
1727
+ get_twin_voice_twins__agent_id__get: {
1728
+ input: {
1729
+ path: {
1730
+ /** Twin id. */
1731
+ agent_id: string;
1732
+ };
1733
+ headers?: {
1734
+ "X-Target-Org-Id"?: string | null;
1735
+ };
1736
+ };
1737
+ output: ApiResponse_VoicePayload_;
1738
+ };
1739
+ /**
1740
+ * GET /voice/video-recordings/{video_id}
1741
+ * Get a video recording with its transcript
1742
+ * tier: read · scope: voice:read
1743
+ */
1744
+ get_video_recording_voice_video_recordings__video_id__get: {
1745
+ input: {
1746
+ path: {
1747
+ /** Recording id. */
1748
+ video_id: string;
1749
+ };
1750
+ headers?: {
1751
+ "X-Target-Org-Id"?: string | null;
1752
+ };
1753
+ };
1754
+ output: ApiResponse_VoicePayload_;
1755
+ };
1756
+ /**
1757
+ * GET /voice/video-recordings/{video_id}/url
1758
+ * Get a temporary playback URL for a recording
1759
+ * tier: read · scope: voice:read
1760
+ */
1761
+ get_video_recording_url_voice_video_recordings__video_id__url_get: {
1762
+ input: {
1763
+ path: {
1764
+ /** Recording id. */
1765
+ video_id: string;
1766
+ };
1767
+ query?: {
1768
+ /** How long the URL stays valid, in seconds. */
1769
+ expiration?: number;
1770
+ };
1771
+ headers?: {
1772
+ "X-Target-Org-Id"?: string | null;
1773
+ };
1774
+ };
1775
+ output: ApiResponse_VoicePayload_;
1776
+ };
1777
+ /**
1778
+ * GET /voice/agents/{agent_id}
1779
+ * Get a voice agent or twin by id
1780
+ * tier: read · scope: voice:read
1781
+ */
1782
+ get_voice_agent_voice_agents__agent_id__get: {
1783
+ input: {
1784
+ path: {
1785
+ /** Agent UUID. */
1786
+ agent_id: string;
1787
+ };
1788
+ headers?: {
1789
+ "X-Target-Org-Id"?: string | null;
1790
+ };
1791
+ };
1792
+ output: ApiResponse_VoiceAgentResponse_;
1793
+ };
1794
+ /**
1795
+ * GET /voice/agents/{agent_id}/documents
1796
+ * An agent's documents
1797
+ * tier: read · scope: voice:read
1798
+ */
1799
+ list_agent_documents_voice_agents__agent_id__documents_get: {
1800
+ input: {
1801
+ path: {
1802
+ /** Voice agent id. */
1803
+ agent_id: string;
1804
+ };
1805
+ headers?: {
1806
+ "X-Target-Org-Id"?: string | null;
1807
+ };
1808
+ };
1809
+ output: ApiResponse_VoicePayload_;
1810
+ };
1811
+ /**
1812
+ * GET /voice/agent-phone-numbers
1813
+ * Numbers free to give an agent, and numbers already given
1814
+ * tier: read · scope: voice:read
1815
+ */
1816
+ list_agent_phone_numbers_voice_agent_phone_numbers_get: {
1817
+ input: {
1818
+ headers?: {
1819
+ "X-Target-Org-Id"?: string | null;
1820
+ };
1821
+ };
1822
+ output: ApiResponse_VoicePayload_;
1823
+ };
1824
+ /**
1825
+ * GET /voice/agents/{agent_id}/skills
1826
+ * An agent's skills
1827
+ * tier: read · scope: voice:read
1828
+ */
1829
+ list_agent_skills_voice_agents__agent_id__skills_get: {
1830
+ input: {
1831
+ path: {
1832
+ /** Voice agent id. */
1833
+ agent_id: string;
1834
+ };
1835
+ headers?: {
1836
+ "X-Target-Org-Id"?: string | null;
1837
+ };
1838
+ };
1839
+ output: ApiResponse_VoicePayload_;
1840
+ };
1841
+ /**
1842
+ * GET /voice/agent-templates
1843
+ * Agent templates
1844
+ * tier: read · scope: voice:read
1845
+ */
1846
+ list_agent_templates_voice_agent_templates_get: {
1847
+ input: {
1848
+ query?: {
1849
+ /** Only agents, or only twins. */
1850
+ entity_type?: ("agent" | "twin") | null;
1851
+ /** Include graph8's own templates. */
1852
+ include_system_templates?: boolean;
1853
+ };
1854
+ headers?: {
1855
+ "X-Target-Org-Id"?: string | null;
1856
+ };
1857
+ };
1858
+ output: ApiResponse_VoicePayload_;
1859
+ };
1860
+ /**
1861
+ * GET /voice/agents/{agent_id}/test-cases
1862
+ * The agent's saved evaluation cases
1863
+ * tier: read · scope: voice:read
1864
+ */
1865
+ list_agent_test_cases_voice_agents__agent_id__test_cases_get: {
1866
+ input: {
1867
+ path: {
1868
+ /** Voice agent id. */
1869
+ agent_id: string;
1870
+ };
1871
+ headers?: {
1872
+ "X-Target-Org-Id"?: string | null;
1873
+ };
1874
+ };
1875
+ output: ApiResponse_VoiceListPayload_;
1876
+ };
1877
+ /**
1878
+ * GET /voice/agents/{agent_id}/test-runs
1879
+ * Run history, newest first
1880
+ * tier: read · scope: voice:read
1881
+ */
1882
+ list_agent_test_runs_voice_agents__agent_id__test_runs_get: {
1883
+ input: {
1884
+ path: {
1885
+ /** Voice agent id. */
1886
+ agent_id: string;
1887
+ };
1888
+ query?: {
1889
+ /** Only runs of this saved case. */
1890
+ test_case_id?: string | null;
1891
+ limit?: number;
1892
+ /** Include the stored previews (heavier). */
1893
+ include_output?: boolean;
1894
+ };
1895
+ headers?: {
1896
+ "X-Target-Org-Id"?: string | null;
1897
+ };
1898
+ };
1899
+ output: ApiResponse_VoiceListPayload_;
1900
+ };
1901
+ /**
1902
+ * GET /voice/collections/files
1903
+ * List every file across every collection
1904
+ * tier: read · scope: voice:read
1905
+ */
1906
+ list_all_collection_files_voice_collections_files_get: {
1907
+ input: {
1908
+ headers?: {
1909
+ "X-Target-Org-Id"?: string | null;
1910
+ };
1911
+ };
1912
+ output: ApiResponse_VoiceListPayload_;
1913
+ };
1914
+ /**
1915
+ * GET /voice/call-results/campaigns
1916
+ * Campaign ids that have at least one call
1917
+ * tier: read · scope: voice:read
1918
+ */
1919
+ list_call_result_campaigns_voice_call_results_campaigns_get: {
1920
+ input: {
1921
+ headers?: {
1922
+ "X-Target-Org-Id"?: string | null;
1923
+ };
1924
+ };
1925
+ output: ApiResponse_VoiceListPayload_;
1926
+ };
1927
+ /**
1928
+ * GET /voice/dialer/calls
1929
+ * List dialer calls (filter by contact, SDR, or session)
1930
+ * tier: read · scope: voice:read
1931
+ */
1932
+ list_calls_for_contact_voice_dialer_calls_get: {
1933
+ input: {
1934
+ query?: {
1935
+ /** CDP contact id (string form of mashup_contacts.id). If you only have a CRM-overlay id (cb_contact_extensions.id), resolve it via the contacts endpoint first. Optional - supply at least one of contact_id, user_email, or parallel_session_id. */
1936
+ contact_id?: string | null;
1937
+ /** SDR email. Returns dialer calls where the parent ParallelDialSession.user_email matches. Use for incremental ingestion of one SDR's call history. */
1938
+ user_email?: string | null;
1939
+ /** Filter to a single ParallelDialSession.session_id. */
1940
+ parallel_session_id?: string | null;
1941
+ /** ISO-8601 timestamp. Only return calls with created_at >= this value. Use for incremental polling (pass the max created_at from the previous page on the next call). */
1942
+ created_after?: string | null;
1943
+ /** Max calls to return, newest first. Capped at 100. */
1944
+ limit?: number;
1945
+ };
1946
+ headers?: {
1947
+ "X-Target-Org-Id"?: string | null;
1948
+ };
1949
+ };
1950
+ output: ApiResponse_CallsListResponse_;
1951
+ };
1952
+ /**
1953
+ * GET /voice/campaigns/email-models
1954
+ * Models available for email generation
1955
+ * tier: read · scope: voice:read
1956
+ */
1957
+ list_campaign_email_models_voice_campaigns_email_models_get: {
1958
+ input: {
1959
+ headers?: {
1960
+ "X-Target-Org-Id"?: string | null;
1961
+ };
1962
+ };
1963
+ output: ApiResponse_VoiceListPayload_;
1964
+ };
1965
+ /**
1966
+ * POST /voice/chat-agent/conversations
1967
+ * List chat agent conversations
1968
+ * tier: read · scope: voice:read
1969
+ */
1970
+ list_chat_agent_conversations_voice_chat_agent_conversations_post: {
1971
+ input: {
1972
+ headers?: {
1973
+ "X-Target-Org-Id"?: string | null;
1974
+ };
1975
+ body?: Record<string, unknown>;
1976
+ };
1977
+ output: ApiResponse_VoiceListPayload_;
1978
+ };
1979
+ /**
1980
+ * GET /voice/voice-library/voices
1981
+ * The voices this organisation has cloned
1982
+ * tier: read · scope: voice:read
1983
+ */
1984
+ list_cloned_voices_voice_voice_library_voices_get: {
1985
+ input: {
1986
+ query?: {
1987
+ /** Only voices cloned by this user. */
1988
+ created_by_email?: string | null;
1989
+ limit?: number;
1990
+ offset?: number;
1991
+ };
1992
+ headers?: {
1993
+ "X-Target-Org-Id"?: string | null;
1994
+ };
1995
+ };
1996
+ output: ApiResponse_VoiceListPayload_;
1997
+ };
1998
+ /**
1999
+ * GET /voice/collections
2000
+ * List knowledge collections
2001
+ * tier: read · scope: voice:read
2002
+ */
2003
+ list_collections_voice_collections_get: {
2004
+ input: {
2005
+ headers?: {
2006
+ "X-Target-Org-Id"?: string | null;
2007
+ };
2008
+ };
2009
+ output: ApiResponse_VoiceListPayload_;
2010
+ };
2011
+ /**
2012
+ * GET /voice/phone-directory/departments/{department}
2013
+ * One department's reachable members
2014
+ * tier: read · scope: voice:read
2015
+ */
2016
+ list_department_colleagues_voice_phone_directory_departments__department__get: {
2017
+ input: {
2018
+ path: {
2019
+ /** Department name; matched case-insensitively. */
2020
+ department: string;
2021
+ };
2022
+ headers?: {
2023
+ "X-Target-Org-Id"?: string | null;
2024
+ };
2025
+ };
2026
+ output: ApiResponse_VoiceListPayload_;
2027
+ };
2028
+ /**
2029
+ * GET /voice/dialer/agents
2030
+ * List voice agents available for a dialer session
2031
+ * tier: read · scope: voice:read
2032
+ */
2033
+ list_dialer_agents_voice_dialer_agents_get: {
2034
+ input: {
2035
+ query?: {
2036
+ /** Filter by agent role (e.g. "SDR", "AE", "Receptionist", "CSM"). */
2037
+ role?: string | null;
2038
+ /** Filter by status (e.g. "active"). Defaults to all. */
2039
+ agent_status?: string | null;
2040
+ /** "agent" or "twin". Defaults to all. */
2041
+ entity_type?: string | null;
2042
+ /** Substring match on agent name. */
2043
+ search?: string | null;
2044
+ };
2045
+ headers?: {
2046
+ "X-Target-Org-Id"?: string | null;
2047
+ };
2048
+ };
2049
+ output: ApiResponse_DialerAgentsListResponse_;
2050
+ };
2051
+ /**
2052
+ * GET /voice/dialer/numbers
2053
+ * List dialer-eligible phone numbers
2054
+ * tier: read · scope: voice:read
2055
+ */
2056
+ list_dialer_numbers_voice_dialer_numbers_get: {
2057
+ input: {
2058
+ query?: {
2059
+ /** Optional - restrict to numbers assigned to a specific SDR. */
2060
+ user_email?: string | null;
2061
+ };
2062
+ headers?: {
2063
+ "X-Target-Org-Id"?: string | null;
2064
+ };
2065
+ };
2066
+ output: ApiResponse_DialerNumbersListResponse_;
2067
+ };
2068
+ /**
2069
+ * GET /voice/dialer/sessions
2070
+ * List parallel dialer sessions
2071
+ * tier: read · scope: voice:read
2072
+ */
2073
+ list_dialer_sessions_voice_dialer_sessions_get: {
2074
+ input: {
2075
+ query?: {
2076
+ /** Page number (1-indexed). */
2077
+ page?: number;
2078
+ /** Sessions per page (max 200). */
2079
+ page_size?: number;
2080
+ /** Comma-separated session statuses (e.g. "ACTIVE,PAUSED"). */
2081
+ status?: string | null;
2082
+ /** Filter by SDR email (substring). */
2083
+ user_email?: string | null;
2084
+ /** Filter by session name (substring). */
2085
+ name?: string | null;
2086
+ /** Filter by campaign id (substring). */
2087
+ campaign_id?: string | null;
2088
+ /** Filter by list id stored in session metadata. */
2089
+ list_id?: string | null;
2090
+ /** Filter by list title (substring). */
2091
+ list_name?: string | null;
2092
+ /** ISO timestamp - sessions created on/after. */
2093
+ date_from?: string | null;
2094
+ /** ISO timestamp - sessions created on/before. */
2095
+ date_to?: string | null;
2096
+ /** Column to sort on (e.g. "created_at", "updated_at", "total_calls"). */
2097
+ sort_by?: string | null;
2098
+ /** "asc" or "desc". Defaults to desc. */
2099
+ sort_order?: string;
2100
+ };
2101
+ headers?: {
2102
+ "X-Target-Org-Id"?: string | null;
2103
+ };
2104
+ };
2105
+ output: ApiResponse_DialerSessionsListResponse_;
2106
+ };
2107
+ /**
2108
+ * GET /voice/call-results/inbound
2109
+ * Inbound call results
2110
+ * tier: read · scope: voice:read
2111
+ */
2112
+ list_inbound_call_results_voice_call_results_inbound_get: {
2113
+ input: {
2114
+ headers?: {
2115
+ "X-Target-Org-Id"?: string | null;
2116
+ };
2117
+ };
2118
+ output: ApiResponse_VoiceListPayload_;
2119
+ };
2120
+ /**
2121
+ * GET /voice/inbound-routing/rules
2122
+ * List inbound routing rules
2123
+ * tier: read · scope: voice:read
2124
+ */
2125
+ list_inbound_routes_voice_inbound_routing_rules_get: {
2126
+ input: {
2127
+ query?: {
2128
+ /** Only rules for this number. */
2129
+ phone_number?: string | null;
2130
+ };
2131
+ headers?: {
2132
+ "X-Target-Org-Id"?: string | null;
2133
+ };
2134
+ };
2135
+ output: ApiResponse_VoiceListPayload_;
2136
+ };
2137
+ /**
2138
+ * GET /voice/knowledge-base/files
2139
+ * Files in the organisation knowledge base
2140
+ * tier: read · scope: voice:read
2141
+ */
2142
+ list_knowledge_base_files_voice_knowledge_base_files_get: {
2143
+ input: {
2144
+ headers?: {
2145
+ "X-Target-Org-Id"?: string | null;
2146
+ };
2147
+ };
2148
+ output: ApiResponse_VoicePayload_;
2149
+ };
2150
+ /**
2151
+ * GET /voice/mcp-servers/{mcp_server_id}/tools
2152
+ * Live tool list from an MCP server
2153
+ * tier: external · scope: voice:run
2154
+ */
2155
+ list_mcp_server_tools_voice_mcp_servers__mcp_server_id__tools_get: {
2156
+ input: {
2157
+ path: {
2158
+ /** MCP server id. */
2159
+ mcp_server_id: string;
2160
+ };
2161
+ query?: {
2162
+ /** True re-reads from the server and replaces the cache. */
2163
+ refresh?: boolean;
2164
+ };
2165
+ headers?: {
2166
+ "X-Target-Org-Id"?: string | null;
2167
+ };
2168
+ };
2169
+ output: ApiResponse_VoiceListPayload_;
2170
+ };
2171
+ /**
2172
+ * GET /voice/dialer/missed-callbacks
2173
+ * List missed inbound callbacks
2174
+ * tier: read · scope: voice:read
2175
+ */
2176
+ list_missed_callbacks_voice_dialer_missed_callbacks_get: {
2177
+ input: {
2178
+ query?: {
2179
+ /** Max rows to return. */
2180
+ limit?: number;
2181
+ };
2182
+ headers?: {
2183
+ "X-Target-Org-Id"?: string | null;
2184
+ };
2185
+ };
2186
+ output: ApiResponse_MissedCallbacksResponse_;
2187
+ };
2188
+ /**
2189
+ * GET /voice/campaigns/onboarding/threads
2190
+ * List onboarding conversation threads
2191
+ * tier: read · scope: voice:read
2192
+ */
2193
+ list_onboarding_threads_voice_campaigns_onboarding_threads_get: {
2194
+ input: {
2195
+ headers?: {
2196
+ "X-Target-Org-Id"?: string | null;
2197
+ };
2198
+ };
2199
+ output: ApiResponse_VoiceListPayload_;
2200
+ };
2201
+ /**
2202
+ * GET /voice/campaigns/past-conversations
2203
+ * All recorded conversation history for one contact
2204
+ * tier: read · scope: voice:read
2205
+ */
2206
+ list_past_conversations_voice_campaigns_past_conversations_get: {
2207
+ input: {
2208
+ query: {
2209
+ /** Contact id. */
2210
+ contact_id: number;
2211
+ };
2212
+ headers?: {
2213
+ "X-Target-Org-Id"?: string | null;
2214
+ };
2215
+ };
2216
+ output: ApiResponse_VoiceListPayload_;
2217
+ };
2218
+ /**
2219
+ * GET /voice/inbound-calls/pending
2220
+ * Inbound calls ringing right now
2221
+ * tier: read · scope: voice:read
2222
+ */
2223
+ list_pending_inbound_calls_voice_inbound_calls_pending_get: {
2224
+ input: {
2225
+ headers?: {
2226
+ "X-Target-Org-Id"?: string | null;
2227
+ };
2228
+ };
2229
+ output: ApiResponse_VoiceListPayload_;
2230
+ };
2231
+ /**
2232
+ * GET /voice/phone-directory
2233
+ * The organisation's phone directory
2234
+ * tier: read · scope: voice:read
2235
+ */
2236
+ list_phone_directory_voice_phone_directory_get: {
2237
+ input: {
2238
+ headers?: {
2239
+ "X-Target-Org-Id"?: string | null;
2240
+ };
2241
+ };
2242
+ output: ApiResponse_VoiceListPayload_;
2243
+ };
2244
+ /**
2245
+ * GET /voice/voice-library/presets
2246
+ * List the preset voices an agent can speak with
2247
+ * tier: read · scope: voice:read
2248
+ */
2249
+ list_preset_voices_voice_voice_library_presets_get: {
2250
+ input: {
2251
+ query?: {
2252
+ /** Rows to return. */
2253
+ limit?: number;
2254
+ };
2255
+ headers?: {
2256
+ "X-Target-Org-Id"?: string | null;
2257
+ };
2258
+ };
2259
+ output: ApiResponse_VoiceListPayload_;
2260
+ };
2261
+ /**
2262
+ * GET /voice/phone-directory/reachable
2263
+ * Colleagues who can be reached right now
2264
+ * tier: read · scope: voice:read
2265
+ */
2266
+ list_reachable_colleagues_voice_phone_directory_reachable_get: {
2267
+ input: {
2268
+ headers?: {
2269
+ "X-Target-Org-Id"?: string | null;
2270
+ };
2271
+ };
2272
+ output: ApiResponse_VoiceListPayload_;
2273
+ };
2274
+ /**
2275
+ * GET /voice/collections/{collection_id}/scrape-sources
2276
+ * List the web sources feeding a collection
2277
+ * tier: read · scope: voice:read
2278
+ */
2279
+ list_scrape_sources_voice_collections__collection_id__scrape_sources_get: {
2280
+ input: {
2281
+ path: {
2282
+ /** Collection id. */
2283
+ collection_id: number;
2284
+ };
2285
+ headers?: {
2286
+ "X-Target-Org-Id"?: string | null;
2287
+ };
2288
+ };
2289
+ output: ApiResponse_VoiceListPayload_;
2290
+ };
2291
+ /**
2292
+ * GET /voice/twins
2293
+ * The organisation's twins
2294
+ * tier: read · scope: voice:read
2295
+ */
2296
+ list_twins_voice_twins_get: {
2297
+ input: {
2298
+ headers?: {
2299
+ "X-Target-Org-Id"?: string | null;
2300
+ };
2301
+ };
2302
+ output: ApiResponse_VoicePayload_;
2303
+ };
2304
+ /**
2305
+ * GET /voice/video-recordings
2306
+ * List video recordings
2307
+ * tier: read · scope: voice:read
2308
+ */
2309
+ list_video_recordings_voice_video_recordings_get: {
2310
+ input: {
2311
+ query?: {
2312
+ /** Only recordings for this subject (candidate, employee, ...). */
2313
+ user_id?: string | null;
2314
+ };
2315
+ headers?: {
2316
+ "X-Target-Org-Id"?: string | null;
2317
+ };
2318
+ };
2319
+ output: ApiResponse_VoiceListPayload_;
2320
+ };
2321
+ /**
2322
+ * GET /voice/agents
2323
+ * List voice agents and twins
2324
+ * tier: read · scope: voice:read
2325
+ */
2326
+ list_voice_agents_voice_agents_get: {
2327
+ input: {
2328
+ query?: {
2329
+ /** Filter by entity type ("agent" or "twin"). */
2330
+ entity_type?: string | null;
2331
+ /** Filter by agent role. */
2332
+ role?: string | null;
2333
+ /** Filter by status. */
2334
+ agent_status?: string | null;
2335
+ /** true=templates only, false=non-templates only. */
2336
+ is_template?: boolean | null;
2337
+ /** Substring match on agent name. */
2338
+ search?: string | null;
2339
+ /** Page number (1-indexed). */
2340
+ page?: number;
2341
+ /** Results per page (max 100). */
2342
+ page_size?: number;
2343
+ /** "created_at" | "agent_name" | "role" | "status". */
2344
+ sort_by?: string;
2345
+ /** "asc" or "desc". */
2346
+ sort_order?: string;
2347
+ };
2348
+ headers?: {
2349
+ "X-Target-Org-Id"?: string | null;
2350
+ };
2351
+ };
2352
+ output: ApiResponse_VoiceAgentListResponse_;
2353
+ };
2354
+ /**
2355
+ * GET /voice/dispositions
2356
+ * List system + org custom call dispositions
2357
+ * tier: read · scope: voice:read
2358
+ */
2359
+ list_voice_dispositions_voice_dispositions_get: {
2360
+ input: {
2361
+ headers?: {
2362
+ "X-Target-Org-Id"?: string | null;
2363
+ };
2364
+ };
2365
+ output: ApiResponse_VoiceDispositionListResponse_;
2366
+ };
2367
+ /**
2368
+ * GET /voice/voicemails
2369
+ * List voicemails
2370
+ * tier: read · scope: voice:read
2371
+ */
2372
+ list_voicemails_voice_voicemails_get: {
2373
+ input: {
2374
+ query?: {
2375
+ /** True for read only, false for unread only. Omit for both. */
2376
+ is_read?: boolean | null;
2377
+ /** Only voicemails assigned to this rep. */
2378
+ sdr_email?: string | null;
2379
+ /** Rows per page. */
2380
+ limit?: number;
2381
+ /** Rows to skip. */
2382
+ offset?: number;
2383
+ };
2384
+ headers?: {
2385
+ "X-Target-Org-Id"?: string | null;
2386
+ };
2387
+ };
2388
+ output: ApiResponse_VoiceListPayload_;
2389
+ };
2390
+ /**
2391
+ * POST /dialer/parallel-calls/sessions/{session_id}/calls
2392
+ * Call results for chosen contacts in a parallel session
2393
+ * tier: read · scope: voice:read
2394
+ */
2395
+ lookup_session_calls_dialer_parallel_calls_sessions__session_id__calls_post: {
2396
+ input: {
2397
+ path: {
2398
+ /** Dialer session id. */
2399
+ session_id: string;
2400
+ };
2401
+ query?: {
2402
+ /** Latest call plus history per contact, or a flat list. */
2403
+ group_by_contact?: boolean;
2404
+ };
2405
+ headers?: {
2406
+ "X-Target-Org-Id"?: string | null;
2407
+ };
2408
+ body: SessionCallsLookup;
2409
+ };
2410
+ output: ApiResponse_VoicePayload_;
2411
+ };
2412
+ /**
2413
+ * PATCH /voice/voicemails/read-all
2414
+ * Mark every voicemail read
2415
+ * tier: write · scope: voice:write
2416
+ */
2417
+ mark_all_voicemails_read_voice_voicemails_read_all_patch: {
2418
+ input: {
2419
+ query: {
2420
+ /** Who is marking them read. Recorded against each row. */
2421
+ sdr_email: string;
2422
+ /** Narrow to one rep's voicemails. OMITTING THIS CLEARS THE WHOLE ORGANISATION'S unread state, not just this rep's. */
2423
+ assigned_to?: string | null;
2424
+ };
2425
+ headers?: {
2426
+ "X-Target-Org-Id"?: string | null;
2427
+ };
2428
+ };
2429
+ output: ApiResponse_VoicePayload_;
2430
+ };
2431
+ /**
2432
+ * PATCH /voice/voicemails/{voicemail_id}/read
2433
+ * Mark one voicemail read
2434
+ * tier: write · scope: voice:write
2435
+ */
2436
+ mark_voicemail_read_voice_voicemails__voicemail_id__read_patch: {
2437
+ input: {
2438
+ path: {
2439
+ /** Voicemail id. */
2440
+ voicemail_id: number;
2441
+ };
2442
+ query: {
2443
+ /** Who read it. Recorded against the row. */
2444
+ sdr_email: string;
2445
+ };
2446
+ headers?: {
2447
+ "X-Target-Org-Id"?: string | null;
2448
+ };
2449
+ };
2450
+ output: ApiResponse_VoicePayload_;
2451
+ };
2452
+ /**
2453
+ * POST /voice/collections/{collection_id}/files/paste-text
2454
+ * Create a text file in a collection from pasted content
2455
+ * tier: billable · scope: voice:run
2456
+ */
2457
+ paste_text_into_collection_voice_collections__collection_id__files_paste_text_post: {
2458
+ input: {
2459
+ path: {
2460
+ /** Collection id. */
2461
+ collection_id: number;
2462
+ };
2463
+ headers?: {
2464
+ "X-Target-Org-Id"?: string | null;
2465
+ };
2466
+ body: CollectionPasteText;
2467
+ };
2468
+ output: ApiResponse_VoicePayload_;
2469
+ };
2470
+ /**
2471
+ * POST /dialer/sessions/{session_id}/pause
2472
+ * Pause a dialer session
2473
+ * tier: write · scope: voice:write
2474
+ */
2475
+ pause_dialer_session_dialer_sessions__session_id__pause_post: {
2476
+ input: {
2477
+ path: {
2478
+ /** Dialer session id. */
2479
+ session_id: string;
2480
+ };
2481
+ query?: {
2482
+ /** The rep pausing, for the session log. */
2483
+ user_email?: string | null;
2484
+ };
2485
+ headers?: {
2486
+ "X-Target-Org-Id"?: string | null;
2487
+ };
2488
+ };
2489
+ output: ApiResponse_VoicePayload_;
2490
+ };
2491
+ /**
2492
+ * POST /voice/collections/{collection_id}/reindex
2493
+ * Rebuild a collection's vector index
2494
+ * tier: billable · scope: voice:run
2495
+ */
2496
+ reindex_collection_voice_collections__collection_id__reindex_post: {
2497
+ input: {
2498
+ path: {
2499
+ /** Collection id. */
2500
+ collection_id: number;
2501
+ };
2502
+ headers?: {
2503
+ "X-Target-Org-Id"?: string | null;
2504
+ };
2505
+ };
2506
+ output: ApiResponse_VoicePayload_;
2507
+ };
2508
+ /**
2509
+ * PUT /voice/chat-agent/conversations/{chat_id}/name
2510
+ * Rename a chat agent conversation
2511
+ * tier: write · scope: voice:write
2512
+ */
2513
+ rename_chat_agent_conversation_voice_chat_agent_conversations__chat_id__name_put: {
2514
+ input: {
2515
+ path: {
2516
+ /** Conversation id. */
2517
+ chat_id: string;
2518
+ };
2519
+ query: {
2520
+ /** The agent that owns it. */
2521
+ agent_id: string;
2522
+ };
2523
+ headers?: {
2524
+ "X-Target-Org-Id"?: string | null;
2525
+ };
2526
+ body: Body_rename_chat_agent_conversation_voice_chat_agent_conversations__chat_id__name_put;
2527
+ };
2528
+ output: ApiResponse_VoicePayload_;
2529
+ };
2530
+ /**
2531
+ * PUT /voice/collections/{collection_id}/files/rename
2532
+ * Rename or move a file within a collection
2533
+ * tier: write · scope: voice:write
2534
+ */
2535
+ rename_collection_file_voice_collections__collection_id__files_rename_put: {
2536
+ input: {
2537
+ path: {
2538
+ /** Collection id. */
2539
+ collection_id: number;
2540
+ };
2541
+ query: {
2542
+ /** Current file name. */
2543
+ old_filename: string;
2544
+ /** New file name. */
2545
+ new_filename: string;
2546
+ /** Current folder. Empty is the root. */
2547
+ old_folder_path?: string;
2548
+ /** Target folder. Empty is the root. */
2549
+ new_folder_path?: string;
2550
+ };
2551
+ headers?: {
2552
+ "X-Target-Org-Id"?: string | null;
2553
+ };
2554
+ };
2555
+ output: ApiResponse_VoicePayload_;
2556
+ };
2557
+ /**
2558
+ * PUT /voice/knowledge-base/files/rename
2559
+ * Rename a knowledge-base file
2560
+ * tier: write · scope: voice:write
2561
+ */
2562
+ rename_knowledge_base_file_voice_knowledge_base_files_rename_put: {
2563
+ input: {
2564
+ query: {
2565
+ /** Current name. */
2566
+ old_filename: string;
2567
+ /** New name. */
2568
+ new_filename: string;
2569
+ };
2570
+ headers?: {
2571
+ "X-Target-Org-Id"?: string | null;
2572
+ };
2573
+ };
2574
+ output: ApiResponse_VoicePayload_;
2575
+ };
2576
+ /**
2577
+ * GET /voice/research/business-data
2578
+ * Business profile for a company website
2579
+ * tier: billable · scope: voice:run
2580
+ */
2581
+ research_business_data_voice_research_business_data_get: {
2582
+ input: {
2583
+ query: {
2584
+ /** The company website to work from. */
2585
+ customer_url: string;
2586
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
2587
+ run_async?: boolean;
2588
+ };
2589
+ headers?: {
2590
+ "X-Target-Org-Id"?: string | null;
2591
+ };
2592
+ };
2593
+ output: ApiResponse_VoicePayload_;
2594
+ };
2595
+ /**
2596
+ * POST /voice/research/company
2597
+ * Deep-research a company
2598
+ * tier: billable · scope: voice:run
2599
+ */
2600
+ research_company_voice_research_company_post: {
2601
+ input: {
2602
+ headers?: {
2603
+ "X-Target-Org-Id"?: string | null;
2604
+ };
2605
+ body: Body_research_company_voice_research_company_post;
2606
+ };
2607
+ output: ApiResponse_VoicePayload_;
2608
+ };
2609
+ /**
2610
+ * GET /voice/research/competitors
2611
+ * Competitors of a company
2612
+ * tier: billable · scope: voice:run
2613
+ */
2614
+ research_competitors_voice_research_competitors_get: {
2615
+ input: {
2616
+ query: {
2617
+ /** The company website to work from. */
2618
+ customer_url: string;
2619
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
2620
+ run_async?: boolean;
2621
+ };
2622
+ headers?: {
2623
+ "X-Target-Org-Id"?: string | null;
2624
+ };
2625
+ };
2626
+ output: ApiResponse_VoicePayload_;
2627
+ };
2628
+ /**
2629
+ * GET /voice/research/faq
2630
+ * FAQs extracted from a company website
2631
+ * tier: billable · scope: voice:run
2632
+ */
2633
+ research_faq_voice_research_faq_get: {
2634
+ input: {
2635
+ query: {
2636
+ /** The company website to work from. */
2637
+ customer_url: string;
2638
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
2639
+ run_async?: boolean;
2640
+ };
2641
+ headers?: {
2642
+ "X-Target-Org-Id"?: string | null;
2643
+ };
2644
+ };
2645
+ output: ApiResponse_VoicePayload_;
2646
+ };
2647
+ /**
2648
+ * GET /voice/research/keywords
2649
+ * Search keywords and paid-search data for a company
2650
+ * tier: billable · scope: voice:run
2651
+ */
2652
+ research_keywords_voice_research_keywords_get: {
2653
+ input: {
2654
+ query: {
2655
+ /** The company website to work from. */
2656
+ customer_url: string;
2657
+ /** True returns a job id immediately (202) instead of waiting. Poll `GET /voice/jobs/{job_id}` for the result. */
2658
+ run_async?: boolean;
2659
+ };
2660
+ headers?: {
2661
+ "X-Target-Org-Id"?: string | null;
2662
+ };
2663
+ };
2664
+ output: ApiResponse_VoicePayload_;
2665
+ };
2666
+ /**
2667
+ * POST /voice/research/org-chart
2668
+ * Research a company's org chart
2669
+ * tier: billable · scope: voice:run
2670
+ */
2671
+ research_org_chart_voice_research_org_chart_post: {
2672
+ input: {
2673
+ headers?: {
2674
+ "X-Target-Org-Id"?: string | null;
2675
+ };
2676
+ body: Body_research_org_chart_voice_research_org_chart_post;
2677
+ };
2678
+ output: ApiResponse_VoicePayload_;
2679
+ };
2680
+ /**
2681
+ * GET /voice/research/prospect-company
2682
+ * Competitor and signal profile for a prospect's company
2683
+ * tier: billable · scope: voice:run
2684
+ */
2685
+ research_prospect_company_voice_research_prospect_company_get: {
2686
+ input: {
2687
+ query: {
2688
+ /** Prospect's company name. */
2689
+ company_name: string;
2690
+ /** Prospect's company website. */
2691
+ company_website: string;
2692
+ /** What the company does, if known. */
2693
+ company_description?: string;
2694
+ };
2695
+ headers?: {
2696
+ "X-Target-Org-Id"?: string | null;
2697
+ };
2698
+ };
2699
+ output: ApiResponse_VoicePayload_;
2700
+ };
2701
+ /**
2702
+ * POST /voice/research/prospect-data
2703
+ * Extract prospect data from a form submission
2704
+ * tier: billable · scope: voice:run
2705
+ */
2706
+ research_prospect_data_voice_research_prospect_data_post: {
2707
+ input: {
2708
+ headers?: {
2709
+ "X-Target-Org-Id"?: string | null;
2710
+ };
2711
+ body: Record<string, unknown>;
2712
+ };
2713
+ output: ApiResponse_VoicePayload_;
2714
+ };
2715
+ /**
2716
+ * POST /voice/research/prospect-profile
2717
+ * Generate a full prospect profile
2718
+ * tier: billable · scope: voice:run
2719
+ */
2720
+ research_prospect_profile_voice_research_prospect_profile_post: {
2721
+ input: {
2722
+ headers?: {
2723
+ "X-Target-Org-Id"?: string | null;
2724
+ };
2725
+ body: Record<string, unknown>;
2726
+ };
2727
+ output: ApiResponse_VoicePayload_;
2728
+ };
2729
+ /**
2730
+ * POST /voice/dialer/sessions/{session_id}/resume
2731
+ * Resume a paused parallel-dialer session by auto-fetching next batch
2732
+ * tier: external · scope: voice:run
2733
+ */
2734
+ resume_dialer_session_voice_dialer_sessions__session_id__resume_post: {
2735
+ input: {
2736
+ path: {
2737
+ /** Session UUID. */
2738
+ session_id: string;
2739
+ };
2740
+ headers?: {
2741
+ "X-Target-Org-Id"?: string | null;
2742
+ };
2743
+ body?: DialerSessionResumeRequest;
2744
+ };
2745
+ output: ApiResponse_DialerSessionResumeResponse_;
2746
+ };
2747
+ /**
2748
+ * POST /voice/agents/{agent_id}/test
2749
+ * Dry-run one case, saved or ad-hoc
2750
+ * tier: write · scope: voice:write
2751
+ */
2752
+ run_agent_test_voice_agents__agent_id__test_post: {
2753
+ input: {
2754
+ path: {
2755
+ /** Voice agent id. */
2756
+ agent_id: string;
2757
+ };
2758
+ headers?: {
2759
+ "X-Target-Org-Id"?: string | null;
2760
+ };
2761
+ body: AgentTestRun;
2762
+ };
2763
+ output: ApiResponse_VoicePayload_;
2764
+ };
2765
+ /**
2766
+ * POST /voice/agents/{agent_id}/test/run-all
2767
+ * Regression run: every saved case, plus the activation gate
2768
+ * tier: write · scope: voice:write
2769
+ */
2770
+ run_all_agent_tests_voice_agents__agent_id__test_run_all_post: {
2771
+ input: {
2772
+ path: {
2773
+ /** Voice agent id. */
2774
+ agent_id: string;
2775
+ };
2776
+ headers?: {
2777
+ "X-Target-Org-Id"?: string | null;
2778
+ };
2779
+ body?: AgentRegressionRun | null;
2780
+ };
2781
+ output: ApiResponse_VoicePayload_;
2782
+ };
2783
+ /**
2784
+ * POST /voice/campaigns/onboarding/threads/actions
2785
+ * Run an action the onboarding agent proposed
2786
+ * tier: billable · scope: voice:run
2787
+ */
2788
+ run_onboarding_thread_action_voice_campaigns_onboarding_threads_actions_post: {
2789
+ input: {
2790
+ headers?: {
2791
+ "X-Target-Org-Id"?: string | null;
2792
+ };
2793
+ body: Record<string, unknown>;
2794
+ };
2795
+ output: ApiResponse_VoicePayload_;
2796
+ };
2797
+ /**
2798
+ * POST /voice/collections/{collection_id}/scrape-sources/{source_id}/run
2799
+ * Scrape a source now
2800
+ * tier: billable · scope: voice:run
2801
+ */
2802
+ run_scrape_source_voice_collections__collection_id__scrape_sources__source_id__run_post: {
2803
+ input: {
2804
+ path: {
2805
+ /** Collection id. */
2806
+ collection_id: number;
2807
+ /** Scrape source id. */
2808
+ source_id: number;
2809
+ };
2810
+ headers?: {
2811
+ "X-Target-Org-Id"?: string | null;
2812
+ };
2813
+ };
2814
+ output: ApiResponse_VoicePayload_;
2815
+ };
2816
+ /**
2817
+ * POST /voice/agents/{agent_id}/save-as-template
2818
+ * Save an agent as a reusable template
2819
+ * tier: write · scope: voice:write
2820
+ */
2821
+ save_agent_as_template_voice_agents__agent_id__save_as_template_post: {
2822
+ input: {
2823
+ path: {
2824
+ /** The agent to templatise. */
2825
+ agent_id: string;
2826
+ };
2827
+ query?: {
2828
+ /** Template name. Defaults to the agent's own name. */
2829
+ template_name?: string | null;
2830
+ };
2831
+ headers?: {
2832
+ "X-Target-Org-Id"?: string | null;
2833
+ };
2834
+ };
2835
+ output: ApiResponse_VoicePayload_;
2836
+ };
2837
+ /**
2838
+ * POST /voice/agents/{agent_id}/documents/search
2839
+ * Search an agent's documents
2840
+ * tier: read · scope: voice:read
2841
+ */
2842
+ search_agent_documents_voice_agents__agent_id__documents_search_post: {
2843
+ input: {
2844
+ path: {
2845
+ /** Voice agent id. */
2846
+ agent_id: string;
2847
+ };
2848
+ headers?: {
2849
+ "X-Target-Org-Id"?: string | null;
2850
+ };
2851
+ body: AgentDocumentSearch;
2852
+ };
2853
+ output: ApiResponse_VoicePayload_;
2854
+ };
2855
+ /**
2856
+ * POST /voice/call-results/search
2857
+ * Search call results
2858
+ * tier: read · scope: voice:read
2859
+ */
2860
+ search_call_results_voice_call_results_search_post: {
2861
+ input: {
2862
+ headers?: {
2863
+ "X-Target-Org-Id"?: string | null;
2864
+ };
2865
+ body?: Record<string, unknown>;
2866
+ };
2867
+ output: ApiResponse_VoiceListPayload_;
2868
+ };
2869
+ /**
2870
+ * POST /voice/chats/search
2871
+ * Search web-chat conversations
2872
+ * tier: read · scope: voice:read
2873
+ */
2874
+ search_chats_voice_chats_search_post: {
2875
+ input: {
2876
+ headers?: {
2877
+ "X-Target-Org-Id"?: string | null;
2878
+ };
2879
+ body?: Record<string, unknown>;
2880
+ };
2881
+ output: ApiResponse_VoiceListPayload_;
2882
+ };
2883
+ /**
2884
+ * POST /voice/collections/search
2885
+ * Search across collections
2886
+ * tier: read · scope: voice:read
2887
+ */
2888
+ search_collections_voice_collections_search_post: {
2889
+ input: {
2890
+ headers?: {
2891
+ "X-Target-Org-Id"?: string | null;
2892
+ };
2893
+ body: CollectionSearch;
2894
+ };
2895
+ output: ApiResponse_VoicePayload_;
2896
+ };
2897
+ /**
2898
+ * POST /voice/chat-agent/messages
2899
+ * Send a message to the chat agent
2900
+ * tier: billable · scope: voice:run
2901
+ */
2902
+ send_chat_agent_message_voice_chat_agent_messages_post: {
2903
+ input: {
2904
+ headers?: {
2905
+ "X-Target-Org-Id"?: string | null;
2906
+ };
2907
+ body: Record<string, unknown>;
2908
+ };
2909
+ output: ApiResponse_VoicePayload_;
2910
+ };
2911
+ /**
2912
+ * POST /voice/campaigns/onboarding/messages
2913
+ * Talk to the campaign onboarding agent
2914
+ * tier: billable · scope: voice:run
2915
+ */
2916
+ send_onboarding_message_voice_campaigns_onboarding_messages_post: {
2917
+ input: {
2918
+ headers?: {
2919
+ "X-Target-Org-Id"?: string | null;
2920
+ };
2921
+ body: Record<string, unknown>;
2922
+ };
2923
+ output: ApiResponse_VoicePayload_;
2924
+ };
2925
+ /**
2926
+ * POST /voice/receptionist/messages
2927
+ * Send a text message to the receptionist
2928
+ * tier: billable · scope: voice:run
2929
+ */
2930
+ send_receptionist_message_voice_receptionist_messages_post: {
2931
+ input: {
2932
+ headers?: {
2933
+ "X-Target-Org-Id"?: string | null;
2934
+ };
2935
+ body: Record<string, unknown>;
2936
+ };
2937
+ output: ApiResponse_VoicePayload_;
2938
+ };
2939
+ /**
2940
+ * POST /voice/agents/global-settings
2941
+ * Set org-wide inbound call defaults
2942
+ * tier: write · scope: voice:write
2943
+ */
2944
+ set_agent_global_settings_voice_agents_global_settings_post: {
2945
+ input: {
2946
+ headers?: {
2947
+ "X-Target-Org-Id"?: string | null;
2948
+ };
2949
+ body: Record<string, unknown>;
2950
+ };
2951
+ output: ApiResponse_VoicePayload_;
2952
+ };
2953
+ /**
2954
+ * POST /voice/voice-library/onboarding-voice
2955
+ * Replace the organisation's onboarding voice
2956
+ * tier: billable · scope: voice:run
2957
+ */
2958
+ set_onboarding_voice_voice_voice_library_onboarding_voice_post: {
2959
+ input: {
2960
+ headers?: {
2961
+ "X-Target-Org-Id"?: string | null;
2962
+ };
2963
+ };
2964
+ output: ApiResponse_VoicePayload_;
2965
+ };
2966
+ /**
2967
+ * POST /voice/calls
2968
+ * Dispatch one ad-hoc AI-agent call to a raw number
2969
+ * tier: external · scope: voice:run
2970
+ */
2971
+ start_voice_call_voice_calls_post: {
2972
+ input: {
2973
+ headers?: {
2974
+ "X-Target-Org-Id"?: string | null;
2975
+ };
2976
+ body: VoiceCallStartRequest;
2977
+ };
2978
+ output: ApiResponse_VoiceCallStartResponse_;
2979
+ };
2980
+ /**
2981
+ * POST /dialer/sessions/{session_id}/stop
2982
+ * Stop a dialer session
2983
+ * tier: write · scope: voice:write
2984
+ */
2985
+ stop_dialer_session_dialer_sessions__session_id__stop_post: {
2986
+ input: {
2987
+ path: {
2988
+ /** Dialer session id. */
2989
+ session_id: string;
2990
+ };
2991
+ headers?: {
2992
+ "X-Target-Org-Id"?: string | null;
2993
+ };
2994
+ };
2995
+ output: ApiResponse_VoicePayload_;
2996
+ };
2997
+ /**
2998
+ * POST /voice/campaigns/memory
2999
+ * Record past campaign history for a contact
3000
+ * tier: write · scope: voice:write
3001
+ */
3002
+ store_campaign_memory_voice_campaigns_memory_post: {
3003
+ input: {
3004
+ headers?: {
3005
+ "X-Target-Org-Id"?: string | null;
3006
+ };
3007
+ body: Body_store_campaign_memory_voice_campaigns_memory_post;
3008
+ };
3009
+ output: ApiResponse_VoicePayload_;
3010
+ };
3011
+ /**
3012
+ * POST /voice/collections/{collection_id}/sync
3013
+ * Reconcile a collection's records with its stored files
3014
+ * tier: write · scope: voice:write
3015
+ */
3016
+ sync_collection_voice_collections__collection_id__sync_post: {
3017
+ input: {
3018
+ path: {
3019
+ /** Collection id. */
3020
+ collection_id: number;
3021
+ };
3022
+ query?: {
3023
+ /** Report what would change without changing it. */
3024
+ dry_run?: boolean;
3025
+ };
3026
+ headers?: {
3027
+ "X-Target-Org-Id"?: string | null;
3028
+ };
3029
+ };
3030
+ output: ApiResponse_VoicePayload_;
3031
+ };
3032
+ /**
3033
+ * POST /voice/mcp-servers/{mcp_server_id}/test
3034
+ * Test the connection to a saved MCP server
3035
+ * tier: external · scope: voice:run
3036
+ */
3037
+ test_mcp_server_voice_mcp_servers__mcp_server_id__test_post: {
3038
+ input: {
3039
+ path: {
3040
+ /** Saved MCP server id. */
3041
+ mcp_server_id: string;
3042
+ };
3043
+ headers?: {
3044
+ "X-Target-Org-Id"?: string | null;
3045
+ };
3046
+ };
3047
+ output: ApiResponse_VoicePayload_;
3048
+ };
3049
+ /**
3050
+ * PATCH /voice/agents/receptionist
3051
+ * Turn the receptionist on or off
3052
+ * tier: write · scope: voice:write
3053
+ */
3054
+ toggle_receptionist_agent_voice_agents_receptionist_patch: {
3055
+ input: {
3056
+ query: {
3057
+ /** Explicit, not a toggle: a retried request is idempotent instead of flipping the receptionist back on. */
3058
+ enabled: boolean;
3059
+ };
3060
+ headers?: {
3061
+ "X-Target-Org-Id"?: string | null;
3062
+ };
3063
+ };
3064
+ output: ApiResponse_VoicePayload_;
3065
+ };
3066
+ /**
3067
+ * POST /voice/call-flow-examples/transcribe
3068
+ * Transcribe a recorded call into the org's call-flow example
3069
+ * tier: billable · scope: voice:run
3070
+ */
3071
+ transcribe_call_flow_example_voice_call_flow_examples_transcribe_post: {
3072
+ input: {
3073
+ query?: {
3074
+ /** Language spoken in the recording. */
3075
+ language?: string;
3076
+ };
3077
+ headers?: {
3078
+ "X-Target-Org-Id"?: string | null;
3079
+ };
3080
+ };
3081
+ output: ApiResponse_VoicePayload_;
3082
+ };
3083
+ /**
3084
+ * POST /voice/chat-agent/conversations/{chat_id}/transfer-to-human
3085
+ * Hand a chat agent conversation to a person
3086
+ * tier: write · scope: voice:write
3087
+ */
3088
+ transfer_chat_agent_conversation_voice_chat_agent_conversations__chat_id__transfer_to_human_post: {
3089
+ input: {
3090
+ path: {
3091
+ /** Conversation id. */
3092
+ chat_id: string;
3093
+ };
3094
+ headers?: {
3095
+ "X-Target-Org-Id"?: string | null;
3096
+ };
3097
+ };
3098
+ output: ApiResponse_VoicePayload_;
3099
+ };
3100
+ /**
3101
+ * POST /voice/agents/{agent_id}/memory
3102
+ * Record a conversation into an agent's memory of a contact
3103
+ * tier: write · scope: voice:write
3104
+ */
3105
+ update_agent_memory_voice_agents__agent_id__memory_post: {
3106
+ input: {
3107
+ path: {
3108
+ /** The agent doing the remembering. */
3109
+ agent_id: string;
3110
+ };
3111
+ headers?: {
3112
+ "X-Target-Org-Id"?: string | null;
3113
+ };
3114
+ body: Body_update_agent_memory_voice_agents__agent_id__memory_post;
3115
+ };
3116
+ output: ApiResponse_VoicePayload_;
3117
+ };
3118
+ /**
3119
+ * PUT /voice/agents/{agent_id}/test-cases/{test_case_id}
3120
+ * Edit a saved case
3121
+ * tier: write · scope: voice:write
3122
+ */
3123
+ update_agent_test_case_voice_agents__agent_id__test_cases__test_case_id__put: {
3124
+ input: {
3125
+ path: {
3126
+ /** Voice agent id. */
3127
+ agent_id: string;
3128
+ /** Saved test case id. */
3129
+ test_case_id: string;
3130
+ };
3131
+ headers?: {
3132
+ "X-Target-Org-Id"?: string | null;
3133
+ };
3134
+ body: AgentTestCaseUpdate;
3135
+ };
3136
+ output: ApiResponse_VoicePayload_;
3137
+ };
3138
+ /**
3139
+ * PUT /voice/collections/{collection_id}
3140
+ * Rename or re-describe a collection
3141
+ * tier: write · scope: voice:write
3142
+ */
3143
+ update_collection_voice_collections__collection_id__put: {
3144
+ input: {
3145
+ path: {
3146
+ /** Collection id. */
3147
+ collection_id: number;
3148
+ };
3149
+ headers?: {
3150
+ "X-Target-Org-Id"?: string | null;
3151
+ };
3152
+ body: CollectionUpdateRequest;
3153
+ };
3154
+ output: ApiResponse_VoicePayload_;
3155
+ };
3156
+ /**
3157
+ * PUT /voice/company-knowledge
3158
+ * Update the organisation's company knowledge
3159
+ * tier: write · scope: voice:write
3160
+ */
3161
+ update_company_knowledge_voice_company_knowledge_put: {
3162
+ input: {
3163
+ headers?: {
3164
+ "X-Target-Org-Id"?: string | null;
3165
+ };
3166
+ body: Record<string, unknown>;
3167
+ };
3168
+ output: ApiResponse_VoicePayload_;
3169
+ };
3170
+ /**
3171
+ * PATCH /voice/dialer/sessions/{session_id}/status
3172
+ * Pause, resume, or stop a parallel-dialer session
3173
+ * tier: external · scope: voice:run
3174
+ */
3175
+ update_dialer_session_status_voice_dialer_sessions__session_id__status_patch: {
3176
+ input: {
3177
+ path: {
3178
+ /** Session UUID. */
3179
+ session_id: string;
3180
+ };
3181
+ headers?: {
3182
+ "X-Target-Org-Id"?: string | null;
3183
+ };
3184
+ body: DialerSessionStatusUpdateRequest;
3185
+ };
3186
+ output: ApiResponse_DialerSessionStatusUpdateResponse_;
3187
+ };
3188
+ /**
3189
+ * PUT /dialer/settings
3190
+ * Change a rep's dialer settings
3191
+ * tier: write · scope: voice:write
3192
+ */
3193
+ update_dialer_settings_dialer_settings_put: {
3194
+ input: {
3195
+ headers?: {
3196
+ "X-Target-Org-Id"?: string | null;
3197
+ };
3198
+ body: DialerSettingsUpdate;
3199
+ };
3200
+ output: ApiResponse_VoicePayload_;
3201
+ };
3202
+ /**
3203
+ * PATCH /voice/inbound-routing/rules/{route_id}
3204
+ * Update an inbound routing rule
3205
+ * tier: write · scope: voice:write
3206
+ */
3207
+ update_inbound_route_voice_inbound_routing_rules__route_id__patch: {
3208
+ input: {
3209
+ path: {
3210
+ /** Rule id. */
3211
+ route_id: number;
3212
+ };
3213
+ headers?: {
3214
+ "X-Target-Org-Id"?: string | null;
3215
+ };
3216
+ body: InboundRouteUpdateRequest;
3217
+ };
3218
+ output: ApiResponse_VoicePayload_;
3219
+ };
3220
+ /**
3221
+ * PUT /voice/mcp-servers/{mcp_server_id}
3222
+ * Update an MCP server
3223
+ * tier: write · scope: voice:write
3224
+ */
3225
+ update_mcp_server_voice_mcp_servers__mcp_server_id__put: {
3226
+ input: {
3227
+ path: {
3228
+ /** MCP server id. */
3229
+ mcp_server_id: string;
3230
+ };
3231
+ headers?: {
3232
+ "X-Target-Org-Id"?: string | null;
3233
+ };
3234
+ body: McpServerUpdateRequest;
3235
+ };
3236
+ output: ApiResponse_VoicePayload_;
3237
+ };
3238
+ /**
3239
+ * PUT /voice/phone-directory/{entry_id}
3240
+ * Edit a directory entry
3241
+ * tier: write · scope: voice:write
3242
+ */
3243
+ update_phone_directory_entry_voice_phone_directory__entry_id__put: {
3244
+ input: {
3245
+ path: {
3246
+ /** Directory entry id. */
3247
+ entry_id: number;
3248
+ };
3249
+ headers?: {
3250
+ "X-Target-Org-Id"?: string | null;
3251
+ };
3252
+ body: PhoneDirectoryEntryUpdate;
3253
+ };
3254
+ output: ApiResponse_VoicePayload_;
3255
+ };
3256
+ /**
3257
+ * PATCH /voice/collections/{collection_id}/scrape-sources/{source_id}
3258
+ * Change a web source's cadence, ceiling, or pause it
3259
+ * tier: write · scope: voice:write
3260
+ */
3261
+ update_scrape_source_voice_collections__collection_id__scrape_sources__source_id__patch: {
3262
+ input: {
3263
+ path: {
3264
+ /** Collection id. */
3265
+ collection_id: number;
3266
+ /** Scrape source id. */
3267
+ source_id: number;
3268
+ };
3269
+ headers?: {
3270
+ "X-Target-Org-Id"?: string | null;
3271
+ };
3272
+ body: ScrapeSourceUpdateRequest;
3273
+ };
3274
+ output: ApiResponse_VoicePayload_;
3275
+ };
3276
+ /**
3277
+ * PUT /voice/twins/{agent_id}
3278
+ * Edit a twin, optionally with a new writing-style document
3279
+ * tier: write · scope: voice:write
3280
+ */
3281
+ update_twin_voice_twins__agent_id__put: {
3282
+ input: {
3283
+ path: {
3284
+ /** Twin agent id. */
3285
+ agent_id: string;
3286
+ };
3287
+ headers?: {
3288
+ "X-Target-Org-Id"?: string | null;
3289
+ };
3290
+ };
3291
+ output: ApiResponse_VoicePayload_;
3292
+ };
3293
+ /**
3294
+ * PUT /voice/agents/{agent_id}
3295
+ * Update a voice agent or twin
3296
+ * tier: write · scope: voice:write
3297
+ */
3298
+ update_voice_agent_voice_agents__agent_id__put: {
3299
+ input: {
3300
+ path: {
3301
+ /** Agent UUID. */
3302
+ agent_id: string;
3303
+ };
3304
+ headers?: {
3305
+ "X-Target-Org-Id"?: string | null;
3306
+ };
3307
+ body: VoiceAgentUpdateRequest;
3308
+ };
3309
+ output: ApiResponse_VoiceAgentResponse_;
3310
+ };
3311
+ /**
3312
+ * PATCH /voice/dispositions/{disposition_id}
3313
+ * Edit a custom call disposition
3314
+ * tier: external · scope: voice:run
3315
+ */
3316
+ update_voice_disposition_voice_dispositions__disposition_id__patch: {
3317
+ input: {
3318
+ path: {
3319
+ /** Custom disposition id. */
3320
+ disposition_id: number;
3321
+ };
3322
+ headers?: {
3323
+ "X-Target-Org-Id"?: string | null;
3324
+ };
3325
+ body: VoiceCustomDispositionUpdateRequest;
3326
+ };
3327
+ output: ApiResponse_VoiceCustomDispositionItem_;
3328
+ };
3329
+ /**
3330
+ * POST /voice/agents/{agent_id}/documents/upload
3331
+ * Upload documents into an agent's own vector store
3332
+ * tier: billable · scope: voice:run
3333
+ */
3334
+ upload_agent_documents_voice_agents__agent_id__documents_upload_post: {
3335
+ input: {
3336
+ path: {
3337
+ /** Voice agent id. */
3338
+ agent_id: string;
3339
+ };
3340
+ headers?: {
3341
+ "X-Target-Org-Id"?: string | null;
3342
+ };
3343
+ };
3344
+ output: ApiResponse_VoicePayload_;
3345
+ };
3346
+ /**
3347
+ * POST /voice/collections/{collection_id}/files/upload
3348
+ * Upload one file into a collection
3349
+ * tier: billable · scope: voice:run
3350
+ */
3351
+ upload_collection_file_voice_collections__collection_id__files_upload_post: {
3352
+ input: {
3353
+ path: {
3354
+ /** Collection id. */
3355
+ collection_id: number;
3356
+ };
3357
+ headers?: {
3358
+ "X-Target-Org-Id"?: string | null;
3359
+ };
3360
+ };
3361
+ output: ApiResponse_VoicePayload_;
3362
+ };
3363
+ /**
3364
+ * POST /voice/collections/{collection_id}/files/upload-multiple
3365
+ * Upload several files into a collection
3366
+ * tier: billable · scope: voice:run
3367
+ */
3368
+ upload_collection_files_voice_collections__collection_id__files_upload_multiple_post: {
3369
+ input: {
3370
+ path: {
3371
+ /** Collection id. */
3372
+ collection_id: number;
3373
+ };
3374
+ headers?: {
3375
+ "X-Target-Org-Id"?: string | null;
3376
+ };
3377
+ };
3378
+ output: ApiResponse_VoicePayload_;
3379
+ };
3380
+ /**
3381
+ * POST /voice/knowledge-base/files/upload
3382
+ * Upload a file to the org-wide knowledge base
3383
+ * tier: billable · scope: voice:run
3384
+ */
3385
+ upload_knowledge_base_file_voice_knowledge_base_files_upload_post: {
3386
+ input: {
3387
+ headers?: {
3388
+ "X-Target-Org-Id"?: string | null;
3389
+ };
3390
+ };
3391
+ output: ApiResponse_VoicePayload_;
3392
+ };
3393
+ /**
3394
+ * POST /voice/video-recordings/upload
3395
+ * Upload a video recording for transcription
3396
+ * tier: billable · scope: voice:run
3397
+ */
3398
+ upload_video_recording_voice_video_recordings_upload_post: {
3399
+ input: {
3400
+ headers?: {
3401
+ "X-Target-Org-Id"?: string | null;
3402
+ };
3403
+ };
3404
+ output: ApiResponse_VoicePayload_;
3405
+ };
3406
+ /**
3407
+ * PUT /voice/inbound-routing/business-hours
3408
+ * Set the business-hours schedule for a number
3409
+ * tier: write · scope: voice:write
3410
+ */
3411
+ upsert_business_hours_voice_inbound_routing_business_hours_put: {
3412
+ input: {
3413
+ headers?: {
3414
+ "X-Target-Org-Id"?: string | null;
3415
+ };
3416
+ body: BusinessHoursScheduleRequest;
3417
+ };
3418
+ output: ApiResponse_VoicePayload_;
3419
+ };
3420
+ }
3421
+
3422
+ // 97 schemas referenced above (the same as G8Contract.<Name>).
3423
+
3424
+ /**
3425
+ * voice binds `query` and `top_k` as FORM fields beside `org_id` and
3426
+ * `agent_id`; the router re-encodes this body as form data.
3427
+ */
3428
+ export interface AgentDocumentSearch {
3429
+ query: string;
3430
+ top_k?: number;
3431
+ }
3432
+
3433
+ export interface AgentRegressionRun {
3434
+ /** Attribution; defaults to the key's identity. */
3435
+ triggered_by?: string | null;
3436
+ }
3437
+
3438
+ /**
3439
+ * A saved evaluation case: the user turn under test and what must hold.
3440
+ *
3441
+ * `llm_judge` may be SAVED but is skipped by dry runs - a judge needs a real
3442
+ * completion, and a dry run never calls a model.
3443
+ */
3444
+ export interface AgentTestCaseCreate {
3445
+ /** Assertion options: target (resolved_instructions | tool_names | grounding_sources), case_sensitive, tool, collection_id, capability_tools, refusal_markers. */
3446
+ assertion_config?: Record<string, unknown> | null;
3447
+ assertion_type?: "exact" | "contains" | "not_contains" | "expects_tool" | "refuses" | "cites_collection" | "llm_judge";
3448
+ /** Selects the per-channel instructions. */
3449
+ channel?: "chat" | "inbound" | "outbound";
3450
+ /** Attribution; defaults to the key's identity. */
3451
+ created_by?: string | null;
3452
+ /** What the assertion compares against; a tool name or list for expects_tool. */
3453
+ expected_output?: unknown | null;
3454
+ /** Surrounding facts held constant (prior turns, contact, company). */
3455
+ input_context?: Record<string, unknown> | null;
3456
+ /** The user turn under test. */
3457
+ input_message: string;
3458
+ name: string;
3459
+ }
3460
+
3461
+ export interface AgentTestCaseUpdate {
3462
+ assertion_config?: Record<string, unknown> | null;
3463
+ assertion_type?: ("exact" | "contains" | "not_contains" | "expects_tool" | "refuses" | "cites_collection" | "llm_judge") | null;
3464
+ channel?: ("chat" | "inbound" | "outbound") | null;
3465
+ expected_output?: unknown | null;
3466
+ input_context?: Record<string, unknown> | null;
3467
+ input_message?: string | null;
3468
+ name?: string | null;
3469
+ }
3470
+
3471
+ /**
3472
+ * One dry run. Exactly one source: `test_case_id` (a saved case) or
3473
+ * `input_message` (ad-hoc). Never calls a model, never places a call, never
3474
+ * sends a message - it resolves what the agent WOULD receive and reach for.
3475
+ */
3476
+ export interface AgentTestRun {
3477
+ assertion_config?: Record<string, unknown> | null;
3478
+ assertion_type?: ("exact" | "contains" | "not_contains" | "expects_tool" | "refuses" | "cites_collection" | "llm_judge") | null;
3479
+ channel?: ("chat" | "inbound" | "outbound") | null;
3480
+ expected_output?: unknown | null;
3481
+ input_context?: Record<string, unknown> | null;
3482
+ input_message?: string | null;
3483
+ /** preview | dry_run - both resolve configuration only. */
3484
+ mode?: ("preview" | "dry_run") | null;
3485
+ test_case_id?: string | null;
3486
+ triggered_by?: string | null;
3487
+ }
3488
+
3489
+ export interface ApiResponse_CallGradingResponse_ {
3490
+ data: CallGradingResponse;
3491
+ pagination?: PaginationMeta | null;
3492
+ }
3493
+
3494
+ export interface ApiResponse_CallTranscriptResponse_ {
3495
+ data: CallTranscriptResponse;
3496
+ pagination?: PaginationMeta | null;
3497
+ }
3498
+
3499
+ export interface ApiResponse_CallsListResponse_ {
3500
+ data: CallsListResponse;
3501
+ pagination?: PaginationMeta | null;
3502
+ }
3503
+
3504
+ export interface ApiResponse_DialerAgentsListResponse_ {
3505
+ data: DialerAgentsListResponse;
3506
+ pagination?: PaginationMeta | null;
3507
+ }
3508
+
3509
+ export interface ApiResponse_DialerNumbersListResponse_ {
3510
+ data: DialerNumbersListResponse;
3511
+ pagination?: PaginationMeta | null;
3512
+ }
3513
+
3514
+ export interface ApiResponse_DialerSessionCreateResponse_ {
3515
+ data: DialerSessionCreateResponse;
3516
+ pagination?: PaginationMeta | null;
3517
+ }
3518
+
3519
+ export interface ApiResponse_DialerSessionResumeResponse_ {
3520
+ data: DialerSessionResumeResponse;
3521
+ pagination?: PaginationMeta | null;
3522
+ }
3523
+
3524
+ export interface ApiResponse_DialerSessionStatusUpdateResponse_ {
3525
+ data: DialerSessionStatusUpdateResponse;
3526
+ pagination?: PaginationMeta | null;
3527
+ }
3528
+
3529
+ export interface ApiResponse_DialerSessionsListResponse_ {
3530
+ data: DialerSessionsListResponse;
3531
+ pagination?: PaginationMeta | null;
3532
+ }
3533
+
3534
+ export interface ApiResponse_DialerStatsResponse_ {
3535
+ data: DialerStatsResponse;
3536
+ pagination?: PaginationMeta | null;
3537
+ }
3538
+
3539
+ export interface ApiResponse_MissedCallbacksResponse_ {
3540
+ data: MissedCallbacksResponse;
3541
+ pagination?: PaginationMeta | null;
3542
+ }
3543
+
3544
+ export interface ApiResponse_VoiceAgentListResponse_ {
3545
+ data: VoiceAgentListResponse;
3546
+ pagination?: PaginationMeta | null;
3547
+ }
3548
+
3549
+ export interface ApiResponse_VoiceAgentResponse_ {
3550
+ data: VoiceAgentResponse;
3551
+ pagination?: PaginationMeta | null;
3552
+ }
3553
+
3554
+ export interface ApiResponse_VoiceCallStartResponse_ {
3555
+ data: VoiceCallStartResponse;
3556
+ pagination?: PaginationMeta | null;
3557
+ }
3558
+
3559
+ export interface ApiResponse_VoiceCustomDispositionItem_ {
3560
+ data: VoiceCustomDispositionItem;
3561
+ pagination?: PaginationMeta | null;
3562
+ }
3563
+
3564
+ export interface ApiResponse_VoiceDispositionListResponse_ {
3565
+ data: VoiceDispositionListResponse;
3566
+ pagination?: PaginationMeta | null;
3567
+ }
3568
+
3569
+ export interface ApiResponse_VoiceListPayload_ {
3570
+ data: VoiceListPayload;
3571
+ pagination?: PaginationMeta | null;
3572
+ }
3573
+
3574
+ export interface ApiResponse_VoicePayload_ {
3575
+ data: VoicePayload;
3576
+ pagination?: PaginationMeta | null;
3577
+ }
3578
+
3579
+ /** voice `BatchEmailRequest`: one compose or respond job inside a batch. */
3580
+ export interface BatchEmailItem {
3581
+ /** Instructions for either kind. */
3582
+ context?: string | null;
3583
+ /** respond: the body being answered. */
3584
+ email_to_respond_body?: string | null;
3585
+ /** respond: the subject being answered. */
3586
+ email_to_respond_subject?: string | null;
3587
+ /** compose: the register. */
3588
+ email_type?: string | null;
3589
+ /** compose: who it is to. */
3590
+ recipient_info?: string | null;
3591
+ /** respond: the register. */
3592
+ response_type?: string | null;
3593
+ /** respond: who sent it. */
3594
+ sender_info?: string | null;
3595
+ /** respond: earlier messages. */
3596
+ thread_emails?: Array<EmailThreadMessage> | null;
3597
+ /** respond: the thread id. */
3598
+ thread_id?: string | null;
3599
+ /** compose a new email, or respond to one. */
3600
+ type: "compose" | "respond";
3601
+ }
3602
+
3603
+ /** voice `BatchEmailProcessingRequest`, without `org_id` / `agent_settings`. */
3604
+ export interface BatchEmailProcessing {
3605
+ agent_id: string;
3606
+ contact_id: string;
3607
+ emails: Array<BatchEmailItem>;
3608
+ /** openai: gpt-4o or gpt-4o-mini. anthropic: claude-sonnet-4-6, claude-haiku-4-5-20251001 or claude-opus-4-6. Voice rejects any other pairing with a 422. */
3609
+ model?: string;
3610
+ /** LLM provider. */
3611
+ provider?: "openai" | "anthropic" | "openrouter";
3612
+ }
3613
+
3614
+ export interface Body_attach_skills_to_agent_voice_agents__agent_id__skills_post {
3615
+ /** Skill `action_id`s. Additive - existing skills are kept. */
3616
+ action_ids: Array<unknown>;
3617
+ }
3618
+
3619
+ export interface Body_clone_agent_voice_agents_clone_post {
3620
+ /** Override: "agent" or "twin". */
3621
+ entity_type?: string | null;
3622
+ /** Id for the copy. Generated when omitted. */
3623
+ new_agent_id?: string | null;
3624
+ /** Name for the copy. */
3625
+ new_agent_name: string;
3626
+ /** Field overrides applied to the copy. */
3627
+ overrides?: Record<string, unknown> | null;
3628
+ /** Override the role. */
3629
+ role?: string | null;
3630
+ /** Agent or template to copy. */
3631
+ source_agent_id: string;
3632
+ }
3633
+
3634
+ export interface Body_decline_inbound_call_voice_inbound_calls_decline_post {
3635
+ /** "hangup" ends the call. Voice treats anything else as a decline. */
3636
+ action?: string;
3637
+ /** The ringing call's room name. */
3638
+ room_name: string;
3639
+ }
3640
+
3641
+ export interface Body_rename_chat_agent_conversation_voice_chat_agent_conversations__chat_id__name_put {
3642
+ /** The new name. */
3643
+ name: string;
3644
+ }
3645
+
3646
+ export interface Body_research_company_voice_research_company_post {
3647
+ /** Company to research. */
3648
+ company_name: string;
3649
+ /** Company website. */
3650
+ company_url: string;
3651
+ /** False skips fetching the company's own site. */
3652
+ include_scraping?: boolean;
3653
+ /** Ceiling on sources checked. Cost scales with it. */
3654
+ max_sources?: number;
3655
+ /** How far to go. Deeper costs more. */
3656
+ research_depth?: string | null;
3657
+ /** Narrow the research to these areas. */
3658
+ specific_areas?: Array<string> | null;
3659
+ }
3660
+
3661
+ export interface Body_research_org_chart_voice_research_org_chart_post {
3662
+ /** Company to research. */
3663
+ company_name: string;
3664
+ /** Company website. */
3665
+ company_url?: string | null;
3666
+ /** Company domain, e.g. `graph8.com`. */
3667
+ domain?: string | null;
3668
+ /** False omits emails and phone numbers, which is the expensive part. */
3669
+ include_contact_info?: boolean;
3670
+ /** "basic", "standard" or "deep". Deeper costs more. */
3671
+ research_depth?: string | null;
3672
+ }
3673
+
3674
+ export interface Body_store_campaign_memory_voice_campaigns_memory_post {
3675
+ /** The contact this happened with. */
3676
+ contact_id: number;
3677
+ /** What happened, in prose. */
3678
+ content: string;
3679
+ }
3680
+
3681
+ export interface Body_update_agent_memory_voice_agents__agent_id__memory_post {
3682
+ /** Who the human side was. */
3683
+ actor?: string | null;
3684
+ /** Who the conversation was with. */
3685
+ contact_id: string;
3686
+ /** Channel: "chat", "email", "phone_call", ... */
3687
+ interaction_type?: string;
3688
+ /** Ordered messages, each `{"role": "user"|"assistant", "content": "..."}`. Oldest first. */
3689
+ interactions: Array<unknown>;
3690
+ /** Groups messages into one conversation. Generated when omitted. */
3691
+ session_id?: string | null;
3692
+ }
3693
+
3694
+ /**
3695
+ * Create or REPLACE the business-hours / after-hours pair for a number.
3696
+ *
3697
+ * This is a two-rule bulk setup, not an addition: calling it again replaces
3698
+ * both rules rather than adding more.
3699
+ */
3700
+ export interface BusinessHoursScheduleRequest {
3701
+ after_hours_target: BusinessHoursTargetRef;
3702
+ business_hours: BusinessHoursWindow;
3703
+ business_hours_target: BusinessHoursTargetRef;
3704
+ phone_number: string;
3705
+ /** IANA name (e.g. `America/New_York`). Voice rejects anything pytz cannot load. */
3706
+ timezone: string;
3707
+ }
3708
+
3709
+ /** Where a call goes in one half of the schedule. */
3710
+ export interface BusinessHoursTargetRef {
3711
+ target_id?: string | null;
3712
+ target_type: "ai_agent" | "department" | "extension" | "voicemail";
3713
+ }
3714
+
3715
+ /** The open hours themselves. */
3716
+ export interface BusinessHoursWindow {
3717
+ days: Array<"mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun">;
3718
+ /** 24h HH:MM. */
3719
+ end_time: string;
3720
+ /** 24h HH:MM. */
3721
+ start_time: string;
3722
+ }
3723
+
3724
+ /**
3725
+ * AI grading for a single dialer call.
3726
+ *
3727
+ * The ``status`` field flips to ``"pending"`` when the upstream service
3728
+ * returns 204 (grading still being computed). In that case ``grading``
3729
+ * will be empty and ``reviewed`` will be ``False``. Callers can poll
3730
+ * until ``status == "ready"``.
3731
+ */
3732
+ export interface CallGradingResponse {
3733
+ grading?: Record<string, unknown> | null;
3734
+ reviewed?: boolean;
3735
+ reviewed_at?: string | null;
3736
+ room_name: string;
3737
+ /** ready | pending */
3738
+ status?: string;
3739
+ }
3740
+
3741
+ /** voice `CallScriptGenerateRequest`, without `org_id` / `agent_settings`. */
3742
+ export interface CallScriptGenerate {
3743
+ /** The agent whose persona and knowledge shape the script. */
3744
+ agent_id: string;
3745
+ /** What the call should achieve. */
3746
+ call_objective?: string | null;
3747
+ /** professional, casual, cold_call, follow_up, demo or closing. */
3748
+ call_type?: string;
3749
+ /** What you know about the prospect's company. */
3750
+ company_context?: string | null;
3751
+ /** The contact the call is for; drives memory retrieval. */
3752
+ contact_id: string;
3753
+ /** What the call is about. */
3754
+ context: string;
3755
+ /** openai: gpt-4o or gpt-4o-mini. anthropic: claude-sonnet-4-6, claude-haiku-4-5-20251001 or claude-opus-4-6. Voice rejects any other pairing with a 422. */
3756
+ model?: string;
3757
+ /** Summary of earlier conversations. */
3758
+ previous_interactions?: string | null;
3759
+ /** What you know about the prospect. */
3760
+ prospect_info?: string | null;
3761
+ /** LLM provider. */
3762
+ provider?: "openai" | "anthropic" | "openrouter";
3763
+ }
3764
+
3765
+ /**
3766
+ * Light-weight dialer call summary returned in the dialer-call list.
3767
+ *
3768
+ * Deliberately omits the transcript blob - transcripts are 5-50 KB each
3769
+ * and including them in a list would blow caller context budget. Use
3770
+ * ``has_transcript`` to decide whether a follow-up GET to
3771
+ * ``/voice/dialer/calls/{room_name}/transcript`` is worthwhile.
3772
+ *
3773
+ * ``contact_id``, ``from_``, and ``to`` are included so client-side
3774
+ * polling consumers (SDR ingestion pipelines) can filter without an
3775
+ * extra round-trip for each row.
3776
+ */
3777
+ export interface CallSummaryRow {
3778
+ call_duration?: number | null;
3779
+ contact_id?: string | null;
3780
+ created_at?: unknown | null;
3781
+ disposition?: string | null;
3782
+ from_?: string | null;
3783
+ has_transcript?: boolean;
3784
+ parallel_session_id?: string | null;
3785
+ recording_url?: string | null;
3786
+ room_name: string;
3787
+ summary?: string | null;
3788
+ to?: string | null;
3789
+ }
3790
+
3791
+ /**
3792
+ * Full transcript payload for a single dialer call.
3793
+ *
3794
+ * Mirrors the grading response shape: ``status="ready"`` when the
3795
+ * transcript has been flushed to the database, ``status="empty"`` when
3796
+ * the call row exists but the persistor has not yet written the
3797
+ * transcript column (the call may still be in progress or the flush
3798
+ * may be in-flight). 404 is raised by the route on a missing row.
3799
+ */
3800
+ export interface CallTranscriptResponse {
3801
+ call_duration?: number | null;
3802
+ contact_id?: string | null;
3803
+ created_at?: unknown | null;
3804
+ disposition?: string | null;
3805
+ parallel_session_id?: string | null;
3806
+ recording_url?: string | null;
3807
+ room_name: string;
3808
+ /** ready | empty */
3809
+ status?: string;
3810
+ summary?: string | null;
3811
+ transcript?: Array<CallTranscriptSegment>;
3812
+ }
3813
+
3814
+ /**
3815
+ * One speaker turn in a persisted dialer transcript.
3816
+ *
3817
+ * ``speaker`` is one of ``SDR | AI | HUMAN | BOT`` (voice service does
3818
+ * not gate the value, so consumers should treat unknown values as
3819
+ * pass-through rather than rejecting the row). ``timestamp`` is the
3820
+ * voice-service-emitted ISO-8601 string and may be missing on very
3821
+ * early rows that pre-date timestamping in dialer_events.py.
3822
+ */
3823
+ export interface CallTranscriptSegment {
3824
+ content?: string | null;
3825
+ speaker?: string | null;
3826
+ timestamp?: string | null;
3827
+ }
3828
+
3829
+ /**
3830
+ * List wrapper for dialer call history.
3831
+ *
3832
+ * Used by ``GET /voice/dialer/calls`` for ALL filter variants
3833
+ * (contact_id, user_email, parallel_session_id, created_after). Echoes
3834
+ * the applied filter values back so callers can sanity-check what the
3835
+ * server actually applied (the proxy may pin org_id, normalize CRM
3836
+ * overlay IDs, etc).
3837
+ */
3838
+ export interface CallsListResponse {
3839
+ calls?: Array<CallSummaryRow>;
3840
+ contact_id?: string | null;
3841
+ count?: number;
3842
+ parallel_session_id?: string | null;
3843
+ user_email?: string | null;
3844
+ }
3845
+
3846
+ /** A new knowledge collection. Bounds mirror voice's own `Query` limits. */
3847
+ export interface CollectionCreateRequest {
3848
+ /** What this collection holds. */
3849
+ description?: string | null;
3850
+ /** Collection name. */
3851
+ name: string;
3852
+ }
3853
+
3854
+ /**
3855
+ * The folder to create. Voice binds `folder_path` as a query parameter;
3856
+ * it is a body field here so a path with slashes needs no URL escaping.
3857
+ */
3858
+ export interface CollectionFolder {
3859
+ /** e.g. `pricing/2026`. */
3860
+ folder_path: string;
3861
+ }
3862
+
3863
+ /**
3864
+ * `POST .../files/paste-text` binds its body as FORM fields (`org_id`,
3865
+ * `folder_path`, `filename`, `text_content`); this is the JSON shape the API
3866
+ * takes, with `org_id` injected from the key.
3867
+ */
3868
+ export interface CollectionPasteText {
3869
+ /** Given no extension, `.txt` is appended. */
3870
+ filename: string;
3871
+ /** Folder inside the collection. Empty is the root. */
3872
+ folder_path?: string;
3873
+ text_content: string;
3874
+ }
3875
+
3876
+ /** voice `CollectionSearchRequest`, without `org_id`. */
3877
+ export interface CollectionSearch {
3878
+ /** Collections to search (1-4 is best). */
3879
+ collection_ids: Array<number>;
3880
+ query: string;
3881
+ /** Results per collection. */
3882
+ top_k?: number;
3883
+ }
3884
+
3885
+ /** Rename or re-describe a collection. Omit a field to leave it alone. */
3886
+ export interface CollectionUpdateRequest {
3887
+ description?: string | null;
3888
+ name?: string | null;
3889
+ }
3890
+
3891
+ /**
3892
+ * One row from the agents list.
3893
+ *
3894
+ * Trimmed to the fields a chat picker needs (name, role, status, and the
3895
+ * UUID to feed back into ``create_dialer_session``). Anything else the
3896
+ * voice service returns (knowledge collections, voice/calendar) stays
3897
+ * server-side - the chat layer doesn't need it for the picker UX.
3898
+ */
3899
+ export interface DialerAgentSummary {
3900
+ /** Agent UUID - feed this into create_dialer_session. */
3901
+ agent_id: string;
3902
+ agent_name?: string | null;
3903
+ agent_status?: string | null;
3904
+ description?: string | null;
3905
+ entity_type?: string | null;
3906
+ is_template?: boolean;
3907
+ phone?: string | null;
3908
+ role?: string | null;
3909
+ }
3910
+
3911
+ /** List wrapper for the agents picker. */
3912
+ export interface DialerAgentsListResponse {
3913
+ agents?: Array<DialerAgentSummary>;
3914
+ total_count?: number;
3915
+ }
3916
+
3917
+ /** One available dialer number with its current health stats. */
3918
+ export interface DialerNumberInfo {
3919
+ assigned_to?: string | null;
3920
+ calls_7d?: number;
3921
+ calls_today?: number;
3922
+ connect_rate_7d?: number;
3923
+ created_at?: string | null;
3924
+ daily_limit?: number;
3925
+ inbound_type?: string;
3926
+ is_valid?: boolean;
3927
+ number: string;
3928
+ telephony_provider?: string;
3929
+ }
3930
+
3931
+ /**
3932
+ * List wrapper for dialer numbers.
3933
+ *
3934
+ * The voice payload includes a top-level ``daily_limit`` default; we
3935
+ * drop it from the public shape because it is per-number on each row
3936
+ * already, so re-publishing it would just confuse callers.
3937
+ */
3938
+ export interface DialerNumbersListResponse {
3939
+ numbers?: Array<DialerNumberInfo>;
3940
+ }
3941
+
3942
+ /**
3943
+ * Echo of the filters the voice service ran the report with.
3944
+ *
3945
+ * Useful for clients that need to confirm which slice they got back,
3946
+ * especially when the request omits ``date_from`` / ``date_to`` and the
3947
+ * server applies defaults.
3948
+ */
3949
+ export interface DialerReportFilters {
3950
+ aggregation?: string | null;
3951
+ date_from?: unknown | null;
3952
+ date_to?: unknown | null;
3953
+ org_id?: string | null;
3954
+ session_id?: string | null;
3955
+ user_email?: string | null;
3956
+ }
3957
+
3958
+ /**
3959
+ * One aggregated row in the analytics report.
3960
+ *
3961
+ * Schema mirrors ``ParallelDialerMetrics``. The disposition breakdown
3962
+ * is a passthrough dict so that voice-side disposition additions do
3963
+ * not require a coordinated DTO bump here.
3964
+ */
3965
+ export interface DialerReportMetric {
3966
+ avg_call_duration_minutes?: number;
3967
+ avg_calls_per_session?: number;
3968
+ connection_rate?: number;
3969
+ date?: string | null;
3970
+ dispositions?: Record<string, unknown> | null;
3971
+ list_title?: string | null;
3972
+ org_id?: string | null;
3973
+ peak_calling_hour?: number | null;
3974
+ redial_count?: number;
3975
+ redial_success_rate?: number | null;
3976
+ sdr_name?: string | null;
3977
+ success_rate?: number;
3978
+ talk_time_minutes?: number;
3979
+ total_callbacks?: number;
3980
+ total_connections?: number;
3981
+ total_dials?: number;
3982
+ total_voicemails?: number;
3983
+ unique_sessions?: number;
3984
+ voicemail_rate?: number;
3985
+ }
3986
+
3987
+ /**
3988
+ * Body for creating a parallel-dialer session in PAUSED state.
3989
+ *
3990
+ * The session is created paused so the SDR can open the dialer UI and
3991
+ * start dialing on their own time. Org and user are pinned server-side
3992
+ * from the API key - any value supplied here is ignored.
3993
+ *
3994
+ * Required: ``name``, ``from_phone``.
3995
+ * Optional: ``list_id`` / ``list_title`` (carried in session metadata),
3996
+ * ``agent_id`` (V2 agent UUID - use ``GET /voice/dialer/agents`` to look up),
3997
+ * ``studio_campaign_id`` (Campaign Builder UUID for studio campaign linkage).
3998
+ */
3999
+ export interface DialerSessionCreateRequest {
4000
+ /** Voice agent UUID. Use GET /voice/dialer/agents to look up. */
4001
+ agent_id?: string | null;
4002
+ /** Legacy V1 agent name fallback (defaults to "default_agent" upstream). */
4003
+ agent_name?: string | null;
4004
+ /** Override the session's dialing mode. None keeps voice's default ('power'). Same bug-fix note as parallel_count above - now forwarded instead of dropped. */
4005
+ dialing_mode?: ("power" | "parallel") | null;
4006
+ /** V2 agent entity type ("agent" or "twin"). Optional. */
4007
+ entity_type?: string | null;
4008
+ /** Caller-ID phone number. Must be one of the org's dialer numbers. */
4009
+ from_phone: string;
4010
+ /** Contact list ID the SDR will dial from. Stored in session metadata. */
4011
+ list_id?: string | null;
4012
+ /** Display title for the list (e.g. 'Q4 ICP'). Stored in metadata. */
4013
+ list_title?: string | null;
4014
+ /** Session display name. */
4015
+ name: string;
4016
+ /** Legs to dial per batch once the SDR opens the dialer UI (1 = power mode, 2-5 = parallel). None keeps voice's own default (2). Bug fix (graph8-com/g8 dev-API voice parity): this field previously had no effect - it was accepted by neither this DTO nor the upstream call, so any value a caller sent was silently dropped rather than forwarded. */
4017
+ parallel_count?: number | null;
4018
+ /** Per-session override for voicemail-skip behaviour. None = use SDR default. */
4019
+ skip_voicemails?: boolean | null;
4020
+ /** Campaign Builder (Studio) campaign UUID. Optional linkage. */
4021
+ studio_campaign_id?: string | null;
4022
+ /** IANA timezone for analytics grouping (e.g. "America/New_York"). */
4023
+ user_timezone?: string | null;
4024
+ }
4025
+
4026
+ /**
4027
+ * Echo of the voice service's ``ParallelDialResponse`` for a paused-create.
4028
+ *
4029
+ * We deliberately drop ``twilio_token`` from the public shape - it is
4030
+ * SDR-frontend-specific and is regenerated by the dialer UI on join, so
4031
+ * re-publishing it here would only confuse a chat caller.
4032
+ */
4033
+ export interface DialerSessionCreateResponse {
4034
+ created_at?: unknown | null;
4035
+ from_phone?: string | null;
4036
+ message?: string | null;
4037
+ name?: string | null;
4038
+ org_id?: string | null;
4039
+ session_id: string;
4040
+ session_metadata?: Record<string, unknown> | null;
4041
+ status: string;
4042
+ total_calls?: number;
4043
+ user_email?: string | null;
4044
+ user_id?: string | null;
4045
+ }
4046
+
4047
+ /**
4048
+ * Body for resuming a paused parallel-dialer session.
4049
+ *
4050
+ * The resume endpoint mirrors what the dialer UI does when the SDR
4051
+ * clicks "Start Dialing" on a paused session: it pages the source list
4052
+ * using the cursor stored in ``session_metadata``, filters out
4053
+ * already-called contacts, and forwards the next batch to the voice
4054
+ * service's ``start-session`` endpoint.
4055
+ *
4056
+ * Only ``max_contacts`` is exposed - org / user / from_phone /
4057
+ * list_id / agent / session_metadata are all read off the persisted
4058
+ * session so the caller doesn't have to reconstruct them.
4059
+ */
4060
+ export interface DialerSessionResumeRequest {
4061
+ /** Number of contacts to dial in this batch. Voice caps parallel dialing at 4. */
4062
+ max_contacts?: number;
4063
+ }
4064
+
4065
+ /**
4066
+ * Echo of voice's ``ParallelDialResponse`` plus a count of contacts dialed.
4067
+ *
4068
+ * ``dialed_count`` is the number of calls actually placed in this
4069
+ * resume batch. It can be lower than ``max_contacts`` when the list is
4070
+ * near exhausted, every remaining row is missing a phone, or every
4071
+ * candidate was already called earlier in the session.
4072
+ *
4073
+ * ``twilio_token`` and ``conference_name`` are deliberately dropped -
4074
+ * they are SDR-frontend specific and an MCP / API caller has no use
4075
+ * for them. The dialer UI regenerates them on join.
4076
+ */
4077
+ export interface DialerSessionResumeResponse {
4078
+ created_at?: unknown | null;
4079
+ dialed_count?: number;
4080
+ from_phone?: string | null;
4081
+ message?: string | null;
4082
+ name?: string | null;
4083
+ org_id?: string | null;
4084
+ session_id: string;
4085
+ session_metadata?: Record<string, unknown> | null;
4086
+ status: string;
4087
+ total_calls?: number;
4088
+ updated_at?: unknown | null;
4089
+ user_email?: string | null;
4090
+ user_id?: string | null;
4091
+ }
4092
+
4093
+ /**
4094
+ * Body for pause / resume / stop on a parallel-dialer session.
4095
+ *
4096
+ * The voice service treats a status PATCH as the lifecycle hook:
4097
+ * - ``ACTIVE`` resumes a paused session.
4098
+ * - ``PAUSED`` pauses an active session.
4099
+ * - ``COMPLETED`` ends the session - one-way, can be re-opened only via
4100
+ * ``manual-dial`` (which we do not expose here).
4101
+ * - ``FAILED`` is reserved for system use; we reject it on the public
4102
+ * surface so a caller cannot mis-mark a session.
4103
+ */
4104
+ export interface DialerSessionStatusUpdateRequest {
4105
+ /** One of "ACTIVE" (resume), "PAUSED" (pause), "COMPLETED" (stop). */
4106
+ status: string;
4107
+ }
4108
+
4109
+ /** Echo of voice's ``SessionUpdateResponse`` for the public surface. */
4110
+ export interface DialerSessionStatusUpdateResponse {
4111
+ created_at?: unknown | null;
4112
+ from_phone?: string | null;
4113
+ message?: string | null;
4114
+ name?: string | null;
4115
+ org_id?: string | null;
4116
+ session_id: string;
4117
+ session_metadata?: Record<string, unknown> | null;
4118
+ status: string;
4119
+ total_calls?: number;
4120
+ updated_at?: unknown | null;
4121
+ user_email?: string | null;
4122
+ user_id?: string | null;
4123
+ }
4124
+
4125
+ /**
4126
+ * One row from the dialer-sessions list.
4127
+ *
4128
+ * The voice service returns a flat dict per session built from
4129
+ * ``ParallelDialSession`` columns plus an aggregated ``contact_ids``
4130
+ * array. We surface every documented column directly so that read-only
4131
+ * consumers can introspect a session without a follow-up call.
4132
+ */
4133
+ export interface DialerSessionSummary {
4134
+ campaign_builder_campaign_id?: string | null;
4135
+ campaign_id?: string | null;
4136
+ contact_ids?: Array<unknown>;
4137
+ created_at?: unknown | null;
4138
+ from_phone?: string | null;
4139
+ name?: string | null;
4140
+ org_id?: string | null;
4141
+ session_id: string;
4142
+ session_metadata?: Record<string, unknown> | null;
4143
+ status?: string | null;
4144
+ total_calls?: number | null;
4145
+ updated_at?: unknown | null;
4146
+ user_email?: string | null;
4147
+ user_id?: string | null;
4148
+ }
4149
+
4150
+ /**
4151
+ * List wrapper for dialer sessions.
4152
+ *
4153
+ * Top-level matches the voice payload (``data`` + ``pagination``) so the
4154
+ * public API caller sees the exact same shape they would get if voice
4155
+ * were exposed directly. The standard ``ApiResponse`` envelope wraps
4156
+ * THIS object as its ``data`` field.
4157
+ */
4158
+ export interface DialerSessionsListResponse {
4159
+ pagination?: VoicePagination;
4160
+ sessions?: Array<DialerSessionSummary>;
4161
+ }
4162
+
4163
+ /** voice `DialerSettingsRequest`, without `org_id`. Only fields sent change. */
4164
+ export interface DialerSettingsUpdate {
4165
+ dialing_mode?: ("power" | "parallel") | null;
4166
+ dnd_enabled?: boolean | null;
4167
+ parallel_count?: number | null;
4168
+ skip_dial_trees?: boolean | null;
4169
+ skip_voicemails?: boolean | null;
4170
+ /** The rep whose settings these are. */
4171
+ user_email: string;
4172
+ voicemail_grace_period?: number | null;
4173
+ }
4174
+
4175
+ /**
4176
+ * Top-level wrapper for dialer analytics.
4177
+ *
4178
+ * Field names follow the voice ``ParallelDialerReport`` shape so the
4179
+ * structured response is meaningful both to a Developer API caller and
4180
+ * to an MCP agent rendering it inline.
4181
+ */
4182
+ export interface DialerStatsResponse {
4183
+ filters?: DialerReportFilters;
4184
+ metrics?: Array<DialerReportMetric>;
4185
+ summary?: DialerReportMetric | null;
4186
+ }
4187
+
4188
+ /** voice `EmailThread`: one earlier message in the thread being answered. */
4189
+ export interface EmailThreadMessage {
4190
+ body: string;
4191
+ sender?: string | null;
4192
+ subject: string;
4193
+ timestamp?: string | null;
4194
+ }
4195
+
4196
+ /**
4197
+ * A rule deciding where an inbound call on one number goes.
4198
+ *
4199
+ * `org_id` is absent on purpose - pinned from the key by the router.
4200
+ * Rules are evaluated by ascending `priority`; the first whose
4201
+ * `match_conditions` hold wins.
4202
+ */
4203
+ export interface InboundRouteCreateRequest {
4204
+ is_active?: boolean;
4205
+ /** `{"always": true}` or a `{"schedule": {...}}` block with `days`, `start_time`/`end_time` as HH:MM, and an IANA `timezone`. */
4206
+ match_conditions?: Record<string, unknown>;
4207
+ name?: string | null;
4208
+ /** The number this rule applies to. */
4209
+ phone_number: string;
4210
+ /** Lower wins. Ties are resolved arbitrarily. */
4211
+ priority?: number;
4212
+ queue_max_wait_seconds?: number | null;
4213
+ ring_strategy?: "single" | "round_robin";
4214
+ /** Agent id, department or extension - depends on `target_type`. */
4215
+ target_id?: string | null;
4216
+ target_type: "ai_agent" | "department" | "extension" | "voicemail";
4217
+ }
4218
+
4219
+ /** Partial update of one rule. Omitted fields are untouched. */
4220
+ export interface InboundRouteUpdateRequest {
4221
+ is_active?: boolean | null;
4222
+ match_conditions?: Record<string, unknown> | null;
4223
+ name?: string | null;
4224
+ priority?: number | null;
4225
+ queue_max_wait_seconds?: number | null;
4226
+ ring_strategy?: ("single" | "round_robin") | null;
4227
+ target_id?: string | null;
4228
+ target_type?: ("ai_agent" | "department" | "extension" | "voicemail") | null;
4229
+ }
4230
+
4231
+ /**
4232
+ * An MCP server an agent can call tools on.
4233
+ *
4234
+ * `org_id` is deliberately ABSENT even though voice's model requires it: it
4235
+ * is pinned from the API key by the router and a body-supplied value would be
4236
+ * a tenancy hole.
4237
+ */
4238
+ export interface McpServerCreateRequest {
4239
+ args?: Array<string> | null;
4240
+ /** Required when `transport_type` is `stdio`. */
4241
+ command?: string | null;
4242
+ /** Required when `transport_type` is `sse`. */
4243
+ connection_url?: string | null;
4244
+ description?: string | null;
4245
+ enabled?: boolean;
4246
+ /** Environment for the server process. WRITE-ONLY: values set here are never echoed back by the read routes. */
4247
+ env_vars?: Record<string, string> | null;
4248
+ name: string;
4249
+ /** `sse` for a remote server reached over HTTP, `stdio` for a local process. */
4250
+ transport_type: "sse" | "stdio";
4251
+ }
4252
+
4253
+ /** Partial update. Every field is optional; omitted fields are untouched. */
4254
+ export interface McpServerUpdateRequest {
4255
+ args?: Array<string> | null;
4256
+ command?: string | null;
4257
+ connection_url?: string | null;
4258
+ description?: string | null;
4259
+ enabled?: boolean | null;
4260
+ env_vars?: Record<string, string> | null;
4261
+ name?: string | null;
4262
+ transport_type?: ("sse" | "stdio") | null;
4263
+ }
4264
+
4265
+ /** One missed inbound callback row. */
4266
+ export interface MissedCallback {
4267
+ call_duration?: number | null;
4268
+ caller_phone?: string | null;
4269
+ contact_id?: unknown | null;
4270
+ created_at?: unknown | null;
4271
+ email?: string | null;
4272
+ first_name?: string | null;
4273
+ id?: unknown | null;
4274
+ inbound_number?: string | null;
4275
+ is_callback?: boolean;
4276
+ last_disposition?: string | null;
4277
+ last_name?: string | null;
4278
+ missed_reason?: string | null;
4279
+ parallel_session_id?: string | null;
4280
+ previous_calls_count?: number;
4281
+ resolution?: string | null;
4282
+ resolved_at?: unknown | null;
4283
+ resolved_by?: string | null;
4284
+ seen_at?: unknown | null;
4285
+ seen_by?: string | null;
4286
+ session?: MissedCallbackSession | null;
4287
+ }
4288
+
4289
+ /** Parallel session the caller was previously dialed from. */
4290
+ export interface MissedCallbackSession {
4291
+ campaign_id?: string | null;
4292
+ list_id?: string | null;
4293
+ list_title?: string | null;
4294
+ name?: string | null;
4295
+ session_id?: string | null;
4296
+ status?: string | null;
4297
+ }
4298
+
4299
+ export interface MissedCallbacksResponse {
4300
+ count?: number;
4301
+ missed_callbacks?: Array<MissedCallback>;
4302
+ }
4303
+
4304
+ export interface PaginationMeta {
4305
+ /** Whether there are more pages */
4306
+ has_next: boolean;
4307
+ /** Items per page */
4308
+ limit: number;
4309
+ /** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
4310
+ next_cursor?: string | null;
4311
+ /** Current page number (1-indexed) */
4312
+ page: number;
4313
+ /** Total number of items */
4314
+ total: number;
4315
+ }
4316
+
4317
+ /**
4318
+ * A colleague the receptionist and the in-call transfer picker can reach.
4319
+ *
4320
+ * `extension` and `phone_number` are both optional: the number a transfer
4321
+ * actually dials is resolved from the work-number inventory first, and the
4322
+ * stored `phone_number` is only the hand-entered override.
4323
+ */
4324
+ export interface PhoneDirectoryEntryCreate {
4325
+ availability?: string;
4326
+ department: string;
4327
+ extension?: string | null;
4328
+ is_active?: boolean;
4329
+ phone_number?: string | null;
4330
+ user_email: string;
4331
+ user_name: string;
4332
+ }
4333
+
4334
+ export interface PhoneDirectoryEntryUpdate {
4335
+ availability?: string | null;
4336
+ department?: string | null;
4337
+ extension?: string | null;
4338
+ is_active?: boolean | null;
4339
+ phone_number?: string | null;
4340
+ user_name?: string | null;
4341
+ }
4342
+
4343
+ /**
4344
+ * A site to crawl into a collection on a schedule.
4345
+ *
4346
+ * CREATING ONE CRAWLS IMMEDIATELY - it does not wait for the first scheduled
4347
+ * run. That is why this operation is `billable` rather than a plain write.
4348
+ */
4349
+ export interface ScrapeSourceCreateRequest {
4350
+ /** How often to re-crawl. `manual` never re-crawls. */
4351
+ frequency?: "daily" | "weekly" | "monthly" | "manual";
4352
+ /** Ceiling, not a target - a small site only crawls what exists. */
4353
+ max_pages?: number;
4354
+ /** Root URL. Everything under it is followed. */
4355
+ url: string;
4356
+ }
4357
+
4358
+ /** Change a source's cadence, page ceiling, or pause it. Omitted = unchanged. */
4359
+ export interface ScrapeSourceUpdateRequest {
4360
+ /** False pauses the recurring crawl; the source survives. */
4361
+ enabled?: boolean | null;
4362
+ frequency?: ("daily" | "weekly" | "monthly" | "manual") | null;
4363
+ max_pages?: number | null;
4364
+ }
4365
+
4366
+ /** voice `SessionCallsRequest`. */
4367
+ export interface SessionCallsLookup {
4368
+ contact_ids: Array<string>;
4369
+ }
4370
+
4371
+ /**
4372
+ * `POST /api/v1/twins/extract-linkedin` binds `linkedin_url` as a FORM
4373
+ * field; this is the JSON shape the API takes and the router re-encodes.
4374
+ */
4375
+ export interface TwinLinkedInExtract {
4376
+ /** A LinkedIn profile URL, e.g. https://linkedin.com/in/name */
4377
+ linkedin_url: string;
4378
+ }
4379
+
4380
+ /**
4381
+ * Body for creating a voice agent or twin.
4382
+ *
4383
+ * Org is pinned server-side from the API key - never read from the body.
4384
+ * ``created_by_email`` is likewise pinned to the calling principal (used
4385
+ * upstream for one-twin-per-user enforcement and SDR/booking attribution);
4386
+ * an org-wide API key has no per-human identity to attribute to beyond the
4387
+ * key itself, so it is set to the same identifier the dialer-session and
4388
+ * call routes already use for ``user_email``.
4389
+ *
4390
+ * Deliberately NOT exposed here (follow-up, not an oversight): twin-only
4391
+ * fields ``tone_profile``, ``channels``, and ``persona_source_user_id``.
4392
+ * They only apply when ``entity_type="twin"`` and none of this PR's
4393
+ * priority surfaces (ad-hoc call, dialer sessions, dispositions) need them.
4394
+ */
4395
+ export interface VoiceAgentCreateRequest {
4396
+ /** Agent UUID. Auto-generated if omitted. */
4397
+ agent_id?: string | null;
4398
+ /** Initial status. */
4399
+ agent_status?: "active" | "inactive" | "archived";
4400
+ /** "agent" or "twin". */
4401
+ entity_type?: "agent" | "twin";
4402
+ identity: VoiceAgentIdentity;
4403
+ /** Save this as a reusable template rather than a live agent. */
4404
+ is_template?: boolean;
4405
+ /** Attached knowledge collections. */
4406
+ knowledge?: VoiceAgentKnowledge | null;
4407
+ persona: VoiceAgentPersona;
4408
+ /** Agent role (e.g. "SDR", "AE", "Receptionist", "CSM"). */
4409
+ role: string;
4410
+ /** Template this agent was cloned from, if any. */
4411
+ template_id?: string | null;
4412
+ /** Also draw on the org-wide knowledge base. */
4413
+ use_company_knowledge?: boolean;
4414
+ }
4415
+
4416
+ /** Complete agent configuration, as returned by create/get/update. */
4417
+ export interface VoiceAgentDetail {
4418
+ agent_id: string;
4419
+ agent_status: string;
4420
+ created_at?: unknown | null;
4421
+ created_by_email?: string | null;
4422
+ entity_type: string;
4423
+ id: number;
4424
+ identity: VoiceAgentIdentity;
4425
+ is_template: boolean;
4426
+ knowledge: VoiceAgentKnowledge;
4427
+ org_id: string;
4428
+ persona: VoiceAgentPersona;
4429
+ role: string;
4430
+ template_id?: string | null;
4431
+ updated_at?: unknown | null;
4432
+ use_company_knowledge: boolean;
4433
+ }
4434
+
4435
+ /** Communication-channel identity for a voice agent (mirrors V2 ``IdentityV2``). */
4436
+ export interface VoiceAgentIdentity {
4437
+ /** URL of the agent's avatar image. Optional. */
4438
+ avatar_url?: string | null;
4439
+ /** Calendar/event-type system ID. Optional. */
4440
+ calendar?: number | null;
4441
+ /** Phone number in E.164 format (e.g. +15551234567). Optional. */
4442
+ phone?: string | null;
4443
+ /** Voice ID (Cartesia voice_id or OpenAI voice name). Optional. */
4444
+ voice?: string | null;
4445
+ }
4446
+
4447
+ /** Knowledge-collection attachments for a voice agent. */
4448
+ export interface VoiceAgentKnowledge {
4449
+ /** Collection IDs (max 4). */
4450
+ collections?: Array<string>;
4451
+ }
4452
+
4453
+ /** Paginated agent list. */
4454
+ export interface VoiceAgentListResponse {
4455
+ agents?: Array<VoiceAgentSummary>;
4456
+ page?: number;
4457
+ page_size?: number;
4458
+ total_count?: number;
4459
+ total_pages?: number;
4460
+ }
4461
+
4462
+ /** Persona / prompt configuration for a voice agent (mirrors V2 ``PersonaV2``). */
4463
+ export interface VoiceAgentPersona {
4464
+ /** Display name of the agent. */
4465
+ agent_name: string;
4466
+ /** 0.0=passive, 1.0=assertive. */
4467
+ assertiveness_level: number;
4468
+ /** TTS pronunciation override for the company name (e.g. 'Science' for 'CIENCE'). */
4469
+ company_name_pronunciation?: string | null;
4470
+ /** 0.0=verbose, 1.0=brief. */
4471
+ conciseness_level: number;
4472
+ /** Brief summary of the agent's purpose. */
4473
+ description: string;
4474
+ /** 0.0=casual, 1.0=formal. */
4475
+ formality_level: number;
4476
+ /** Extra instructions for inbound calls. */
4477
+ inbound_instructions?: string | null;
4478
+ /** Extra instructions for outbound calls. */
4479
+ outbound_instructions?: string | null;
4480
+ /** Voicemail message this agent leaves. */
4481
+ outbound_voicemail_prompt?: string | null;
4482
+ /** Personality and behavior description. */
4483
+ persona: string;
4484
+ }
4485
+
4486
+ /** Envelope for single-agent operations (create / get / update). */
4487
+ export interface VoiceAgentResponse {
4488
+ agent?: VoiceAgentDetail | null;
4489
+ message?: string | null;
4490
+ }
4491
+
4492
+ /**
4493
+ * One row from the agent list (full management shape - see also the
4494
+ * lighter-weight ``DialerAgentSummary`` used by the dialer picker).
4495
+ */
4496
+ export interface VoiceAgentSummary {
4497
+ agent_id: string;
4498
+ agent_name: string;
4499
+ agent_status: string;
4500
+ avatar_url?: string | null;
4501
+ calendar_event_id?: number | null;
4502
+ collection_count?: number;
4503
+ created_at?: unknown | null;
4504
+ description?: string | null;
4505
+ entity_type: string;
4506
+ has_knowledge?: boolean;
4507
+ id: number;
4508
+ is_template?: boolean;
4509
+ org_id: string;
4510
+ phone?: string | null;
4511
+ role: string;
4512
+ template_id?: string | null;
4513
+ updated_at?: unknown | null;
4514
+ use_company_knowledge?: boolean;
4515
+ voice?: string | null;
4516
+ }
4517
+
4518
+ /** Body for partially updating a voice agent. Only supplied fields change. */
4519
+ export interface VoiceAgentUpdateRequest {
4520
+ agent_status?: ("active" | "inactive" | "archived") | null;
4521
+ identity?: VoiceAgentIdentity | null;
4522
+ is_template?: boolean | null;
4523
+ knowledge?: VoiceAgentKnowledge | null;
4524
+ persona?: VoiceAgentPersona | null;
4525
+ role?: string | null;
4526
+ use_company_knowledge?: boolean | null;
4527
+ }
4528
+
4529
+ /**
4530
+ * Body for dispatching one AI-agent call to an arbitrary number.
4531
+ *
4532
+ * No dialer session or contact list required - this is the "call this one
4533
+ * number right now" primitive (`voice/graph8_livekit/routers/call.py:19`).
4534
+ * Places a REAL call and is billable; send an ``Idempotency-Key`` header to
4535
+ * make a retry safe (honored automatically by the Developer API's
4536
+ * idempotency middleware on every POST - no extra body field needed).
4537
+ */
4538
+ export interface VoiceCallStartRequest {
4539
+ /** Voice agent UUID. Use GET /voice/agents to look up. */
4540
+ agent_id?: string | null;
4541
+ /** Legacy V1 agent-name fallback. */
4542
+ agent_name?: string | null;
4543
+ /** Webhook notified with the call result on completion. Optional. */
4544
+ callback_url?: string | null;
4545
+ /** Optional campaign id for attribution. */
4546
+ campaign_id?: string | null;
4547
+ /** CDP contact id, if this call is tied to a known contact. */
4548
+ contact_id?: string | null;
4549
+ /** If true, the call is validated but not actually dispatched. */
4550
+ dry_run?: boolean;
4551
+ /** Contact email, for the agent's context. */
4552
+ email?: string | null;
4553
+ /** "agent" or "twin". Optional. */
4554
+ entity_type?: ("agent" | "twin") | null;
4555
+ /** Appointments event-type id the agent can offer to book. Omit if this call has no booking flow. */
4556
+ event_id?: number | null;
4557
+ /** Contact first name, for the agent's context. */
4558
+ first_name?: string | null;
4559
+ /** Caller ID. Must be one of the org's numbers. */
4560
+ from_phone: string;
4561
+ /** Contact last name, for the agent's context. */
4562
+ last_name?: string | null;
4563
+ /** Optional Campaign Builder (Studio) campaign UUID. */
4564
+ studio_campaign_id?: string | null;
4565
+ /** IANA timezone for the callee. */
4566
+ timezone?: string;
4567
+ /** Number to call. Normalized server-side. */
4568
+ to_phone: string;
4569
+ }
4570
+
4571
+ /** Echo of voice's ``AgentDispatchResponse``. */
4572
+ export interface VoiceCallStartResponse {
4573
+ message: string;
4574
+ room_name: string;
4575
+ status: string;
4576
+ }
4577
+
4578
+ /**
4579
+ * Body for creating an org-level custom disposition. Org admin only
4580
+ * (enforced by voice; see the router docstring above).
4581
+ */
4582
+ export interface VoiceCustomDispositionCreateRequest {
4583
+ /** Hex value from voice's preset palette (e.g. '#10b981'). Invalid values 400. */
4584
+ color: string;
4585
+ description?: string | null;
4586
+ /** Whether this outcome counts as a live connection in analytics. */
4587
+ is_connected: boolean;
4588
+ name: string;
4589
+ }
4590
+
4591
+ export interface VoiceCustomDispositionItem {
4592
+ color: string;
4593
+ description?: string | null;
4594
+ id: number;
4595
+ is_connected: boolean;
4596
+ /** Stable value to use in filters/writes, e.g. "custom_42". */
4597
+ key: string;
4598
+ name: string;
4599
+ }
4600
+
4601
+ /**
4602
+ * Body for editing a custom disposition. Only supplied fields change.
4603
+ *
4604
+ * ``is_connected`` is locked by voice once any call already references the
4605
+ * disposition (changing it would retroactively re-classify historical
4606
+ * calls) - forwarded as-is and voice's 409 surfaces to the caller.
4607
+ */
4608
+ export interface VoiceCustomDispositionUpdateRequest {
4609
+ color?: string | null;
4610
+ description?: string | null;
4611
+ is_connected?: boolean | null;
4612
+ name?: string | null;
4613
+ }
4614
+
4615
+ export interface VoiceDispositionListResponse {
4616
+ custom?: Array<VoiceCustomDispositionItem>;
4617
+ custom_limit?: number;
4618
+ custom_used?: number;
4619
+ system?: Array<VoiceSystemDispositionItem>;
4620
+ }
4621
+
4622
+ /**
4623
+ * A LIST result from voice, normalised so `items` is always present.
4624
+ *
4625
+ * Voice is inconsistent about whether a list comes back bare or under a named
4626
+ * key (`collections`, `files`, `routes`, `chats`, ...). Both are preserved:
4627
+ * the original key is kept for anyone reading voice's docs, and `items`
4628
+ * always holds the same rows so a client can page one way.
4629
+ */
4630
+ export interface VoiceListPayload {
4631
+ items?: Array<unknown>;
4632
+ [key: string]: unknown;
4633
+ }
4634
+
4635
+ /**
4636
+ * Pagination block returned by the voice list-sessions endpoint.
4637
+ *
4638
+ * Mirrored verbatim so the field names match what voice already ships
4639
+ * (``total_items`` / ``total_pages`` / ``current_page`` / ``page_size``).
4640
+ * Keeping voice's field names here avoids a renaming layer that would
4641
+ * have to be updated every time voice extends the block.
4642
+ */
4643
+ export interface VoicePagination {
4644
+ current_page?: number;
4645
+ page_size?: number;
4646
+ total_items?: number;
4647
+ total_pages?: number;
4648
+ }
4649
+
4650
+ /**
4651
+ * One voice object - a collection, an agent, a route, a chat.
4652
+ *
4653
+ * Open-shaped: voice adds fields to these bodies on its own release cadence
4654
+ * and a dropped-or-added key must not be a 500 in this service.
4655
+ */
4656
+ export type VoicePayload = Record<string, unknown>;
4657
+
4658
+ export interface VoiceSystemDispositionItem {
4659
+ is_connected: boolean;
4660
+ key: string;
4661
+ }