@graph8/sdk 0.362.0 → 0.370.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 (349) hide show
  1. package/README.md +14 -10
  2. package/blocks/_foundation/README.md +64 -1
  3. package/blocks/_foundation/block.json +79 -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/confirmed-action.tsx +90 -0
  7. package/blocks/_foundation/components/connect-graph8.tsx +280 -0
  8. package/blocks/_foundation/components/screen/index.ts +1 -0
  9. package/blocks/_foundation/components/screen/record-link.tsx +76 -0
  10. package/blocks/_foundation/components/screen/time-series-chart-recharts.tsx +65 -0
  11. package/blocks/_foundation/components/screen/time-series-chart.tsx +15 -97
  12. package/blocks/_foundation/components/screen/time-series-format.ts +57 -0
  13. package/blocks/_foundation/hooks/use-brand.ts +52 -0
  14. package/blocks/_foundation/hooks/use-g8-mutation.ts +23 -0
  15. package/blocks/_foundation/hooks/use-g8-query.ts +127 -1
  16. package/blocks/_foundation/hooks/use-paginated.ts +120 -0
  17. package/blocks/_foundation/hooks/use-row-activation.ts +57 -0
  18. package/blocks/_foundation/lib/g8-cache.ts +454 -0
  19. package/blocks/_foundation/lib/g8-client.ts +1 -1
  20. package/blocks/_foundation/lib/plural.ts +23 -0
  21. package/blocks/_foundation/server/connect-route.ts +15 -0
  22. package/blocks/_foundation/server/connect.ts +127 -0
  23. package/blocks/_foundation/server/local-key.ts +70 -0
  24. package/blocks/_foundation/server/proxy.ts +103 -3
  25. package/blocks/_foundation/server/route.ts +16 -4
  26. package/blocks/agents/README.md +14 -0
  27. package/blocks/agents/block.json +33 -1
  28. package/blocks/agents/components/agent-builder.tsx +13 -8
  29. package/blocks/agents/components/agent-knowledge-panel.tsx +2 -1
  30. package/blocks/agents/components/agent-run-detail.tsx +102 -0
  31. package/blocks/agents/components/agent-runs.tsx +16 -7
  32. package/blocks/agents/components/agents-screen.tsx +184 -0
  33. package/blocks/analytics/README.md +13 -0
  34. package/blocks/analytics/block.json +45 -1
  35. package/blocks/analytics/components/analytics-screen.tsx +209 -0
  36. package/blocks/analytics/components/leaderboard.tsx +14 -7
  37. package/blocks/analytics/components/report-builder.tsx +23 -9
  38. package/blocks/analytics/components/report-detail.tsx +84 -0
  39. package/blocks/analytics/components/trend-chart.tsx +62 -0
  40. package/blocks/appointments/block.json +6 -2
  41. package/blocks/appointments/components/availability-editor.tsx +17 -5
  42. package/blocks/appointments/components/event-type-editor.tsx +2 -1
  43. package/blocks/appointments/components/event-type-related.tsx +4 -2
  44. package/blocks/appointments/components/meeting-list.tsx +9 -5
  45. package/blocks/appointments/components/meetings-screen.tsx +7 -4
  46. package/blocks/appointments/components/scheduling-screen.tsx +2 -1
  47. package/blocks/block.schema.json +18 -0
  48. package/blocks/block.types.ts +17 -0
  49. package/blocks/campaigns/README.md +41 -11
  50. package/blocks/campaigns/block.json +105 -42
  51. package/blocks/campaigns/components/campaign-assets.tsx +16 -5
  52. package/blocks/campaigns/components/campaign-launch-step.tsx +102 -19
  53. package/blocks/campaigns/components/campaign-list.tsx +7 -3
  54. package/blocks/campaigns/components/campaign-wizard.tsx +43 -10
  55. package/blocks/campaigns/components/campaigns-screen.tsx +267 -0
  56. package/blocks/campaigns/components/icp-detail.tsx +154 -0
  57. package/blocks/campaigns/components/icp-editor.tsx +15 -15
  58. package/blocks/campaigns/components/persona-detail.tsx +172 -0
  59. package/blocks/campaigns/components/persona-editor.tsx +14 -11
  60. package/blocks/campaigns/lib/campaigns-utils.ts +134 -1
  61. package/blocks/campaigns/recipes/attach-audience-and-launch.ts +16 -3
  62. package/blocks/campaigns/recipes/generate-ideas-and-create-campaign.ts +8 -4
  63. package/blocks/coach/README.md +10 -0
  64. package/blocks/coach/block.json +16 -1
  65. package/blocks/coach/components/coach-screen.tsx +222 -0
  66. package/blocks/copilot/README.md +13 -0
  67. package/blocks/copilot/block.json +14 -1
  68. package/blocks/copilot/components/copilot-panel.tsx +14 -5
  69. package/blocks/copilot/components/copilot-screen.tsx +148 -0
  70. package/blocks/copilot/components/copilot-team-chat.tsx +7 -5
  71. package/blocks/crm/README.md +28 -0
  72. package/blocks/crm/block.json +58 -2
  73. package/blocks/crm/components/companies-screen.tsx +345 -0
  74. package/blocks/crm/components/company-detail.tsx +8 -6
  75. package/blocks/crm/components/company-table.tsx +11 -4
  76. package/blocks/crm/components/contact-detail.tsx +6 -3
  77. package/blocks/crm/components/contact-table.tsx +10 -3
  78. package/blocks/crm/components/contacts-screen.tsx +359 -0
  79. package/blocks/crm/components/dedupe-review.tsx +7 -5
  80. package/blocks/crm/components/import-wizard.tsx +4 -2
  81. package/blocks/crm/components/notes-panel.tsx +4 -4
  82. package/blocks/crm/components/record-form.tsx +5 -3
  83. package/blocks/crm/components/task-list.tsx +4 -4
  84. package/blocks/crm/components/tasks-screen.tsx +379 -0
  85. package/blocks/crm/hooks/use-custom-fields.ts +6 -1
  86. package/blocks/crm/hooks/use-page-query.ts +7 -1
  87. package/blocks/crm/lib/crm-types.ts +12 -2
  88. package/blocks/crm/lib/screen-parts.tsx +105 -0
  89. package/blocks/deals/block.json +9 -3
  90. package/blocks/deals/components/deal-detail.tsx +23 -11
  91. package/blocks/deals/components/deal-related.tsx +1 -1
  92. package/blocks/deals/components/deals-screen.tsx +10 -5
  93. package/blocks/deals/components/stage-editor.tsx +4 -4
  94. package/blocks/deals/hooks/use-pipeline-deals.ts +5 -1
  95. package/blocks/deals/hooks/use-pipelines.ts +1 -1
  96. package/blocks/dialer/README.md +34 -2
  97. package/blocks/dialer/block.json +67 -1
  98. package/blocks/dialer/components/call-contact-button.tsx +252 -0
  99. package/blocks/dialer/components/call-log-screen.tsx +205 -0
  100. package/blocks/dialer/components/call-log.tsx +7 -3
  101. package/blocks/dialer/components/call-queue.tsx +1 -1
  102. package/blocks/dialer/components/dialer-screen.tsx +319 -0
  103. package/blocks/dialer/components/dialer-session-detail.tsx +153 -0
  104. package/blocks/dialer/components/live-calls-table.tsx +7 -3
  105. package/blocks/dialer/components/session-start-form.tsx +4 -2
  106. package/blocks/dialer/components/softphone.tsx +3 -1
  107. package/blocks/enrichment/README.md +14 -2
  108. package/blocks/enrichment/block.json +32 -4
  109. package/blocks/enrichment/components/bulk-enrich-panel.tsx +10 -5
  110. package/blocks/enrichment/components/email-verify-badge.tsx +28 -8
  111. package/blocks/enrichment/components/enrich-button.tsx +32 -9
  112. package/blocks/enrichment/components/enrichment-job-detail.tsx +78 -0
  113. package/blocks/enrichment/components/enrichment-screen.tsx +288 -0
  114. package/blocks/enrichment/components/waterfall-config.tsx +39 -10
  115. package/blocks/enrichment/recipes/waterfall-pipeline.ts +3 -2
  116. package/blocks/forms/block.json +32 -18
  117. package/blocks/forms/components/form-builder.tsx +3 -1
  118. package/blocks/forms/components/form-embed.tsx +3 -1
  119. package/blocks/forms/components/forms-screen.tsx +5 -2
  120. package/blocks/forms/components/submissions-table.tsx +3 -1
  121. package/blocks/inbox/README.md +27 -3
  122. package/blocks/inbox/block.json +14 -2
  123. package/blocks/inbox/components/inbox-list.tsx +7 -3
  124. package/blocks/inbox/components/inbox-screen.tsx +294 -27
  125. package/blocks/inbox/components/reply-composer.tsx +65 -9
  126. package/blocks/inbox/components/tag-and-assign.tsx +4 -2
  127. package/blocks/inbox/hooks/use-inbox-thread.ts +1 -1
  128. package/blocks/inbox/hooks/use-inbox-threads.ts +1 -0
  129. package/blocks/inbox/lib/inbox-types.ts +47 -1
  130. package/blocks/inbox/recipes/01-triage-and-reply.ts +12 -2
  131. package/blocks/integrations/README.md +9 -0
  132. package/blocks/integrations/block.json +46 -1
  133. package/blocks/integrations/components/crm-detail.tsx +100 -0
  134. package/blocks/integrations/components/integration-list.tsx +9 -4
  135. package/blocks/integrations/components/integrations-screen.tsx +135 -0
  136. package/blocks/integrations/components/sync-status.tsx +5 -3
  137. package/blocks/integrations/components/webhook-detail.tsx +160 -0
  138. package/blocks/integrations/components/webhook-manager.tsx +13 -8
  139. package/blocks/integrations/lib/integrations-utils.ts +6 -1
  140. package/blocks/intent/README.md +14 -0
  141. package/blocks/intent/block.json +27 -1
  142. package/blocks/intent/components/intent-feed.tsx +5 -2
  143. package/blocks/intent/components/intent-keyword-manager.tsx +8 -4
  144. package/blocks/intent/components/intent-screen.tsx +265 -0
  145. package/blocks/intent/components/keyword-detail.tsx +124 -0
  146. package/blocks/lifecycle/block.json +13 -8
  147. package/blocks/lifecycle/components/lifecycle-board.tsx +3 -1
  148. package/blocks/lifecycle/components/lifecycle-screen.tsx +3 -1
  149. package/blocks/lifecycle/lib/lifecycle.ts +1 -1
  150. package/blocks/lists/README.md +13 -0
  151. package/blocks/lists/block.json +39 -1
  152. package/blocks/lists/components/add-to-list-button.tsx +3 -2
  153. package/blocks/lists/components/list-picker.tsx +5 -1
  154. package/blocks/lists/components/list-table.tsx +11 -5
  155. package/blocks/lists/components/lists-screen.tsx +344 -0
  156. package/blocks/lists/components/suppression-manager.tsx +6 -2
  157. package/blocks/lists/components/suppressions-screen.tsx +255 -0
  158. package/blocks/mailboxes/README.md +17 -0
  159. package/blocks/mailboxes/block.json +65 -17
  160. package/blocks/mailboxes/components/connect-mailbox.tsx +23 -13
  161. package/blocks/mailboxes/components/domain-detail.tsx +142 -0
  162. package/blocks/mailboxes/components/domain-purchase.tsx +6 -3
  163. package/blocks/mailboxes/components/mailbox-detail.tsx +156 -0
  164. package/blocks/mailboxes/components/mailboxes-screen.tsx +223 -0
  165. package/blocks/mailboxes/components/warmup-health.tsx +4 -2
  166. package/blocks/mailboxes/lib/mailboxes-utils.ts +22 -1
  167. package/blocks/newsletter/block.json +40 -24
  168. package/blocks/newsletter/components/issue-scheduler.tsx +2 -1
  169. package/blocks/newsletter/components/newsletter-screen.tsx +3 -1
  170. package/blocks/nurture/block.json +28 -14
  171. package/blocks/nurture/components/nurture-builder.tsx +3 -1
  172. package/blocks/nurture/components/nurture-enroll.tsx +6 -3
  173. package/blocks/nurture/components/nurture-form.tsx +23 -3
  174. package/blocks/nurture/components/nurture-screen.tsx +10 -6
  175. package/blocks/nurture/lib/nurture-types.ts +1 -1
  176. package/blocks/objects/README.md +17 -0
  177. package/blocks/objects/block.json +29 -16
  178. package/blocks/objects/components/object-not-found.tsx +3 -1
  179. package/blocks/objects/components/object-record-detail.tsx +2 -1
  180. package/blocks/objects/components/object-schema-editor.tsx +3 -1
  181. package/blocks/objects/components/object-table.tsx +13 -3
  182. package/blocks/objects/components/objects-screen.tsx +147 -0
  183. package/blocks/objects/lib/object-types.ts +1 -1
  184. package/blocks/pages/block.json +28 -23
  185. package/blocks/pages/components/brand-kit-editor.tsx +5 -2
  186. package/blocks/pages/components/content-library.tsx +9 -4
  187. package/blocks/pages/components/page-list.tsx +2 -1
  188. package/blocks/quotes/block.json +17 -12
  189. package/blocks/quotes/components/product-picker.tsx +3 -1
  190. package/blocks/quotes/components/quote-related.tsx +5 -2
  191. package/blocks/radar/README.md +10 -0
  192. package/blocks/radar/block.json +41 -1
  193. package/blocks/radar/components/competitor-detail.tsx +117 -0
  194. package/blocks/radar/components/competitor-tracker.tsx +3 -1
  195. package/blocks/radar/components/radar-report.tsx +4 -2
  196. package/blocks/radar/components/radar-screen.tsx +214 -0
  197. package/blocks/radar/components/report-detail.tsx +104 -0
  198. package/blocks/search/README.md +10 -0
  199. package/blocks/search/block.json +16 -1
  200. package/blocks/search/components/filter-builder.tsx +3 -3
  201. package/blocks/search/components/prospect-results.tsx +5 -3
  202. package/blocks/search/components/prospect-search-screen.tsx +235 -0
  203. package/blocks/search/components/saved-searches.tsx +4 -1
  204. package/blocks/search/hooks/use-filter-options.ts +20 -6
  205. package/blocks/search/lib/search-types.ts +2 -0
  206. package/blocks/sequencer/README.md +49 -9
  207. package/blocks/sequencer/block.json +99 -19
  208. package/blocks/sequencer/components/enroll-dialog.tsx +9 -3
  209. package/blocks/sequencer/components/sequence-builder.tsx +211 -46
  210. package/blocks/sequencer/components/sequence-detail.tsx +259 -0
  211. package/blocks/sequencer/components/sequence-enrollments.tsx +114 -0
  212. package/blocks/sequencer/components/sequence-list.tsx +33 -8
  213. package/blocks/sequencer/components/sequence-stats.tsx +3 -2
  214. package/blocks/sequencer/components/sequence-steps-panel.tsx +103 -0
  215. package/blocks/sequencer/components/sequences-screen.tsx +159 -0
  216. package/blocks/sequencer/components/step-editor.tsx +3 -1
  217. package/blocks/sequencer/lib/sequencer-utils.ts +128 -5
  218. package/blocks/sequencer/recipes/create-multichannel-sequence.ts +33 -5
  219. package/blocks/sequencer/recipes/launch-and-enroll.ts +19 -2
  220. package/blocks/social-ads/README.md +11 -0
  221. package/blocks/social-ads/block.json +101 -2
  222. package/blocks/social-ads/components/ad-campaign-list.tsx +9 -5
  223. package/blocks/social-ads/components/ads-screen.tsx +152 -0
  224. package/blocks/social-ads/components/audience-sync-detail.tsx +188 -0
  225. package/blocks/social-ads/components/audience-sync.tsx +11 -7
  226. package/blocks/social-ads/components/campaign-detail.tsx +133 -0
  227. package/blocks/social-ads/components/creative-detail.tsx +150 -0
  228. package/blocks/social-ads/components/creative-gallery.tsx +15 -5
  229. package/blocks/social-ads/components/post-composer.tsx +3 -1
  230. package/blocks/social-ads/components/post-detail.tsx +160 -0
  231. package/blocks/social-ads/components/social-post-list.tsx +11 -3
  232. package/blocks/social-ads/components/social-screen.tsx +160 -0
  233. package/blocks/visitors/README.md +10 -0
  234. package/blocks/visitors/block.json +25 -1
  235. package/blocks/visitors/components/snippet-install.tsx +3 -1
  236. package/blocks/visitors/components/visitor-company-card.tsx +2 -2
  237. package/blocks/visitors/components/visitor-detail.tsx +105 -0
  238. package/blocks/visitors/components/visitor-feed.tsx +11 -2
  239. package/blocks/visitors/components/visitors-screen.tsx +166 -0
  240. package/blocks/webchat/README.md +10 -0
  241. package/blocks/webchat/block.json +21 -7
  242. package/blocks/webchat/components/chat-widget-config.tsx +7 -4
  243. package/blocks/webchat/components/conversation-list.tsx +7 -3
  244. package/blocks/webchat/components/webchat-screen.tsx +245 -0
  245. package/blocks/workbench/README.md +11 -0
  246. package/blocks/workbench/block.json +48 -1
  247. package/blocks/workbench/components/column-recipe-editor.tsx +4 -2
  248. package/blocks/workbench/components/workbench-grid.tsx +9 -3
  249. package/blocks/workbench/components/workbench-row-detail.tsx +104 -0
  250. package/blocks/workbench/components/workbench-screen.tsx +192 -0
  251. package/blocks/workbench/components/workbench-sources.tsx +194 -0
  252. package/blocks/workflows/README.md +13 -0
  253. package/blocks/workflows/block.json +28 -9
  254. package/blocks/workflows/components/run-history.tsx +31 -9
  255. package/blocks/workflows/components/trigger-config.tsx +3 -1
  256. package/blocks/workflows/components/workflow-editor.tsx +3 -1
  257. package/blocks/workflows/components/workflow-list.tsx +13 -6
  258. package/blocks/workflows/components/workflows-screen.tsx +193 -0
  259. package/dist/cli.js +2709 -1721
  260. package/dist/errors.d.mts +34 -0
  261. package/dist/errors.d.ts +34 -0
  262. package/dist/errors.js +46 -0
  263. package/dist/errors.js.map +1 -0
  264. package/dist/errors.mjs +21 -0
  265. package/dist/errors.mjs.map +1 -0
  266. package/dist/index.browser.js +11 -5
  267. package/dist/index.browser.js.map +1 -1
  268. package/dist/index.browser.mjs +11 -5
  269. package/dist/index.browser.mjs.map +1 -1
  270. package/dist/index.d.mts +164 -25
  271. package/dist/index.d.ts +164 -25
  272. package/dist/index.js +11 -5
  273. package/dist/index.js.map +1 -1
  274. package/dist/index.mjs +11 -5
  275. package/dist/index.mjs.map +1 -1
  276. package/dist/react.browser.js +10 -4
  277. package/dist/react.browser.js.map +1 -1
  278. package/dist/react.browser.mjs +10 -4
  279. package/dist/react.browser.mjs.map +1 -1
  280. package/dist/react.d.mts +142 -5
  281. package/dist/react.d.ts +142 -5
  282. package/dist/react.js +10 -4
  283. package/dist/react.js.map +1 -1
  284. package/dist/react.mjs +10 -4
  285. package/dist/react.mjs.map +1 -1
  286. package/dist/types/blocks/add.d.ts +11 -4
  287. package/dist/types/blocks/brand.d.ts +113 -0
  288. package/dist/types/blocks/compose.d.ts +53 -0
  289. package/dist/types/blocks/create.d.ts +22 -19
  290. package/dist/types/blocks/doctor.d.ts +5 -1
  291. package/dist/types/blocks/navfile.d.ts +35 -0
  292. package/dist/types/blocks/paths.d.ts +4 -0
  293. package/dist/types/blocks/prefixes.d.ts +37 -0
  294. package/dist/types/blocks/registry.d.ts +17 -0
  295. package/dist/types/blocks/screens.d.ts +53 -0
  296. package/dist/types/cli.d.ts +2 -0
  297. package/dist/types/errors.d.ts +33 -0
  298. package/dist/types/http.d.ts +2 -18
  299. package/dist/types/version.d.ts +2 -2
  300. package/docs/agents.md +15 -4
  301. package/docs/api/README.md +2 -2
  302. package/docs/api/by-path.md +1 -0
  303. package/docs/api/desk.d.ts +98 -2
  304. package/docs/api/desk.md +123 -1
  305. package/docs/api/inbox.d.ts +10 -2
  306. package/docs/api/inbox.md +10 -2
  307. package/docs/api/seo.d.ts +19 -1
  308. package/docs/api/seo.md +24 -1
  309. package/package.json +16 -2
  310. package/stacks/6sense.json +41 -16
  311. package/stacks/apollo/pages/companies.tsx.tmpl +50 -0
  312. package/stacks/apollo/pages/contacts.tsx.tmpl +117 -0
  313. package/stacks/apollo.json +118 -36
  314. package/stacks/calendly.json +60 -0
  315. package/stacks/clay/pages/companies.tsx.tmpl +15 -0
  316. package/stacks/clay/pages/contacts.tsx.tmpl +19 -0
  317. package/stacks/clay.json +59 -26
  318. package/stacks/gong.json +81 -35
  319. package/stacks/hootsuite.json +99 -0
  320. package/stacks/hubspot/pages/companies.tsx.tmpl +47 -0
  321. package/stacks/hubspot/pages/contacts.tsx.tmpl +111 -0
  322. package/stacks/hubspot/pages/deals.tsx.tmpl +11 -0
  323. package/stacks/hubspot/pages/inbox.tsx.tmpl +92 -0
  324. package/stacks/hubspot/pages/quotes.tsx.tmpl +11 -0
  325. package/stacks/hubspot.json +167 -66
  326. package/stacks/intercom.json +48 -20
  327. package/stacks/mailchimp.json +52 -33
  328. package/stacks/outreach/pages/contacts.tsx.tmpl +85 -0
  329. package/stacks/outreach.json +88 -25
  330. package/stacks/pipedrive/pages/companies.tsx.tmpl +47 -0
  331. package/stacks/pipedrive/pages/contacts.tsx.tmpl +47 -0
  332. package/stacks/pipedrive/pages/deals.tsx.tmpl +11 -0
  333. package/stacks/pipedrive/pages/inbox.tsx.tmpl +92 -0
  334. package/stacks/pipedrive/pages/quotes.tsx.tmpl +11 -0
  335. package/stacks/pipedrive.json +115 -0
  336. package/stacks/salesforce/pages/companies.tsx.tmpl +47 -0
  337. package/stacks/salesforce/pages/contacts.tsx.tmpl +47 -0
  338. package/stacks/salesforce/pages/deals.tsx.tmpl +11 -0
  339. package/stacks/salesforce/pages/quotes.tsx.tmpl +11 -0
  340. package/stacks/salesforce.json +81 -31
  341. package/stacks/zoominfo/pages/companies.tsx.tmpl +15 -0
  342. package/stacks/zoominfo/pages/contacts.tsx.tmpl +19 -0
  343. package/stacks/zoominfo.json +102 -0
  344. package/styles/styles.css +1 -1
  345. package/templates/next-app/README.md.tmpl +40 -9
  346. package/templates/next-app/app/layout.tsx.tmpl +7 -2
  347. package/templates/next-app/components/app-shell.tsx.tmpl +99 -89
  348. package/templates/next-app/dot-gitignore.tmpl +2 -0
  349. package/templates/next-app/package.json.tmpl +1 -1
