@graph8/sdk 0.251.0 → 0.260.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +9 -2
  2. package/dist/cli.js +216 -0
  3. package/dist/index.d.mts +104 -7
  4. package/dist/index.d.ts +104 -7
  5. package/dist/index.js +44 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +44 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react.d.mts +102 -7
  10. package/dist/react.d.ts +102 -7
  11. package/dist/react.js +62 -11
  12. package/dist/react.js.map +1 -1
  13. package/dist/react.mjs +53 -12
  14. package/dist/react.mjs.map +1 -1
  15. package/dist/types/README.md +7 -0
  16. package/dist/types/agency.d.ts +20 -0
  17. package/dist/types/agentSetup.d.ts +57 -0
  18. package/dist/types/api.d.ts +127 -0
  19. package/dist/types/appClient.d.ts +99 -0
  20. package/dist/types/appPlatform.d.ts +269 -0
  21. package/dist/types/appTokens.d.ts +125 -0
  22. package/dist/types/apps.d.ts +130 -0
  23. package/dist/types/audiences.d.ts +88 -0
  24. package/dist/types/calendar.d.ts +55 -0
  25. package/dist/types/campaigns.d.ts +61 -0
  26. package/dist/types/chat.d.ts +35 -0
  27. package/dist/types/cli.d.ts +14 -0
  28. package/dist/types/companies.d.ts +123 -0
  29. package/dist/types/contacts.d.ts +200 -0
  30. package/dist/types/copilot.d.ts +31 -0
  31. package/dist/types/core.d.ts +1052 -0
  32. package/dist/types/deals.d.ts +215 -0
  33. package/dist/types/enrich.d.ts +51 -0
  34. package/dist/types/fields.d.ts +84 -0
  35. package/dist/types/forms.d.ts +16 -0
  36. package/dist/types/http.d.ts +141 -0
  37. package/dist/types/inbox.d.ts +123 -0
  38. package/dist/types/index.d.ts +63 -0
  39. package/dist/types/intent.d.ts +196 -0
  40. package/dist/types/lists.d.ts +44 -0
  41. package/dist/types/mailboxes.d.ts +240 -0
  42. package/dist/types/marketplace.d.ts +62 -0
  43. package/dist/types/meetings.d.ts +70 -0
  44. package/dist/types/newsletter.d.ts +212 -0
  45. package/dist/types/notes.d.ts +57 -0
  46. package/dist/types/objects.d.ts +281 -0
  47. package/dist/types/pipelines.d.ts +135 -0
  48. package/dist/types/quotes.d.ts +143 -0
  49. package/dist/types/react.d.ts +978 -0
  50. package/dist/types/search.d.ts +99 -0
  51. package/dist/types/sequences.d.ts +255 -0
  52. package/dist/types/signals.d.ts +28 -0
  53. package/dist/types/skills.d.ts +176 -0
  54. package/dist/types/snippet.d.ts +24 -0
  55. package/dist/types/studio.d.ts +161 -0
  56. package/dist/types/tasks.d.ts +101 -0
  57. package/dist/types/types.d.ts +45 -0
  58. package/dist/types/utils.d.ts +21 -0
  59. package/dist/types/version.d.ts +10 -0
  60. package/dist/types/visitors.d.ts +29 -0
  61. package/dist/types/voice.d.ts +304 -0
  62. package/dist/types/webhooks.d.ts +71 -0
  63. package/dist/types/workflows.d.ts +229 -0
  64. package/docs/agents.md +748 -0
  65. package/docs/api/README.md +165 -0
  66. package/docs/api/accounts.d.ts +396 -0
  67. package/docs/api/accounts.md +644 -0
  68. package/docs/api/adCampaigns.d.ts +707 -0
  69. package/docs/api/adCampaigns.md +1091 -0
  70. package/docs/api/adCreatives.d.ts +996 -0
  71. package/docs/api/adCreatives.md +1708 -0
  72. package/docs/api/agency.d.ts +556 -0
  73. package/docs/api/agency.md +845 -0
  74. package/docs/api/agent.d.ts +330 -0
  75. package/docs/api/agent.md +514 -0
  76. package/docs/api/agents.d.ts +1622 -0
  77. package/docs/api/agents.md +2860 -0
  78. package/docs/api/aiInbox.d.ts +1984 -0
  79. package/docs/api/aiInbox.md +3490 -0
  80. package/docs/api/analytics.d.ts +1273 -0
  81. package/docs/api/analytics.md +2095 -0
  82. package/docs/api/apiKeys.d.ts +252 -0
  83. package/docs/api/apiKeys.md +318 -0
  84. package/docs/api/appDeployments.d.ts +236 -0
  85. package/docs/api/appDeployments.md +471 -0
  86. package/docs/api/appDomains.d.ts +171 -0
  87. package/docs/api/appDomains.md +281 -0
  88. package/docs/api/appLogs.d.ts +120 -0
  89. package/docs/api/appLogs.md +159 -0
  90. package/docs/api/appObjects.d.ts +415 -0
  91. package/docs/api/appObjects.md +568 -0
  92. package/docs/api/appPages.d.ts +557 -0
  93. package/docs/api/appPages.md +796 -0
  94. package/docs/api/appPlatformTokens.d.ts +123 -0
  95. package/docs/api/appPlatformTokens.md +172 -0
  96. package/docs/api/appointments.d.ts +2361 -0
  97. package/docs/api/appointments.md +3917 -0
  98. package/docs/api/apps.d.ts +822 -0
  99. package/docs/api/apps.md +1342 -0
  100. package/docs/api/assertUpsert.d.ts +286 -0
  101. package/docs/api/assertUpsert.md +370 -0
  102. package/docs/api/audienceSyncs.d.ts +259 -0
  103. package/docs/api/audienceSyncs.md +395 -0
  104. package/docs/api/brandKit.d.ts +686 -0
  105. package/docs/api/brandKit.md +1133 -0
  106. package/docs/api/bugReports.d.ts +181 -0
  107. package/docs/api/bugReports.md +268 -0
  108. package/docs/api/by-path.md +3260 -0
  109. package/docs/api/calendarInvites.d.ts +117 -0
  110. package/docs/api/calendarInvites.md +148 -0
  111. package/docs/api/campaignWorkflows.d.ts +152 -0
  112. package/docs/api/campaignWorkflows.md +200 -0
  113. package/docs/api/campaigns.d.ts +721 -0
  114. package/docs/api/campaigns.md +1236 -0
  115. package/docs/api/channels.d.ts +171 -0
  116. package/docs/api/channels.md +235 -0
  117. package/docs/api/cliCampaigns.d.ts +205 -0
  118. package/docs/api/cliCampaigns.md +256 -0
  119. package/docs/api/cliPipelines.d.ts +324 -0
  120. package/docs/api/cliPipelines.md +562 -0
  121. package/docs/api/clickHouse.d.ts +115 -0
  122. package/docs/api/clickHouse.md +138 -0
  123. package/docs/api/companies.d.ts +1636 -0
  124. package/docs/api/companies.md +2211 -0
  125. package/docs/api/companyIntelligence.d.ts +299 -0
  126. package/docs/api/companyIntelligence.md +488 -0
  127. package/docs/api/contacts.d.ts +2173 -0
  128. package/docs/api/contacts.md +3143 -0
  129. package/docs/api/content.d.ts +968 -0
  130. package/docs/api/content.md +1667 -0
  131. package/docs/api/contentGridSkills.d.ts +177 -0
  132. package/docs/api/contentGridSkills.md +271 -0
  133. package/docs/api/copilot.d.ts +1017 -0
  134. package/docs/api/copilot.md +1765 -0
  135. package/docs/api/crmSyncs.d.ts +215 -0
  136. package/docs/api/crmSyncs.md +301 -0
  137. package/docs/api/customerSuccess.d.ts +491 -0
  138. package/docs/api/customerSuccess.md +776 -0
  139. package/docs/api/deals.d.ts +1696 -0
  140. package/docs/api/deals.md +2432 -0
  141. package/docs/api/deliverability.d.ts +418 -0
  142. package/docs/api/deliverability.md +677 -0
  143. package/docs/api/desk.d.ts +1765 -0
  144. package/docs/api/desk.md +3007 -0
  145. package/docs/api/dialer.d.ts +1185 -0
  146. package/docs/api/dialer.md +2166 -0
  147. package/docs/api/dialerAnalytics.d.ts +187 -0
  148. package/docs/api/dialerAnalytics.md +257 -0
  149. package/docs/api/documents.d.ts +895 -0
  150. package/docs/api/documents.md +1440 -0
  151. package/docs/api/duplicates.d.ts +195 -0
  152. package/docs/api/duplicates.md +315 -0
  153. package/docs/api/eSign.d.ts +38 -0
  154. package/docs/api/eSign.md +54 -0
  155. package/docs/api/eSignature.d.ts +242 -0
  156. package/docs/api/eSignature.md +341 -0
  157. package/docs/api/enrichment.d.ts +3207 -0
  158. package/docs/api/enrichment.md +5225 -0
  159. package/docs/api/events.d.ts +115 -0
  160. package/docs/api/events.md +105 -0
  161. package/docs/api/fields.d.ts +482 -0
  162. package/docs/api/fields.md +566 -0
  163. package/docs/api/forms.d.ts +1012 -0
  164. package/docs/api/forms.md +1542 -0
  165. package/docs/api/gtmCampaigns.d.ts +662 -0
  166. package/docs/api/gtmCampaigns.md +1044 -0
  167. package/docs/api/gtmContext.d.ts +1187 -0
  168. package/docs/api/gtmContext.md +2112 -0
  169. package/docs/api/gtmDeliverability.d.ts +60 -0
  170. package/docs/api/gtmDeliverability.md +63 -0
  171. package/docs/api/gtmKnowledgeBase.d.ts +76 -0
  172. package/docs/api/gtmKnowledgeBase.md +91 -0
  173. package/docs/api/gtmLaunchHelpers.d.ts +123 -0
  174. package/docs/api/gtmLaunchHelpers.md +148 -0
  175. package/docs/api/gtmLibrary.d.ts +448 -0
  176. package/docs/api/gtmLibrary.md +780 -0
  177. package/docs/api/health.d.ts +39 -0
  178. package/docs/api/health.md +58 -0
  179. package/docs/api/imageLibrary.d.ts +341 -0
  180. package/docs/api/imageLibrary.md +569 -0
  181. package/docs/api/imports.d.ts +157 -0
  182. package/docs/api/imports.md +174 -0
  183. package/docs/api/inbox.d.ts +709 -0
  184. package/docs/api/inbox.md +1067 -0
  185. package/docs/api/install.d.ts +213 -0
  186. package/docs/api/install.md +317 -0
  187. package/docs/api/installedApps.d.ts +131 -0
  188. package/docs/api/installedApps.md +241 -0
  189. package/docs/api/integrationStatus.d.ts +142 -0
  190. package/docs/api/integrationStatus.md +205 -0
  191. package/docs/api/integrations.d.ts +2327 -0
  192. package/docs/api/integrations.md +3791 -0
  193. package/docs/api/intent.d.ts +482 -0
  194. package/docs/api/intent.md +858 -0
  195. package/docs/api/knowledge.d.ts +501 -0
  196. package/docs/api/knowledge.md +843 -0
  197. package/docs/api/knowledgeBase.d.ts +84 -0
  198. package/docs/api/knowledgeBase.md +96 -0
  199. package/docs/api/landingPages.d.ts +1411 -0
  200. package/docs/api/landingPages.md +2488 -0
  201. package/docs/api/leads.d.ts +133 -0
  202. package/docs/api/leads.md +180 -0
  203. package/docs/api/library.d.ts +217 -0
  204. package/docs/api/library.md +338 -0
  205. package/docs/api/linkedIn.d.ts +227 -0
  206. package/docs/api/linkedIn.md +289 -0
  207. package/docs/api/linkedInOutreach.d.ts +727 -0
  208. package/docs/api/linkedInOutreach.md +990 -0
  209. package/docs/api/lists.d.ts +1106 -0
  210. package/docs/api/lists.md +1609 -0
  211. package/docs/api/logs.d.ts +71 -0
  212. package/docs/api/logs.md +70 -0
  213. package/docs/api/mailboxes.d.ts +1050 -0
  214. package/docs/api/mailboxes.md +1690 -0
  215. package/docs/api/marketingIntelligence.d.ts +256 -0
  216. package/docs/api/marketingIntelligence.md +454 -0
  217. package/docs/api/marketplace.d.ts +3173 -0
  218. package/docs/api/marketplace.md +5953 -0
  219. package/docs/api/mcp.d.ts +69 -0
  220. package/docs/api/mcp.md +69 -0
  221. package/docs/api/me.d.ts +54 -0
  222. package/docs/api/me.md +56 -0
  223. package/docs/api/meetings.d.ts +539 -0
  224. package/docs/api/meetings.md +747 -0
  225. package/docs/api/newsletter.d.ts +1613 -0
  226. package/docs/api/newsletter.md +2746 -0
  227. package/docs/api/notes.d.ts +517 -0
  228. package/docs/api/notes.md +888 -0
  229. package/docs/api/notifications.d.ts +94 -0
  230. package/docs/api/notifications.md +105 -0
  231. package/docs/api/objects.d.ts +621 -0
  232. package/docs/api/objects.md +1098 -0
  233. package/docs/api/openSearch.d.ts +234 -0
  234. package/docs/api/openSearch.md +297 -0
  235. package/docs/api/ops.d.ts +299 -0
  236. package/docs/api/ops.md +339 -0
  237. package/docs/api/orgGovernance.d.ts +393 -0
  238. package/docs/api/orgGovernance.md +623 -0
  239. package/docs/api/orgVideos.d.ts +184 -0
  240. package/docs/api/orgVideos.md +252 -0
  241. package/docs/api/organizationSettings.d.ts +626 -0
  242. package/docs/api/organizationSettings.md +911 -0
  243. package/docs/api/phoneNumbers.d.ts +484 -0
  244. package/docs/api/phoneNumbers.md +777 -0
  245. package/docs/api/profile.d.ts +329 -0
  246. package/docs/api/profile.md +540 -0
  247. package/docs/api/programmaticPages.d.ts +400 -0
  248. package/docs/api/programmaticPages.md +626 -0
  249. package/docs/api/providerDomains.d.ts +866 -0
  250. package/docs/api/providerDomains.md +1446 -0
  251. package/docs/api/providerUsage.d.ts +129 -0
  252. package/docs/api/providerUsage.md +186 -0
  253. package/docs/api/public.d.ts +69 -0
  254. package/docs/api/public.md +78 -0
  255. package/docs/api/publicCopilot.d.ts +67 -0
  256. package/docs/api/publicCopilot.md +80 -0
  257. package/docs/api/publicSignals.d.ts +66 -0
  258. package/docs/api/publicSignals.md +71 -0
  259. package/docs/api/publicVisitors.d.ts +97 -0
  260. package/docs/api/publicVisitors.md +118 -0
  261. package/docs/api/quotes.d.ts +1564 -0
  262. package/docs/api/quotes.md +2553 -0
  263. package/docs/api/radar.d.ts +808 -0
  264. package/docs/api/radar.md +1431 -0
  265. package/docs/api/radarReports.d.ts +208 -0
  266. package/docs/api/radarReports.md +306 -0
  267. package/docs/api/recordRoles.d.ts +143 -0
  268. package/docs/api/recordRoles.md +175 -0
  269. package/docs/api/repos.d.ts +146 -0
  270. package/docs/api/repos.md +211 -0
  271. package/docs/api/research.d.ts +295 -0
  272. package/docs/api/research.md +534 -0
  273. package/docs/api/revenue.d.ts +402 -0
  274. package/docs/api/revenue.md +608 -0
  275. package/docs/api/revenueAnalytics.d.ts +147 -0
  276. package/docs/api/revenueAnalytics.md +212 -0
  277. package/docs/api/revenueLifecycle.d.ts +207 -0
  278. package/docs/api/revenueLifecycle.md +274 -0
  279. package/docs/api/revenueRecords.d.ts +372 -0
  280. package/docs/api/revenueRecords.md +563 -0
  281. package/docs/api/roles.d.ts +431 -0
  282. package/docs/api/roles.md +812 -0
  283. package/docs/api/salesCoach.d.ts +877 -0
  284. package/docs/api/salesCoach.md +1540 -0
  285. package/docs/api/sandbox.d.ts +210 -0
  286. package/docs/api/sandbox.md +380 -0
  287. package/docs/api/scans.d.ts +104 -0
  288. package/docs/api/scans.md +136 -0
  289. package/docs/api/scheduleBuy.d.ts +293 -0
  290. package/docs/api/scheduleBuy.md +431 -0
  291. package/docs/api/scraping.d.ts +266 -0
  292. package/docs/api/scraping.md +383 -0
  293. package/docs/api/sdrAnalytics.d.ts +138 -0
  294. package/docs/api/sdrAnalytics.md +246 -0
  295. package/docs/api/search.d.ts +598 -0
  296. package/docs/api/search.md +866 -0
  297. package/docs/api/seo.d.ts +447 -0
  298. package/docs/api/seo.md +660 -0
  299. package/docs/api/sequenceLifecycle.d.ts +439 -0
  300. package/docs/api/sequenceLifecycle.md +513 -0
  301. package/docs/api/sequences.d.ts +1936 -0
  302. package/docs/api/sequences.md +3232 -0
  303. package/docs/api/settings.d.ts +448 -0
  304. package/docs/api/settings.md +731 -0
  305. package/docs/api/signals.d.ts +1441 -0
  306. package/docs/api/signals.md +2526 -0
  307. package/docs/api/signatures.d.ts +719 -0
  308. package/docs/api/signatures.md +1247 -0
  309. package/docs/api/skills.d.ts +230 -0
  310. package/docs/api/skills.md +466 -0
  311. package/docs/api/snippet.d.ts +85 -0
  312. package/docs/api/snippet.md +106 -0
  313. package/docs/api/socialPublishing.d.ts +824 -0
  314. package/docs/api/socialPublishing.md +1245 -0
  315. package/docs/api/studioDocuments.d.ts +244 -0
  316. package/docs/api/studioDocuments.md +348 -0
  317. package/docs/api/support.d.ts +90 -0
  318. package/docs/api/support.md +76 -0
  319. package/docs/api/suppressions.d.ts +241 -0
  320. package/docs/api/suppressions.md +343 -0
  321. package/docs/api/surveys.d.ts +847 -0
  322. package/docs/api/surveys.md +1223 -0
  323. package/docs/api/tasks.d.ts +813 -0
  324. package/docs/api/tasks.md +1344 -0
  325. package/docs/api/teamMembers.d.ts +668 -0
  326. package/docs/api/teamMembers.md +1040 -0
  327. package/docs/api/teams.d.ts +784 -0
  328. package/docs/api/teams.md +1395 -0
  329. package/docs/api/usage.d.ts +277 -0
  330. package/docs/api/usage.md +389 -0
  331. package/docs/api/visitors.d.ts +690 -0
  332. package/docs/api/visitors.md +1075 -0
  333. package/docs/api/voice.d.ts +4661 -0
  334. package/docs/api/voice.md +7905 -0
  335. package/docs/api/webAnalytics.d.ts +964 -0
  336. package/docs/api/webAnalytics.md +1452 -0
  337. package/docs/api/webChat.d.ts +1704 -0
  338. package/docs/api/webChat.md +2048 -0
  339. package/docs/api/webhooks.d.ts +251 -0
  340. package/docs/api/webhooks.md +386 -0
  341. package/docs/api/websiteEditor.d.ts +324 -0
  342. package/docs/api/websiteEditor.md +517 -0
  343. package/docs/api/work.d.ts +2298 -0
  344. package/docs/api/work.md +3096 -0
  345. package/docs/api/workbench.d.ts +2962 -0
  346. package/docs/api/workbench.md +4884 -0
  347. package/docs/api/workflows.d.ts +1218 -0
  348. package/docs/api/workflows.md +2302 -0
  349. package/docs/sdk-clients.md +4339 -0
  350. package/package.json +10 -3
