@graph8/sdk 0.362.0 → 0.373.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 (615) hide show
  1. package/README.md +33 -10
  2. package/blocks/_foundation/README.md +78 -1
  3. package/blocks/_foundation/block.json +123 -6
  4. package/blocks/_foundation/components/api-error.tsx +9 -7
  5. package/blocks/_foundation/components/brand-provider.tsx +23 -0
  6. package/blocks/_foundation/components/confirm-spend-dialog.tsx +15 -8
  7. package/blocks/_foundation/components/confirmed-action.tsx +90 -0
  8. package/blocks/_foundation/components/connect-graph8.tsx +280 -0
  9. package/blocks/_foundation/components/empty-state.tsx +5 -2
  10. package/blocks/_foundation/components/list-select.tsx +112 -0
  11. package/blocks/_foundation/components/paging-notices.tsx +55 -0
  12. package/blocks/_foundation/components/screen/detail-panel.tsx +2 -1
  13. package/blocks/_foundation/components/screen/filter-controls.tsx +92 -0
  14. package/blocks/_foundation/components/screen/index.ts +2 -0
  15. package/blocks/_foundation/components/screen/record-link.tsx +76 -0
  16. package/blocks/_foundation/components/screen/split-view.tsx +1 -1
  17. package/blocks/_foundation/components/screen/time-series-chart-recharts.tsx +65 -0
  18. package/blocks/_foundation/components/screen/time-series-chart.tsx +15 -97
  19. package/blocks/_foundation/components/screen/time-series-format.ts +57 -0
  20. package/blocks/_foundation/hooks/use-all-pages.ts +54 -0
  21. package/blocks/_foundation/hooks/use-brand.ts +52 -0
  22. package/blocks/_foundation/hooks/use-g8-mutation.ts +23 -0
  23. package/blocks/_foundation/hooks/use-g8-query.ts +127 -1
  24. package/blocks/_foundation/hooks/use-load-more-list.ts +61 -0
  25. package/blocks/_foundation/hooks/use-paginated.ts +120 -0
  26. package/blocks/_foundation/hooks/use-row-activation.ts +57 -0
  27. package/blocks/_foundation/hooks/use-url-filters.ts +93 -0
  28. package/blocks/_foundation/lib/g8-cache.ts +454 -0
  29. package/blocks/_foundation/lib/g8-client.ts +1 -1
  30. package/blocks/_foundation/lib/paging.ts +57 -0
  31. package/blocks/_foundation/lib/plural.ts +23 -0
  32. package/blocks/_foundation/lib/use-debounced-value.ts +13 -0
  33. package/blocks/_foundation/server/connect-route.ts +15 -0
  34. package/blocks/_foundation/server/connect.ts +127 -0
  35. package/blocks/_foundation/server/local-key.ts +70 -0
  36. package/blocks/_foundation/server/proxy.ts +103 -3
  37. package/blocks/_foundation/server/route.ts +16 -4
  38. package/blocks/agents/README.md +93 -2
  39. package/blocks/agents/block.json +343 -2
  40. package/blocks/agents/components/agent-activity.tsx +112 -0
  41. package/blocks/agents/components/agent-approvals.tsx +135 -0
  42. package/blocks/agents/components/agent-builder.tsx +29 -10
  43. package/blocks/agents/components/agent-conversations.tsx +143 -0
  44. package/blocks/agents/components/agent-knowledge-panel.tsx +4 -3
  45. package/blocks/agents/components/agent-operators.tsx +164 -0
  46. package/blocks/agents/components/agent-run-detail.tsx +119 -0
  47. package/blocks/agents/components/agent-runs.tsx +19 -10
  48. package/blocks/agents/components/agent-skills-panel.tsx +7 -7
  49. package/blocks/agents/components/agent-test-history.tsx +121 -0
  50. package/blocks/agents/components/agents-screen.tsx +226 -0
  51. package/blocks/agents/components/assistant-sessions.tsx +150 -0
  52. package/blocks/agents/components/duplicate-agent-button.tsx +42 -0
  53. package/blocks/agents/components/from-template-button.tsx +65 -0
  54. package/blocks/agents/components/knowledge-browser.tsx +107 -0
  55. package/blocks/agents/components/knowledge-detail.tsx +156 -0
  56. package/blocks/agents/components/knowledge-form.tsx +69 -0
  57. package/blocks/agents/components/name-dialog.tsx +32 -0
  58. package/blocks/agents/components/receptionist-button.tsx +46 -0
  59. package/blocks/agents/components/save-as-template-button.tsx +32 -0
  60. package/blocks/agents/components/skill-editor.tsx +147 -0
  61. package/blocks/agents/components/skill-library.tsx +111 -0
  62. package/blocks/agents/lib/agent-types.ts +7 -1
  63. package/blocks/agents/lib/facts.tsx +13 -0
  64. package/blocks/agents/lib/knowledge-utils.ts +49 -0
  65. package/blocks/agents/lib/load-more.tsx +141 -0
  66. package/blocks/agents/lib/skill-utils.ts +91 -0
  67. package/blocks/agents/recipes/create-agent-and-attach-skill.ts +1 -1
  68. package/blocks/analytics/README.md +13 -0
  69. package/blocks/analytics/block.json +45 -1
  70. package/blocks/analytics/components/analytics-screen.tsx +222 -0
  71. package/blocks/analytics/components/kpi-tiles.tsx +1 -1
  72. package/blocks/analytics/components/leaderboard.tsx +14 -7
  73. package/blocks/analytics/components/report-builder.tsx +38 -11
  74. package/blocks/analytics/components/report-detail.tsx +84 -0
  75. package/blocks/analytics/components/trend-chart.tsx +62 -0
  76. package/blocks/appointments/README.md +6 -0
  77. package/blocks/appointments/block.json +33 -2
  78. package/blocks/appointments/components/availability-editor.tsx +17 -5
  79. package/blocks/appointments/components/booking-page.tsx +2 -2
  80. package/blocks/appointments/components/event-type-editor.tsx +2 -1
  81. package/blocks/appointments/components/event-type-related.tsx +4 -2
  82. package/blocks/appointments/components/meeting-contact-links.tsx +49 -0
  83. package/blocks/appointments/components/meeting-detail.tsx +2 -2
  84. package/blocks/appointments/components/meeting-list.tsx +38 -18
  85. package/blocks/appointments/components/meetings-screen.tsx +7 -4
  86. package/blocks/appointments/components/record-meetings-tab.tsx +92 -0
  87. package/blocks/appointments/components/scheduling-screen.tsx +2 -1
  88. package/blocks/block.schema.json +18 -0
  89. package/blocks/block.types.ts +17 -0
  90. package/blocks/campaigns/README.md +41 -11
  91. package/blocks/campaigns/block.json +105 -42
  92. package/blocks/campaigns/components/campaign-assets.tsx +17 -6
  93. package/blocks/campaigns/components/campaign-launch-step.tsx +114 -26
  94. package/blocks/campaigns/components/campaign-list.tsx +7 -3
  95. package/blocks/campaigns/components/campaign-metrics.tsx +1 -1
  96. package/blocks/campaigns/components/campaign-wizard.tsx +52 -14
  97. package/blocks/campaigns/components/campaigns-screen.tsx +267 -0
  98. package/blocks/campaigns/components/icp-detail.tsx +163 -0
  99. package/blocks/campaigns/components/icp-editor.tsx +22 -17
  100. package/blocks/campaigns/components/persona-detail.tsx +181 -0
  101. package/blocks/campaigns/components/persona-editor.tsx +19 -11
  102. package/blocks/campaigns/lib/campaigns-utils.ts +138 -5
  103. package/blocks/campaigns/recipes/attach-audience-and-launch.ts +16 -3
  104. package/blocks/campaigns/recipes/generate-ideas-and-create-campaign.ts +8 -4
  105. package/blocks/coach/README.md +10 -0
  106. package/blocks/coach/block.json +16 -1
  107. package/blocks/coach/components/call-scorecard.tsx +7 -7
  108. package/blocks/coach/components/coach-screen.tsx +222 -0
  109. package/blocks/company-intelligence/README.md +132 -0
  110. package/blocks/company-intelligence/block.json +318 -0
  111. package/blocks/company-intelligence/components/company-intelligence-screen.tsx +114 -0
  112. package/blocks/company-intelligence/components/company-intelligence-tab.tsx +88 -0
  113. package/blocks/company-intelligence/components/company-profile.tsx +68 -0
  114. package/blocks/company-intelligence/components/intelligence-sources.tsx +63 -0
  115. package/blocks/company-intelligence/components/report-detail.tsx +189 -0
  116. package/blocks/company-intelligence/components/research-reports.tsx +136 -0
  117. package/blocks/company-intelligence/components/research-run.tsx +161 -0
  118. package/blocks/company-intelligence/components/source-detail.tsx +117 -0
  119. package/blocks/company-intelligence/components/source-view.tsx +274 -0
  120. package/blocks/company-intelligence/components/wiki-document-detail.tsx +116 -0
  121. package/blocks/company-intelligence/components/wiki-documents.tsx +66 -0
  122. package/blocks/company-intelligence/hooks/use-intelligence.ts +173 -0
  123. package/blocks/company-intelligence/lib/intelligence-types.ts +230 -0
  124. package/blocks/company-intelligence/lib/safe-markdown.tsx +150 -0
  125. package/blocks/company-intelligence/recipes/read-competitors-and-news.ts +33 -0
  126. package/blocks/company-intelligence/recipes/research-your-website.ts +43 -0
  127. package/blocks/company-intelligence/recipes/write-the-research-reports.ts +54 -0
  128. package/blocks/copilot/README.md +13 -0
  129. package/blocks/copilot/block.json +14 -1
  130. package/blocks/copilot/components/copilot-memory.tsx +6 -2
  131. package/blocks/copilot/components/copilot-panel.tsx +14 -5
  132. package/blocks/copilot/components/copilot-screen.tsx +148 -0
  133. package/blocks/copilot/components/copilot-team-chat.tsx +13 -6
  134. package/blocks/crm/README.md +34 -0
  135. package/blocks/crm/block.json +107 -2
  136. package/blocks/crm/components/companies-screen.tsx +359 -0
  137. package/blocks/crm/components/company-detail.tsx +10 -8
  138. package/blocks/crm/components/company-table.tsx +11 -4
  139. package/blocks/crm/components/contact-detail.tsx +10 -7
  140. package/blocks/crm/components/contact-lookup-link.tsx +44 -0
  141. package/blocks/crm/components/contact-table.tsx +10 -3
  142. package/blocks/crm/components/contacts-screen.tsx +377 -0
  143. package/blocks/crm/components/dedupe-review.tsx +13 -6
  144. package/blocks/crm/components/import-wizard.tsx +7 -9
  145. package/blocks/crm/components/list-select.tsx +20 -0
  146. package/blocks/crm/components/notes-panel.tsx +4 -4
  147. package/blocks/crm/components/record-engagement-tab.tsx +103 -0
  148. package/blocks/crm/components/record-form.tsx +6 -4
  149. package/blocks/crm/components/task-list.tsx +4 -4
  150. package/blocks/crm/components/tasks-screen.tsx +399 -0
  151. package/blocks/crm/hooks/use-all-lists.ts +18 -0
  152. package/blocks/crm/hooks/use-custom-fields.ts +6 -1
  153. package/blocks/crm/hooks/use-page-query.ts +9 -1
  154. package/blocks/crm/lib/crm-types.ts +26 -2
  155. package/blocks/crm/lib/read-lists.ts +16 -0
  156. package/blocks/crm/lib/screen-parts.tsx +105 -0
  157. package/blocks/deals/README.md +24 -6
  158. package/blocks/deals/block.json +160 -5
  159. package/blocks/deals/components/close-deal-dialog.tsx +169 -0
  160. package/blocks/deals/components/deal-contacts-editor.tsx +134 -0
  161. package/blocks/deals/components/deal-detail.tsx +25 -13
  162. package/blocks/deals/components/deal-filters.tsx +65 -0
  163. package/blocks/deals/components/deal-line-items.tsx +120 -0
  164. package/blocks/deals/components/deal-notes-tab.tsx +97 -0
  165. package/blocks/deals/components/deal-related.tsx +31 -10
  166. package/blocks/deals/components/deal-tasks-tab.tsx +88 -0
  167. package/blocks/deals/components/deals-screen.tsx +66 -26
  168. package/blocks/deals/components/forecast-view.tsx +4 -4
  169. package/blocks/deals/components/pipeline-board.tsx +8 -6
  170. package/blocks/deals/components/pipeline-editor.tsx +132 -0
  171. package/blocks/deals/components/record-deals-tab.tsx +62 -0
  172. package/blocks/deals/components/stage-editor.tsx +5 -5
  173. package/blocks/deals/hooks/use-pipeline-deals.ts +21 -4
  174. package/blocks/deals/hooks/use-pipelines.ts +1 -1
  175. package/blocks/deals/lib/deal-extras.ts +156 -0
  176. package/blocks/dialer/README.md +45 -4
  177. package/blocks/dialer/block.json +84 -3
  178. package/blocks/dialer/components/call-contact-button.tsx +269 -0
  179. package/blocks/dialer/components/call-log-screen.tsx +208 -0
  180. package/blocks/dialer/components/call-log.tsx +23 -7
  181. package/blocks/dialer/components/call-queue.tsx +4 -4
  182. package/blocks/dialer/components/dialer-screen.tsx +361 -0
  183. package/blocks/dialer/components/dialer-session-detail.tsx +153 -0
  184. package/blocks/dialer/components/disposition-panel.tsx +1 -1
  185. package/blocks/dialer/components/live-calls-table.tsx +7 -3
  186. package/blocks/dialer/components/record-calls-tab.tsx +101 -0
  187. package/blocks/dialer/components/session-start-form.tsx +61 -12
  188. package/blocks/dialer/components/softphone.tsx +4 -2
  189. package/blocks/enrichment/README.md +29 -7
  190. package/blocks/enrichment/block.json +49 -9
  191. package/blocks/enrichment/components/bulk-enrich-panel.tsx +83 -29
  192. package/blocks/enrichment/components/email-verify-badge.tsx +31 -11
  193. package/blocks/enrichment/components/enrich-button.tsx +32 -9
  194. package/blocks/enrichment/components/enrichment-job-detail.tsx +78 -0
  195. package/blocks/enrichment/components/enrichment-screen.tsx +341 -0
  196. package/blocks/enrichment/components/waterfall-config.tsx +66 -17
  197. package/blocks/enrichment/lib/enrichment-types.ts +39 -0
  198. package/blocks/enrichment/recipes/bulk-enrich-and-poll.ts +15 -4
  199. package/blocks/enrichment/recipes/waterfall-pipeline.ts +3 -2
  200. package/blocks/forms/README.md +8 -0
  201. package/blocks/forms/block.json +139 -18
  202. package/blocks/forms/components/form-activity.tsx +71 -0
  203. package/blocks/forms/components/form-backfill.tsx +108 -0
  204. package/blocks/forms/components/form-builder.tsx +4 -2
  205. package/blocks/forms/components/form-embed.tsx +4 -2
  206. package/blocks/forms/components/form-groups.tsx +151 -0
  207. package/blocks/forms/components/form-mapping-editor.tsx +6 -9
  208. package/blocks/forms/components/form-route-history.tsx +72 -0
  209. package/blocks/forms/components/form-saved-views.tsx +81 -0
  210. package/blocks/forms/components/forms-screen.tsx +56 -19
  211. package/blocks/forms/components/more-rows.tsx +30 -0
  212. package/blocks/forms/components/submissions-export.tsx +67 -0
  213. package/blocks/forms/components/submissions-table.tsx +17 -6
  214. package/blocks/forms/lib/forms-extra.ts +67 -0
  215. package/blocks/inbox/README.md +32 -3
  216. package/blocks/inbox/block.json +29 -2
  217. package/blocks/inbox/components/inbox-list.tsx +7 -3
  218. package/blocks/inbox/components/inbox-screen.tsx +294 -27
  219. package/blocks/inbox/components/record-conversations-tab.tsx +154 -0
  220. package/blocks/inbox/components/reply-composer.tsx +65 -9
  221. package/blocks/inbox/components/tag-and-assign.tsx +4 -2
  222. package/blocks/inbox/components/thread-badge.tsx +2 -2
  223. package/blocks/inbox/components/thread-view.tsx +1 -1
  224. package/blocks/inbox/hooks/use-inbox-thread.ts +1 -1
  225. package/blocks/inbox/hooks/use-inbox-threads.ts +1 -0
  226. package/blocks/inbox/lib/inbox-types.ts +47 -1
  227. package/blocks/inbox/recipes/01-triage-and-reply.ts +12 -2
  228. package/blocks/integrations/README.md +63 -1
  229. package/blocks/integrations/block.json +234 -15
  230. package/blocks/integrations/components/ad-accounts.tsx +82 -0
  231. package/blocks/integrations/components/connection-health.tsx +59 -0
  232. package/blocks/integrations/components/crm-detail.tsx +119 -0
  233. package/blocks/integrations/components/crm-records.tsx +103 -0
  234. package/blocks/integrations/components/field-mappings.tsx +61 -0
  235. package/blocks/integrations/components/integration-list.tsx +13 -8
  236. package/blocks/integrations/components/integrations-screen.tsx +152 -0
  237. package/blocks/integrations/components/migration-panel.tsx +133 -0
  238. package/blocks/integrations/components/sugarcrm-connect.tsx +95 -0
  239. package/blocks/integrations/components/sync-status.tsx +11 -9
  240. package/blocks/integrations/components/sync-triggers.tsx +134 -0
  241. package/blocks/integrations/components/webhook-detail.tsx +179 -0
  242. package/blocks/integrations/components/webhook-manager.tsx +43 -25
  243. package/blocks/integrations/components/workspace-tools.tsx +127 -0
  244. package/blocks/integrations/lib/crm-utils.ts +39 -0
  245. package/blocks/integrations/lib/facts.tsx +13 -0
  246. package/blocks/integrations/lib/integrations-utils.ts +11 -1
  247. package/blocks/integrations/lib/load-more.tsx +141 -0
  248. package/blocks/intent/README.md +14 -0
  249. package/blocks/intent/block.json +27 -1
  250. package/blocks/intent/components/account-intent-score.tsx +5 -5
  251. package/blocks/intent/components/intent-feed.tsx +13 -10
  252. package/blocks/intent/components/intent-keyword-manager.tsx +16 -12
  253. package/blocks/intent/components/intent-screen.tsx +265 -0
  254. package/blocks/intent/components/keyword-detail.tsx +124 -0
  255. package/blocks/intent/lib/intent-utils.ts +4 -4
  256. package/blocks/lifecycle/block.json +13 -8
  257. package/blocks/lifecycle/components/account-related.tsx +8 -1
  258. package/blocks/lifecycle/components/churn-list.tsx +5 -2
  259. package/blocks/lifecycle/components/customer-table.tsx +1 -1
  260. package/blocks/lifecycle/components/lifecycle-board.tsx +3 -1
  261. package/blocks/lifecycle/components/lifecycle-screen.tsx +3 -1
  262. package/blocks/lifecycle/lib/lifecycle.ts +1 -1
  263. package/blocks/lists/README.md +20 -1
  264. package/blocks/lists/block.json +69 -3
  265. package/blocks/lists/components/add-company-people-to-list-button.tsx +73 -0
  266. package/blocks/lists/components/add-to-list-button.tsx +20 -9
  267. package/blocks/lists/components/list-picker.tsx +17 -3
  268. package/blocks/lists/components/list-table.tsx +12 -6
  269. package/blocks/lists/components/lists-screen.tsx +346 -0
  270. package/blocks/lists/components/record-lists-tab.tsx +99 -0
  271. package/blocks/lists/components/suppression-manager.tsx +33 -8
  272. package/blocks/lists/components/suppressions-screen.tsx +264 -0
  273. package/blocks/mailboxes/README.md +17 -0
  274. package/blocks/mailboxes/block.json +69 -17
  275. package/blocks/mailboxes/components/connect-mailbox.tsx +32 -21
  276. package/blocks/mailboxes/components/domain-detail.tsx +148 -0
  277. package/blocks/mailboxes/components/domain-purchase.tsx +20 -14
  278. package/blocks/mailboxes/components/mailbox-detail.tsx +157 -0
  279. package/blocks/mailboxes/components/mailbox-list.tsx +8 -3
  280. package/blocks/mailboxes/components/mailboxes-screen.tsx +228 -0
  281. package/blocks/mailboxes/components/warmup-health.tsx +24 -22
  282. package/blocks/mailboxes/lib/mailboxes-utils.ts +26 -5
  283. package/blocks/mailboxes/lib/use-provider-domains.ts +23 -0
  284. package/blocks/newsletter/README.md +12 -0
  285. package/blocks/newsletter/block.json +157 -24
  286. package/blocks/newsletter/components/issue-scheduler.tsx +4 -3
  287. package/blocks/newsletter/components/issue-versions.tsx +93 -0
  288. package/blocks/newsletter/components/more-rows.tsx +30 -0
  289. package/blocks/newsletter/components/newsletter-editor.tsx +1 -1
  290. package/blocks/newsletter/components/newsletter-list-syncs.tsx +121 -0
  291. package/blocks/newsletter/components/newsletter-screen.tsx +39 -14
  292. package/blocks/newsletter/components/newsletter-settings.tsx +211 -0
  293. package/blocks/newsletter/components/newsletter-stats.tsx +2 -2
  294. package/blocks/newsletter/components/newsletter-templates.tsx +133 -0
  295. package/blocks/newsletter/components/subscriber-table.tsx +5 -7
  296. package/blocks/newsletter/components/subscriber-timeline.tsx +65 -0
  297. package/blocks/newsletter/lib/newsletter-extra.ts +60 -0
  298. package/blocks/nurture/block.json +28 -14
  299. package/blocks/nurture/components/nurture-builder.tsx +13 -3
  300. package/blocks/nurture/components/nurture-enroll.tsx +12 -10
  301. package/blocks/nurture/components/nurture-form.tsx +27 -10
  302. package/blocks/nurture/components/nurture-screen.tsx +26 -11
  303. package/blocks/nurture/components/nurture-stats.tsx +5 -4
  304. package/blocks/nurture/lib/nurture-types.ts +1 -1
  305. package/blocks/objects/README.md +18 -1
  306. package/blocks/objects/block.json +42 -21
  307. package/blocks/objects/components/attribute-field-input.tsx +14 -1
  308. package/blocks/objects/components/object-not-found.tsx +3 -1
  309. package/blocks/objects/components/object-record-detail.tsx +10 -2
  310. package/blocks/objects/components/object-schema-editor.tsx +4 -2
  311. package/blocks/objects/components/object-table.tsx +13 -3
  312. package/blocks/objects/components/objects-screen.tsx +147 -0
  313. package/blocks/objects/components/record-roles-panel.tsx +15 -5
  314. package/blocks/objects/lib/object-types.ts +1 -1
  315. package/blocks/pages/README.md +14 -0
  316. package/blocks/pages/block.json +140 -23
  317. package/blocks/pages/components/brand-kit-editor.tsx +5 -2
  318. package/blocks/pages/components/content-library.tsx +9 -4
  319. package/blocks/pages/components/more-rows.tsx +30 -0
  320. package/blocks/pages/components/page-ai-tools.tsx +196 -0
  321. package/blocks/pages/components/page-analytics.tsx +176 -0
  322. package/blocks/pages/components/page-clone.tsx +99 -0
  323. package/blocks/pages/components/page-domains.tsx +167 -0
  324. package/blocks/pages/components/page-editor.tsx +1 -1
  325. package/blocks/pages/components/page-generation-status.tsx +48 -0
  326. package/blocks/pages/components/page-list.tsx +2 -1
  327. package/blocks/pages/components/page-tracking.tsx +137 -0
  328. package/blocks/pages/components/pages-screen.tsx +57 -16
  329. package/blocks/pages/components/seo-report.tsx +6 -1
  330. package/blocks/pages/lib/studio.ts +7 -0
  331. package/blocks/phone-numbers/README.md +74 -0
  332. package/blocks/phone-numbers/block.json +262 -0
  333. package/blocks/phone-numbers/components/a2p-registration.tsx +230 -0
  334. package/blocks/phone-numbers/components/assign-number.tsx +104 -0
  335. package/blocks/phone-numbers/components/number-search.tsx +239 -0
  336. package/blocks/phone-numbers/components/number-settings.tsx +134 -0
  337. package/blocks/phone-numbers/components/number-usage.tsx +97 -0
  338. package/blocks/phone-numbers/components/phone-number-detail.tsx +84 -0
  339. package/blocks/phone-numbers/components/phone-number-list.tsx +110 -0
  340. package/blocks/phone-numbers/components/phone-numbers-screen.tsx +201 -0
  341. package/blocks/phone-numbers/components/register-owned-number.tsx +98 -0
  342. package/blocks/phone-numbers/components/release-number.tsx +126 -0
  343. package/blocks/phone-numbers/hooks/use-phone-numbers.ts +58 -0
  344. package/blocks/phone-numbers/lib/phone-numbers-utils.ts +202 -0
  345. package/blocks/phone-numbers/recipes/01-search-and-buy-number.ts +49 -0
  346. package/blocks/phone-numbers/recipes/02-assign-number-to-rep.ts +25 -0
  347. package/blocks/phone-numbers/recipes/03-audit-numbers.ts +36 -0
  348. package/blocks/phone-numbers/recipes/04-register-text-messaging.ts +39 -0
  349. package/blocks/pickers/README.md +23 -0
  350. package/blocks/pickers/block.json +103 -0
  351. package/blocks/pickers/components/company-picker.tsx +90 -0
  352. package/blocks/pickers/components/contact-picker.tsx +131 -0
  353. package/blocks/pickers/components/member-picker.tsx +99 -0
  354. package/blocks/pickers/components/search-picker.tsx +98 -0
  355. package/blocks/pickers/hooks/use-current-member.ts +104 -0
  356. package/blocks/pickers/hooks/use-picker-pages.ts +73 -0
  357. package/blocks/pickers/lib/use-debounced.ts +13 -0
  358. package/blocks/quotes/README.md +13 -0
  359. package/blocks/quotes/block.json +65 -13
  360. package/blocks/quotes/components/create-quote-from-deal.tsx +48 -0
  361. package/blocks/quotes/components/product-picker.tsx +3 -1
  362. package/blocks/quotes/components/quote-builder.tsx +1 -1
  363. package/blocks/quotes/components/quote-lifecycle-actions.tsx +146 -0
  364. package/blocks/quotes/components/quote-list.tsx +5 -3
  365. package/blocks/quotes/components/quote-related.tsx +8 -4
  366. package/blocks/quotes/components/quote-viewer.tsx +7 -2
  367. package/blocks/quotes/components/record-quotes-tab.tsx +90 -0
  368. package/blocks/radar/README.md +10 -0
  369. package/blocks/radar/block.json +41 -1
  370. package/blocks/radar/components/competitor-battle-card.tsx +1 -1
  371. package/blocks/radar/components/competitor-detail.tsx +117 -0
  372. package/blocks/radar/components/competitor-tracker.tsx +3 -1
  373. package/blocks/radar/components/radar-overview.tsx +4 -4
  374. package/blocks/radar/components/radar-report.tsx +4 -2
  375. package/blocks/radar/components/radar-screen.tsx +214 -0
  376. package/blocks/radar/components/report-detail.tsx +104 -0
  377. package/blocks/search/README.md +10 -0
  378. package/blocks/search/block.json +16 -1
  379. package/blocks/search/components/filter-builder.tsx +3 -3
  380. package/blocks/search/components/prospect-results.tsx +5 -3
  381. package/blocks/search/components/prospect-search-screen.tsx +235 -0
  382. package/blocks/search/components/saved-searches.tsx +4 -1
  383. package/blocks/search/hooks/use-filter-options.ts +20 -6
  384. package/blocks/search/lib/search-types.ts +2 -0
  385. package/blocks/sequencer/README.md +55 -9
  386. package/blocks/sequencer/block.json +126 -19
  387. package/blocks/sequencer/components/add-to-sequence-button.tsx +82 -0
  388. package/blocks/sequencer/components/enroll-dialog.tsx +11 -5
  389. package/blocks/sequencer/components/record-sequences-tab.tsx +126 -0
  390. package/blocks/sequencer/components/sequence-builder.tsx +224 -60
  391. package/blocks/sequencer/components/sequence-detail.tsx +261 -0
  392. package/blocks/sequencer/components/sequence-enrollments.tsx +116 -0
  393. package/blocks/sequencer/components/sequence-list.tsx +34 -9
  394. package/blocks/sequencer/components/sequence-stats.tsx +11 -10
  395. package/blocks/sequencer/components/sequence-steps-panel.tsx +103 -0
  396. package/blocks/sequencer/components/sequences-screen.tsx +162 -0
  397. package/blocks/sequencer/components/step-editor.tsx +14 -12
  398. package/blocks/sequencer/lib/sequencer-utils.ts +133 -10
  399. package/blocks/sequencer/recipes/create-multichannel-sequence.ts +33 -5
  400. package/blocks/sequencer/recipes/launch-and-enroll.ts +19 -2
  401. package/blocks/social-ads/README.md +19 -0
  402. package/blocks/social-ads/block.json +233 -1
  403. package/blocks/social-ads/components/ad-campaign-list.tsx +9 -5
  404. package/blocks/social-ads/components/ads-screen.tsx +152 -0
  405. package/blocks/social-ads/components/audience-sync-detail.tsx +194 -0
  406. package/blocks/social-ads/components/audience-sync.tsx +17 -9
  407. package/blocks/social-ads/components/campaign-ads.tsx +166 -0
  408. package/blocks/social-ads/components/campaign-detail.tsx +138 -0
  409. package/blocks/social-ads/components/campaign-editor.tsx +134 -0
  410. package/blocks/social-ads/components/creative-concepts.tsx +74 -0
  411. package/blocks/social-ads/components/creative-detail.tsx +155 -0
  412. package/blocks/social-ads/components/creative-gallery.tsx +35 -7
  413. package/blocks/social-ads/components/creative-revisions.tsx +57 -0
  414. package/blocks/social-ads/components/creative-tools.tsx +176 -0
  415. package/blocks/social-ads/components/post-composer.tsx +7 -3
  416. package/blocks/social-ads/components/post-detail.tsx +163 -0
  417. package/blocks/social-ads/components/social-ideas.tsx +64 -0
  418. package/blocks/social-ads/components/social-performance.tsx +80 -0
  419. package/blocks/social-ads/components/social-post-list.tsx +11 -3
  420. package/blocks/social-ads/components/social-screen.tsx +187 -0
  421. package/blocks/social-ads/lib/ads-extra.ts +67 -0
  422. package/blocks/surveys/README.md +91 -0
  423. package/blocks/surveys/block.json +299 -0
  424. package/blocks/surveys/components/account-nps.tsx +69 -0
  425. package/blocks/surveys/components/contact-survey-history.tsx +52 -0
  426. package/blocks/surveys/components/org-summary.tsx +82 -0
  427. package/blocks/surveys/components/sending-domains.tsx +113 -0
  428. package/blocks/surveys/components/survey-form.tsx +126 -0
  429. package/blocks/surveys/components/survey-responses.tsx +145 -0
  430. package/blocks/surveys/components/survey-results.tsx +72 -0
  431. package/blocks/surveys/components/survey-send-history.tsx +58 -0
  432. package/blocks/surveys/components/survey-send.tsx +162 -0
  433. package/blocks/surveys/components/survey-triggers.tsx +166 -0
  434. package/blocks/surveys/components/surveys-screen.tsx +234 -0
  435. package/blocks/surveys/lib/surveys-types.ts +228 -0
  436. package/blocks/surveys/recipes/create-an-nps-survey.ts +22 -0
  437. package/blocks/surveys/recipes/send-a-survey-and-follow-it.ts +27 -0
  438. package/blocks/surveys/recipes/survey-score-report.ts +27 -0
  439. package/blocks/visitors/README.md +10 -0
  440. package/blocks/visitors/block.json +25 -1
  441. package/blocks/visitors/components/snippet-install.tsx +21 -10
  442. package/blocks/visitors/components/traffic-chart.tsx +4 -4
  443. package/blocks/visitors/components/visitor-company-card.tsx +26 -16
  444. package/blocks/visitors/components/visitor-detail.tsx +105 -0
  445. package/blocks/visitors/components/visitor-feed.tsx +16 -7
  446. package/blocks/visitors/components/visitors-screen.tsx +166 -0
  447. package/blocks/webchat/README.md +10 -0
  448. package/blocks/webchat/block.json +21 -7
  449. package/blocks/webchat/components/chat-widget-config.tsx +8 -5
  450. package/blocks/webchat/components/conversation-list.tsx +8 -4
  451. package/blocks/webchat/components/webchat-screen.tsx +245 -0
  452. package/blocks/workbench/README.md +11 -0
  453. package/blocks/workbench/block.json +48 -1
  454. package/blocks/workbench/components/column-recipe-editor.tsx +5 -3
  455. package/blocks/workbench/components/run-progress.tsx +1 -1
  456. package/blocks/workbench/components/workbench-grid.tsx +10 -4
  457. package/blocks/workbench/components/workbench-row-detail.tsx +104 -0
  458. package/blocks/workbench/components/workbench-screen.tsx +202 -0
  459. package/blocks/workbench/components/workbench-sources.tsx +194 -0
  460. package/blocks/workbench/components/workbench-table-list.tsx +14 -2
  461. package/blocks/workflows/README.md +13 -0
  462. package/blocks/workflows/block.json +28 -9
  463. package/blocks/workflows/components/run-history.tsx +31 -9
  464. package/blocks/workflows/components/trigger-config.tsx +3 -1
  465. package/blocks/workflows/components/workflow-editor.tsx +4 -2
  466. package/blocks/workflows/components/workflow-list.tsx +13 -6
  467. package/blocks/workflows/components/workflows-screen.tsx +193 -0
  468. package/dist/cli.js +3109 -1977
  469. package/dist/errors.d.mts +34 -0
  470. package/dist/errors.d.ts +34 -0
  471. package/dist/errors.js +46 -0
  472. package/dist/errors.js.map +1 -0
  473. package/dist/errors.mjs +21 -0
  474. package/dist/errors.mjs.map +1 -0
  475. package/dist/index.browser.js +11 -5
  476. package/dist/index.browser.js.map +1 -1
  477. package/dist/index.browser.mjs +11 -5
  478. package/dist/index.browser.mjs.map +1 -1
  479. package/dist/index.d.mts +164 -25
  480. package/dist/index.d.ts +164 -25
  481. package/dist/index.js +11 -5
  482. package/dist/index.js.map +1 -1
  483. package/dist/index.mjs +11 -5
  484. package/dist/index.mjs.map +1 -1
  485. package/dist/react.browser.js +10 -4
  486. package/dist/react.browser.js.map +1 -1
  487. package/dist/react.browser.mjs +10 -4
  488. package/dist/react.browser.mjs.map +1 -1
  489. package/dist/react.d.mts +142 -5
  490. package/dist/react.d.ts +142 -5
  491. package/dist/react.js +10 -4
  492. package/dist/react.js.map +1 -1
  493. package/dist/react.mjs +10 -4
  494. package/dist/react.mjs.map +1 -1
  495. package/dist/types/blocks/add.d.ts +11 -4
  496. package/dist/types/blocks/brand.d.ts +122 -0
  497. package/dist/types/blocks/compose.d.ts +53 -0
  498. package/dist/types/blocks/create.d.ts +27 -20
  499. package/dist/types/blocks/doctor.d.ts +6 -1
  500. package/dist/types/blocks/flows.d.ts +7 -1
  501. package/dist/types/blocks/navfile.d.ts +35 -0
  502. package/dist/types/blocks/orgBrand.d.ts +34 -0
  503. package/dist/types/blocks/paths.d.ts +4 -0
  504. package/dist/types/blocks/prefixes.d.ts +37 -0
  505. package/dist/types/blocks/registry.d.ts +17 -0
  506. package/dist/types/blocks/screens.d.ts +53 -0
  507. package/dist/types/cli.d.ts +5 -0
  508. package/dist/types/errors.d.ts +33 -0
  509. package/dist/types/http.d.ts +2 -18
  510. package/dist/types/version.d.ts +2 -2
  511. package/docs/agents.md +15 -4
  512. package/docs/api/README.md +2 -2
  513. package/docs/api/by-path.md +1 -0
  514. package/docs/api/desk.d.ts +98 -2
  515. package/docs/api/desk.md +123 -1
  516. package/docs/api/inbox.d.ts +10 -2
  517. package/docs/api/inbox.md +10 -2
  518. package/docs/api/seo.d.ts +19 -1
  519. package/docs/api/seo.md +24 -1
  520. package/package.json +16 -2
  521. package/stacks/6sense/pages/companies.tsx.tmpl +21 -0
  522. package/stacks/6sense/pages/contacts.tsx.tmpl +19 -0
  523. package/stacks/6sense/pages/tasks.tsx.tmpl +19 -0
  524. package/stacks/6sense.json +55 -17
  525. package/stacks/apollo/pages/calls.tsx.tmpl +23 -0
  526. package/stacks/apollo/pages/companies.tsx.tmpl +33 -0
  527. package/stacks/apollo/pages/contacts.tsx.tmpl +51 -0
  528. package/stacks/apollo/pages/deals.tsx.tmpl +17 -0
  529. package/stacks/apollo/pages/inbox-contact.tsx.tmpl +13 -0
  530. package/stacks/apollo/pages/lists.tsx.tmpl +12 -0
  531. package/stacks/apollo/pages/meetings.tsx.tmpl +13 -0
  532. package/stacks/apollo/pages/sequences.tsx.tmpl +12 -0
  533. package/stacks/apollo/pages/tasks.tsx.tmpl +20 -0
  534. package/stacks/apollo.json +147 -37
  535. package/stacks/calendly/pages/companies.tsx.tmpl +19 -0
  536. package/stacks/calendly/pages/contacts.tsx.tmpl +21 -0
  537. package/stacks/calendly/pages/meetings.tsx.tmpl +13 -0
  538. package/stacks/calendly/pages/tasks.tsx.tmpl +19 -0
  539. package/stacks/calendly.json +64 -0
  540. package/stacks/clay/pages/companies.tsx.tmpl +31 -0
  541. package/stacks/clay/pages/contacts.tsx.tmpl +31 -0
  542. package/stacks/clay/pages/lists.tsx.tmpl +12 -0
  543. package/stacks/clay/pages/tasks.tsx.tmpl +19 -0
  544. package/stacks/clay.json +73 -27
  545. package/stacks/gong/pages/calls.tsx.tmpl +23 -0
  546. package/stacks/gong/pages/companies.tsx.tmpl +22 -0
  547. package/stacks/gong/pages/contacts.tsx.tmpl +32 -0
  548. package/stacks/gong/pages/lists.tsx.tmpl +12 -0
  549. package/stacks/gong/pages/meetings.tsx.tmpl +13 -0
  550. package/stacks/gong/pages/tasks.tsx.tmpl +19 -0
  551. package/stacks/gong.json +98 -35
  552. package/stacks/hootsuite/pages/companies.tsx.tmpl +22 -0
  553. package/stacks/hootsuite/pages/contacts.tsx.tmpl +28 -0
  554. package/stacks/hootsuite/pages/lists.tsx.tmpl +12 -0
  555. package/stacks/hootsuite/pages/tasks.tsx.tmpl +19 -0
  556. package/stacks/hootsuite.json +104 -0
  557. package/stacks/hubspot/pages/companies.tsx.tmpl +26 -0
  558. package/stacks/hubspot/pages/contacts.tsx.tmpl +45 -0
  559. package/stacks/hubspot/pages/deals.tsx.tmpl +20 -0
  560. package/stacks/hubspot/pages/inbox.tsx.tmpl +103 -0
  561. package/stacks/hubspot/pages/lifecycle.tsx.tmpl +23 -0
  562. package/stacks/hubspot/pages/lists.tsx.tmpl +12 -0
  563. package/stacks/hubspot/pages/meetings.tsx.tmpl +13 -0
  564. package/stacks/hubspot/pages/quotes.tsx.tmpl +11 -0
  565. package/stacks/hubspot/pages/sequences.tsx.tmpl +12 -0
  566. package/stacks/hubspot/pages/tasks.tsx.tmpl +20 -0
  567. package/stacks/hubspot.json +181 -64
  568. package/stacks/intercom/pages/companies.tsx.tmpl +19 -0
  569. package/stacks/intercom/pages/contacts.tsx.tmpl +21 -0
  570. package/stacks/intercom/pages/inbox-contact.tsx.tmpl +13 -0
  571. package/stacks/intercom/pages/tasks.tsx.tmpl +19 -0
  572. package/stacks/intercom.json +52 -20
  573. package/stacks/mailchimp/pages/companies.tsx.tmpl +22 -0
  574. package/stacks/mailchimp/pages/contacts.tsx.tmpl +28 -0
  575. package/stacks/mailchimp/pages/lists.tsx.tmpl +12 -0
  576. package/stacks/mailchimp/pages/tasks.tsx.tmpl +19 -0
  577. package/stacks/mailchimp.json +68 -34
  578. package/stacks/outreach/pages/calls.tsx.tmpl +23 -0
  579. package/stacks/outreach/pages/companies.tsx.tmpl +22 -0
  580. package/stacks/outreach/pages/contacts.tsx.tmpl +46 -0
  581. package/stacks/outreach/pages/inbox-contact.tsx.tmpl +13 -0
  582. package/stacks/outreach/pages/lists.tsx.tmpl +12 -0
  583. package/stacks/outreach/pages/meetings.tsx.tmpl +13 -0
  584. package/stacks/outreach/pages/sequences.tsx.tmpl +12 -0
  585. package/stacks/outreach/pages/tasks.tsx.tmpl +19 -0
  586. package/stacks/outreach.json +106 -25
  587. package/stacks/pipedrive/pages/companies.tsx.tmpl +23 -0
  588. package/stacks/pipedrive/pages/contacts.tsx.tmpl +27 -0
  589. package/stacks/pipedrive/pages/deals.tsx.tmpl +20 -0
  590. package/stacks/pipedrive/pages/inbox.tsx.tmpl +103 -0
  591. package/stacks/pipedrive/pages/meetings.tsx.tmpl +13 -0
  592. package/stacks/pipedrive/pages/quotes.tsx.tmpl +11 -0
  593. package/stacks/pipedrive/pages/tasks.tsx.tmpl +20 -0
  594. package/stacks/pipedrive.json +117 -0
  595. package/stacks/salesforce/pages/companies.tsx.tmpl +26 -0
  596. package/stacks/salesforce/pages/contacts.tsx.tmpl +32 -0
  597. package/stacks/salesforce/pages/deals.tsx.tmpl +20 -0
  598. package/stacks/salesforce/pages/lifecycle.tsx.tmpl +23 -0
  599. package/stacks/salesforce/pages/lists.tsx.tmpl +12 -0
  600. package/stacks/salesforce/pages/quotes.tsx.tmpl +11 -0
  601. package/stacks/salesforce/pages/tasks.tsx.tmpl +20 -0
  602. package/stacks/salesforce.json +85 -31
  603. package/stacks/zoominfo/pages/companies.tsx.tmpl +31 -0
  604. package/stacks/zoominfo/pages/contacts.tsx.tmpl +31 -0
  605. package/stacks/zoominfo/pages/lists.tsx.tmpl +12 -0
  606. package/stacks/zoominfo/pages/tasks.tsx.tmpl +19 -0
  607. package/stacks/zoominfo.json +115 -0
  608. package/styles/styles.css +1 -1
  609. package/templates/next-app/README.md.tmpl +40 -9
  610. package/templates/next-app/app/globals.css.tmpl +349 -64
  611. package/templates/next-app/app/layout.tsx.tmpl +7 -2
  612. package/templates/next-app/components/app-shell.tsx.tmpl +104 -88
  613. package/templates/next-app/components/shell/quick-jump.tsx.tmpl +4 -0
  614. package/templates/next-app/dot-gitignore.tmpl +2 -0
  615. package/templates/next-app/package.json.tmpl +1 -1