@@ -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
+ * Create Desk Card
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. */
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` | Create Desk Card |
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
+ **Create Desk Card**
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. 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 | |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graph8/sdk",
3
- "version": "0.362.0",
3
+ "version": "0.370.0",
4
4
  "description": "graph8 SDK - CRM, enrichment, sequences, campaigns, and tracking for B2B",
5
5
  "license": "MIT",
6
6
  "author": "graph8 <support@graph8.com> (https://graph8.com)",
@@ -49,6 +49,11 @@
49
49
  "import": "./dist/react.mjs",
50
50
  "require": "./dist/react.js"
51
51
  },
52
+ "./errors": {
53
+ "types": "./dist/errors.d.ts",
54
+ "import": "./dist/errors.mjs",
55
+ "require": "./dist/errors.js"
56
+ },
52
57
  "./ui": {
53
58
  "types": "./dist/ui/index.d.ts",
54
59
  "import": "./dist/ui/index.mjs",
@@ -63,6 +68,11 @@
63
68
  "./ui/theme.css": "./styles/theme.css",
64
69
  "./ui/styles.css": "./styles/styles.css"
65
70
  },
71
+ "sideEffects": [
72
+ "*.css",
73
+ "./dist/*.js",
74
+ "./dist/*.mjs"
75
+ ],
66
76
  "files": [
67
77
  "dist",
68
78
  "blocks",
@@ -73,8 +83,9 @@
73
83
  "README.md"
74
84
  ],
75
85
  "scripts": {
76
- "build": "tsup && npm run build:ui && npm run build:types && npm run docs:agents",
86
+ "build": "node scripts/clean-dist.mjs && tsup && npm run build:ui && npm run build:types && npm run docs:agents",
77
87
  "test": "vitest run",
88
+ "validate:blocks": "vite-node --script scripts/blocks/validate.ts",
78
89
  "dev": "tsup --watch",
79
90
  "prepublishOnly": "npm run build",
80
91
  "generate": "node scripts/generate-from-contract.mjs",
@@ -83,6 +94,9 @@
83
94
  "build:types": "node scripts/emit-module-types.mjs",
84
95
  "docs:agents": "vite-node scripts/agent-docs/cli.ts",
85
96
  "e2e:create": "node scripts/e2e-create.mjs",
97
+ "e2e:flows": "node scripts/e2e-flows.mjs",
98
+ "mock:graph8": "node scripts/mock-graph8/server.mjs",
99
+ "mock:graph8:coverage": "node scripts/mock-graph8/coverage.mjs",
86
100
  "generate:ui": "node scripts/sync-ui.mjs",
87
101
  "generate:ui:check": "node scripts/sync-ui.mjs --check",
88
102
  "build:ui": "tsup --config tsup.ui.config.ts && node scripts/postbuild-ui.mjs && node scripts/build-ui-css.mjs"