@@ -0,0 +1,115 @@
1
+ /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
+
3
+ /**
4
+ * Types for `g8.api.events` (Events): 1 operation.
5
+ *
6
+ * For reading. In code, import from the package instead:
7
+ * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
8
+ * type In = ApiInput<"list_org_events_events_get">;
9
+ *
10
+ * Reference with examples: events.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.events.<member>` -> the operationId it calls. */
15
+ export interface EventsMembers {
16
+ listOrgEvents: "list_org_events_events_get";
17
+ }
18
+
19
+ /** Input and output of every `g8.api.events` operation, keyed by operationId. */
20
+ export interface EventsOperations {
21
+ /**
22
+ * GET /events
23
+ * List Org Events
24
+ * tier: read · scope: analytics:read
25
+ */
26
+ list_org_events_events_get: {
27
+ input: {
28
+ query?: {
29
+ /** Filter by event type (repeatable), e.g. sequencer, inbox, voiceai. */
30
+ type?: Array<string> | null;
31
+ /** Filter by event name (repeatable), e.g. sequence_email_replied. */
32
+ name?: Array<string> | null;
33
+ /** Filter by producing service. */
34
+ source?: string | null;
35
+ /** Only events whose message.contact_id matches. */
36
+ contact_id?: string | null;
37
+ /** Only events whose message.sequence_id matches. */
38
+ sequence_id?: string | null;
39
+ /** Only events whose message.campaign_id matches. */
40
+ campaign_id?: string | null;
41
+ /** Window start (ISO 8601). Defaults to 7 days before `until`. */
42
+ since?: string | null;
43
+ /** Window end, exclusive (ISO 8601). Defaults to now. */
44
+ until?: string | null;
45
+ /** `next_cursor` from the previous page. */
46
+ cursor?: string | null;
47
+ /** Page size. */
48
+ limit?: number;
49
+ };
50
+ headers?: {
51
+ "X-Target-Org-Id"?: string | null;
52
+ };
53
+ };
54
+ output: ApiResponse_OrgEventFeedPage_;
55
+ };
56
+ }
57
+
58
+ // 4 schemas referenced above (the same as G8Contract.<Name>).
59
+
60
+ export interface ApiResponse_OrgEventFeedPage_ {
61
+ data: OrgEventFeedPage;
62
+ pagination?: PaginationMeta | null;
63
+ }
64
+
65
+ /** A page of events, newest first. */
66
+ export interface OrgEventFeedPage {
67
+ events?: Array<OrgEventItem>;
68
+ /** Whether another page exists within the requested window. */
69
+ has_more?: boolean;
70
+ /** Pass back as `cursor` to fetch the next (older) page. Null when there are no more. */
71
+ next_cursor?: string | null;
72
+ /** Lower bound of the window that was searched (ISO 8601, UTC). */
73
+ since: string;
74
+ /** Upper bound of the window that was searched (ISO 8601, UTC). */
75
+ until: string;
76
+ }
77
+
78
+ /** One event from the org's event store. */
79
+ export interface OrgEventItem {
80
+ /** The event's context email: the acting user, recipient or a system actor address. */
81
+ actor_email?: string | null;
82
+ /** message.campaign_id, when the event carries one. */
83
+ campaign_id?: string | null;
84
+ /** message.contact_id, when the event carries one. */
85
+ contact_id?: string | null;
86
+ /** Event uid. Stable across reads; use it to de-duplicate. */
87
+ id?: string | null;
88
+ /** The event payload exactly as produced. */
89
+ message?: Record<string, unknown>;
90
+ /** Event name, e.g. sequence_email_sent, inbox.email_received, sdr.call_ended, booking_created. */
91
+ name?: string | null;
92
+ /** When the event happened (ISO 8601, UTC). */
93
+ occurred_at?: string | null;
94
+ /** message.sequence_id, when the event carries one. */
95
+ sequence_id?: string | null;
96
+ /** Producing service, e.g. sequencer, voiceai-service. */
97
+ source?: string | null;
98
+ /** Event family, e.g. sequencer, inbox, voiceai, appointments, crm, deals, quotes, newsletter, uui, mcp, internal. Web-tracking rows carry the tracker's type (e.g. page). */
99
+ type?: string | null;
100
+ /** Page URL, for web-tracking rows. */
101
+ url?: string | null;
102
+ }
103
+
104
+ export interface PaginationMeta {
105
+ /** Whether there are more pages */
106
+ has_next: boolean;
107
+ /** Items per page */
108
+ limit: number;
109
+ /** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
110
+ next_cursor?: string | null;
111
+ /** Current page number (1-indexed) */
112
+ page: number;
113
+ /** Total number of items */
114
+ total: number;
115
+ }
@@ -0,0 +1,105 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.events`: Events
4
+
5
+ 1 operation (1 read).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.events.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
8
+
9
+ Every example below assumes this setup (server-side, API key):
10
+
11
+ ```ts
12
+ import { g8 } from "@graph8/sdk";
13
+
14
+ g8.init({ apiKey: process.env.G8_API_KEY! });
15
+ ```
16
+
17
+ Example values are placeholders that match each field's type. Only required fields are shown. Every example is type-checked against the SDK in CI.
18
+
19
+ Exact TypeScript types for every operation on this page, and every schema they use: [events.d.ts](events.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`listOrgEvents`](#op-listorgevents) | `GET /api/v1/events` | read | `analytics:read` | List Org Events |
26
+
27
+ ---
28
+
29
+ <a id="op-listorgevents"></a>
30
+
31
+ ### `g8.api.events.listOrgEvents(input?)`
32
+
33
+ **List Org Events**
34
+
35
+ - HTTP: `GET /api/v1/events`
36
+ - operationId: `list_org_events_events_get` (also callable as `g8.api.call("list_org_events_events_get", input)`)
37
+ - Tier: `read`: reads data; safe to call and to retry
38
+ - API-key scope: `analytics:read`
39
+
40
+ List the organisation's events, newest first, with cursor pagination.
41
+
42
+ Covers every event the EDA pipeline stores for the org plus website tracking
43
+ rows. Filters combine with AND. Pages are stable under concurrent writes:
44
+ the cursor encodes the last (timestamp, uid) seen.
45
+
46
+ **Input**
47
+
48
+ | Field | Type | Required | Description |
49
+ |---|---|---|---|
50
+ | `query.type` | `Array<string> \| null` | no | Filter by event type (repeatable), e.g. sequencer, inbox, voiceai. |
51
+ | `query.name` | `Array<string> \| null` | no | Filter by event name (repeatable), e.g. sequence_email_replied. |
52
+ | `query.source` | `string \| null` | no | Filter by producing service. |
53
+ | `query.contact_id` | `string \| null` | no | Only events whose message.contact_id matches. |
54
+ | `query.sequence_id` | `string \| null` | no | Only events whose message.sequence_id matches. |
55
+ | `query.campaign_id` | `string \| null` | no | Only events whose message.campaign_id matches. |
56
+ | `query.since` | `string (date-time) \| null` | no | Window start (ISO 8601). Defaults to 7 days before `until`. |
57
+ | `query.until` | `string (date-time) \| null` | no | Window end, exclusive (ISO 8601). Defaults to now. |
58
+ | `query.cursor` | `string \| null` | no | `next_cursor` from the previous page. |
59
+ | `query.limit` | `integer` | no | Page size. default `50` |
60
+
61
+ **Returns** `ApiResponse_OrgEventFeedPage_`: the envelope `{ data: OrgEventFeedPage, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
62
+
63
+ Other envelope fields: `pagination` (PaginationMeta).
64
+
65
+ `OrgEventFeedPage` fields:
66
+
67
+ | Field | Type | Required | Description |
68
+ |---|---|---|---|
69
+ | `since` | `string` | yes | Lower bound of the window that was searched (ISO 8601, UTC). |
70
+ | `until` | `string` | yes | Upper bound of the window that was searched (ISO 8601, UTC). |
71
+ | `events` | `Array<OrgEventItem>` | no | |
72
+ | `has_more` | `boolean` | no | Whether another page exists within the requested window. default `false` |
73
+ | `next_cursor` | `string \| null` | no | Pass back as `cursor` to fetch the next (older) page. Null when there are no more. |
74
+
75
+ **Example**
76
+
77
+ ```ts
78
+ const result = await g8.api.events.listOrgEvents();
79
+ ```
80
+
81
+ ---
82
+
83
+ ## Referenced types
84
+
85
+ Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
86
+
87
+ <a id="type-orgeventitem"></a>
88
+
89
+ ### `OrgEventItem`
90
+
91
+ One event from the org's event store.
92
+
93
+ | Field | Type | Required | Description |
94
+ |---|---|---|---|
95
+ | `actor_email` | `string \| null` | no | The event's context email: the acting user, recipient or a system actor address. |
96
+ | `campaign_id` | `string \| null` | no | message.campaign_id, when the event carries one. |
97
+ | `contact_id` | `string \| null` | no | message.contact_id, when the event carries one. |
98
+ | `id` | `string \| null` | no | Event uid. Stable across reads; use it to de-duplicate. |
99
+ | `message` | `Record<string, unknown>` | no | The event payload exactly as produced. |
100
+ | `name` | `string \| null` | no | Event name, e.g. sequence_email_sent, inbox.email_received, sdr.call_ended, booking_created. |
101
+ | `occurred_at` | `string \| null` | no | When the event happened (ISO 8601, UTC). |
102
+ | `sequence_id` | `string \| null` | no | message.sequence_id, when the event carries one. |
103
+ | `source` | `string \| null` | no | Producing service, e.g. sequencer, voiceai-service. |
104
+ | `type` | `string \| null` | no | Event family, e.g. sequencer, inbox, voiceai, appointments, crm, deals, quotes, newsletter, uui, mcp, internal. Web-tracking rows carry the tracker's type (e.g. page). |
105
+ | `url` | `string \| null` | no | Page URL, for web-tracking rows. |
@@ -0,0 +1,482 @@
1
+ /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
+
3
+ /**
4
+ * Types for `g8.api.fields` (Fields): 8 operations.
5
+ *
6
+ * For reading. In code, import from the package instead:
7
+ * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
8
+ * type In = ApiInput<"create_field_fields_post">;
9
+ *
10
+ * Reference with examples: fields.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.fields.<member>` -> the operationId it calls. */
15
+ export interface FieldsMembers {
16
+ createField: "create_field_fields_post";
17
+ createFieldsBatch: "create_fields_batch_fields_batch_post";
18
+ deleteField: "delete_field_fields__column_id__delete";
19
+ getFieldValue: "get_field_value_fields__column_id__values_get";
20
+ listCompanyFields: "list_company_fields_fields_companies_get";
21
+ listContactFields: "list_contact_fields_fields_get";
22
+ setFieldValue: "set_field_value_fields__column_id__values_patch";
23
+ setFieldValuesBatch: "set_field_values_batch_fields_values_batch_patch";
24
+ }
25
+
26
+ /** Input and output of every `g8.api.fields` operation, keyed by operationId. */
27
+ export interface FieldsOperations {
28
+ /**
29
+ * POST /fields
30
+ * Create Field
31
+ * tier: write · scope: fields:write
32
+ */
33
+ create_field_fields_post: {
34
+ input: {
35
+ headers?: {
36
+ "X-Target-Org-Id"?: string | null;
37
+ };
38
+ body: CreateFieldRequest;
39
+ };
40
+ output: ApiResponse_CreateFieldResponse_;
41
+ };
42
+ /**
43
+ * POST /fields/batch
44
+ * Create Fields Batch
45
+ * tier: write · scope: fields:write
46
+ */
47
+ create_fields_batch_fields_batch_post: {
48
+ input: {
49
+ headers?: {
50
+ "X-Target-Org-Id"?: string | null;
51
+ };
52
+ body: CreateFieldsBatchRequest;
53
+ };
54
+ output: ApiResponse_CreateFieldsBatchResponse_;
55
+ };
56
+ /**
57
+ * DELETE /fields/{column_id}
58
+ * Delete Field
59
+ * tier: destructive · scope: fields:delete
60
+ */
61
+ delete_field_fields__column_id__delete: {
62
+ input: {
63
+ path: {
64
+ /** Column ID to delete */
65
+ column_id: number;
66
+ };
67
+ query?: {
68
+ /** Target entity: 'contacts' or 'companies' */
69
+ entity?: string;
70
+ /** Optional list scope guard. If provided, the column must belong to this list or the request returns 404. Use this to prevent an agent with narrow intent from accidentally deleting a column on a different list in the same org. */
71
+ list_id?: number | null;
72
+ };
73
+ headers?: {
74
+ "X-Target-Org-Id"?: string | null;
75
+ };
76
+ };
77
+ output: ApiResponse_DeleteFieldResponse_;
78
+ };
79
+ /**
80
+ * GET /fields/{column_id}/values
81
+ * Get Field Value
82
+ * tier: read · scope: fields:read
83
+ */
84
+ get_field_value_fields__column_id__values_get: {
85
+ input: {
86
+ path: {
87
+ /** Column ID from g8_list_fields or g8_create_field */
88
+ column_id: number;
89
+ };
90
+ query: {
91
+ /** Contact ID (entity='contacts') or company ID (entity='companies') */
92
+ record_id: number;
93
+ /** Target entity: 'contacts' or 'companies' */
94
+ entity?: string;
95
+ };
96
+ headers?: {
97
+ "X-Target-Org-Id"?: string | null;
98
+ };
99
+ };
100
+ output: ApiResponse_GetFieldValueResponse_;
101
+ };
102
+ /**
103
+ * GET /fields/companies
104
+ * List Company Fields
105
+ * tier: read · scope: fields:read
106
+ */
107
+ list_company_fields_fields_companies_get: {
108
+ input: {
109
+ query?: {
110
+ /** List ID to include list-specific custom fields */
111
+ list_id?: number | null;
112
+ };
113
+ headers?: {
114
+ "X-Target-Org-Id"?: string | null;
115
+ };
116
+ };
117
+ output: ApiResponse_list_FieldResponse__;
118
+ };
119
+ /**
120
+ * GET /fields
121
+ * List Contact Fields
122
+ * tier: read · scope: fields:read
123
+ */
124
+ list_contact_fields_fields_get: {
125
+ input: {
126
+ query?: {
127
+ /** List ID to include list-specific custom fields */
128
+ list_id?: number | null;
129
+ };
130
+ headers?: {
131
+ "X-Target-Org-Id"?: string | null;
132
+ };
133
+ };
134
+ output: ApiResponse_list_FieldResponse__;
135
+ };
136
+ /**
137
+ * PATCH /fields/{column_id}/values
138
+ * Set Field Value
139
+ * tier: write · scope: fields:write
140
+ */
141
+ set_field_value_fields__column_id__values_patch: {
142
+ input: {
143
+ path: {
144
+ /** Column ID from g8_list_fields or g8_create_field */
145
+ column_id: number;
146
+ };
147
+ headers?: {
148
+ "X-Target-Org-Id"?: string | null;
149
+ };
150
+ body: SetFieldValueRequest;
151
+ };
152
+ output: ApiResponse_SetFieldValueResponse_;
153
+ };
154
+ /**
155
+ * PATCH /fields/values/batch
156
+ * Set Field Values Batch
157
+ * tier: write · scope: fields:write
158
+ */
159
+ set_field_values_batch_fields_values_batch_patch: {
160
+ input: {
161
+ headers?: {
162
+ "X-Target-Org-Id"?: string | null;
163
+ };
164
+ body: SetFieldValuesBatchRequest;
165
+ };
166
+ output: ApiResponse_SetFieldValuesBatchResponse_;
167
+ };
168
+ }
169
+
170
+ // 28 schemas referenced above (the same as G8Contract.<Name>).
171
+
172
+ export interface ApiResponse_CreateFieldResponse_ {
173
+ data: CreateFieldResponse;
174
+ pagination?: PaginationMeta | null;
175
+ }
176
+
177
+ export interface ApiResponse_CreateFieldsBatchResponse_ {
178
+ data: CreateFieldsBatchResponse;
179
+ pagination?: PaginationMeta | null;
180
+ }
181
+
182
+ export interface ApiResponse_DeleteFieldResponse_ {
183
+ data: DeleteFieldResponse;
184
+ pagination?: PaginationMeta | null;
185
+ }
186
+
187
+ export interface ApiResponse_GetFieldValueResponse_ {
188
+ data: GetFieldValueResponse;
189
+ pagination?: PaginationMeta | null;
190
+ }
191
+
192
+ export interface ApiResponse_SetFieldValueResponse_ {
193
+ data: SetFieldValueResponse;
194
+ pagination?: PaginationMeta | null;
195
+ }
196
+
197
+ export interface ApiResponse_SetFieldValuesBatchResponse_ {
198
+ data: SetFieldValuesBatchResponse;
199
+ pagination?: PaginationMeta | null;
200
+ }
201
+
202
+ export interface ApiResponse_list_FieldResponse__ {
203
+ data: Array<FieldResponse>;
204
+ pagination?: PaginationMeta | null;
205
+ }
206
+
207
+ /**
208
+ * One column in a batch-create request.
209
+ *
210
+ * `title`, `data_type` and the optional `enrichment` block are per-column;
211
+ * `list_id` and `entity` are shared at the parent `CreateFieldsBatchRequest`
212
+ * level (a batch targets one entity and, when enrichment is used, one list).
213
+ */
214
+ export interface BatchFieldItem {
215
+ /** Column data type. Currently only 'text' is supported. */
216
+ data_type?: string;
217
+ /** Optional per-column waterfall enrichment block (identical shape to POST /fields). When supplied, a companion enrichment_configs row is created for that column so it's immediately runnable. */
218
+ enrichment?: CreateFieldEnrichmentInput | null;
219
+ /** Column title, e.g. 'Job Level' */
220
+ title: string;
221
+ }
222
+
223
+ /** Per-column outcome inside a batch response. */
224
+ export interface BatchFieldResult {
225
+ enrichment?: CreateFieldEnrichmentResponse | null;
226
+ /** Set when the column was created but its companion enrichment config failed. */
227
+ error?: string | null;
228
+ id?: number | null;
229
+ /** True when this column was created org-GLOBAL (no list_id was supplied) and will therefore appear on EVERY list in the org. Pass `list_id` to scope columns to one list. */
230
+ is_global?: boolean;
231
+ /** The list this column is scoped to, or null when it is org-global. */
232
+ list_id?: number | null;
233
+ name?: string | null;
234
+ ok?: boolean;
235
+ title: string;
236
+ }
237
+
238
+ /**
239
+ * Optional enrichment-pipeline block attached at column-create time.
240
+ *
241
+ * When supplied, `POST /fields` creates a companion `enrichment_configs`
242
+ * row in the same request so the new column is immediately runnable via
243
+ * `POST /enrichment/waterfall/enrich`. Without this block the column
244
+ * exists but has no enrichment plan — calling /waterfall/enrich on it
245
+ * returns 422 (`waterfall_config_missing`).
246
+ *
247
+ * Currently only `type='waterfall'` is supported; AI / formula
248
+ * enrichment will follow once the rest of the agent surface lands.
249
+ */
250
+ export interface CreateFieldEnrichmentInput {
251
+ /** Optional post-enrichment email verification config. */
252
+ email_verification?: EmailVerificationInput | null;
253
+ /** Target field identifier. Defaults to the new column's slug. */
254
+ field_to_enrich?: string | null;
255
+ /** Pipeline name. Defaults to `<column title> Enrichment` if omitted. */
256
+ name?: string | null;
257
+ /** Ordered list of provider names. Without `target_field`, server maps each to its default email-finder action (legacy). With `target_field`, filters the column template to these providers (correct per-field action preserved). Mutually exclusive with `steps`. */
258
+ providers?: Array<string> | null;
259
+ /** If true, skip rows where the target field is already populated. */
260
+ skip_existing_values?: boolean;
261
+ /** Full caller-supplied step list. Persisted verbatim. Mutually exclusive with `providers`. */
262
+ steps?: Array<WaterfallStepInput> | null;
263
+ /** Kind of data this column holds — CONTACT_DIRECT_PHONE, CONTACT_MOBILE_PHONE, CONTACT_WORK_EMAIL, CONTACT_LINKEDIN_URL, COMPANY_PHONE, ... or a friendly synonym ('phone', 'mobile', 'email', 'linkedin'). When set, the pipeline is built from the server's per-column TEMPLATE so each provider runs its CORRECT action for that data kind (e.g. leadmagic `mobile_finder` for a phone, NOT `email_finder`) — the same actions the web UI's 'Add column -> Waterfall' picks. Combine with `providers[]` to keep only those providers from the template. Mutually exclusive with `steps`. When omitted, the legacy `providers[]` email-finder shortcut is unchanged. */
264
+ target_field?: string | null;
265
+ /** Pipeline kind. Only 'waterfall' is supported today. */
266
+ type?: string;
267
+ }
268
+
269
+ /** Echo of the companion enrichment config created by `enrichment` block. */
270
+ export interface CreateFieldEnrichmentResponse {
271
+ /** column_id slug to pass to /enrichment/waterfall/enrich */
272
+ column_id: string;
273
+ config_id: string;
274
+ email_verification?: Record<string, unknown> | null;
275
+ name: string;
276
+ providers?: Array<string>;
277
+ type: string;
278
+ }
279
+
280
+ /** Request body for creating a custom field (column). */
281
+ export interface CreateFieldRequest {
282
+ /** Column data type. Currently only 'text' is supported; additional types (numeric, date, boolean, select) may be added in future versions. */
283
+ data_type?: string;
284
+ /** Optional enrichment-pipeline block. When supplied, a companion `enrichment_configs` row is created in the same request so the new column is immediately runnable via /enrichment/waterfall/enrich. */
285
+ enrichment?: CreateFieldEnrichmentInput | null;
286
+ /** Target entity: 'contacts' or 'companies' */
287
+ entity?: string;
288
+ /** If set, field is list-specific; otherwise global across the org */
289
+ list_id?: number | null;
290
+ /** Column title, e.g. 'Job Level' */
291
+ title: string;
292
+ }
293
+
294
+ export interface CreateFieldResponse {
295
+ data_type: string;
296
+ /** Populated when the request included an `enrichment` block. Use `enrichment.column_id` for subsequent /enrichment/waterfall/enrich calls. */
297
+ enrichment?: CreateFieldEnrichmentResponse | null;
298
+ id: number;
299
+ is_global: boolean;
300
+ list_id?: number | null;
301
+ name: string;
302
+ title: string;
303
+ }
304
+
305
+ /**
306
+ * Create MANY custom columns in one request.
307
+ *
308
+ * All columns are created in a single DB transaction with a SINGLE view
309
+ * rebuild — at 40-50 columns this replaces 40-50 view recreations with one.
310
+ */
311
+ export interface CreateFieldsBatchRequest {
312
+ /** Target entity for ALL columns: 'contacts' or 'companies' */
313
+ entity?: string;
314
+ /** Columns to create (1-100). */
315
+ fields: Array<BatchFieldItem>;
316
+ /** Shared list scope for all columns. REQUIRED if ANY field carries an `enrichment` block — waterfall pipelines are list-scoped. */
317
+ list_id?: number | null;
318
+ }
319
+
320
+ export interface CreateFieldsBatchResponse {
321
+ entity: string;
322
+ list_id?: number | null;
323
+ results: Array<BatchFieldResult>;
324
+ total_created: number;
325
+ total_requested: number;
326
+ }
327
+
328
+ export interface DeleteFieldResponse {
329
+ column_id: number;
330
+ deleted?: boolean;
331
+ }
332
+
333
+ /**
334
+ * Email verification config attached to a waterfall pipeline.
335
+ *
336
+ * Mirrors the canonical `EmailVerificationConfigDto` in
337
+ * `enrichment/interfaces/fastapi/waterfall_dtos.py` so the dev-API and the
338
+ * UI persist an identical settings shape (the CF worker reads `settings.
339
+ * email_verification.*` regardless of which surface saved the pipeline).
340
+ */
341
+ export interface EmailVerificationInput {
342
+ /** Treat catch-all responses as valid (domains that accept any address). */
343
+ accept_catchall?: boolean;
344
+ /** Enable post-enrichment email verification */
345
+ enabled?: boolean;
346
+ /** Verification provider. Charges credits when use_system_credentials=True. */
347
+ provider?: "zerobounce" | "hunter" | "icypeas" | "leadmagic";
348
+ /** Use graph8-managed API keys (charges credits). False = use org's BYOK keys. */
349
+ use_system_credentials?: boolean;
350
+ /** Verification statuses to accept as valid. Typical: ['valid'] or ['valid','catch-all']. */
351
+ valid_statuses?: Array<string>;
352
+ }
353
+
354
+ export interface FieldResponse {
355
+ data_type?: string;
356
+ id?: number | null;
357
+ is_global?: boolean;
358
+ name?: string | null;
359
+ title: string;
360
+ }
361
+
362
+ /** One (column, value) pair to write on a row. */
363
+ export interface FieldValueItem {
364
+ /** Column ID from g8_list_fields or g8_create_field. */
365
+ column_id: number;
366
+ /** Value to write into the custom column. Pass null (or omit) to clear the field. */
367
+ value?: string | null;
368
+ }
369
+
370
+ /** Response body for reading a single custom column value from one row. */
371
+ export interface GetFieldValueResponse {
372
+ column_id: number;
373
+ entity: string;
374
+ /** The underlying column slug (column_name_db). */
375
+ name: string;
376
+ record_id: number;
377
+ /** The stored value, or null if the column is unset for this row. */
378
+ value?: string | null;
379
+ }
380
+
381
+ export interface PaginationMeta {
382
+ /** Whether there are more pages */
383
+ has_next: boolean;
384
+ /** Items per page */
385
+ limit: number;
386
+ /** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
387
+ next_cursor?: string | null;
388
+ /** Current page number (1-indexed) */
389
+ page: number;
390
+ /** Total number of items */
391
+ total: number;
392
+ }
393
+
394
+ /** One row (contact or company) plus the columns to set on it. */
395
+ export interface RowFieldValues {
396
+ /** Column/value pairs to write on this row. Empty = no-op (counts as ok with 0 writes). */
397
+ fields?: Array<FieldValueItem>;
398
+ /** Contact ID (entity='contacts') or company ID (entity='companies'). */
399
+ record_id: number;
400
+ }
401
+
402
+ /** Request body for writing a custom column value to a single contact or company row. */
403
+ export interface SetFieldValueRequest {
404
+ /** Target entity: 'contacts' or 'companies' */
405
+ entity?: string;
406
+ /** Contact ID (entity='contacts') or company ID (entity='companies') */
407
+ record_id: number;
408
+ /** Value to write into the custom column. Pass null (or omit) to clear the field. */
409
+ value?: string | null;
410
+ }
411
+
412
+ export interface SetFieldValueResponse {
413
+ column_id: number;
414
+ record_id: number;
415
+ updated?: boolean;
416
+ }
417
+
418
+ /** Write custom column values to one OR many contact/company rows at once. */
419
+ export interface SetFieldValuesBatchRequest {
420
+ /** Target entity, SHARED across every row: 'contacts' or 'companies'. */
421
+ entity?: string;
422
+ /** Rows to update (1-500). Each carries its own record_id + fields[]. */
423
+ rows: Array<RowFieldValues>;
424
+ /** Opt-in status-code semantics. Default false keeps the historical behaviour: always HTTP 200, per-row outcomes in `results[]`. When true, a batch where EVERY row failed returns 422 and a partially-failed batch returns 207 Multi-Status, so a client that only checks the status code cannot mistake a total failure for success. The response body is identical either way. */
425
+ strict?: boolean;
426
+ }
427
+
428
+ export interface SetFieldValuesBatchResponse {
429
+ /** True when rows were requested and NONE were written. */
430
+ all_failed?: boolean;
431
+ entity: string;
432
+ results: Array<SetFieldValuesRowResult>;
433
+ /** Rows that could not be written (see results[].error). */
434
+ total_rows_failed?: number;
435
+ total_rows_requested: number;
436
+ total_rows_updated: number;
437
+ total_values_written: number;
438
+ }
439
+
440
+ /** Per-row outcome inside a batch value-write response. */
441
+ export interface SetFieldValuesRowResult {
442
+ /** Set when this row failed (record not found, unknown column, etc.). Other rows still commit. */
443
+ error?: string | null;
444
+ ok?: boolean;
445
+ record_id: number;
446
+ updated_columns?: Array<number>;
447
+ }
448
+
449
+ /**
450
+ * Single step in a caller-supplied waterfall sequence.
451
+ *
452
+ * Mirrors `WaterfallStepDto` in `enrichment/interfaces/fastapi/waterfall_dtos.py`.
453
+ * Persisted verbatim into `enrichment_configs.config.steps[]` so the CF
454
+ * worker can resolve provider, action and credentials the same way
455
+ * UI-saved pipelines do.
456
+ */
457
+ export interface WaterfallStepInput {
458
+ /** Provider action: lookup_person, find_email, enrich_person, ... */
459
+ action: string;
460
+ /** Human-readable label shown in UI. Auto-titled from `action` if omitted. */
461
+ action_display_name?: string | null;
462
+ confidence_threshold?: number;
463
+ /** Provider-specific options (e.g. apollo `reveal_phone_numbers=true`). */
464
+ config?: Record<string, unknown>;
465
+ enabled?: boolean;
466
+ /** Step identifier. Auto-generated (`step_<provider>_<uuid8>`) if omitted. */
467
+ id?: string | null;
468
+ /** Maps provider input names to graph8 column identifiers (CONTACT_*). */
469
+ input_mapping?: Record<string, string>;
470
+ /** True = use graph8-managed credentials + charge credits. False = use org BYOK. */
471
+ is_system_provider?: boolean;
472
+ max_retries?: number;
473
+ /** 0-indexed execution order. */
474
+ order?: number;
475
+ /** Dotted path the worker writes into (e.g. 'contact.work_email'). */
476
+ output_field?: string | null;
477
+ /** Optional output field remap (deprecated — prefer `output_field`). */
478
+ output_mapping?: Record<string, string>;
479
+ /** Provider name: graph8, hunter, prospeo, dropcontact, apollo, ... */
480
+ provider: string;
481
+ stop_on_success?: boolean;
482
+ }