@@ -5,6 +5,6 @@
5
5
  * both together (the version-parity gate already pins package.json, the
6
6
  * lockfile and the CHANGELOG to each other).
7
7
  */
8
- export declare const SDK_VERSION = "0.362.0";
8
+ export declare const SDK_VERSION = "0.373.0";
9
9
  /** Value of the `X-G8-Client` header every SDK request carries (I-13). */
10
- export declare const SDK_CLIENT_ID = "js-sdk/0.362.0";
10
+ export declare const SDK_CLIENT_ID = "js-sdk/0.373.0";
package/docs/agents.md CHANGED
@@ -9,7 +9,7 @@ grows every week and your training data is older than this file.
9
9
 
10
10
  graph8 is a B2B go-to-market platform: CRM (contacts, companies, deals, custom objects), a 700M-person
11
11
  data index with enrichment, intent signals, sequences and campaigns across email/SMS/LinkedIn/voice, a unified
12
- inbox, meetings, workflows and more. This SDK reaches all of it: **3315 Developer API
12
+ inbox, meetings, workflows and more. This SDK reaches all of it: **3316 Developer API
13
13
  operations** in 145 areas.
14
14
 
15
15
  ## 1. The short version
@@ -93,7 +93,7 @@ g8.init({ apiKey: process.env.G8_API_KEY! });
93
93
  | | Hand-written clients | `g8.api` (generated) |
