@graph8/sdk 0.251.0 → 0.262.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 +105 -7
  4. package/dist/index.d.ts +105 -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 +103 -7
  10. package/dist/react.d.ts +103 -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 +1697 -0
  140. package/docs/api/deals.md +2436 -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,566 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.fields`: Fields
4
+
5
+ 8 operations (3 read, 4 write, 1 destructive).
6
+
7
+ 5 of these also have a hand-written method (`g8.fields`), marked **★** below. Prefer the hand-written method when one exists: it unwraps the `data` envelope and takes friendlier arguments. See [../sdk-clients.md](../sdk-clients.md).
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: [fields.d.ts](fields.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`createField`](#op-createfield) ★ | `POST /api/v1/fields` | write | `fields:write` | Create Field |
26
+ | [`createFieldsBatch`](#op-createfieldsbatch) | `POST /api/v1/fields/batch` | write | `fields:write` | Create Fields Batch |
27
+ | [`deleteField`](#op-deletefield) ★ | `DELETE /api/v1/fields/{column_id}` | destructive | `fields:delete` | Delete Field |
28
+ | [`getFieldValue`](#op-getfieldvalue) | `GET /api/v1/fields/{column_id}/values` | read | `fields:read` | Get Field Value |
29
+ | [`listCompanyFields`](#op-listcompanyfields) ★ | `GET /api/v1/fields/companies` | read | `fields:read` | List Company Fields |
30
+ | [`listContactFields`](#op-listcontactfields) ★ | `GET /api/v1/fields` | read | `fields:read` | List Contact Fields |
31
+ | [`setFieldValue`](#op-setfieldvalue) ★ | `PATCH /api/v1/fields/{column_id}/values` | write | `fields:write` | Set Field Value |
32
+ | [`setFieldValuesBatch`](#op-setfieldvaluesbatch) | `PATCH /api/v1/fields/values/batch` | write | `fields:write` | Set Field Values Batch |
33
+
34
+ ---
35
+
36
+ <a id="op-createfield"></a>
37
+
38
+ ### `g8.api.fields.createField(input)`
39
+
40
+ **Create Field**
41
+
42
+ - HTTP: `POST /api/v1/fields`
43
+ - operationId: `create_field_fields_post` (also callable as `g8.api.call("create_field_fields_post", input)`)
44
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
45
+ - API-key scope: `fields:write`
46
+ - ★ Hand-written: [`g8.fields.create()`](../sdk-clients.md#g8-fields-create)
47
+
48
+ Create a new custom field (column) for contacts or companies.
49
+
50
+ Set `list_id` to make the field specific to a single list, or omit it to
51
+ create a global field available across every list in the org.
52
+
53
+ Optionally pass an `enrichment` block to provision a companion waterfall
54
+ pipeline in the same request. Without this block the column exists but
55
+ has no enrichment plan, so `POST /enrichment/waterfall/enrich` later
56
+ returns 422 (`waterfall_config_missing`).
57
+
58
+ **Input**
59
+
60
+ | Field | Type | Required | Description |
61
+ |---|---|---|---|
62
+ | `body` | `CreateFieldRequest` | yes | Request body; fields below. |
63
+
64
+ Body fields (`CreateFieldRequest`):
65
+
66
+ | Field | Type | Required | Description |
67
+ |---|---|---|---|
68
+ | `body.title` | `string` | yes | Column title, e.g. 'Job Level' |
69
+ | `body.data_type` | `string` | no | Column data type. Currently only 'text' is supported; additional types (numeric, date, boolean, select) may be added in future versions. default `"text"` |
70
+ | `body.enrichment` | `CreateFieldEnrichmentInput \| null` | no | 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. |
71
+ | `body.entity` | `string` | no | Target entity: 'contacts' or 'companies' default `"contacts"` |
72
+ | `body.list_id` | `integer \| null` | no | If set, field is list-specific; otherwise global across the org |
73
+
74
+ **Returns** `ApiResponse_CreateFieldResponse_`: the envelope `{ data: CreateFieldResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
75
+
76
+ Other envelope fields: `pagination` (PaginationMeta).
77
+
78
+ `CreateFieldResponse` fields:
79
+
80
+ | Field | Type | Required | Description |
81
+ |---|---|---|---|
82
+ | `data_type` | `string` | yes | |
83
+ | `id` | `integer` | yes | |
84
+ | `is_global` | `boolean` | yes | |
85
+ | `name` | `string` | yes | |
86
+ | `title` | `string` | yes | |
87
+ | `enrichment` | `CreateFieldEnrichmentResponse \| null` | no | Populated when the request included an `enrichment` block. Use `enrichment.column_id` for subsequent /enrichment/waterfall/enrich calls. |
88
+ | `list_id` | `integer \| null` | no | |
89
+
90
+ **Example**
91
+
92
+ ```ts
93
+ const result = await g8.api.fields.createField({ body: { title: "Example" } });
94
+ ```
95
+
96
+ ---
97
+
98
+ <a id="op-createfieldsbatch"></a>
99
+
100
+ ### `g8.api.fields.createFieldsBatch(input)`
101
+
102
+ **Create Fields Batch**
103
+
104
+ - HTTP: `POST /api/v1/fields/batch`
105
+ - operationId: `create_fields_batch_fields_batch_post` (also callable as `g8.api.call("create_fields_batch_fields_batch_post", input)`)
106
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
107
+ - API-key scope: `fields:write`
108
+
109
+ Create many custom columns (contacts or companies) in ONE request.
110
+
111
+ Backed by a single DB transaction with ONE view rebuild for the whole batch
112
+ — the efficient path for setting up a list with dozens of columns at once.
113
+ The single-column `POST /fields` is unchanged; this is purely additive.
114
+
115
+ Validation is fail-fast: data_types, duplicate titles, and every `enrichment`
116
+ block are checked BEFORE any column is created, so a bad request creates
117
+ nothing. Column creation itself is atomic (all columns or none).
118
+
119
+ Per-column `enrichment` blocks are applied AFTER the columns commit; if a
120
+ companion enrichment config fails for one column, that column still exists
121
+ and its `results[]` entry reports `ok=false` with the error — the rest of
122
+ the batch is unaffected (mirrors the single endpoint's column-then-config
123
+ ordering, but per-field instead of failing the whole request).
124
+
125
+ **Input**
126
+
127
+ | Field | Type | Required | Description |
128
+ |---|---|---|---|
129
+ | `body` | `CreateFieldsBatchRequest` | yes | Request body; fields below. |
130
+
131
+ Body fields (`CreateFieldsBatchRequest`):
132
+
133
+ | Field | Type | Required | Description |
134
+ |---|---|---|---|
135
+ | `body.fields` | `Array<BatchFieldItem>` | yes | Columns to create (1-100). |
136
+ | `body.entity` | `string` | no | Target entity for ALL columns: 'contacts' or 'companies' default `"contacts"` |
137
+ | `body.list_id` | `integer \| null` | no | Shared list scope for all columns. REQUIRED if ANY field carries an `enrichment` block — waterfall pipelines are list-scoped. |
138
+
139
+ **Returns** `ApiResponse_CreateFieldsBatchResponse_`: the envelope `{ data: CreateFieldsBatchResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
140
+
141
+ Other envelope fields: `pagination` (PaginationMeta).
142
+
143
+ `CreateFieldsBatchResponse` fields:
144
+
145
+ | Field | Type | Required | Description |
146
+ |---|---|---|---|
147
+ | `entity` | `string` | yes | |
148
+ | `results` | `Array<BatchFieldResult>` | yes | |
149
+ | `total_created` | `integer` | yes | |
150
+ | `total_requested` | `integer` | yes | |
151
+ | `list_id` | `integer \| null` | no | |
152
+
153
+ **Example**
154
+
155
+ ```ts
156
+ const result = await g8.api.fields.createFieldsBatch({ body: { fields: [{ title: "Example" }] } });
157
+ ```
158
+
159
+ ---
160
+
161
+ <a id="op-deletefield"></a>
162
+
163
+ ### `g8.api.fields.deleteField(input)`
164
+
165
+ **Delete Field**
166
+
167
+ - HTTP: `DELETE /api/v1/fields/{column_id}`
168
+ - operationId: `delete_field_fields__column_id__delete` (also callable as `g8.api.call("delete_field_fields__column_id__delete", input)`)
169
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
170
+ - API-key scope: `fields:delete`
171
+ - ★ Hand-written: [`g8.fields.delete()`](../sdk-clients.md#g8-fields-delete)
172
+
173
+ Soft-delete a custom field (column).
174
+
175
+ Always org-scoped (you can only delete columns in your own org). Pass
176
+ ``list_id`` to additionally require that the column belong to a specific
177
+ list — that's the safer default for list-scoped agents since the org may
178
+ have many custom columns across different lists.
179
+
180
+ **Input**
181
+
182
+ | Field | Type | Required | Description |
183
+ |---|---|---|---|
184
+ | `path.column_id` | `integer` | yes | Column ID to delete |
185
+ | `query.entity` | `string` | no | Target entity: 'contacts' or 'companies' default `"contacts"` |
186
+ | `query.list_id` | `integer \| null` | no | 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. |
187
+
188
+ **Returns** `ApiResponse_DeleteFieldResponse_`: the envelope `{ data: DeleteFieldResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
189
+
190
+ Other envelope fields: `pagination` (PaginationMeta).
191
+
192
+ `DeleteFieldResponse` fields:
193
+
194
+ | Field | Type | Required | Description |
195
+ |---|---|---|---|
196
+ | `column_id` | `integer` | yes | |
197
+ | `deleted` | `boolean` | no | default `true` |
198
+
199
+ **Example**
200
+
201
+ ```ts
202
+ // destructive: deletes or archives data; confirm with a human before calling.
203
+ const result = await g8.api.fields.deleteField({ path: { column_id: 123 } });
204
+ ```
205
+
206
+ ---
207
+
208
+ <a id="op-getfieldvalue"></a>
209
+
210
+ ### `g8.api.fields.getFieldValue(input)`
211
+
212
+ **Get Field Value**
213
+
214
+ - HTTP: `GET /api/v1/fields/{column_id}/values`
215
+ - operationId: `get_field_value_fields__column_id__values_get` (also callable as `g8.api.call("get_field_value_fields__column_id__values_get", input)`)
216
+ - Tier: `read`: reads data; safe to call and to retry
217
+ - API-key scope: `fields:read`
218
+
219
+ Read a single custom column value for one contact or company row.
220
+
221
+ The read-side counterpart of ``PATCH /fields/{column_id}/values``. Resolves
222
+ ``column_id`` to the underlying ``column_name_db`` from ``dynamic_columns``
223
+ (scoped by ``object_type`` so a contacts column can't be read through the
224
+ companies path), then selects that one value from ``mashup_contact_attrs``
225
+ (or ``mashup_company_attrs`` for companies).
226
+
227
+ Returns ``value: null`` when the column exists but has never been set for
228
+ that row. Returns 404 when the column or the record does not exist.
229
+
230
+ Backwards-compat: this is a brand-new route; no existing surface changes.
231
+ Custom column VALUES are also surfaced inline on the contact/company read
232
+ endpoints when ``include_custom_fields=true`` is passed.
233
+
234
+ **Input**
235
+
236
+ | Field | Type | Required | Description |
237
+ |---|---|---|---|
238
+ | `path.column_id` | `integer` | yes | Column ID from g8_list_fields or g8_create_field |
239
+ | `query.record_id` | `integer` | yes | Contact ID (entity='contacts') or company ID (entity='companies') |
240
+ | `query.entity` | `string` | no | Target entity: 'contacts' or 'companies' default `"contacts"` |
241
+
242
+ **Returns** `ApiResponse_GetFieldValueResponse_`: the envelope `{ data: GetFieldValueResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
243
+
244
+ Other envelope fields: `pagination` (PaginationMeta).
245
+
246
+ `GetFieldValueResponse` fields:
247
+
248
+ | Field | Type | Required | Description |
249
+ |---|---|---|---|
250
+ | `column_id` | `integer` | yes | |
251
+ | `entity` | `string` | yes | |
252
+ | `name` | `string` | yes | The underlying column slug (column_name_db). |
253
+ | `record_id` | `integer` | yes | |
254
+ | `value` | `string \| null` | no | The stored value, or null if the column is unset for this row. |
255
+
256
+ **Example**
257
+
258
+ ```ts
259
+ const result = await g8.api.fields.getFieldValue({ path: { column_id: 123 }, query: { record_id: 123 } });
260
+ ```
261
+
262
+ ---
263
+
264
+ <a id="op-listcompanyfields"></a>
265
+
266
+ ### `g8.api.fields.listCompanyFields(input?)`
267
+
268
+ **List Company Fields**
269
+
270
+ - HTTP: `GET /api/v1/fields/companies`
271
+ - operationId: `list_company_fields_fields_companies_get` (also callable as `g8.api.call("list_company_fields_fields_companies_get", input)`)
272
+ - Tier: `read`: reads data; safe to call and to retry
273
+ - API-key scope: `fields:read`
274
+ - ★ Hand-written: [`g8.fields.listCompanyFields()`](../sdk-clients.md#g8-fields-listcompanyfields)
275
+
276
+ List company fields (base + custom). Optionally include list-specific custom fields.
277
+
278
+ **Input**
279
+
280
+ | Field | Type | Required | Description |
281
+ |---|---|---|---|
282
+ | `query.list_id` | `integer \| null` | no | List ID to include list-specific custom fields |
283
+
284
+ **Returns** `ApiResponse_list_FieldResponse__`: the envelope `{ data: Array<FieldResponse>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
285
+
286
+ Other envelope fields: `pagination` (PaginationMeta).
287
+
288
+ `FieldResponse` fields:
289
+
290
+ | Field | Type | Required | Description |
291
+ |---|---|---|---|
292
+ | `title` | `string` | yes | |
293
+ | `data_type` | `string` | no | default `"text"` |
294
+ | `id` | `integer \| null` | no | |
295
+ | `is_global` | `boolean` | no | default `true` |
296
+ | `name` | `string \| null` | no | |
297
+
298
+ **Example**
299
+
300
+ ```ts
301
+ const result = await g8.api.fields.listCompanyFields();
302
+ ```
303
+
304
+ ---
305
+
306
+ <a id="op-listcontactfields"></a>
307
+
308
+ ### `g8.api.fields.listContactFields(input?)`
309
+
310
+ **List Contact Fields**
311
+
312
+ - HTTP: `GET /api/v1/fields`
313
+ - operationId: `list_contact_fields_fields_get` (also callable as `g8.api.call("list_contact_fields_fields_get", input)`)
314
+ - Tier: `read`: reads data; safe to call and to retry
315
+ - API-key scope: `fields:read`
316
+ - ★ Hand-written: [`g8.fields.listContactFields()`](../sdk-clients.md#g8-fields-listcontactfields)
317
+
318
+ List contact fields (base + custom). Optionally include list-specific custom fields.
319
+
320
+ **Input**
321
+
322
+ | Field | Type | Required | Description |
323
+ |---|---|---|---|
324
+ | `query.list_id` | `integer \| null` | no | List ID to include list-specific custom fields |
325
+
326
+ **Returns** `ApiResponse_list_FieldResponse__`: the envelope `{ data: Array<FieldResponse>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
327
+
328
+ Other envelope fields: `pagination` (PaginationMeta).
329
+
330
+ `FieldResponse` fields:
331
+
332
+ | Field | Type | Required | Description |
333
+ |---|---|---|---|
334
+ | `title` | `string` | yes | |
335
+ | `data_type` | `string` | no | default `"text"` |
336
+ | `id` | `integer \| null` | no | |
337
+ | `is_global` | `boolean` | no | default `true` |
338
+ | `name` | `string \| null` | no | |
339
+
340
+ **Example**
341
+
342
+ ```ts
343
+ const result = await g8.api.fields.listContactFields();
344
+ ```
345
+
346
+ ---
347
+
348
+ <a id="op-setfieldvalue"></a>
349
+
350
+ ### `g8.api.fields.setFieldValue(input)`
351
+
352
+ **Set Field Value**
353
+
354
+ - HTTP: `PATCH /api/v1/fields/{column_id}/values`
355
+ - operationId: `set_field_value_fields__column_id__values_patch` (also callable as `g8.api.call("set_field_value_fields__column_id__values_patch", input)`)
356
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
357
+ - API-key scope: `fields:write`
358
+ - ★ Hand-written: [`g8.fields.setValue()`](../sdk-clients.md#g8-fields-setvalue)
359
+
360
+ Write a custom column value to a single contact or company row.
361
+
362
+ Resolves ``column_id`` to the underlying ``column_name_db`` from
363
+ ``dynamic_columns``, then performs an ``INSERT ... ON CONFLICT DO UPDATE``
364
+ against ``mashup_contact_attrs`` (or ``mashup_company_attrs`` for companies).
365
+
366
+ Pass ``value=null`` (or omit it) to clear the column for that row.
367
+
368
+ Notes:
369
+ - The column must exist in ``dynamic_columns`` (not soft-deleted) for
370
+ this org and the matching entity. Returns 404 otherwise.
371
+ - The record (contact or company) must exist - the underlying foreign
372
+ key constraint enforces this; a missing record yields a 404.
373
+ - Custom column writes do NOT trigger view recreation; only column
374
+ creation does (see ``CdpMashupContactRepository.create_column``).
375
+
376
+ **Input**
377
+
378
+ | Field | Type | Required | Description |
379
+ |---|---|---|---|
380
+ | `path.column_id` | `integer` | yes | Column ID from g8_list_fields or g8_create_field |
381
+ | `body` | `SetFieldValueRequest` | yes | Request body; fields below. |
382
+
383
+ Body fields (`SetFieldValueRequest`):
384
+
385
+ | Field | Type | Required | Description |
386
+ |---|---|---|---|
387
+ | `body.record_id` | `integer` | yes | Contact ID (entity='contacts') or company ID (entity='companies') |
388
+ | `body.entity` | `string` | no | Target entity: 'contacts' or 'companies' default `"contacts"` |
389
+ | `body.value` | `string \| null` | no | Value to write into the custom column. Pass null (or omit) to clear the field. |
390
+
391
+ **Returns** `ApiResponse_SetFieldValueResponse_`: the envelope `{ data: SetFieldValueResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
392
+
393
+ Other envelope fields: `pagination` (PaginationMeta).
394
+
395
+ `SetFieldValueResponse` fields:
396
+
397
+ | Field | Type | Required | Description |
398
+ |---|---|---|---|
399
+ | `column_id` | `integer` | yes | |
400
+ | `record_id` | `integer` | yes | |
401
+ | `updated` | `boolean` | no | default `true` |
402
+
403
+ **Example**
404
+
405
+ ```ts
406
+ const result = await g8.api.fields.setFieldValue({ path: { column_id: 123 }, body: { record_id: 123 } });
407
+ ```
408
+
409
+ ---
410
+
411
+ <a id="op-setfieldvaluesbatch"></a>
412
+
413
+ ### `g8.api.fields.setFieldValuesBatch(input)`
414
+
415
+ **Set Field Values Batch**
416
+
417
+ - HTTP: `PATCH /api/v1/fields/values/batch`
418
+ - operationId: `set_field_values_batch_fields_values_batch_patch` (also callable as `g8.api.call("set_field_values_batch_fields_values_batch_patch", input)`)
419
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
420
+ - API-key scope: `fields:write`
421
+
422
+ Write custom column values to one OR many rows in a single call.
423
+
424
+ The batch counterpart of ``PATCH /fields/{column_id}/values``. Each row
425
+ carries its own ``record_id`` and a list of ``{column_id, value}`` pairs;
426
+ every row shares the top-level ``entity``. A single-row update is just a
427
+ ``rows`` list of length one.
428
+
429
+ Partial success: each row is applied inside its own SAVEPOINT, so a bad row
430
+ (missing record, unknown column) is reported ``ok: false`` in ``results[]``
431
+ while the remaining rows still commit. Pass ``value=null`` (or omit it) on a
432
+ pair to clear that column for the row.
433
+
434
+ Limits: 1-500 rows per call; a ``record_id`` may appear only once per call
435
+ (fold that record's writes into one row) - duplicates 400.
436
+
437
+ Efficiency: all referenced ``column_id``s are resolved in one query and all
438
+ ``record_id``s are existence-checked in one query, then each row is written
439
+ with a single multi-column upsert (N+2 statements, not N*M).
440
+
441
+ **Input**
442
+
443
+ | Field | Type | Required | Description |
444
+ |---|---|---|---|
445
+ | `body` | `SetFieldValuesBatchRequest` | yes | Request body; fields below. |
446
+
447
+ Body fields (`SetFieldValuesBatchRequest`):
448
+
449
+ | Field | Type | Required | Description |
450
+ |---|---|---|---|
451
+ | `body.rows` | `Array<RowFieldValues>` | yes | Rows to update (1-500). Each carries its own record_id + fields[]. |
452
+ | `body.entity` | `string` | no | Target entity, SHARED across every row: 'contacts' or 'companies'. default `"contacts"` |
453
+ | `body.strict` | `boolean` | no | 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. default `false` |
454
+
455
+ **Returns** `ApiResponse_SetFieldValuesBatchResponse_`: the envelope `{ data: SetFieldValuesBatchResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
456
+
457
+ Other envelope fields: `pagination` (PaginationMeta).
458
+
459
+ `SetFieldValuesBatchResponse` fields:
460
+
461
+ | Field | Type | Required | Description |
462
+ |---|---|---|---|
463
+ | `entity` | `string` | yes | |
464
+ | `results` | `Array<SetFieldValuesRowResult>` | yes | |
465
+ | `total_rows_requested` | `integer` | yes | |
466
+ | `total_rows_updated` | `integer` | yes | |
467
+ | `total_values_written` | `integer` | yes | |
468
+ | `all_failed` | `boolean` | no | True when rows were requested and NONE were written. default `false` |
469
+ | `total_rows_failed` | `integer` | no | Rows that could not be written (see results[].error). default `0` |
470
+
471
+ **Example**
472
+
473
+ ```ts
474
+ const result = await g8.api.fields.setFieldValuesBatch({ body: { rows: [{ record_id: 123 }] } });
475
+ ```
476
+
477
+ ---
478
+
479
+ ## Referenced types
480
+
481
+ Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
482
+
483
+ <a id="type-batchfielditem"></a>
484
+
485
+ ### `BatchFieldItem`
486
+
487
+ One column in a batch-create request. `title`, `data_type` and the optional `enrichment` block are per-column; `list_id` and `entity` are shared at the parent `CreateFieldsBatchRequest` level (a batch targets one entity and, when enrichment is used, one list).
488
+
489
+ | Field | Type | Required | Description |
490
+ |---|---|---|---|
491
+ | `title` | `string` | yes | Column title, e.g. 'Job Level' |
492
+ | `data_type` | `string` | no | Column data type. Currently only 'text' is supported. default `"text"` |
493
+ | `enrichment` | `CreateFieldEnrichmentInput \| null` | no | 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. |
494
+
495
+ <a id="type-batchfieldresult"></a>
496
+
497
+ ### `BatchFieldResult`
498
+
499
+ Per-column outcome inside a batch response.
500
+
501
+ | Field | Type | Required | Description |
502
+ |---|---|---|---|
503
+ | `title` | `string` | yes | |
504
+ | `enrichment` | `CreateFieldEnrichmentResponse \| null` | no | |
505
+ | `error` | `string \| null` | no | Set when the column was created but its companion enrichment config failed. |
506
+ | `id` | `integer \| null` | no | |
507
+ | `is_global` | `boolean` | no | 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. default `false` |
508
+ | `list_id` | `integer \| null` | no | The list this column is scoped to, or null when it is org-global. |
509
+ | `name` | `string \| null` | no | |
510
+ | `ok` | `boolean` | no | default `true` |
511
+
512
+ <a id="type-createfieldenrichmentinput"></a>
513
+
514
+ ### `CreateFieldEnrichmentInput`
515
+
516
+ Optional enrichment-pipeline block attached at column-create time. When supplied, `POST /fields` creates a companion `enrichment_configs` row in the same request so the new column is immediately runnable via `POST /enrichment/waterfall/enrich`. Without this block the column exists but has no enrichment plan — calling /waterfall/enrich on it returns 422 (`waterfall_config_missing`). Currently only `type='waterfall'` is supported; AI / formula enrichment will follow once the rest of the agent surface lands.
517
+
518
+ | Field | Type | Required | Description |
519
+ |---|---|---|---|
520
+ | `email_verification` | `EmailVerificationInput \| null` | no | Optional post-enrichment email verification config. |
521
+ | `field_to_enrich` | `string \| null` | no | Target field identifier. Defaults to the new column's slug. |
522
+ | `name` | `string \| null` | no | Pipeline name. Defaults to `<column title> Enrichment` if omitted. |
523
+ | `providers` | `Array<string> \| null` | no | 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`. |
524
+ | `skip_existing_values` | `boolean` | no | If true, skip rows where the target field is already populated. default `true` |
525
+ | `steps` | `Array<WaterfallStepInput> \| null` | no | Full caller-supplied step list. Persisted verbatim. Mutually exclusive with `providers`. |
526
+ | `target_field` | `string \| null` | no | 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`) —… |
527
+ | `type` | `string` | no | Pipeline kind. Only 'waterfall' is supported today. default `"waterfall"` |
528
+
529
+ <a id="type-createfieldenrichmentresponse"></a>
530
+
531
+ ### `CreateFieldEnrichmentResponse`
532
+
533
+ Echo of the companion enrichment config created by `enrichment` block.
534
+
535
+ | Field | Type | Required | Description |
536
+ |---|---|---|---|
537
+ | `column_id` | `string` | yes | column_id slug to pass to /enrichment/waterfall/enrich |
538
+ | `config_id` | `string` | yes | |
539
+ | `name` | `string` | yes | |
540
+ | `type` | `string` | yes | |
541
+ | `email_verification` | `Record<string, unknown> \| null` | no | |
542
+ | `providers` | `Array<string>` | no | |
543
+
544
+ <a id="type-rowfieldvalues"></a>
545
+
546
+ ### `RowFieldValues`
547
+
548
+ One row (contact or company) plus the columns to set on it.
549
+
550
+ | Field | Type | Required | Description |
551
+ |---|---|---|---|
552
+ | `record_id` | `integer` | yes | Contact ID (entity='contacts') or company ID (entity='companies'). |
553
+ | `fields` | `Array<FieldValueItem>` | no | Column/value pairs to write on this row. Empty = no-op (counts as ok with 0 writes). max items 500 |
554
+
555
+ <a id="type-setfieldvaluesrowresult"></a>
556
+
557
+ ### `SetFieldValuesRowResult`
558
+
559
+ Per-row outcome inside a batch value-write response.
560
+
561
+ | Field | Type | Required | Description |
562
+ |---|---|---|---|
563
+ | `record_id` | `integer` | yes | |
564
+ | `error` | `string \| null` | no | Set when this row failed (record not found, unknown column, etc.). Other rows still commit. |
565
+ | `ok` | `boolean` | no | default `true` |
566
+ | `updated_columns` | `Array<integer>` | no | |