94
94
  |---|---|---|
95
95
  | Example | `g8.contacts.upsert({ list_id, work_email })` | `g8.api.assertUpsert.assertContact({ body: { list_id, work_email } })` |
96
- | Coverage | 289 methods, reaching 258 operations | all 3315 operations |
96
+ | Coverage | 289 methods, reaching 258 operations | all 3316 operations |
97
97
  | Returns | the unwrapped value (usually `data`) | the full envelope; read `result.data` |
98
98
  | Arguments | positional / friendly names | `{ path?, query?, headers?, body? }`, exactly as the contract names them |
99
99
  | Reference | [sdk-clients.md](sdk-clients.md) | [api/README.md](api/README.md) |
@@ -142,7 +142,7 @@ Hand-written modules:
142
142
  | [`g8.webhooks`](sdk-clients.md#g8-webhooks) | 1 | API key |
143
143
  | [`g8.workflows`](sdk-clients.md#g8-workflows) | 21 | API key |
144
144
 
145
- `g8.api` namespaces (operation counts): `accounts` (16), `adCampaigns` (19), `adCreatives` (40), `agency` (24), `agent` (8), `agents` (65), `aiInbox` (79), `analytics` (51), `apiKeys` (6), `appDeployments` (7), `appDomains` (5), `appLogs` (2), `appObjects` (10), `appPages` (16), `appPlatformTokens` (3), `appointments` (92), `apps` (22), `assertUpsert` (6), `audienceSyncs` (8), `brandKit` (30), `bugReports` (7), `calendarInvites` (3), `campaignWorkflows` (5), `campaigns` (29), `channels` (5), `cliCampaigns` (6), `cliPipelines` (12), `clickHouse` (2), `companies` (50), `companyIntelligence` (14), `contacts` (70), `content` (41), `contentGridSkills` (6), `copilot` (39), `crmSyncs` (6), `customerSuccess` (19), `dataPipelines` (5), `deals` (48), `deliverability` (17), `desk` (71), `dialer` (46), `dialerAnalytics` (6), `documents` (35), `duplicates` (7), `eSign` (1), `eSignature` (7), `enrichment` (115), `events` (1), `fields` (8), `forms` (35), `gtmCampaigns` (22), `gtmContext` (51), `gtmDeliverability` (1), `gtmKnowledgeBase` (2), `gtmLaunchHelpers` (2), `gtmLibrary` (20), `health` (1), `imageLibrary` (14), `imports` (3), `inbox` (22), `install` (6), `installedApps` (4), `integrationStatus` (6), `integrations` (83), `intent` (16), `knowledge` (21), `knowledgeBase` (2), `landingPages` (59), `leads` (4), `library` (9), `linkedIn` (5), `linkedInOutreach` (20), `lists` (36), `logs` (1), `mailboxes` (38), `marketingIntelligence` (10), `marketplace` (142), `mcp` (1), `me` (1), `meetings` (17), `newsletter` (61), `notes` (19), `notifications` (2), `objects` (42), `openSearch` (4), `ops` (5), `orgGovernance` (17), `orgVideos` (6), `organizationSettings` (22), `phoneNumbers` (16), `processLists` (6), `profile` (14), `programmaticPages` (15), `providerDomains` (34), `providerUsage` (5), `public` (1), `publicCopilot` (1), `publicSignals` (1), `publicVisitors` (2), `quotes` (56), `radar` (42), `radarReports` (8), `recordRoles` (4), `reports` (7), `repos` (4), `research` (13), `revenue` (14), `revenueAnalytics` (6), `revenueLifecycle` (5), `revenueRecords` (15), `roles` (21), `salesCoach` (37), `sandbox` (9), `scans` (2), `scheduleBuy` (9), `scraping` (10), `sdrAnalytics` (5), `search` (19), `seo` (22), `sequenceLifecycle` (8), `sequences` (71), `settings` (18), `signals` (56), `signatures` (24), `skills` (12), `snippet` (3), `socialPublishing` (22), `studioDocuments` (9), `support` (1), `suppressions` (6), `surveys` (21), `tasks` (25), `teamMembers` (21), `teams` (35), `usage` (9), `visitors` (26), `voice` (187), `webAnalytics` (38), `webChat` (46), `webhooks` (8), `websiteEditor` (12), `work` (59), `workbench` (107), `workflows` (59), `workspaceBackup` (7).
145
+ `g8.api` namespaces (operation counts): `accounts` (16), `adCampaigns` (19), `adCreatives` (40), `agency` (24), `agent` (8), `agents` (65), `aiInbox` (79), `analytics` (51), `apiKeys` (6), `appDeployments` (7), `appDomains` (5), `appLogs` (2), `appObjects` (10), `appPages` (16), `appPlatformTokens` (3), `appointments` (92), `apps` (22), `assertUpsert` (6), `audienceSyncs` (8), `brandKit` (30), `bugReports` (7), `calendarInvites` (3), `campaignWorkflows` (5), `campaigns` (29), `channels` (5), `cliCampaigns` (6), `cliPipelines` (12), `clickHouse` (2), `companies` (50), `companyIntelligence` (14), `contacts` (70), `content` (41), `contentGridSkills` (6), `copilot` (39), `crmSyncs` (6), `customerSuccess` (19), `dataPipelines` (5), `deals` (48), `deliverability` (17), `desk` (72), `dialer` (46), `dialerAnalytics` (6), `documents` (35), `duplicates` (7), `eSign` (1), `eSignature` (7), `enrichment` (115), `events` (1), `fields` (8), `forms` (35), `gtmCampaigns` (22), `gtmContext` (51), `gtmDeliverability` (1), `gtmKnowledgeBase` (2), `gtmLaunchHelpers` (2), `gtmLibrary` (20), `health` (1), `imageLibrary` (14), `imports` (3), `inbox` (22), `install` (6), `installedApps` (4), `integrationStatus` (6), `integrations` (83), `intent` (16), `knowledge` (21), `knowledgeBase` (2), `landingPages` (59), `leads` (4), `library` (9), `linkedIn` (5), `linkedInOutreach` (20), `lists` (36), `logs` (1), `mailboxes` (38), `marketingIntelligence` (10), `marketplace` (142), `mcp` (1), `me` (1), `meetings` (17), `newsletter` (61), `notes` (19), `notifications` (2), `objects` (42), `openSearch` (4), `ops` (5), `orgGovernance` (17), `orgVideos` (6), `organizationSettings` (22), `phoneNumbers` (16), `processLists` (6), `profile` (14), `programmaticPages` (15), `providerDomains` (34), `providerUsage` (5), `public` (1), `publicCopilot` (1), `publicSignals` (1), `publicVisitors` (2), `quotes` (56), `radar` (42), `radarReports` (8), `recordRoles` (4), `reports` (7), `repos` (4), `research` (13), `revenue` (14), `revenueAnalytics` (6), `revenueLifecycle` (5), `revenueRecords` (15), `roles` (21), `salesCoach` (37), `sandbox` (9), `scans` (2), `scheduleBuy` (9), `scraping` (10), `sdrAnalytics` (5), `search` (19), `seo` (22), `sequenceLifecycle` (8), `sequences` (71), `settings` (18), `signals` (56), `signatures` (24), `skills` (12), `snippet` (3), `socialPublishing` (22), `studioDocuments` (9), `support` (1), `suppressions` (6), `surveys` (21), `tasks` (25), `teamMembers` (21), `teams` (35), `usage` (9), `visitors` (26), `voice` (187), `webAnalytics` (38), `webChat` (46), `webhooks` (8), `websiteEditor` (12), `work` (59), `workbench` (107), `workflows` (59), `workspaceBackup` (7).
146
146
 
147
147
  ## 5. How to find the right call
148
148
 
@@ -198,7 +198,7 @@ Every operation carries a tier:
198
198
  | Tier | What it means | Count |
199
199
  |---|---|---|
200
200
  | `read` | reads data; safe to call and to retry | 1540 |
201
- | `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 836 |
201
+ | `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 837 |
202
202
  | `destructive` | deletes or archives data; confirm with a human before calling | 305 |
203
203
  | `billable` | spends credits; the SDK never blindly retries it; confirm cost before bulk use | 383 |
204
204
  | `external` | reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first | 251 |
@@ -783,6 +783,17 @@ node_modules/@graph8/sdk/
783
783
  to decide which screens need a confirmation (`billable`, `external`, `destructive`) and which key to
784
784
  create. Where `defaults` says `askHuman: true`, ask the person before using the default.
785
785
  - **Search the catalog** with `grep -h '"summary"' node_modules/@graph8/sdk/blocks/*/block.json`.
786
+ - **To build an app, start here**: `npx @graph8/sdk create --blocks <ids> <dir>` (for example
787
+ `--blocks crm,deals,inbox --title "Acme CRM"`; `create custom --blocks ...` is the same). Any product, not only
788
+ a named stack: pick the features, get a Next.js app with each block's finished screens as routes plus a sidebar
789
+ (grouped, with icons), `/` opening the analytics screen if you asked for it else the first screen, and the
790
+ `dependsOn` closure installed (asking for deals also gives you crm's screens; `--no-deps-screens` to skip them,
791
+ `--with-deps-screens` to add plain pages for dependencies with no Screen). `npx @graph8/sdk list` shows which blocks
792
+ have Screens. Later, `npx @graph8/sdk add <block>` inside that app adds the new block's routes and nav entries too
793
+ (idempotent; a page you edited is kept). In an app made from a named stack (`create apollo`, `starter`, ...) `add` leaves
794
+ routes and `lib/nav.ts` alone unless you pass `--routes`. A block's `block.json` may carry `screens: [{ component, path, label,
795
+ icon?, group?, description?, order? }]`; without it, each component named `*Screen` becomes a route
796
+ (`ContactsScreen` -> `/contacts`).
786
797
  - **Start a whole app with one command**: `npx @graph8/sdk create <stack> <dir>` scaffolds a Next.js App Router +
787
798
  TypeScript + Tailwind v4 app, installs the stack's blocks (the same code as `add`), puts every screen of
788
799
  the stack in a sidebar with one route each, and installs dependencies (`--no-install`, `--dry-run`,
@@ -2,7 +2,7 @@
2
2
 
3
3
  # `g8.api`: every Developer API operation
4
4
 
5
- `g8.api` is generated from the published OpenAPI contract, so it covers all 3315 operations across 145 namespaces (1540 read, 836 write, 305 destructive, 383 billable, 251 external).
5
+ `g8.api` is generated from the published OpenAPI contract, so it covers all 3316 operations across 145 namespaces (1540 read, 837 write, 305 destructive, 383 billable, 251 external).
6
6
 
7
7
  - Found a REST path in a curl example or the web docs? Look it up in [by-path.md](by-path.md).
8
8
  - Prefer a hand-written method where one exists: [../sdk-clients.md](../sdk-clients.md).
@@ -61,7 +61,7 @@
61
61
  | `g8.api.dataPipelines` | Data pipelines | 5 | none | [dataPipelines.md](dataPipelines.md) | [dataPipelines.d.ts](dataPipelines.d.ts) |
62
62
  | `g8.api.deals` | Deals | 48 | 8 | [deals.md](deals.md) | [deals.d.ts](deals.d.ts) |
63
63
  | `g8.api.deliverability` | Deliverability | 17 | none | [deliverability.md](deliverability.md) | [deliverability.d.ts](deliverability.d.ts) |
64
- | `g8.api.desk` | Desk | 71 | none | [desk.md](desk.md) | [desk.d.ts](desk.d.ts) |
64
+ | `g8.api.desk` | Desk | 72 | none | [desk.md](desk.md) | [desk.d.ts](desk.d.ts) |
65
65
  | `g8.api.dialer` | Dialer | 46 | none | [dialer.md](dialer.md) | [dialer.d.ts](dialer.d.ts) |
66
66
  | `g8.api.dialerAnalytics` | Dialer Analytics | 6 | none | [dialerAnalytics.md](dialerAnalytics.md) | [dialerAnalytics.d.ts](dialerAnalytics.d.ts) |
67
67
  | `g8.api.documents` | Documents | 35 | none | [documents.md](documents.md) | [documents.d.ts](documents.d.ts) |
@@ -975,6 +975,7 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
975
975
  | POST | `/api/v1/desk/batch/start` | [`g8.api.desk.startDeskBatch`](desk.md#op-startdeskbatch) | write |
976
976
  | GET | `/api/v1/desk/blocks` | [`g8.api.desk.listDeskBlocks`](desk.md#op-listdeskblocks) | read |
977
977
  | GET | `/api/v1/desk/blocks/{list_id}/queue` | [`g8.api.desk.getDeskBlockQueue`](desk.md#op-getdeskblockqueue) | read |
978
+ | POST | `/api/v1/desk/cards` | [`g8.api.desk.createDeskCard`](desk.md#op-createdeskcard) | write |
978
979
  | GET | `/api/v1/desk/committee-heat` | [`g8.api.desk.getDeskCommitteeHeat`](desk.md#op-getdeskcommitteeheat) | read |
979
980
  | GET | `/api/v1/desk/committee-targets` | [`g8.api.desk.getDeskCommitteeTargets`](desk.md#op-getdeskcommitteetargets) | read |
980
981
  | GET | `/api/v1/desk/compliance-summary` | [`g8.api.desk.getDeskComplianceSummary`](desk.md#op-getdeskcompliancesummary) | read |
@@ -1,7 +1,7 @@
1
1
  /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
2
 
3
3
  /**
4
- * Types for `g8.api.desk` (Desk): 71 operations.
4
+ * Types for `g8.api.desk` (Desk): 72 operations.
5
5
  *
6
6
  * For reading. In code, import from the package instead:
7
7
  * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
@@ -17,6 +17,7 @@ export interface DeskMembers {
17
17
  askDesk: "ask_desk_desk_ask_post";
18
18
  checkCommitteePlay: "check_committee_play_desk_accounts__account_id__committee_plays__action_id__check_get";
19
19
  checkDeskPlanStageSweep: "check_desk_plan_stage_sweep_desk_org_settings_plan_stages_check_get";
20
+ createDeskCard: "create_desk_card_desk_cards_post";
20
21
  createOrReplanAccountPlan: "create_or_replan_account_plan_desk_accounts__account_id__plan_post";
21
22
  decideDeskPlayApproval: "decide_desk_play_approval_desk_plays_approvals__execution_id__decide_post";
22
23
  draftAccountPlan: "draft_account_plan_desk_accounts__account_id__plan_draft_post";
@@ -152,6 +153,20 @@ export interface DeskOperations {
152
153
  };
153
154
  output: ApiResponse_DeskPayload_;
154
155
  };
156
+ /**
157
+ * POST /desk/cards
158
+ * Put one planned outreach touch (an email, LinkedIn or call step for one contact) on a rep's desk with its why, facts and draft. The rep edits and sends it; nothing sends by itself. owner_id must be the caller's own email unless the key is an org or machine key: a personal key or an OAuth connection is a person and gets 403 owner_not_self for anyone else. Posting the same external_key again updates the open card instead of adding a second one. Needs deals:write and a key allowed to see the contact
159
+ * tier: write · scope: deals:write
160
+ */
161
+ create_desk_card_desk_cards_post: {
162
+ input: {
163
+ headers?: {
164
+ "X-Target-Org-Id"?: string | null;
165
+ };
166
+ body: DeskCardCreateRequest;
167
+ };
168
+ output: ApiResponse_DeskCardResult_;
169
+ };
155
170
  /**
156
171
  * POST /desk/accounts/{account_id}/plan
157
172
  * Create Or Replan Account Plan
@@ -1273,7 +1288,7 @@ export interface DeskOperations {
1273
1288
  };
1274
1289
  }
1275
1290
 
1276
- // 40 schemas referenced above (the same as G8Contract.<Name>).
1291
+ // 47 schemas referenced above (the same as G8Contract.<Name>).
1277
1292
 
1278
1293
  /**
1279
1294
  * Persist the approved steps as a NEW plan version.
@@ -1388,6 +1403,11 @@ export interface ApiResponse_DeskBatch_ {
1388
1403
  pagination?: PaginationMeta | null;
1389
1404
  }
1390
1405
 
1406
+ export interface ApiResponse_DeskCardResult_ {
1407
+ data: DeskCardResult;
1408
+ pagination?: PaginationMeta | null;
1409
+ }
1410
+
1391
1411
  export interface ApiResponse_DeskDecisionListResponse_ {
1392
1412
  data: DeskDecisionListResponse;
1393
1413
  pagination?: PaginationMeta | null;
@@ -1537,6 +1557,82 @@ export interface DeskBatchStartRequest {
1537
1557
  tz_offset?: number;
1538
1558
  }
1539
1559
 
1560
+ export interface DeskCardContext {
1561
+ /** Bullets under what we know. Empty ones are dropped. */
1562
+ facts?: Array<string>;
1563
+ /** The columns the card was built from, shown as chips. */
1564
+ fields?: Record<string, string>;
1565
+ persona?: string | null;
1566
+ /** The one-line reason, shown at the top of the card. */
1567
+ why?: string | null;
1568
+ }
1569
+
1570
+ export interface DeskCardCreateRequest {
1571
+ /** The contact's company, when it is not the contact's own. */
1572
+ account_id?: number | null;
1573
+ /** email, linkedin or call. */
1574
+ channel: string;
1575
+ /** The contact the touch is for. */
1576
+ contact_id: number;
1577
+ context?: DeskCardContext | null;
1578
+ draft?: DeskCardDraft | null;
1579
+ /** When the touch is due. It orders the queue and never hides the card. */
1580
+ due_at?: string | null;
1581
+ /** Your own key for this touch. Posting it again updates the unsent card. Keys are kept apart by `origin.kind`; with no `origin.kind` the key must be unique across the org. */
1582
+ external_key?: string | null;
1583
+ list_id?: number | null;
1584
+ origin?: DeskCardOrigin | null;
1585
+ /** Whose desk: a team member's email, id or user id. With a personal key or an OAuth connection this must be the caller's own email (the key is a person; anyone else is 403 owner_not_self). Only an org or machine key may name another rep. */
1586
+ owner_id: string;
1587
+ /** low, normal, high or urgent. */
1588
+ priority?: string;
1589
+ sender?: DeskCardSender | null;
1590
+ /** The touch number in the list's cadence. */
1591
+ touch?: number | null;
1592
+ }
1593
+
1594
+ /**
1595
+ * Shaped by the channel. email: subject, body. linkedin: kind (connect or
1596
+ * message), message, a connect note at most 300 characters. call:
1597
+ * talking_points, questions, handoff_line.
1598
+ */
1599
+ export interface DeskCardDraft {
1600
+ body?: string | null;
1601
+ handoff_line?: string | null;
1602
+ kind?: string | null;
1603
+ /** A connect note is at most 300 characters. */
1604
+ message?: string | null;
1605
+ questions?: Array<string>;
1606
+ subject?: string | null;
1607
+ talking_points?: Array<string>;
1608
+ }
1609
+
1610
+ export interface DeskCardOrigin {
1611
+ /** Who planned it, e.g. "list_plan" or "workflow". */
1612
+ kind?: string | null;
1613
+ mapping?: string | null;
1614
+ }
1615
+
1616
+ export interface DeskCardResult {
1617
+ card_id: string;
1618
+ due_at?: string | null;
1619
+ note?: string | null;
1620
+ /** "queued" until the rep acts on it. */
1621
+ status?: string | null;
1622
+ /** True when this body updated a card already on the desk. */
1623
+ updated?: boolean;
1624
+ url?: string | null;
1625
+ }
1626
+
1627
+ export interface DeskCardSender {
1628
+ /** Not used: LinkedIn sends from the rep's own connected account. */
1629
+ linkedin_seat_id?: string | null;
1630
+ /** Email address the card sends from. Checked against the rep's send rights when the rep sends. */
1631
+ mailbox?: string | null;
1632
+ /** Not used: email sends from `mailbox`, else the rep's own mailbox. */
1633
+ mailbox_id?: string | null;
1634
+ }
1635
+
1540
1636
  /** One card in the queue: something the desk thinks a rep should do next. */
1541
1637
  export interface DeskDecision {
1542
1638
  created_at?: string | null;
package/docs/api/desk.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # `g8.api.desk`: Desk
4
4
 
5
- 71 operations (38 read, 15 write, 10 billable, 8 external).
5
+ 72 operations (38 read, 16 write, 10 billable, 8 external).
6
6
 
7
7
  No hand-written client covers this area. Call it through `g8.api.desk.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
8
8
 
@@ -26,6 +26,7 @@ Exact TypeScript types for every operation on this page, and every schema they u
26
26
  | [`askDesk`](#op-askdesk) | `POST /api/v1/desk/ask` | billable | `deals:run` | Ask Desk |
27
27
  | [`checkCommitteePlay`](#op-checkcommitteeplay) | `GET /api/v1/desk/accounts/{account_id}/committee/plays/{action_id}/check` | read | `deals:read` | Check Committee Play |
28
28
  | [`checkDeskPlanStageSweep`](#op-checkdeskplanstagesweep) | `GET /api/v1/desk/org-settings/plan-stages/check` | read | `deals:read` | Check Desk Plan Stage Sweep |
29
+ | [`createDeskCard`](#op-createdeskcard) | `POST /api/v1/desk/cards` | write | `deals:write` | Put one planned outreach touch (an email, LinkedIn or call step for one contact) on a rep's desk with its why, facts an… |
29
30
  | [`createOrReplanAccountPlan`](#op-createorreplanaccountplan) | `POST /api/v1/desk/accounts/{account_id}/plan` | write | `deals:write` | Create Or Replan Account Plan |
30
31
  | [`decideDeskPlayApproval`](#op-decidedeskplayapproval) | `POST /api/v1/desk/plays/approvals/{execution_id}/decide` | external | `deals:run` | Decide Desk Play Approval |
31
32
  | [`draftAccountPlan`](#op-draftaccountplan) | `POST /api/v1/desk/accounts/{account_id}/plan/draft` | billable | `deals:run` | Draft Account Plan |
@@ -256,6 +257,81 @@ const result = await g8.api.desk.checkDeskPlanStageSweep();
256
257
 
257
258
  ---
258
259
 
260
+ <a id="op-createdeskcard"></a>
261
+
262
+ ### `g8.api.desk.createDeskCard(input)`
263
+
264
+ **Put one planned outreach touch (an email, LinkedIn or call step for one contact) on a rep's desk with its why, facts and draft. The rep edits and sends it; nothing sends by itself. owner_id must be t…**
265
+
266
+ - HTTP: `POST /api/v1/desk/cards`
267
+ - operationId: `create_desk_card_desk_cards_post` (also callable as `g8.api.call("create_desk_card_desk_cards_post", input)`)
268
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
269
+ - API-key scope: `deals:write`
270
+
271
+ Put one planned touch on a rep's desk, with its why, facts, fields and draft.
272
+
273
+ 201 when the card is made. The same touch posted again (same
274
+ `external_key`, else the same `list_id` + `contact_id` + `touch`, else the
275
+ same rep, contact, channel and due day) while the card is unsent answers
276
+ 200 with the same `card_id` and `updated: true`. An `external_key` is
277
+ kept apart per `origin.kind`, so two integrations may both use "1"; a
278
+ body with no `origin.kind` shares one namespace with every other such
279
+ caller in the org, so its key must be unique across the org. Once the rep has sent or
280
+ decided it, a re-post makes a new card. A card the desk will not make is a
281
+ 4xx whose `detail.reason` says why. A personal key may name only its own
282
+ holder (403 `owner_not_self`); an org key may name any active rep.
283
+ The key must be allowed to see the contact (and the account when one is
284
+ named, else the contact's own company), checked the way the contacts and deals routes check a record id
285
+ from a body; one it may not see is 403 `contact_not_allowed` /
286
+ `account_not_allowed` and no card is made.
287
+
288
+ **Input**
289
+
290
+ | Field | Type | Required | Description |
291
+ |---|---|---|---|
292
+ | `body` | `DeskCardCreateRequest` | yes | Request body; fields below. |
293
+
294
+ Body fields (`DeskCardCreateRequest`):
295
+
296
+ | Field | Type | Required | Description |
297
+ |---|---|---|---|
298
+ | `body.channel` | `string` | yes | email, linkedin or call. min length 1, max length 32 |
299
+ | `body.contact_id` | `integer` | yes | The contact the touch is for. max 9223372036854776000, > 0 |
300
+ | `body.owner_id` | `string` | yes | Whose desk: a team member's email, id or user id. With a personal key or an OAuth connection this must be the caller's own email (the key is a person; anyone else is 403 owner_not_self). Only an org or machine key may name another rep. min length 1, max length 320 |
301
+ | `body.account_id` | `integer \| null` | no | The contact's company, when it is not the contact's own. max 9223372036854776000, > 0 |
302
+ | `body.context` | `DeskCardContext \| null` | no | |
303
+ | `body.draft` | `DeskCardDraft \| null` | no | |
304
+ | `body.due_at` | `string (date-time) \| null` | no | When the touch is due. It orders the queue and never hides the card. |
305
+ | `body.external_key` | `string \| null` | no | Your own key for this touch. Posting it again updates the unsent card. Keys are kept apart by `origin.kind`; with no `origin.kind` the key must be unique across the org. max length 200 |
306
+ | `body.list_id` | `integer \| null` | no | max 9223372036854776000, > 0 |
307
+ | `body.origin` | `DeskCardOrigin \| null` | no | |
308
+ | `body.priority` | `string` | no | low, normal, high or urgent. default `"normal"`, max length 16 |
309
+ | `body.sender` | `DeskCardSender \| null` | no | |
310
+ | `body.touch` | `integer \| null` | no | The touch number in the list's cadence. min 1, max 1000 |
311
+
312
+ **Returns** `ApiResponse_DeskCardResult_`: the envelope `{ data: DeskCardResult, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
313
+
314
+ Other envelope fields: `pagination` (PaginationMeta).
315
+
316
+ `DeskCardResult` fields:
317
+
318
+ | Field | Type | Required | Description |
319
+ |---|---|---|---|
320
+ | `card_id` | `string` | yes | |
321
+ | `due_at` | `string \| null` | no | |
322
+ | `note` | `string \| null` | no | |
323
+ | `status` | `string \| null` | no | "queued" until the rep acts on it. |
324
+ | `updated` | `boolean` | no | True when this body updated a card already on the desk. default `false` |
325
+ | `url` | `string \| null` | no | |
326
+
327
+ **Example**
328
+
329
+ ```ts
330
+ const result = await g8.api.desk.createDeskCard({ body: { channel: "example", contact_id: 1, owner_id: "id" } });
331
+ ```
332
+
333
+ ---
334
+
259
335
  <a id="op-createorreplanaccountplan"></a>
260
336
 
261
337
  ### `g8.api.desk.createOrReplanAccountPlan(input)`
@@ -2976,6 +3052,52 @@ A contact to put on the buying committee.
2976
3052
  | `contact_id` | `integer` | yes | |
2977
3053
  | `role` | `string \| null` | no | Their part in the decision, e.g. "champion". |
2978
3054
 
3055
+ <a id="type-deskcardcontext"></a>
3056
+
3057
+ ### `DeskCardContext`
3058
+
3059
+ | Field | Type | Required | Description |
3060
+ |---|---|---|---|
3061
+ | `facts` | `Array<string>` | no | Bullets under what we know. Empty ones are dropped. max items 20 |
3062
+ | `fields` | `Record<string, string>` | no | The columns the card was built from, shown as chips. |
3063
+ | `persona` | `string \| null` | no | max length 200 |
3064
+ | `why` | `string \| null` | no | The one-line reason, shown at the top of the card. max length 1000 |
3065
+
3066
+ <a id="type-deskcarddraft"></a>
3067
+
3068
+ ### `DeskCardDraft`
3069
+
3070
+ Shaped by the channel. email: subject, body. linkedin: kind (connect or message), message, a connect note at most 300 characters. call: talking_points, questions, handoff_line.
3071
+
3072
+ | Field | Type | Required | Description |
3073
+ |---|---|---|---|
3074
+ | `body` | `string \| null` | no | max length 20000 |
3075
+ | `handoff_line` | `string \| null` | no | max length 1000 |
3076
+ | `kind` | `string \| null` | no | max length 32 |
3077
+ | `message` | `string \| null` | no | A connect note is at most 300 characters. max length 8000 |
3078
+ | `questions` | `Array<string>` | no | max items 20 |
3079
+ | `subject` | `string \| null` | no | max length 300 |
3080
+ | `talking_points` | `Array<string>` | no | max items 20 |
3081
+
3082
+ <a id="type-deskcardorigin"></a>
3083
+
3084
+ ### `DeskCardOrigin`
3085
+
3086
+ | Field | Type | Required | Description |
3087
+ |---|---|---|---|
3088
+ | `kind` | `string \| null` | no | Who planned it, e.g. "list_plan" or "workflow". max length 100 |
3089
+ | `mapping` | `string \| null` | no | max length 300 |
3090
+
3091
+ <a id="type-deskcardsender"></a>
3092
+
3093
+ ### `DeskCardSender`
3094
+
3095
+ | Field | Type | Required | Description |
3096
+ |---|---|---|---|
3097
+ | `linkedin_seat_id` | `string \| null` | no | Not used: LinkedIn sends from the rep's own connected account. max length 200 |
3098
+ | `mailbox` | `string \| null` | no | Email address the card sends from. Checked against the rep's send rights when the rep sends. max length 320 |
3099
+ | `mailbox_id` | `string \| null` | no | Not used: email sends from `mailbox`, else the rep's own mailbox. max length 200 |
3100
+
2979
3101
  <a id="type-deskdecision"></a>
2980
3102
 
2981
3103
  ### `DeskDecision`
@@ -618,11 +618,19 @@ export interface InboxThreadResponse {
618
618
  /** Contact snapshot: name, email, company */
619
619
  contact?: Record<string, unknown> | null;
620
620
  created_at?: string | null;
621
+ /** SMS: your number the thread runs on; the default `from_address` for an SMS reply. */
622
+ from_number?: string | null;
621
623
  id: string;
624
+ /** LinkedIn: the sending account; the default `from_address` for a LinkedIn reply. */
625
+ linkedin_account_id?: number | null;
626
+ /** Email: the connected mailbox this thread belongs to. A reply goes out from it by default, so pass it as `from_address` (or omit `from_address`) on POST /inbox/{id}/send. */
627
+ mailbox?: string | null;
622
628
  messages?: Array<InboxMessageItem>;
623
629
  status?: string | null;
624
630
  subject?: string | null;
625
631
  tags?: Array<Record<string, unknown>>;
632
+ /** SMS: the contact's number; the default `to` for an SMS reply. */
633
+ to_number?: string | null;
626
634
  updated_at?: string | null;
627
635
  }
628
636
 
@@ -662,11 +670,11 @@ export interface SendRequest {
662
670
  body: string;
663
671
  /** Channel to send through: email, sms, or linkedin */
664
672
  channel: InboxChannel;
665
- /** Sender address (mailbox email, phone number, or LinkedIn account ID) */
673
+ /** Sender (mailbox email, your phone number, or numeric LinkedIn account ID). Omit it to send from the thread's own mailbox / number / LinkedIn account (the thread's `mailbox`, `from_number` or `linkedin_account_id`). You still need permission to send as that sender. */
666
674
  from_address?: string | null;
667
675
  /** Email subject (optional, for email channel) */
668
676
  subject?: string | null;
669
- /** Recipient override (email address, phone number, or LinkedIn ID) */
677
+ /** Recipient override (email address or phone number). Omit it to reply to the thread's contact: the contact's email (else the last inbound sender) for email, the thread's contact number for SMS. Not used for LinkedIn. */
670
678
  to?: string | null;
671
679
  }
672
680
 
package/docs/api/inbox.md CHANGED
@@ -359,10 +359,14 @@ Other envelope fields: `pagination` (PaginationMeta).
359
359
  | `assignees` | `Array<Record<string, unknown>>` | no | |
360
360
  | `contact` | `Record<string, unknown> \| null` | no | Contact snapshot: name, email, company |
361
361
  | `created_at` | `string \| null` | no | |
362
+ | `from_number` | `string \| null` | no | SMS: your number the thread runs on; the default `from_address` for an SMS reply. |
363
+ | `linkedin_account_id` | `integer \| null` | no | LinkedIn: the sending account; the default `from_address` for a LinkedIn reply. |
364
+ | `mailbox` | `string \| null` | no | Email: the connected mailbox this thread belongs to. A reply goes out from it by default, so pass it as `from_address` (or omit `from_address`) on POST /inbox/{id}/send. |
362
365
  | `messages` | `Array<InboxMessageItem>` | no | |
363
366
  | `status` | `string \| null` | no | |
364
367
  | `subject` | `string \| null` | no | |
365
368
  | `tags` | `Array<Record<string, unknown>>` | no | |
369
+ | `to_number` | `string \| null` | no | SMS: the contact's number; the default `to` for an SMS reply. |
366
370
  | `updated_at` | `string \| null` | no | |
367
371
 
368
372
  **Example**
@@ -543,10 +547,14 @@ Other envelope fields: `pagination` (PaginationMeta).
543
547
  | `assignees` | `Array<Record<string, unknown>>` | no | |
544
548
  | `contact` | `Record<string, unknown> \| null` | no | Contact snapshot: name, email, company |
545
549
  | `created_at` | `string \| null` | no | |
550
+ | `from_number` | `string \| null` | no | SMS: your number the thread runs on; the default `from_address` for an SMS reply. |
551
+ | `linkedin_account_id` | `integer \| null` | no | LinkedIn: the sending account; the default `from_address` for a LinkedIn reply. |
552
+ | `mailbox` | `string \| null` | no | Email: the connected mailbox this thread belongs to. A reply goes out from it by default, so pass it as `from_address` (or omit `from_address`) on POST /inbox/{id}/send. |
546
553
  | `messages` | `Array<InboxMessageItem>` | no | |
547
554
  | `status` | `string \| null` | no | |
548
555
  | `subject` | `string \| null` | no | |
549
556
  | `tags` | `Array<Record<string, unknown>>` | no | |
557
+ | `to_number` | `string \| null` | no | SMS: the contact's number; the default `to` for an SMS reply. |
550
558
  | `updated_at` | `string \| null` | no | |
551
559
 
552
560
  **Example**
@@ -915,9 +923,9 @@ Body fields (`SendRequest`):
915
923
  |---|---|---|---|
916
924
  | `body.body` | `string` | yes | Message body to send |
917
925
  | `body.channel` | `InboxChannel` | yes | Channel to send through: email, sms, or linkedin |
918
- | `body.from_address` | `string \| null` | no | Sender address (mailbox email, phone number, or LinkedIn account ID) |
926
+ | `body.from_address` | `string \| null` | no | Sender (mailbox email, your phone number, or numeric LinkedIn account ID). Omit it to send from the thread's own mailbox / number / LinkedIn account (the thread's `mailbox`, `from_number` or `linkedin_account_id`). You still need permission to send as that sender. |
919
927
  | `body.subject` | `string \| null` | no | Email subject (optional, for email channel) |
920
- | `body.to` | `string \| null` | no | Recipient override (email address, phone number, or LinkedIn ID) |
928
+ | `body.to` | `string \| null` | no | Recipient override (email address or phone number). Omit it to reply to the thread's contact: the contact's email (else the last inbound sender) for email, the thread's contact number for SMS. Not used for LinkedIn. |
921
929
 
922
930
  **Returns** `ApiResponse_SendResponse_`: the envelope `{ data: SendResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
923
931
 
package/docs/api/seo.d.ts CHANGED
@@ -627,6 +627,7 @@ export interface SeoAudit {
627
627
  created_at?: string | null;
628
628
  credits_charged?: number | null;
629
629
  domain: string;
630
+ enable_javascript?: boolean;
630
631
  failure_reason?: string | null;
631
632
  id: string;
632
633
  max_pages: number;
@@ -640,6 +641,7 @@ export interface SeoAudit {
640
641
  /** Mirrors `AuditIssueDTO`. */
641
642
  export interface SeoAuditIssue {
642
643
  affected_count: number;
644
+ affected_total?: number;
643
645
  affected_urls?: Array<Record<string, unknown>>;
644
646
  issue_type: string;
645
647
  severity: string;
@@ -765,11 +767,20 @@ export interface SeoEndOfDay {
765
767
  /** Mirrors `KeywordRow`. */
766
768
  export interface SeoKeywordRow {
767
769
  competition?: number;
768
- cpc?: number;
770
+ cpc?: number | null;
771
+ cpc_high?: number | null;
769
772
  intent?: string | null;
773
+ intents?: Array<string>;
770
774
  keyword: string;
771
775
  keyword_difficulty?: number | null;
776
+ parent_topic?: string | null;
777
+ parent_topic_volume?: number | null;
778
+ results_count?: number | null;
772
779
  search_volume?: number;
780
+ search_volume_avg?: number | null;
781
+ serp_features?: Array<string>;
782
+ trend?: Array<number>;
783
+ volume_spike?: boolean;
773
784
  }
774
785
 
775
786
  export interface SeoMover {
@@ -885,7 +896,9 @@ export interface SeoSetupItem {
885
896
  * thing the credit reservation is sized from.
886
897
  */
887
898
  export interface SeoStartAuditRequest {
899
+ allow_subdomains?: boolean;
888
900
  domain: string;
901
+ enable_javascript?: boolean;
889
902
  max_pages?: number;
890
903
  }
891
904
 
@@ -990,6 +1003,7 @@ export interface SeoTrackedDomainMetrics {
990
1003
  organic_keywords?: number | null;
991
1004
  referring_domains?: number | null;
992
1005
  top3_positions?: number | null;
1006
+ traffic_basis?: string | null;
993
1007
  }
994
1008
 
995
1009
  /**
@@ -1005,6 +1019,7 @@ export interface SeoTrackedDomains {
1005
1019
  pages_cap: number;
1006
1020
  pages_max_credits: number;
1007
1021
  refresh_credits: number;
1022
+ research_credits?: number;
1008
1023
  }
1009
1024
 
1010
1025
  /** Mirrors `TrackedKeywordDTO`. */
@@ -1017,7 +1032,10 @@ export interface SeoTrackedKeyword {
1017
1032
  language_code: string;
1018
1033
  latest_checked_at?: string | null;
1019
1034
  latest_rank?: number | null;
1035
+ latest_serp_depth?: number | null;
1020
1036
  latest_serp_url?: string | null;
1021
1037
  location_code: number;
1022
1038
  search_volume?: number | null;
1039
+ serp_features?: Array<string>;
1040
+ tags?: Array<string>;
1023
1041
  }
package/docs/api/seo.md CHANGED
@@ -229,6 +229,7 @@ Other envelope fields: `pagination` (PaginationMeta).
229
229
  | `completed_at` | `string (date-time) \| null` | no | |
230
230
  | `created_at` | `string (date-time) \| null` | no | |
231
231
  | `credits_charged` | `integer \| null` | no | |
232
+ | `enable_javascript` | `boolean` | no | default `false` |
232
233
  | `failure_reason` | `string \| null` | no | |
233
234
  | `onpage_score` | `number \| null` | no | |
234
235
  | `pages_crawled` | `integer \| null` | no | |
@@ -636,6 +637,7 @@ Other envelope fields: `pagination` (PaginationMeta).
636
637
  | `completed_at` | `string (date-time) \| null` | no | |
637
638
  | `created_at` | `string (date-time) \| null` | no | |
638
639
  | `credits_charged` | `integer \| null` | no | |
640
+ | `enable_javascript` | `boolean` | no | default `false` |
639
641
  | `failure_reason` | `string \| null` | no | |
640
642
  | `onpage_score` | `number \| null` | no | |
641
643
  | `pages_crawled` | `integer \| null` | no | |
@@ -832,6 +834,7 @@ Other envelope fields: `pagination` (PaginationMeta).
832
834
  | `pages_cap` | `integer` | yes | |
833
835
  | `pages_max_credits` | `integer` | yes | |
834
836
  | `refresh_credits` | `integer` | yes | |
837
+ | `research_credits` | `integer` | no | default `1` |
835
838
 
836
839
  **Example**
837
840
 
@@ -880,8 +883,11 @@ Other envelope fields: `pagination` (PaginationMeta).
880
883
  | `created_at` | `string (date-time) \| null` | no | |
881
884
  | `latest_checked_at` | `string (date-time) \| null` | no | |
882
885
  | `latest_rank` | `integer \| null` | no | |
886
+ | `latest_serp_depth` | `integer \| null` | no | |
883
887
  | `latest_serp_url` | `string \| null` | no | |
884
888
  | `search_volume` | `integer \| null` | no | |
889
+ | `serp_features` | `Array<string>` | no | default `[]` |
890
+ | `tags` | `Array<string>` | no | default `[]` |
885
891
 
886
892
  **Example**
887
893
 
@@ -1046,8 +1052,11 @@ Other envelope fields: `pagination` (PaginationMeta).
1046
1052
  | `created_at` | `string (date-time) \| null` | no | |
1047
1053
  | `latest_checked_at` | `string (date-time) \| null` | no | |
1048
1054
  | `latest_rank` | `integer \| null` | no | |
1055
+ | `latest_serp_depth` | `integer \| null` | no | |
1049
1056
  | `latest_serp_url` | `string \| null` | no | |
1050
1057
  | `search_volume` | `integer \| null` | no | |
1058
+ | `serp_features` | `Array<string>` | no | default `[]` |
1059
+ | `tags` | `Array<string>` | no | default `[]` |
1051
1060
 
1052
1061
  **Example**
1053
1062
 
@@ -1090,6 +1099,8 @@ Body fields (`SeoStartAuditRequest`):
1090
1099
  | Field | Type | Required | Description |
1091
1100
  |---|---|---|---|
1092
1101
  | `body.domain` | `string` | yes | min length 3, max length 255 |
1102
+ | `body.allow_subdomains` | `boolean` | no | default `false` |
1103
+ | `body.enable_javascript` | `boolean` | no | default `false` |
1093
1104
  | `body.max_pages` | `integer` | no | default `500`, min 10, max 500 |
1094
1105
 
1095
1106
  **Returns** `ApiResponse_SeoAudit_`: the envelope `{ data: SeoAudit, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
@@ -1108,6 +1119,7 @@ Other envelope fields: `pagination` (PaginationMeta).
1108
1119
  | `completed_at` | `string (date-time) \| null` | no | |
1109
1120
  | `created_at` | `string (date-time) \| null` | no | |
1110
1121
  | `credits_charged` | `integer \| null` | no | |
1122
+ | `enable_javascript` | `boolean` | no | default `false` |
1111
1123
  | `failure_reason` | `string \| null` | no | |
1112
1124
  | `onpage_score` | `number \| null` | no | |
1113
1125
  | `pages_crawled` | `integer \| null` | no | |
@@ -1179,6 +1191,7 @@ Mirrors `AuditIssueDTO`.
1179
1191
  | `affected_count` | `integer` | yes | |
1180
1192
  | `issue_type` | `string` | yes | |
1181
1193
  | `severity` | `string` | yes | |
1194
+ | `affected_total` | `integer` | no | default `0` |
1182
1195
  | `affected_urls` | `Array<Record<string, unknown>>` | no | default `[]` |
1183
1196
 
1184
1197
  <a id="type-seoauditstate"></a>
@@ -1247,10 +1260,19 @@ Mirrors `KeywordRow`.
1247
1260
  |---|---|---|---|
1248
1261
  | `keyword` | `string` | yes | |
1249
1262
  | `competition` | `number` | no | default `0` |
1250
- | `cpc` | `number` | no | default `0` |
1263
+ | `cpc` | `number \| null` | no | |
1264
+ | `cpc_high` | `number \| null` | no | |
1251
1265
  | `intent` | `string \| null` | no | |
1266
+ | `intents` | `Array<string>` | no | default `[]` |
1252
1267
  | `keyword_difficulty` | `integer \| null` | no | |
1268
+ | `parent_topic` | `string \| null` | no | |
1269
+ | `parent_topic_volume` | `integer \| null` | no | |
1270
+ | `results_count` | `integer \| null` | no | |
1253
1271
  | `search_volume` | `integer` | no | default `0` |
1272
+ | `search_volume_avg` | `integer \| null` | no | |
1273
+ | `serp_features` | `Array<string>` | no | default `[]` |
1274
+ | `trend` | `Array<integer>` | no | default `[]` |
1275
+ | `volume_spike` | `boolean` | no | default `false` |
1254
1276
 
1255
1277
  <a id="type-seomover"></a>
1256
1278
 
@@ -1372,3 +1394,4 @@ Mirrors `TrackedDomainMetricsDTO`.
1372
1394
  | `organic_keywords` | `integer \| null` | no | |
1373
1395
  | `referring_domains` | `number \| null` | no | |
1374
1396
  | `top3_positions` | `integer \| null` | no | |
1397
+ | `traffic_basis` | `string \| null` | no | |