@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,1765 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.copilot`: Copilot
4
+
5
+ 39 operations (17 read, 18 write, 1 destructive, 3 billable).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.copilot.*` 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: [copilot.d.ts](copilot.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`appendCopilotMemoryDocument`](#op-appendcopilotmemorydocument) | `POST /api/v1/copilot/memory/documents/append` | write | `knowledge:write` | Append Copilot Memory Document |
26
+ | [`browseCopilotPersonalWikiDrive`](#op-browsecopilotpersonalwikidrive) | `GET /api/v1/copilot/personal-wiki/drive` | read | `knowledge:read` | Browse Copilot Personal Wiki Drive |
27
+ | [`captureCopilotSoul`](#op-capturecopilotsoul) | `POST /api/v1/copilot/memory/soul-capture` | write | `knowledge:write` | Capture Copilot Soul |
28
+ | [`chatWithCopilot`](#op-chatwithcopilot) | `POST /api/v1/copilot/chat` | billable | `knowledge:run` | Chat With Copilot |
29
+ | [`chooseCopilotContactMatch`](#op-choosecopilotcontactmatch) | `POST /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}/matches` | write | `knowledge:write` | Choose Copilot Contact Match |
30
+ | [`confirmCopilotPersonalWikiFact`](#op-confirmcopilotpersonalwikifact) | `POST /api/v1/copilot/personal-wiki/confirm` | write | `knowledge:write` | Confirm Copilot Personal Wiki Fact |
31
+ | [`correctCopilotContactIdentity`](#op-correctcopilotcontactidentity) | `POST /api/v1/copilot/personal-wiki/relationships/identity` | write | `knowledge:write` | Correct Copilot Contact Identity |
32
+ | [`correctCopilotPersonalWikiFact`](#op-correctcopilotpersonalwikifact) | `POST /api/v1/copilot/personal-wiki/correct` | write | `knowledge:write` | Correct Copilot Personal Wiki Fact |
33
+ | [`createCopilotMemory`](#op-createcopilotmemory) | `POST /api/v1/copilot/memory` | write | `knowledge:write` | Create Copilot Memory |
34
+ | [`deleteCopilotMemory`](#op-deletecopilotmemory) | `DELETE /api/v1/copilot/memory/{memory_id}` | destructive | `knowledge:delete` | Delete Copilot Memory |
35
+ | [`editCopilotPersonalWikiItem`](#op-editcopilotpersonalwikiitem) | `PUT /api/v1/copilot/personal-wiki/items/{item_id}` | write | `knowledge:write` | Edit Copilot Personal Wiki Item |
36
+ | [`forgetCopilotPersonalWikiFact`](#op-forgetcopilotpersonalwikifact) | `POST /api/v1/copilot/personal-wiki/forget` | write | `knowledge:write` | Forget Copilot Personal Wiki Fact |
37
+ | [`getCopilotContactSharing`](#op-getcopilotcontactsharing) | `GET /api/v1/copilot/personal-wiki/contact-sharing` | read | `knowledge:read` | Get Copilot Contact Sharing |
38
+ | [`getCopilotLinkedinConnections`](#op-getcopilotlinkedinconnections) | `GET /api/v1/copilot/personal-wiki/linkedin-connections` | read | `knowledge:read` | Get Copilot Linkedin Connections |
39
+ | [`getCopilotMemoryContext`](#op-getcopilotmemorycontext) | `GET /api/v1/copilot/memory/context` | read | `knowledge:read` | Get Copilot Memory Context |
40
+ | [`getCopilotMemoryDocuments`](#op-getcopilotmemorydocuments) | `GET /api/v1/copilot/memory/documents` | read | `knowledge:read` | Get Copilot Memory Documents |
41
+ | [`getCopilotPersonalWiki`](#op-getcopilotpersonalwiki) | `GET /api/v1/copilot/personal-wiki` | read | `knowledge:read` | Get Copilot Personal Wiki |
42
+ | [`getCopilotPersonalWikiDocument`](#op-getcopilotpersonalwikidocument) | `GET /api/v1/copilot/personal-wiki/documents/{section}` | read | `knowledge:read` | Get Copilot Personal Wiki Document |
43
+ | [`getCopilotPersonalWikiRelationship`](#op-getcopilotpersonalwikirelationship) | `GET /api/v1/copilot/personal-wiki/relationships/{contact_id}` | read | `knowledge:read` | Get Copilot Personal Wiki Relationship |
44
+ | [`getCopilotPersonalWikiSources`](#op-getcopilotpersonalwikisources) | `GET /api/v1/copilot/personal-wiki/sources` | read | `knowledge:read` | Get Copilot Personal Wiki Sources |
45
+ | [`listCopilotContactContributions`](#op-listcopilotcontactcontributions) | `GET /api/v1/copilot/personal-wiki/contact-sharing/contributions` | read | `knowledge:read` | List Copilot Contact Contributions |
46
+ | [`listCopilotContactMatches`](#op-listcopilotcontactmatches) | `GET /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}/matches` | read | `knowledge:read` | List Copilot Contact Matches |
47
+ | [`listCopilotMemories`](#op-listcopilotmemories) | `GET /api/v1/copilot/memory` | read | `knowledge:read` | List Copilot Memories |
48
+ | [`listCopilotPersonalWikiRelationships`](#op-listcopilotpersonalwikirelationships) | `GET /api/v1/copilot/personal-wiki/relationships` | read | `knowledge:read` | List Copilot Personal Wiki Relationships |
49
+ | [`listCopilotTools`](#op-listcopilottools) | `GET /api/v1/copilot/tools` | read | `knowledge:read` | List Copilot Tools |
50
+ | [`previewCopilotPersonalWikiDriveSelection`](#op-previewcopilotpersonalwikidriveselection) | `POST /api/v1/copilot/personal-wiki/drive-selection/preview` | read | `knowledge:read` | Preview Copilot Personal Wiki Drive Selection |
51
+ | [`promoteCopilotMemory`](#op-promotecopilotmemory) | `POST /api/v1/copilot/memory/promote` | billable | `knowledge:run` | Promote Copilot Memory |
52
+ | [`resolveCopilotContactContribution`](#op-resolvecopilotcontactcontribution) | `POST /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}/resolve` | write | `knowledge:write` | Resolve Copilot Contact Contribution |
53
+ | [`runCopilotLandingPageAction`](#op-runcopilotlandingpageaction) | `POST /api/v1/copilot/landing-page-action` | billable | `knowledge:run` | Run Copilot Landing Page Action |
54
+ | [`saveCopilotPersonalWikiDriveSelection`](#op-savecopilotpersonalwikidriveselection) | `PUT /api/v1/copilot/personal-wiki/drive-selection` | write | `knowledge:write` | Save Copilot Personal Wiki Drive Selection |
55
+ | [`searchCopilotContactIdentities`](#op-searchcopilotcontactidentities) | `GET /api/v1/copilot/personal-wiki/contact-identities` | read | `knowledge:read` | Search Copilot Contact Identities |
56
+ | [`searchCopilotMentions`](#op-searchcopilotmentions) | `POST /api/v1/copilot/mention-search` | read | `knowledge:read` | Search Copilot Mentions |
57
+ | [`updateCopilotContactContribution`](#op-updatecopilotcontactcontribution) | `PUT /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}` | write | `knowledge:write` | Update Copilot Contact Contribution |
58
+ | [`updateCopilotContactPeopleChoice`](#op-updatecopilotcontactpeoplechoice) | `PUT /api/v1/copilot/personal-wiki/contact-sharing/people/choice` | write | `knowledge:write` | Update Copilot Contact People Choice |
59
+ | [`updateCopilotContactSharing`](#op-updatecopilotcontactsharing) | `PUT /api/v1/copilot/personal-wiki/contact-sharing/{mailbox_id}` | write | `knowledge:write` | Update Copilot Contact Sharing |
60
+ | [`updateCopilotLinkedinConnections`](#op-updatecopilotlinkedinconnections) | `PUT /api/v1/copilot/personal-wiki/linkedin-connections` | write | `knowledge:write` | Update Copilot Linkedin Connections |
61
+ | [`updateCopilotPersonalWiki`](#op-updatecopilotpersonalwiki) | `PUT /api/v1/copilot/personal-wiki` | write | `knowledge:write` | Update Copilot Personal Wiki |
62
+ | [`updateCopilotPersonalWikiSources`](#op-updatecopilotpersonalwikisources) | `PUT /api/v1/copilot/personal-wiki/sources` | write | `knowledge:write` | Update Copilot Personal Wiki Sources |
63
+ | [`upsertCopilotMemoryDocument`](#op-upsertcopilotmemorydocument) | `PUT /api/v1/copilot/memory/documents` | write | `knowledge:write` | Upsert Copilot Memory Document |
64
+
65
+ ---
66
+
67
+ <a id="op-appendcopilotmemorydocument"></a>
68
+
69
+ ### `g8.api.copilot.appendCopilotMemoryDocument(input)`
70
+
71
+ **Append Copilot Memory Document**
72
+
73
+ - HTTP: `POST /api/v1/copilot/memory/documents/append`
74
+ - operationId: `append_copilot_memory_document_copilot_memory_documents_append_post` (also callable as `g8.api.call("append_copilot_memory_document_copilot_memory_documents_append_post", input)`)
75
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
76
+ - API-key scope: `knowledge:write`
77
+
78
+ Add to a memory document without replacing it.
79
+
80
+ Defaults to the `daily` journal, which is where observations belong: the
81
+ durable documents are meant to be curated from it by
82
+ `POST /copilot/memory/promote`, not written to directly on every event.
83
+
84
+ Takes a JSON BODY. The app takes these as query parameters, which would put
85
+ the text of a personal note into the URL.
86
+
87
+ **Input**
88
+
89
+ | Field | Type | Required | Description |
90
+ |---|---|---|---|
91
+ | `body` | `MemoryDocumentAppendRequest` | yes | Request body; fields below. |
92
+
93
+ Body fields (`MemoryDocumentAppendRequest`):
94
+
95
+ | Field | Type | Required | Description |
96
+ |---|---|---|---|
97
+ | `body.content` | `string` | yes | The text to append. min length 1 |
98
+ | `body.subject_id` | `string` | yes | Which one. |
99
+ | `body.subject_type` | `string` | yes | What the document is about: organization, user, campaign, company or contact. |
100
+ | `body.file_kind` | `string` | no | Which document to append to. `daily` is the rolling journal and is the default; `memory` and `soul` are the durable ones and are normally written through `PUT /copilot/memory/documents` instead. default `"daily"` |
101
+
102
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
103
+
104
+ Other envelope fields: `pagination` (PaginationMeta).
105
+
106
+ **Example**
107
+
108
+ ```ts
109
+ const result = await g8.api.copilot.appendCopilotMemoryDocument({
110
+ body: { content: "example", subject_id: "id", subject_type: "Example" },
111
+ });
112
+ ```
113
+
114
+ ---
115
+
116
+ <a id="op-browsecopilotpersonalwikidrive"></a>
117
+
118
+ ### `g8.api.copilot.browseCopilotPersonalWikiDrive(input)`
119
+
120
+ **Browse Copilot Personal Wiki Drive**
121
+
122
+ - HTTP: `GET /api/v1/copilot/personal-wiki/drive`
123
+ - operationId: `browse_copilot_personal_wiki_drive_copilot_personal_wiki_drive_get` (also callable as `g8.api.call("browse_copilot_personal_wiki_drive_copilot_personal_wiki_drive_get", input)`)
124
+ - Tier: `read`: reads data; safe to call and to retry
125
+ - API-key scope: `knowledge:read`
126
+
127
+ Browse the Google Drive of one of your connected mailboxes, to pick what
128
+ the Copilot may read.
129
+
130
+ Reads Drive through the mailbox's own grant. A 403 means the grant does
131
+ not include Drive; a 409 means the Google account behind the mailbox has
132
+ changed since it was connected.
133
+
134
+ **Input**
135
+
136
+ | Field | Type | Required | Description |
137
+ |---|---|---|---|
138
+ | `query.mailbox_id` | `integer` | yes | Integer `mailboxes.id` of the connected Google account. |
139
+ | `query.parent_id` | `string` | no | Folder to list. `root` is the top of My Drive. default `"root"` |
140
+ | `query.page_token` | `string \| null` | no | From the previous page. |
141
+ | `query.search` | `string` | no | Search by name instead of listing a folder. default `""` |
142
+
143
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
144
+
145
+ Other envelope fields: `pagination` (PaginationMeta).
146
+
147
+ **Example**
148
+
149
+ ```ts
150
+ const result = await g8.api.copilot.browseCopilotPersonalWikiDrive({ query: { mailbox_id: 1 } });
151
+ ```
152
+
153
+ ---
154
+
155
+ <a id="op-capturecopilotsoul"></a>
156
+
157
+ ### `g8.api.copilot.captureCopilotSoul(input)`
158
+
159
+ **Capture Copilot Soul**
160
+
161
+ - HTTP: `POST /api/v1/copilot/memory/soul-capture`
162
+ - operationId: `capture_copilot_soul_copilot_memory_soul_capture_post` (also callable as `g8.api.call("capture_copilot_soul_copilot_memory_soul_capture_post", input)`)
163
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
164
+ - API-key scope: `knowledge:write`
165
+
166
+ Set the organisation's and the user's foundational documents in one call.
167
+
168
+ The onboarding shortcut: it is how a new workspace tells the assistant who
169
+ it works for before there is any history to learn from. Every field is
170
+ optional and sending one does not clear the others.
171
+
172
+ **Input**
173
+
174
+ | Field | Type | Required | Description |
175
+ |---|---|---|---|
176
+ | `body` | `SoulCaptureRequest` | yes | Request body; fields below. |
177
+
178
+ Body fields (`SoulCaptureRequest`):
179
+
180
+ | Field | Type | Required | Description |
181
+ |---|---|---|---|
182
+ | `body.org_memory` | `string \| null` | no | Durable org-level facts. |
183
+ | `body.org_soul` | `string \| null` | no | Who the organisation is. |
184
+ | `body.user_memory` | `string \| null` | no | Durable facts about this person. |
185
+
186
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
187
+
188
+ Other envelope fields: `pagination` (PaginationMeta).
189
+
190
+ **Example**
191
+
192
+ ```ts
193
+ const result = await g8.api.copilot.captureCopilotSoul({ body: {} });
194
+ ```
195
+
196
+ ---
197
+
198
+ <a id="op-chatwithcopilot"></a>
199
+
200
+ ### `g8.api.copilot.chatWithCopilot(input)`
201
+
202
+ **Chat With Copilot**
203
+
204
+ - HTTP: `POST /api/v1/copilot/chat`
205
+ - operationId: `chat_with_copilot_copilot_chat_post` (also callable as `g8.api.call("chat_with_copilot_copilot_chat_post", input)`)
206
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
207
+ - API-key scope: `knowledge:run`
208
+
209
+ Ask the Studio copilot. SPENDS CREDIT - a model runs, and may call tools.
210
+
211
+ Returns `response` (the full answer) and `events` (every text, tool and
212
+ source event, in order). `web_search`, `thinking` and `research` each add
213
+ work and cost; `research` the most. Tools that need a person's approval
214
+ are proposed in `events`, not executed. 402 when the org is out of credit.
215
+
216
+ **Input**
217
+
218
+ | Field | Type | Required | Description |
219
+ |---|---|---|---|
220
+ | `body` | `CopilotChatRequest` | yes | Request body; fields below. |
221
+
222
+ Body fields (`CopilotChatRequest`):
223
+
224
+ | Field | Type | Required | Description |
225
+ |---|---|---|---|
226
+ | `body.message` | `string` | yes | min length 1 |
227
+ | `body.canvas_context` | `CopilotCanvasContext \| null` | no | |
228
+ | `body.conversation_history` | `Array<CopilotChatMessage> \| null` | no | |
229
+ | `body.mentions` | `Array<Record<string, unknown>> \| null` | no | Results from `POST /copilot/mention-search`. |
230
+ | `body.research` | `boolean` | no | Multi-step deep research. The most expensive option. default `false` |
231
+ | `body.session_id` | `string \| null` | no | |
232
+ | `body.thinking` | `boolean` | no | Extended thinking. default `false` |
233
+ | `body.web_search` | `boolean` | no | Search the web before answering. default `false` |
234
+
235
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
236
+
237
+ Other envelope fields: `pagination` (PaginationMeta).
238
+
239
+ **Example**
240
+
241
+ ```ts
242
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
243
+ const result = await g8.api.copilot.chatWithCopilot({ body: { message: "example" } });
244
+ ```
245
+
246
+ ---
247
+
248
+ <a id="op-choosecopilotcontactmatch"></a>
249
+
250
+ ### `g8.api.copilot.chooseCopilotContactMatch(input)`
251
+
252
+ **Choose Copilot Contact Match**
253
+
254
+ - HTTP: `POST /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}/matches`
255
+ - operationId: `choose_copilot_contact_match_copilot_personal_wiki_contact_sharing_contributions__contribution_id__matches_post` (also callable as `g8.api.call("choose_copilot_contact_match_copilot_personal_wiki_contact_sharing_contributions__contribution_id__matches_post", input)`)
256
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
257
+ - API-key scope: `knowledge:write`
258
+
259
+ Say WHICH person a contribution is about.
260
+
261
+ Binds it to one CRM contact, so the subsequent per-field decisions land on
262
+ the right record. Guarded by both revision tokens for the same reason the
263
+ resolve is.
264
+
265
+ **Input**
266
+
267
+ | Field | Type | Required | Description |
268
+ |---|---|---|---|
269
+ | `path.contribution_id` | `string` | yes | Contribution id (UUID). |
270
+ | `body` | `PersonalContactMatchRequest` | yes | Request body; fields below. |
271
+
272
+ Body fields (`PersonalContactMatchRequest`):
273
+
274
+ | Field | Type | Required | Description |
275
+ |---|---|---|---|
276
+ | `body.contact_id` | `integer` | yes | The CRM contact this contribution is actually about. max 9223372036854776000, > 0 |
277
+ | `body.expected_canonical_revision` | `string` | yes | min length 64, max length 64 |
278
+ | `body.expected_revision` | `integer` | yes | min 1 |
279
+
280
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
281
+
282
+ Other envelope fields: `pagination` (PaginationMeta).
283
+
284
+ **Example**
285
+
286
+ ```ts
287
+ const result = await g8.api.copilot.chooseCopilotContactMatch({
288
+ path: { contribution_id: "id" },
289
+ body: {
290
+ contact_id: 1,
291
+ expected_canonical_revision: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
292
+ expected_revision: 1,
293
+ },
294
+ });
295
+ ```
296
+
297
+ ---
298
+
299
+ <a id="op-confirmcopilotpersonalwikifact"></a>
300
+
301
+ ### `g8.api.copilot.confirmCopilotPersonalWikiFact(input)`
302
+
303
+ **Confirm Copilot Personal Wiki Fact**
304
+
305
+ - HTTP: `POST /api/v1/copilot/personal-wiki/confirm`
306
+ - operationId: `confirm_copilot_personal_wiki_fact_copilot_personal_wiki_confirm_post` (also callable as `g8.api.call("confirm_copilot_personal_wiki_fact_copilot_personal_wiki_confirm_post", input)`)
307
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
308
+ - API-key scope: `knowledge:write`
309
+
310
+ Tell the assistant an inferred fact is RIGHT.
311
+
312
+ Worth doing rather than ignoring: a confirmed fact stops being re-derived
313
+ and re-questioned, and it outranks a later contradicting inference.
314
+
315
+ **Input**
316
+
317
+ | Field | Type | Required | Description |
318
+ |---|---|---|---|
319
+ | `body` | `PersonalWikiFactActionRequest` | yes | Request body; fields below. |
320
+
321
+ Body fields (`PersonalWikiFactActionRequest`):
322
+
323
+ | Field | Type | Required | Description |
324
+ |---|---|---|---|
325
+ | `body.fact_id` | `string` | yes | The fact. min length 1, max length 255 |
326
+ | `body.reason` | `string \| null` | no | Why. Optional, and worth sending on a forget: it is the only record of why something was removed from what the Copilot knows. max length 2000 |
327
+
328
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
329
+
330
+ Other envelope fields: `pagination` (PaginationMeta).
331
+
332
+ **Example**
333
+
334
+ ```ts
335
+ const result = await g8.api.copilot.confirmCopilotPersonalWikiFact({ body: { fact_id: "id" } });
336
+ ```
337
+
338
+ ---
339
+
340
+ <a id="op-correctcopilotcontactidentity"></a>
341
+
342
+ ### `g8.api.copilot.correctCopilotContactIdentity(input)`
343
+
344
+ **Correct Copilot Contact Identity**
345
+
346
+ - HTTP: `POST /api/v1/copilot/personal-wiki/relationships/identity`
347
+ - operationId: `correct_copilot_contact_identity_copilot_personal_wiki_relationships_identity_post` (also callable as `g8.api.call("correct_copilot_contact_identity_copilot_personal_wiki_relationships_identity_post", input)`)
348
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
349
+ - API-key scope: `knowledge:write`
350
+
351
+ Re-attribute facts to the right person - or to nobody.
352
+
353
+ Sending a null `contact_id` DETACHES the facts rather than being ignored:
354
+ it is how you say "this is not about anyone in the CRM". Up to a thousand
355
+ facts move at once, because a misattribution is usually systematic rather
356
+ than a single fact.
357
+
358
+ Declared BEFORE `/personal-wiki/relationships/{contact_id}` so the literal
359
+ `identity` segment cannot be captured as a contact id.
360
+
361
+ **Input**
362
+
363
+ | Field | Type | Required | Description |
364
+ |---|---|---|---|
365
+ | `body` | `PersonalContactIdentityRequest` | yes | Request body; fields below. |
366
+
367
+ Body fields (`PersonalContactIdentityRequest`):
368
+
369
+ | Field | Type | Required | Description |
370
+ |---|---|---|---|
371
+ | `body.expected_version` | `integer` | yes | Optimistic-concurrency token for the relationship record. min 0 |
372
+ | `body.fact_ids` | `Array<string>` | yes | The facts being re-attributed, all to the same person. min items 1, max items 1000 |
373
+ | `body.contact_id` | `integer \| null` | no | Who they are really about. NULL DETACHES them from whoever they are attributed to now, rather than being ignored - it is how you say 'this is not about anyone in the CRM'. max 9223372036854776000, > 0 |
374
+
375
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
376
+
377
+ Other envelope fields: `pagination` (PaginationMeta).
378
+
379
+ **Example**
380
+
381
+ ```ts
382
+ const result = await g8.api.copilot.correctCopilotContactIdentity({ body: { expected_version: 0, fact_ids: ["id"] } });
383
+ ```
384
+
385
+ ---
386
+
387
+ <a id="op-correctcopilotpersonalwikifact"></a>
388
+
389
+ ### `g8.api.copilot.correctCopilotPersonalWikiFact(input)`
390
+
391
+ **Correct Copilot Personal Wiki Fact**
392
+
393
+ - HTTP: `POST /api/v1/copilot/personal-wiki/correct`
394
+ - operationId: `correct_copilot_personal_wiki_fact_copilot_personal_wiki_correct_post` (also callable as `g8.api.call("correct_copilot_personal_wiki_fact_copilot_personal_wiki_correct_post", input)`)
395
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
396
+ - API-key scope: `knowledge:write`
397
+
398
+ Replace what the assistant believes with what is actually true.
399
+
400
+ Different from `forget`: correcting keeps the fact and its provenance and
401
+ changes its text, so the assistant knows it was wrong about THIS rather
402
+ than knowing nothing.
403
+
404
+ **Input**
405
+
406
+ | Field | Type | Required | Description |
407
+ |---|---|---|---|
408
+ | `body` | `PersonalWikiFactCorrectionRequest` | yes | Request body; fields below. |
409
+
410
+ Body fields (`PersonalWikiFactCorrectionRequest`):
411
+
412
+ | Field | Type | Required | Description |
413
+ |---|---|---|---|
414
+ | `body.fact_id` | `string` | yes | min length 1, max length 255 |
415
+ | `body.text` | `string` | yes | What is actually true. Replaces the fact's text. min length 1, max length 10000 |
416
+ | `body.action_state` | `"open" \| "in_progress" \| "blocked" \| "completed" \| "cancelled" \| "informational" \| null` | no | For a fact the Copilot is tracking as a TO-DO rather than as a statement, move it to this state at the same time. Omit it for an ordinary correction. |
417
+ | `body.reason` | `string \| null` | no | max length 2000 |
418
+
419
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
420
+
421
+ Other envelope fields: `pagination` (PaginationMeta).
422
+
423
+ **Example**
424
+
425
+ ```ts
426
+ const result = await g8.api.copilot.correctCopilotPersonalWikiFact({ body: { fact_id: "id", text: "example" } });
427
+ ```
428
+
429
+ ---
430
+
431
+ <a id="op-createcopilotmemory"></a>
432
+
433
+ ### `g8.api.copilot.createCopilotMemory(input)`
434
+
435
+ **Create Copilot Memory**
436
+
437
+ - HTTP: `POST /api/v1/copilot/memory`
438
+ - operationId: `create_copilot_memory_copilot_memory_post` (also callable as `g8.api.call("create_copilot_memory_copilot_memory_post", input)`)
439
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
440
+ - API-key scope: `knowledge:write`
441
+
442
+ Tell the Copilot something to remember.
443
+
444
+ Takes a JSON BODY. The app takes `content` as a query parameter, which puts
445
+ the text of a personal memory into the URL and therefore into access logs.
446
+
447
+ **Input**
448
+
449
+ | Field | Type | Required | Description |
450
+ |---|---|---|---|
451
+ | `body` | `MemoryCreateRequest` | yes | Request body; fields below. |
452
+
453
+ Body fields (`MemoryCreateRequest`):
454
+
455
+ | Field | Type | Required | Description |
456
+ |---|---|---|---|
457
+ | `body.content` | `string` | yes | What to remember, in the caller's own words. min length 1 |
458
+ | `body.scope` | `string` | no | Who the memory belongs to. `user` - only this person's Copilot recalls it. Left an open string rather than a Literal because the handler treats an unknown scope as a label rather than an error, so closing it here would refuse a call the app accepts. default `"user"` |
459
+
460
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
461
+
462
+ Other envelope fields: `pagination` (PaginationMeta).
463
+
464
+ **Example**
465
+
466
+ ```ts
467
+ const result = await g8.api.copilot.createCopilotMemory({ body: { content: "example" } });
468
+ ```
469
+
470
+ ---
471
+
472
+ <a id="op-deletecopilotmemory"></a>
473
+
474
+ ### `g8.api.copilot.deleteCopilotMemory(input)`
475
+
476
+ **Delete Copilot Memory**
477
+
478
+ - HTTP: `DELETE /api/v1/copilot/memory/{memory_id}`
479
+ - operationId: `delete_copilot_memory_copilot_memory__memory_id__delete` (also callable as `g8.api.call("delete_copilot_memory_copilot_memory__memory_id__delete", input)`)
480
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
481
+ - API-key scope: `knowledge:delete`
482
+
483
+ Forget one remembered fact. Not reversible.
484
+
485
+ **Input**
486
+
487
+ | Field | Type | Required | Description |
488
+ |---|---|---|---|
489
+ | `path.memory_id` | `string` | yes | Memory id. |
490
+
491
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
492
+
493
+ Other envelope fields: `pagination` (PaginationMeta).
494
+
495
+ **Example**
496
+
497
+ ```ts
498
+ // destructive: deletes or archives data; confirm with a human before calling.
499
+ const result = await g8.api.copilot.deleteCopilotMemory({ path: { memory_id: "id" } });
500
+ ```
501
+
502
+ ---
503
+
504
+ <a id="op-editcopilotpersonalwikiitem"></a>
505
+
506
+ ### `g8.api.copilot.editCopilotPersonalWikiItem(input)`
507
+
508
+ **Edit Copilot Personal Wiki Item**
509
+
510
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/items/{item_id}`
511
+ - operationId: `edit_copilot_personal_wiki_item_copilot_personal_wiki_items__item_id__put` (also callable as `g8.api.call("edit_copilot_personal_wiki_item_copilot_personal_wiki_items__item_id__put", input)`)
512
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
513
+ - API-key scope: `knowledge:write`
514
+
515
+ Edit one structured item in the wiki.
516
+
517
+ `expected_revision` is REQUIRED and there is no unconditional form. The
518
+ Copilot writes this document continuously, so an unguarded write is not a
519
+ race between two people - it is a person silently discarding whatever the
520
+ assistant learned between their read and their write.
521
+
522
+ **Input**
523
+
524
+ | Field | Type | Required | Description |
525
+ |---|---|---|---|
526
+ | `path.item_id` | `string` | yes | Wiki item id. |
527
+ | `body` | `PersonalWikiItemEditRequest` | yes | Request body; fields below. |
528
+
529
+ Body fields (`PersonalWikiItemEditRequest`):
530
+
531
+ | Field | Type | Required | Description |
532
+ |---|---|---|---|
533
+ | `body.document_id` | `string` | yes | min length 1, max length 100 |
534
+ | `body.expected_revision` | `string` | yes | REQUIRED optimistic-concurrency token - a 64-character digest of the document you read. There is no unconditional write here, on purpose: the wiki is edited by the Copilot as well as by people, so a blind write would silently discard something it had just learned. min length 64, max length 64 |
535
+ | `body.values` | `Record<string, unknown>` | yes | Field-by-field replacement for this item. Open-shaped because the item schema is per-section and defined by the wiki template. |
536
+
537
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
538
+
539
+ Other envelope fields: `pagination` (PaginationMeta).
540
+
541
+ **Example**
542
+
543
+ ```ts
544
+ const result = await g8.api.copilot.editCopilotPersonalWikiItem({
545
+ path: { item_id: "id" },
546
+ body: {
547
+ document_id: "id",
548
+ expected_revision: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
549
+ values: {},
550
+ },
551
+ });
552
+ ```
553
+
554
+ ---
555
+
556
+ <a id="op-forgetcopilotpersonalwikifact"></a>
557
+
558
+ ### `g8.api.copilot.forgetCopilotPersonalWikiFact(input)`
559
+
560
+ **Forget Copilot Personal Wiki Fact**
561
+
562
+ - HTTP: `POST /api/v1/copilot/personal-wiki/forget`
563
+ - operationId: `forget_copilot_personal_wiki_fact_copilot_personal_wiki_forget_post` (also callable as `g8.api.call("forget_copilot_personal_wiki_fact_copilot_personal_wiki_forget_post", input)`)
564
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
565
+ - API-key scope: `knowledge:write`
566
+
567
+ Remove a fact from what the assistant knows.
568
+
569
+ The per-fact privacy control, and the only one that actually unlearns -
570
+ turning a SOURCE off stops new facts arriving but leaves the old ones.
571
+
572
+ Send `reason`. It is the only record of why something was removed.
573
+
574
+ **Input**
575
+
576
+ | Field | Type | Required | Description |
577
+ |---|---|---|---|
578
+ | `body` | `PersonalWikiFactActionRequest` | yes | Request body; fields below. |
579
+
580
+ Body fields (`PersonalWikiFactActionRequest`):
581
+
582
+ | Field | Type | Required | Description |
583
+ |---|---|---|---|
584
+ | `body.fact_id` | `string` | yes | The fact. min length 1, max length 255 |
585
+ | `body.reason` | `string \| null` | no | Why. Optional, and worth sending on a forget: it is the only record of why something was removed from what the Copilot knows. max length 2000 |
586
+
587
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
588
+
589
+ Other envelope fields: `pagination` (PaginationMeta).
590
+
591
+ **Example**
592
+
593
+ ```ts
594
+ const result = await g8.api.copilot.forgetCopilotPersonalWikiFact({ body: { fact_id: "id" } });
595
+ ```
596
+
597
+ ---
598
+
599
+ <a id="op-getcopilotcontactsharing"></a>
600
+
601
+ ### `g8.api.copilot.getCopilotContactSharing(input?)`
602
+
603
+ **Get Copilot Contact Sharing**
604
+
605
+ - HTTP: `GET /api/v1/copilot/personal-wiki/contact-sharing`
606
+ - operationId: `get_copilot_contact_sharing_copilot_personal_wiki_contact_sharing_get` (also callable as `g8.api.call("get_copilot_contact_sharing_copilot_personal_wiki_contact_sharing_get", input)`)
607
+ - Tier: `read`: reads data; safe to call and to retry
608
+ - API-key scope: `knowledge:read`
609
+
610
+ Which of your mailboxes contribute to the shared CRM, per mailbox.
611
+
612
+ The setting; `/contributions` is the queue it produces.
613
+
614
+ **Input**: none.
615
+
616
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
617
+
618
+ Other envelope fields: `pagination` (PaginationMeta).
619
+
620
+ **Example**
621
+
622
+ ```ts
623
+ const result = await g8.api.copilot.getCopilotContactSharing();
624
+ ```
625
+
626
+ ---
627
+
628
+ <a id="op-getcopilotlinkedinconnections"></a>
629
+
630
+ ### `g8.api.copilot.getCopilotLinkedinConnections(input?)`
631
+
632
+ **Get Copilot Linkedin Connections**
633
+
634
+ - HTTP: `GET /api/v1/copilot/personal-wiki/linkedin-connections`
635
+ - operationId: `get_copilot_linkedin_connections_copilot_personal_wiki_linkedin_connections_get` (also callable as `g8.api.call("get_copilot_linkedin_connections_copilot_personal_wiki_linkedin_connections_get", input)`)
636
+ - Tier: `read`: reads data; safe to call and to retry
637
+ - API-key scope: `knowledge:read`
638
+
639
+ The state of your LinkedIn connections import: settings, last run and
640
+ its `revision` token.
641
+
642
+ **Input**: none.
643
+
644
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
645
+
646
+ Other envelope fields: `pagination` (PaginationMeta).
647
+
648
+ **Example**
649
+
650
+ ```ts
651
+ const result = await g8.api.copilot.getCopilotLinkedinConnections();
652
+ ```
653
+
654
+ ---
655
+
656
+ <a id="op-getcopilotmemorycontext"></a>
657
+
658
+ ### `g8.api.copilot.getCopilotMemoryContext(input?)`
659
+
660
+ **Get Copilot Memory Context**
661
+
662
+ - HTTP: `GET /api/v1/copilot/memory/context`
663
+ - operationId: `get_copilot_memory_context_copilot_memory_context_get` (also callable as `g8.api.call("get_copilot_memory_context_copilot_memory_context_get", input)`)
664
+ - Tier: `read`: reads data; safe to call and to retry
665
+ - API-key scope: `knowledge:read`
666
+
667
+ The memory the Copilot would actually bring to a given conversation.
668
+
669
+ Not the whole store - the ASSEMBLED context for a subject, which is what
670
+ the assistant reasons from. The most useful read here when debugging "why
671
+ did it say that": if a fact is not in this answer, it was not in front of
672
+ the model.
673
+
674
+ With no filters it returns the org and user level context alone.
675
+
676
+ **Input**
677
+
678
+ | Field | Type | Required | Description |
679
+ |---|---|---|---|
680
+ | `query.campaign_id` | `string \| null` | no | Narrow to one campaign. |
681
+ | `query.company_id` | `string \| null` | no | Narrow to one company. |
682
+ | `query.contact_id` | `string \| null` | no | Narrow to one contact. |
683
+
684
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
685
+
686
+ Other envelope fields: `pagination` (PaginationMeta).
687
+
688
+ **Example**
689
+
690
+ ```ts
691
+ const result = await g8.api.copilot.getCopilotMemoryContext();
692
+ ```
693
+
694
+ ---
695
+
696
+ <a id="op-getcopilotmemorydocuments"></a>
697
+
698
+ ### `g8.api.copilot.getCopilotMemoryDocuments(input)`
699
+
700
+ **Get Copilot Memory Documents**
701
+
702
+ - HTTP: `GET /api/v1/copilot/memory/documents`
703
+ - operationId: `get_copilot_memory_documents_copilot_memory_documents_get` (also callable as `g8.api.call("get_copilot_memory_documents_copilot_memory_documents_get", input)`)
704
+ - Tier: `read`: reads data; safe to call and to retry
705
+ - API-key scope: `knowledge:read`
706
+
707
+ The raw memory documents for one subject.
708
+
709
+ `soul` is who they are, `memory` is durable fact, `daily` is the rolling
710
+ journal. `GET /copilot/memory/context` is the assembled view; this is the
711
+ source behind it, and the thing to edit.
712
+
713
+ **Input**
714
+
715
+ | Field | Type | Required | Description |
716
+ |---|---|---|---|
717
+ | `query.subject_type` | `string` | yes | organization \| user \| campaign \| company \| contact. |
718
+ | `query.subject_id` | `string` | yes | Which one. |
719
+ | `query.file_kind` | `string \| null` | no | `soul`, `memory` or `daily`. Omit for all three - they are different documents, not versions of one. |
720
+
721
+ **Returns** `ApiResponse_CopilotMemoryListPayload_`: the envelope `{ data: CopilotMemoryListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
722
+
723
+ Other envelope fields: `pagination` (PaginationMeta).
724
+
725
+ `CopilotMemoryListPayload` fields:
726
+
727
+ | Field | Type | Required | Description |
728
+ |---|---|---|---|
729
+ | `items` | `Array<unknown>` | no | |
730
+
731
+ **Example**
732
+
733
+ ```ts
734
+ const result = await g8.api.copilot.getCopilotMemoryDocuments({ query: { subject_type: "Example", subject_id: "id" } });
735
+ ```
736
+
737
+ ---
738
+
739
+ <a id="op-getcopilotpersonalwiki"></a>
740
+
741
+ ### `g8.api.copilot.getCopilotPersonalWiki(input?)`
742
+
743
+ **Get Copilot Personal Wiki**
744
+
745
+ - HTTP: `GET /api/v1/copilot/personal-wiki`
746
+ - operationId: `get_copilot_personal_wiki_copilot_personal_wiki_get` (also callable as `g8.api.call("get_copilot_personal_wiki_copilot_personal_wiki_get", input)`)
747
+ - Tier: `read`: reads data; safe to call and to retry
748
+ - API-key scope: `knowledge:read`
749
+
750
+ Everything the assistant believes about the person behind this key.
751
+
752
+ Assembled from their email, calendar, documents and Work activity according
753
+ to `GET /copilot/personal-wiki/sources`. Each fact carries where it came
754
+ from, which is what makes a wrong one correctable rather than merely
755
+ annoying.
756
+
757
+ **Input**: none.
758
+
759
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
760
+
761
+ Other envelope fields: `pagination` (PaginationMeta).
762
+
763
+ **Example**
764
+
765
+ ```ts
766
+ const result = await g8.api.copilot.getCopilotPersonalWiki();
767
+ ```
768
+
769
+ ---
770
+
771
+ <a id="op-getcopilotpersonalwikidocument"></a>
772
+
773
+ ### `g8.api.copilot.getCopilotPersonalWikiDocument(input)`
774
+
775
+ **Get Copilot Personal Wiki Document**
776
+
777
+ - HTTP: `GET /api/v1/copilot/personal-wiki/documents/{section}`
778
+ - operationId: `get_copilot_personal_wiki_document_copilot_personal_wiki_documents__section__get` (also callable as `g8.api.call("get_copilot_personal_wiki_document_copilot_personal_wiki_documents__section__get", input)`)
779
+ - Tier: `read`: reads data; safe to call and to retry
780
+ - API-key scope: `knowledge:read`
781
+
782
+ One source document behind a section of the wiki.
783
+
784
+ The evidence view: the actual text a section was derived from, rather than
785
+ the assistant's summary of it.
786
+
787
+ **Input**
788
+
789
+ | Field | Type | Required | Description |
790
+ |---|---|---|---|
791
+ | `path.section` | `string` | yes | Wiki section. |
792
+ | `query.document_id` | `string` | yes | Which source document. |
793
+
794
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
795
+
796
+ Other envelope fields: `pagination` (PaginationMeta).
797
+
798
+ **Example**
799
+
800
+ ```ts
801
+ const result = await g8.api.copilot.getCopilotPersonalWikiDocument({ path: { section: "example" }, query: { document_id: "id" } });
802
+ ```
803
+
804
+ ---
805
+
806
+ <a id="op-getcopilotpersonalwikirelationship"></a>
807
+
808
+ ### `g8.api.copilot.getCopilotPersonalWikiRelationship(input)`
809
+
810
+ **Get Copilot Personal Wiki Relationship**
811
+
812
+ - HTTP: `GET /api/v1/copilot/personal-wiki/relationships/{contact_id}`
813
+ - operationId: `get_copilot_personal_wiki_relationship_copilot_personal_wiki_relationships__contact_id__get` (also callable as `g8.api.call("get_copilot_personal_wiki_relationship_copilot_personal_wiki_relationships__contact_id__get", input)`)
814
+ - Tier: `read`: reads data; safe to call and to retry
815
+ - API-key scope: `knowledge:read`
816
+
817
+ What the assistant knows about your relationship with ONE person.
818
+
819
+ **Input**
820
+
821
+ | Field | Type | Required | Description |
822
+ |---|---|---|---|
823
+ | `path.contact_id` | `integer` | yes | CRM contact id (integer). |
824
+
825
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
826
+
827
+ Other envelope fields: `pagination` (PaginationMeta).
828
+
829
+ **Example**
830
+
831
+ ```ts
832
+ const result = await g8.api.copilot.getCopilotPersonalWikiRelationship({ path: { contact_id: 123 } });
833
+ ```
834
+
835
+ ---
836
+
837
+ <a id="op-getcopilotpersonalwikisources"></a>
838
+
839
+ ### `g8.api.copilot.getCopilotPersonalWikiSources(input?)`
840
+
841
+ **Get Copilot Personal Wiki Sources**
842
+
843
+ - HTTP: `GET /api/v1/copilot/personal-wiki/sources`
844
+ - operationId: `get_copilot_personal_wiki_sources_copilot_personal_wiki_sources_get` (also callable as `g8.api.call("get_copilot_personal_wiki_sources_copilot_personal_wiki_sources_get", input)`)
845
+ - Tier: `read`: reads data; safe to call and to retry
846
+ - API-key scope: `knowledge:read`
847
+
848
+ Which of your things the assistant is reading.
849
+
850
+ Mailboxes, calendar, documents, Work. The privacy answer for this whole
851
+ surface - what the wiki knows follows directly from what is switched on
852
+ here.
853
+
854
+ **Input**: none.
855
+
856
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
857
+
858
+ Other envelope fields: `pagination` (PaginationMeta).
859
+
860
+ **Example**
861
+
862
+ ```ts
863
+ const result = await g8.api.copilot.getCopilotPersonalWikiSources();
864
+ ```
865
+
866
+ ---
867
+
868
+ <a id="op-listcopilotcontactcontributions"></a>
869
+
870
+ ### `g8.api.copilot.listCopilotContactContributions(input?)`
871
+
872
+ **List Copilot Contact Contributions**
873
+
874
+ - HTTP: `GET /api/v1/copilot/personal-wiki/contact-sharing/contributions`
875
+ - operationId: `list_copilot_contact_contributions_copilot_personal_wiki_contact_sharing_contributions_get` (also callable as `g8.api.call("list_copilot_contact_contributions_copilot_personal_wiki_contact_sharing_contributions_get", input)`)
876
+ - Tier: `read`: reads data; safe to call and to retry
877
+ - API-key scope: `knowledge:read`
878
+
879
+ What your mailbox is offering to the shared CRM record, pending review.
880
+
881
+ A contribution is a fact the assistant learned privately that WOULD change
882
+ a shared contact - a new job title, a corrected name. It is held here until
883
+ someone decides, rather than being written straight through.
884
+
885
+ **Input**
886
+
887
+ | Field | Type | Required | Description |
888
+ |---|---|---|---|
889
+ | `query.offset` | `integer` | no | default `0` |
890
+ | `query.limit` | `integer` | no | default `25` |
891
+
892
+ **Returns** `ApiResponse_CopilotMemoryListPayload_`: the envelope `{ data: CopilotMemoryListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
893
+
894
+ Other envelope fields: `pagination` (PaginationMeta).
895
+
896
+ `CopilotMemoryListPayload` fields:
897
+
898
+ | Field | Type | Required | Description |
899
+ |---|---|---|---|
900
+ | `items` | `Array<unknown>` | no | |
901
+
902
+ **Example**
903
+
904
+ ```ts
905
+ const result = await g8.api.copilot.listCopilotContactContributions();
906
+ ```
907
+
908
+ ---
909
+
910
+ <a id="op-listcopilotcontactmatches"></a>
911
+
912
+ ### `g8.api.copilot.listCopilotContactMatches(input)`
913
+
914
+ **List Copilot Contact Matches**
915
+
916
+ - HTTP: `GET /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}/matches`
917
+ - operationId: `list_copilot_contact_matches_copilot_personal_wiki_contact_sharing_contributions__contribution_id__matches_get` (also callable as `g8.api.call("list_copilot_contact_matches_copilot_personal_wiki_contact_sharing_contributions__contribution_id__matches_get", input)`)
918
+ - Tier: `read`: reads data; safe to call and to retry
919
+ - API-key scope: `knowledge:read`
920
+
921
+ Which CRM contacts this contribution might be about.
922
+
923
+ Read this before resolving one. A contribution that matches several people
924
+ is a contribution whose decision would otherwise land on whichever the
925
+ matcher guessed.
926
+
927
+ **Input**
928
+
929
+ | Field | Type | Required | Description |
930
+ |---|---|---|---|
931
+ | `path.contribution_id` | `string` | yes | Contribution id (UUID). |
932
+
933
+ **Returns** `ApiResponse_CopilotMemoryListPayload_`: the envelope `{ data: CopilotMemoryListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
934
+
935
+ Other envelope fields: `pagination` (PaginationMeta).
936
+
937
+ `CopilotMemoryListPayload` fields:
938
+
939
+ | Field | Type | Required | Description |
940
+ |---|---|---|---|
941
+ | `items` | `Array<unknown>` | no | |
942
+
943
+ **Example**
944
+
945
+ ```ts
946
+ const result = await g8.api.copilot.listCopilotContactMatches({ path: { contribution_id: "id" } });
947
+ ```
948
+
949
+ ---
950
+
951
+ <a id="op-listcopilotmemories"></a>
952
+
953
+ ### `g8.api.copilot.listCopilotMemories(input?)`
954
+
955
+ **List Copilot Memories**
956
+
957
+ - HTTP: `GET /api/v1/copilot/memory`
958
+ - operationId: `list_copilot_memories_copilot_memory_get` (also callable as `g8.api.call("list_copilot_memories_copilot_memory_get", input)`)
959
+ - Tier: `read`: reads data; safe to call and to retry
960
+ - API-key scope: `knowledge:read`
961
+
962
+ Discrete things the Copilot has been told to remember.
963
+
964
+ NOT the same store as `GET /agent/memory`, which is the agent runtime's
965
+ planner state. These are the assistant's own remembered facts.
966
+
967
+ **Input**
968
+
969
+ | Field | Type | Required | Description |
970
+ |---|---|---|---|
971
+ | `query.scope` | `string \| null` | no | Filter to one memory scope. |
972
+ | `query.limit` | `integer` | no | Page size. default `20` |
973
+
974
+ **Returns** `ApiResponse_CopilotMemoryListPayload_`: the envelope `{ data: CopilotMemoryListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
975
+
976
+ Other envelope fields: `pagination` (PaginationMeta).
977
+
978
+ `CopilotMemoryListPayload` fields:
979
+
980
+ | Field | Type | Required | Description |
981
+ |---|---|---|---|
982
+ | `items` | `Array<unknown>` | no | |
983
+
984
+ **Example**
985
+
986
+ ```ts
987
+ const result = await g8.api.copilot.listCopilotMemories();
988
+ ```
989
+
990
+ ---
991
+
992
+ <a id="op-listcopilotpersonalwikirelationships"></a>
993
+
994
+ ### `g8.api.copilot.listCopilotPersonalWikiRelationships(input?)`
995
+
996
+ **List Copilot Personal Wiki Relationships**
997
+
998
+ - HTTP: `GET /api/v1/copilot/personal-wiki/relationships`
999
+ - operationId: `list_copilot_personal_wiki_relationships_copilot_personal_wiki_relationships_get` (also callable as `g8.api.call("list_copilot_personal_wiki_relationships_copilot_personal_wiki_relationships_get", input)`)
1000
+ - Tier: `read`: reads data; safe to call and to retry
1001
+ - API-key scope: `knowledge:read`
1002
+
1003
+ Who the assistant thinks you know, and how well.
1004
+
1005
+ Filtered by the key's CONTACT SCOPE, not just by org: a key whose user may
1006
+ only see their own contacts sees relationships to those contacts. The
1007
+ relationship graph is derived from a person's mailbox, so it is exactly the
1008
+ data that must not cross a rep boundary.
1009
+
1010
+ **Input**
1011
+
1012
+ | Field | Type | Required | Description |
1013
+ |---|---|---|---|
1014
+ | `query.item_id` | `string \| null` | no | |
1015
+ | `query.query` | `string` | no | Substring match on the person. default `""` |
1016
+ | `query.sort` | `"recent" \| "name" \| "email"` | no | `recent`, `name` or `email`. default `"recent"` |
1017
+ | `query.offset` | `integer` | no | default `0` |
1018
+ | `query.limit` | `integer` | no | default `50` |
1019
+
1020
+ **Returns** `ApiResponse_CopilotMemoryListPayload_`: the envelope `{ data: CopilotMemoryListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1021
+
1022
+ Other envelope fields: `pagination` (PaginationMeta).
1023
+
1024
+ `CopilotMemoryListPayload` fields:
1025
+
1026
+ | Field | Type | Required | Description |
1027
+ |---|---|---|---|
1028
+ | `items` | `Array<unknown>` | no | |
1029
+
1030
+ **Example**
1031
+
1032
+ ```ts
1033
+ const result = await g8.api.copilot.listCopilotPersonalWikiRelationships();
1034
+ ```
1035
+
1036
+ ---
1037
+
1038
+ <a id="op-listcopilottools"></a>
1039
+
1040
+ ### `g8.api.copilot.listCopilotTools(input?)`
1041
+
1042
+ **List Copilot Tools**
1043
+
1044
+ - HTTP: `GET /api/v1/copilot/tools`
1045
+ - operationId: `list_copilot_tools_copilot_tools_get` (also callable as `g8.api.call("list_copilot_tools_copilot_tools_get", input)`)
1046
+ - Tier: `read`: reads data; safe to call and to retry
1047
+ - API-key scope: `knowledge:read`
1048
+
1049
+ The tools the copilot can call, and which of them need a person's approval. FREE.
1050
+
1051
+ **Input**: none.
1052
+
1053
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1054
+
1055
+ Other envelope fields: `pagination` (PaginationMeta).
1056
+
1057
+ `StudioContentListPayload` fields:
1058
+
1059
+ | Field | Type | Required | Description |
1060
+ |---|---|---|---|
1061
+ | `items` | `Array<unknown>` | no | |
1062
+
1063
+ **Example**
1064
+
1065
+ ```ts
1066
+ const result = await g8.api.copilot.listCopilotTools();
1067
+ ```
1068
+
1069
+ ---
1070
+
1071
+ <a id="op-previewcopilotpersonalwikidriveselection"></a>
1072
+
1073
+ ### `g8.api.copilot.previewCopilotPersonalWikiDriveSelection(input)`
1074
+
1075
+ **Preview Copilot Personal Wiki Drive Selection**
1076
+
1077
+ - HTTP: `POST /api/v1/copilot/personal-wiki/drive-selection/preview`
1078
+ - operationId: `preview_copilot_personal_wiki_drive_selection_copilot_personal_wiki_drive_selection_preview_post` (also callable as `g8.api.call("preview_copilot_personal_wiki_drive_selection_copilot_personal_wiki_drive_selection_preview_post", input)`)
1079
+ - Tier: `read`: reads data; safe to call and to retry
1080
+ - API-key scope: `knowledge:read`
1081
+
1082
+ What a Drive selection WOULD read, without saving it.
1083
+
1084
+ POST only because the selection is a body; it changes nothing. Returns a
1085
+ `fingerprint` to hand to the save, so the save is refused if the folders
1086
+ have changed underneath you in between.
1087
+
1088
+ **Input**
1089
+
1090
+ | Field | Type | Required | Description |
1091
+ |---|---|---|---|
1092
+ | `body` | `PersonalDriveSelectionRequest` | yes | Request body; fields below. |
1093
+
1094
+ Body fields (`PersonalDriveSelectionRequest`):
1095
+
1096
+ | Field | Type | Required | Description |
1097
+ |---|---|---|---|
1098
+ | `body.mailbox_id` | `integer` | yes | Integer `mailboxes.id` of the connected Google account. > 0 |
1099
+ | `body.document_ids` | `Array<string>` | no | Individual Drive documents to read. max items 20 |
1100
+ | `body.folders` | `Array<PersonalDriveFolderChoice>` | no | Whole folders to read. max items 10 |
1101
+ | `body.preview_fingerprint` | `string \| null` | no | The `fingerprint` from the preview call. When sent, the save is refused (409) if the selection no longer resolves to what you previewed. pattern `^[a-f0-9]{64}$` |
1102
+ | `body.revision` | `string \| null` | no | The sources' `updated_at` from `GET /copilot/personal-wiki/sources`. A mismatch is a 409: someone else changed the selection since you read it. |
1103
+
1104
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1105
+
1106
+ Other envelope fields: `pagination` (PaginationMeta).
1107
+
1108
+ **Example**
1109
+
1110
+ ```ts
1111
+ const result = await g8.api.copilot.previewCopilotPersonalWikiDriveSelection({ body: { mailbox_id: 1 } });
1112
+ ```
1113
+
1114
+ ---
1115
+
1116
+ <a id="op-promotecopilotmemory"></a>
1117
+
1118
+ ### `g8.api.copilot.promoteCopilotMemory(input)`
1119
+
1120
+ **Promote Copilot Memory**
1121
+
1122
+ - HTTP: `POST /api/v1/copilot/memory/promote`
1123
+ - operationId: `promote_copilot_memory_copilot_memory_promote_post` (also callable as `g8.api.call("promote_copilot_memory_copilot_memory_promote_post", input)`)
1124
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1125
+ - API-key scope: `knowledge:run`
1126
+
1127
+ Promote what is worth keeping out of the daily journal into durable
1128
+ memory.
1129
+
1130
+ The garbage-collection step of the whole memory design. Without it the
1131
+ journal grows without bound and the durable documents stay empty, so the
1132
+ assistant ends up with a great deal of noise and very little knowledge.
1133
+
1134
+ **Input**
1135
+
1136
+ | Field | Type | Required | Description |
1137
+ |---|---|---|---|
1138
+ | `body` | `PromoteMemoryRequest` | yes | Request body; fields below. |
1139
+
1140
+ Body fields (`PromoteMemoryRequest`):
1141
+
1142
+ | Field | Type | Required | Description |
1143
+ |---|---|---|---|
1144
+ | `body.subject_id` | `string` | yes | Which one. |
1145
+ | `body.subject_type` | `string` | yes | organization \| user \| campaign \| company \| contact. |
1146
+ | `body.days_back` | `integer` | no | How far back through the daily journal to look for things worth keeping. Promotion is what stops the journal growing forever and the durable memory staying empty. default `7` |
1147
+
1148
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1149
+
1150
+ Other envelope fields: `pagination` (PaginationMeta).
1151
+
1152
+ **Example**
1153
+
1154
+ ```ts
1155
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1156
+ const result = await g8.api.copilot.promoteCopilotMemory({ body: { subject_id: "id", subject_type: "Example" } });
1157
+ ```
1158
+
1159
+ ---
1160
+
1161
+ <a id="op-resolvecopilotcontactcontribution"></a>
1162
+
1163
+ ### `g8.api.copilot.resolveCopilotContactContribution(input)`
1164
+
1165
+ **Resolve Copilot Contact Contribution**
1166
+
1167
+ - HTTP: `POST /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}/resolve`
1168
+ - operationId: `resolve_copilot_contact_contribution_copilot_personal_wiki_contact_sharing_contributions__contribution_id__resolve_post` (also callable as `g8.api.call("resolve_copilot_contact_contribution_copilot_personal_wiki_contact_sharing_contributions__contribution_id__resolve_post", input)`)
1169
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1170
+ - API-key scope: `knowledge:write`
1171
+
1172
+ Decide ONE FIELD of a contribution: keep the CRM value, or take the
1173
+ proposed one.
1174
+
1175
+ Per field rather than per contribution, because a contribution can be right
1176
+ about a job title and wrong about a surname.
1177
+
1178
+ TWO concurrency tokens are required and both are load-bearing: one for the
1179
+ contribution and one for the CANONICAL contact record the decision would
1180
+ change. Either having moved means the decision was made against something
1181
+ that no longer holds, and `use_proposed` OVERWRITES a shared record.
1182
+
1183
+ **Input**
1184
+
1185
+ | Field | Type | Required | Description |
1186
+ |---|---|---|---|
1187
+ | `path.contribution_id` | `string` | yes | Contribution id (UUID). |
1188
+ | `body` | `PersonalContactReviewRequest` | yes | Request body; fields below. |
1189
+
1190
+ Body fields (`PersonalContactReviewRequest`):
1191
+
1192
+ | Field | Type | Required | Description |
1193
+ |---|---|---|---|
1194
+ | `body.choice` | `"keep_current" \| "use_proposed"` | yes | `keep_current` - the CRM record wins. `use_proposed` - the contributed value wins and overwrites it. |
1195
+ | `body.expected_canonical_revision` | `string` | yes | Digest of the CANONICAL contact record as you read it. Two tokens are required because two records are in play: the contribution and the contact it would change. Either moving means the decision was made against something that no longer holds. min length 64, max length 64 |
1196
+ | `body.expected_revision` | `integer` | yes | The contribution's revision. min 1 |
1197
+ | `body.field` | `"CONTACT_FIRST_NAME" \| "CONTACT_LAST_NAME" \| "CONTACT_JOB_TITLE"` | yes | Which field is being decided. |
1198
+
1199
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1200
+
1201
+ Other envelope fields: `pagination` (PaginationMeta).
1202
+
1203
+ **Example**
1204
+
1205
+ ```ts
1206
+ const result = await g8.api.copilot.resolveCopilotContactContribution({
1207
+ path: { contribution_id: "id" },
1208
+ body: {
1209
+ choice: "keep_current",
1210
+ expected_canonical_revision: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
1211
+ expected_revision: 1,
1212
+ field: "CONTACT_FIRST_NAME",
1213
+ },
1214
+ });
1215
+ ```
1216
+
1217
+ ---
1218
+
1219
+ <a id="op-runcopilotlandingpageaction"></a>
1220
+
1221
+ ### `g8.api.copilot.runCopilotLandingPageAction(input)`
1222
+
1223
+ **Run Copilot Landing Page Action**
1224
+
1225
+ - HTTP: `POST /api/v1/copilot/landing-page-action`
1226
+ - operationId: `run_copilot_landing_page_action_copilot_landing_page_action_post` (also callable as `g8.api.call("run_copilot_landing_page_action_copilot_landing_page_action_post", input)`)
1227
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1228
+ - API-key scope: `knowledge:run`
1229
+
1230
+ Add, remove, reorder or AI-edit a landing page's sections. `edit_section` SPENDS CREDIT.
1231
+
1232
+ `add_section`, `remove_section` and `reorder_sections` are deterministic.
1233
+ Returns the updated page.
1234
+
1235
+ **Input**
1236
+
1237
+ | Field | Type | Required | Description |
1238
+ |---|---|---|---|
1239
+ | `body` | `CopilotLandingPageActionRequest` | yes | Request body; fields below. |
1240
+
1241
+ Body fields (`CopilotLandingPageActionRequest`):
1242
+
1243
+ | Field | Type | Required | Description |
1244
+ |---|---|---|---|
1245
+ | `body.action_type` | `"edit_section" \| "add_section" \| "remove_section" \| "reorder_sections"` | yes | |
1246
+ | `body.landing_page_id` | `string` | yes | |
1247
+ | `body.instruction` | `string \| null` | no | For edit_section. |
1248
+ | `body.new_order` | `Array<integer> \| null` | no | For reorder_sections: the new index order. |
1249
+ | `body.new_section_type` | `string \| null` | no | For add_section. |
1250
+ | `body.section_idx` | `integer \| null` | no | For edit_section and remove_section. |
1251
+ | `body.selected_text` | `string \| null` | no | |
1252
+
1253
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1254
+
1255
+ Other envelope fields: `pagination` (PaginationMeta).
1256
+
1257
+ **Example**
1258
+
1259
+ ```ts
1260
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1261
+ const result = await g8.api.copilot.runCopilotLandingPageAction({ body: { action_type: "edit_section", landing_page_id: "id" } });
1262
+ ```
1263
+
1264
+ ---
1265
+
1266
+ <a id="op-savecopilotpersonalwikidriveselection"></a>
1267
+
1268
+ ### `g8.api.copilot.saveCopilotPersonalWikiDriveSelection(input)`
1269
+
1270
+ **Save Copilot Personal Wiki Drive Selection**
1271
+
1272
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/drive-selection`
1273
+ - operationId: `save_copilot_personal_wiki_drive_selection_copilot_personal_wiki_drive_selection_put` (also callable as `g8.api.call("save_copilot_personal_wiki_drive_selection_copilot_personal_wiki_drive_selection_put", input)`)
1274
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1275
+ - API-key scope: `knowledge:write`
1276
+
1277
+ Save which Drive documents and folders the Copilot may read.
1278
+
1279
+ Replaces the Drive part of the selection. `revision` is required in
1280
+ practice: it must equal the sources' current `updated_at`, or the save is
1281
+ a 409.
1282
+
1283
+ **Input**
1284
+
1285
+ | Field | Type | Required | Description |
1286
+ |---|---|---|---|
1287
+ | `body` | `PersonalDriveSelectionRequest` | yes | Request body; fields below. |
1288
+
1289
+ Body fields (`PersonalDriveSelectionRequest`):
1290
+
1291
+ | Field | Type | Required | Description |
1292
+ |---|---|---|---|
1293
+ | `body.mailbox_id` | `integer` | yes | Integer `mailboxes.id` of the connected Google account. > 0 |
1294
+ | `body.document_ids` | `Array<string>` | no | Individual Drive documents to read. max items 20 |
1295
+ | `body.folders` | `Array<PersonalDriveFolderChoice>` | no | Whole folders to read. max items 10 |
1296
+ | `body.preview_fingerprint` | `string \| null` | no | The `fingerprint` from the preview call. When sent, the save is refused (409) if the selection no longer resolves to what you previewed. pattern `^[a-f0-9]{64}$` |
1297
+ | `body.revision` | `string \| null` | no | The sources' `updated_at` from `GET /copilot/personal-wiki/sources`. A mismatch is a 409: someone else changed the selection since you read it. |
1298
+
1299
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1300
+
1301
+ Other envelope fields: `pagination` (PaginationMeta).
1302
+
1303
+ **Example**
1304
+
1305
+ ```ts
1306
+ const result = await g8.api.copilot.saveCopilotPersonalWikiDriveSelection({ body: { mailbox_id: 1 } });
1307
+ ```
1308
+
1309
+ ---
1310
+
1311
+ <a id="op-searchcopilotcontactidentities"></a>
1312
+
1313
+ ### `g8.api.copilot.searchCopilotContactIdentities(input)`
1314
+
1315
+ **Search Copilot Contact Identities**
1316
+
1317
+ - HTTP: `GET /api/v1/copilot/personal-wiki/contact-identities`
1318
+ - operationId: `search_copilot_contact_identities_copilot_personal_wiki_contact_identities_get` (also callable as `g8.api.call("search_copilot_contact_identities_copilot_personal_wiki_contact_identities_get", input)`)
1319
+ - Tier: `read`: reads data; safe to call and to retry
1320
+ - API-key scope: `knowledge:read`
1321
+
1322
+ Find the CRM contact a wiki fact is really about.
1323
+
1324
+ The lookup behind `POST /copilot/personal-wiki/relationships/identity`. The
1325
+ two-character minimum is the app's and is real: it is a scoped search over
1326
+ people, not a prefix index.
1327
+
1328
+ **Input**
1329
+
1330
+ | Field | Type | Required | Description |
1331
+ |---|---|---|---|
1332
+ | `query.query` | `string` | yes | At least two characters. |
1333
+
1334
+ **Returns** `ApiResponse_CopilotMemoryListPayload_`: the envelope `{ data: CopilotMemoryListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1335
+
1336
+ Other envelope fields: `pagination` (PaginationMeta).
1337
+
1338
+ `CopilotMemoryListPayload` fields:
1339
+
1340
+ | Field | Type | Required | Description |
1341
+ |---|---|---|---|
1342
+ | `items` | `Array<unknown>` | no | |
1343
+
1344
+ **Example**
1345
+
1346
+ ```ts
1347
+ const result = await g8.api.copilot.searchCopilotContactIdentities({ query: { query: "example" } });
1348
+ ```
1349
+
1350
+ ---
1351
+
1352
+ <a id="op-searchcopilotmentions"></a>
1353
+
1354
+ ### `g8.api.copilot.searchCopilotMentions(input)`
1355
+
1356
+ **Search Copilot Mentions**
1357
+
1358
+ - HTTP: `POST /api/v1/copilot/mention-search`
1359
+ - operationId: `search_copilot_mentions_copilot_mention_search_post` (also callable as `g8.api.call("search_copilot_mentions_copilot_mention_search_post", input)`)
1360
+ - Tier: `read`: reads data; safe to call and to retry
1361
+ - API-key scope: `knowledge:read`
1362
+
1363
+ Find what can be @mentioned: documents, personas, ICPs, campaigns, teammates. FREE.
1364
+
1365
+ Read-only. Pass results as `mentions` on `POST /copilot/chat`.
1366
+
1367
+ **Input**
1368
+
1369
+ | Field | Type | Required | Description |
1370
+ |---|---|---|---|
1371
+ | `body` | `CopilotMentionSearchRequest` | yes | Request body; fields below. |
1372
+
1373
+ Body fields (`CopilotMentionSearchRequest`):
1374
+
1375
+ | Field | Type | Required | Description |
1376
+ |---|---|---|---|
1377
+ | `body.campaign_id` | `string \| null` | no | |
1378
+ | `body.mode` | `"global" \| "campaign" \| "account" \| null` | no | |
1379
+ | `body.query` | `string` | no | default `""` |
1380
+
1381
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1382
+
1383
+ Other envelope fields: `pagination` (PaginationMeta).
1384
+
1385
+ `StudioContentListPayload` fields:
1386
+
1387
+ | Field | Type | Required | Description |
1388
+ |---|---|---|---|
1389
+ | `items` | `Array<unknown>` | no | |
1390
+
1391
+ **Example**
1392
+
1393
+ ```ts
1394
+ const result = await g8.api.copilot.searchCopilotMentions({ body: {} });
1395
+ ```
1396
+
1397
+ ---
1398
+
1399
+ <a id="op-updatecopilotcontactcontribution"></a>
1400
+
1401
+ ### `g8.api.copilot.updateCopilotContactContribution(input)`
1402
+
1403
+ **Update Copilot Contact Contribution**
1404
+
1405
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/contact-sharing/contributions/{contribution_id}`
1406
+ - operationId: `update_copilot_contact_contribution_copilot_personal_wiki_contact_sharing_contributions__contribution_id__put` (also callable as `g8.api.call("update_copilot_contact_contribution_copilot_personal_wiki_contact_sharing_contributions__contribution_id__put", input)`)
1407
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1408
+ - API-key scope: `knowledge:write`
1409
+
1410
+ Turn ONE contribution on or off.
1411
+
1412
+ `expected_revision` is required. This decides whether private knowledge
1413
+ becomes org-wide, so a blind write could re-enable sharing somebody had
1414
+ just switched off.
1415
+
1416
+ **Input**
1417
+
1418
+ | Field | Type | Required | Description |
1419
+ |---|---|---|---|
1420
+ | `path.contribution_id` | `string` | yes | Contribution id (UUID). |
1421
+ | `body` | `PersonalContactSharingRequest` | yes | Request body; fields below. |
1422
+
1423
+ Body fields (`PersonalContactSharingRequest`):
1424
+
1425
+ | Field | Type | Required | Description |
1426
+ |---|---|---|---|
1427
+ | `body.enabled` | `boolean` | yes | Whether what this mailbox knows about a contact is contributed to the organisation's shared CRM record. Explicit rather than a toggle, so a retry is idempotent instead of switching it back. |
1428
+ | `body.expected_revision` | `integer` | yes | REQUIRED optimistic-concurrency token. Sharing settings decide whether one person's private contact knowledge becomes org-wide, so there is no unconditional write: a blind one could re-enable sharing somebody had just turned off. min 0 |
1429
+
1430
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1431
+
1432
+ Other envelope fields: `pagination` (PaginationMeta).
1433
+
1434
+ **Example**
1435
+
1436
+ ```ts
1437
+ const result = await g8.api.copilot.updateCopilotContactContribution({
1438
+ path: { contribution_id: "id" },
1439
+ body: { enabled: true, expected_revision: 0 },
1440
+ });
1441
+ ```
1442
+
1443
+ ---
1444
+
1445
+ <a id="op-updatecopilotcontactpeoplechoice"></a>
1446
+
1447
+ ### `g8.api.copilot.updateCopilotContactPeopleChoice(input)`
1448
+
1449
+ **Update Copilot Contact People Choice**
1450
+
1451
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/contact-sharing/people/choice`
1452
+ - operationId: `update_copilot_contact_people_choice_copilot_personal_wiki_contact_sharing_people_choice_put` (also callable as `g8.api.call("update_copilot_contact_people_choice_copilot_personal_wiki_contact_sharing_people_choice_put", input)`)
1453
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1454
+ - API-key scope: `knowledge:write`
1455
+
1456
+ Keep specific people private, share them, or let them follow the
1457
+ mailbox default.
1458
+
1459
+ The per-person override on top of `PUT /copilot/personal-wiki/contact-sharing/{mailbox_id}`.
1460
+ `expected_revision` is required.
1461
+
1462
+ **Input**
1463
+
1464
+ | Field | Type | Required | Description |
1465
+ |---|---|---|---|
1466
+ | `body` | `PersonalContactChoiceRequest` | yes | Request body; fields below. |
1467
+
1468
+ Body fields (`PersonalContactChoiceRequest`):
1469
+
1470
+ | Field | Type | Required | Description |
1471
+ |---|---|---|---|
1472
+ | `body.expected_revision` | `integer` | yes | Concurrency token from the sharing GET. min 0 |
1473
+ | `body.mode` | `"default" \| "private" \| "shared"` | yes | `private` keeps these people to yourself, `shared` offers them to the org's CRM, `default` follows the mailbox-level setting. |
1474
+ | `body.connection_revisions` | `Record<string, integer>` | no | Per-connection revision tokens, keyed by connection id (UUID). |
1475
+ | `body.fact_ids` | `Array<string>` | no | The people (wiki facts) this choice applies to. max items 500 |
1476
+
1477
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1478
+
1479
+ Other envelope fields: `pagination` (PaginationMeta).
1480
+
1481
+ **Example**
1482
+
1483
+ ```ts
1484
+ const result = await g8.api.copilot.updateCopilotContactPeopleChoice({ body: { expected_revision: 0, mode: "default" } });
1485
+ ```
1486
+
1487
+ ---
1488
+
1489
+ <a id="op-updatecopilotcontactsharing"></a>
1490
+
1491
+ ### `g8.api.copilot.updateCopilotContactSharing(input)`
1492
+
1493
+ **Update Copilot Contact Sharing**
1494
+
1495
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/contact-sharing/{mailbox_id}`
1496
+ - operationId: `update_copilot_contact_sharing_copilot_personal_wiki_contact_sharing__mailbox_id__put` (also callable as `g8.api.call("update_copilot_contact_sharing_copilot_personal_wiki_contact_sharing__mailbox_id__put", input)`)
1497
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1498
+ - API-key scope: `knowledge:write`
1499
+
1500
+ Turn contact sharing on or off for ONE mailbox.
1501
+
1502
+ The switch that decides whether a person's private contact knowledge starts
1503
+ producing contributions at all. `expected_revision` is required.
1504
+
1505
+ **Input**
1506
+
1507
+ | Field | Type | Required | Description |
1508
+ |---|---|---|---|
1509
+ | `path.mailbox_id` | `integer` | yes | Integer `mailboxes.id` - the database primary key, not the cron-job string id. |
1510
+ | `body` | `PersonalContactSharingRequest` | yes | Request body; fields below. |
1511
+
1512
+ Body fields (`PersonalContactSharingRequest`):
1513
+
1514
+ | Field | Type | Required | Description |
1515
+ |---|---|---|---|
1516
+ | `body.enabled` | `boolean` | yes | Whether what this mailbox knows about a contact is contributed to the organisation's shared CRM record. Explicit rather than a toggle, so a retry is idempotent instead of switching it back. |
1517
+ | `body.expected_revision` | `integer` | yes | REQUIRED optimistic-concurrency token. Sharing settings decide whether one person's private contact knowledge becomes org-wide, so there is no unconditional write: a blind one could re-enable sharing somebody had just turned off. min 0 |
1518
+
1519
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1520
+
1521
+ Other envelope fields: `pagination` (PaginationMeta).
1522
+
1523
+ **Example**
1524
+
1525
+ ```ts
1526
+ const result = await g8.api.copilot.updateCopilotContactSharing({
1527
+ path: { mailbox_id: 123 },
1528
+ body: { enabled: true, expected_revision: 0 },
1529
+ });
1530
+ ```
1531
+
1532
+ ---
1533
+
1534
+ <a id="op-updatecopilotlinkedinconnections"></a>
1535
+
1536
+ ### `g8.api.copilot.updateCopilotLinkedinConnections(input)`
1537
+
1538
+ **Update Copilot Linkedin Connections**
1539
+
1540
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/linkedin-connections`
1541
+ - operationId: `update_copilot_linkedin_connections_copilot_personal_wiki_linkedin_connections_put` (also callable as `g8.api.call("update_copilot_linkedin_connections_copilot_personal_wiki_linkedin_connections_put", input)`)
1542
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1543
+ - API-key scope: `knowledge:write`
1544
+
1545
+ Change the LinkedIn connections import settings, and optionally start
1546
+ an import (`start: true`).
1547
+
1548
+ The import itself runs in the background; read its progress back with the
1549
+ GET. `expected_revision` is required.
1550
+
1551
+ **Input**
1552
+
1553
+ | Field | Type | Required | Description |
1554
+ |---|---|---|---|
1555
+ | `body` | `PersonalLinkedInImportRequest` | yes | Request body; fields below. |
1556
+
1557
+ Body fields (`PersonalLinkedInImportRequest`):
1558
+
1559
+ | Field | Type | Required | Description |
1560
+ |---|---|---|---|
1561
+ | `body.expected_revision` | `integer` | yes | The `revision` from the GET. A stale value is a 409. min 0 |
1562
+ | `body.keep_updated` | `boolean` | no | Re-import the connection list on a schedule. default `false` |
1563
+ | `body.share` | `boolean` | no | Offer what is learned from these connections to the shared CRM (reviewed first). default `false` |
1564
+ | `body.start` | `boolean` | no | Start an import now, rather than only saving the settings. default `false` |
1565
+
1566
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1567
+
1568
+ Other envelope fields: `pagination` (PaginationMeta).
1569
+
1570
+ **Example**
1571
+
1572
+ ```ts
1573
+ const result = await g8.api.copilot.updateCopilotLinkedinConnections({ body: { expected_revision: 0 } });
1574
+ ```
1575
+
1576
+ ---
1577
+
1578
+ <a id="op-updatecopilotpersonalwiki"></a>
1579
+
1580
+ ### `g8.api.copilot.updateCopilotPersonalWiki(input)`
1581
+
1582
+ **Update Copilot Personal Wiki**
1583
+
1584
+ - HTTP: `PUT /api/v1/copilot/personal-wiki`
1585
+ - operationId: `update_copilot_personal_wiki_copilot_personal_wiki_put` (also callable as `g8.api.call("update_copilot_personal_wiki_copilot_personal_wiki_put", input)`)
1586
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1587
+ - API-key scope: `knowledge:write`
1588
+
1589
+ Replace the wiki document WHOLE.
1590
+
1591
+ The blunt instrument. Prefer `confirm`, `correct` and `forget`, which act on
1592
+ ONE fact and leave its provenance intact - this replaces the document and
1593
+ the Copilot then has to re-derive what it knew.
1594
+
1595
+ **Input**
1596
+
1597
+ | Field | Type | Required | Description |
1598
+ |---|---|---|---|
1599
+ | `body` | `PersonalWikiUpdateRequest` | yes | Request body; fields below. |
1600
+
1601
+ Body fields (`PersonalWikiUpdateRequest`):
1602
+
1603
+ | Field | Type | Required | Description |
1604
+ |---|---|---|---|
1605
+ | `body.content` | `string` | yes | The WHOLE wiki document. Replaces what is there. max length 100000 |
1606
+ | `body.title` | `string \| null` | no | max length 255 |
1607
+
1608
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1609
+
1610
+ Other envelope fields: `pagination` (PaginationMeta).
1611
+
1612
+ **Example**
1613
+
1614
+ ```ts
1615
+ const result = await g8.api.copilot.updateCopilotPersonalWiki({ body: { content: "example" } });
1616
+ ```
1617
+
1618
+ ---
1619
+
1620
+ <a id="op-updatecopilotpersonalwikisources"></a>
1621
+
1622
+ ### `g8.api.copilot.updateCopilotPersonalWikiSources(input)`
1623
+
1624
+ **Update Copilot Personal Wiki Sources**
1625
+
1626
+ - HTTP: `PUT /api/v1/copilot/personal-wiki/sources`
1627
+ - operationId: `update_copilot_personal_wiki_sources_copilot_personal_wiki_sources_put` (also callable as `g8.api.call("update_copilot_personal_wiki_sources_copilot_personal_wiki_sources_put", input)`)
1628
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1629
+ - API-key scope: `knowledge:write`
1630
+
1631
+ Change what the assistant may read.
1632
+
1633
+ PARTIAL: an omitted field is left alone, an explicit one changes it. So
1634
+ omitting `email_enabled` and sending `false` are different instructions.
1635
+
1636
+ SWITCHING A SOURCE OFF DOES NOT UNLEARN. It stops new facts arriving from
1637
+ there; what was already derived stays until it is forgotten one fact at a
1638
+ time through `POST /copilot/personal-wiki/forget`.
1639
+
1640
+ **Input**
1641
+
1642
+ | Field | Type | Required | Description |
1643
+ |---|---|---|---|
1644
+ | `body` | `PersonalWikiSourcesUpdateRequest` | yes | Request body; fields below. |
1645
+
1646
+ Body fields (`PersonalWikiSourcesUpdateRequest`):
1647
+
1648
+ | Field | Type | Required | Description |
1649
+ |---|---|---|---|
1650
+ | `body.additional_mailbox_ids` | `Array<integer> \| null` | no | Further mailboxes to read. max items 20 |
1651
+ | `body.calendar_enabled` | `boolean \| null` | no | Read your calendar. |
1652
+ | `body.docs_enabled` | `boolean \| null` | no | Read the named documents. |
1653
+ | `body.document_ids` | `Array<string> \| null` | no | Which documents, when `docs_enabled`. max items 20 |
1654
+ | `body.email_enabled` | `boolean \| null` | no | Whether the Copilot reads your email to build the wiki. Turning this off stops new facts arriving from email; it does not remove what it already learned - use `POST /copilot/personal-wiki/forget` for that. |
1655
+ | `body.primary_mailbox_id` | `integer \| null` | no | The mailbox the wiki draws its email signal from. |
1656
+ | `body.work_enabled` | `boolean \| null` | no | Read your Work activity. |
1657
+
1658
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1659
+
1660
+ Other envelope fields: `pagination` (PaginationMeta).
1661
+
1662
+ **Example**
1663
+
1664
+ ```ts
1665
+ const result = await g8.api.copilot.updateCopilotPersonalWikiSources({ body: {} });
1666
+ ```
1667
+
1668
+ ---
1669
+
1670
+ <a id="op-upsertcopilotmemorydocument"></a>
1671
+
1672
+ ### `g8.api.copilot.upsertCopilotMemoryDocument(input)`
1673
+
1674
+ **Upsert Copilot Memory Document**
1675
+
1676
+ - HTTP: `PUT /api/v1/copilot/memory/documents`
1677
+ - operationId: `upsert_copilot_memory_document_copilot_memory_documents_put` (also callable as `g8.api.call("upsert_copilot_memory_document_copilot_memory_documents_put", input)`)
1678
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1679
+ - API-key scope: `knowledge:write`
1680
+
1681
+ Write a memory document WHOLE. This replaces, it does not merge.
1682
+
1683
+ `visibility` defaults to `shared`, which means the whole organisation's
1684
+ Copilot may draw on it. That is the app's default and it is the wider of
1685
+ the two, so it is what you get by not thinking about it - worth thinking
1686
+ about it.
1687
+
1688
+ **Input**
1689
+
1690
+ | Field | Type | Required | Description |
1691
+ |---|---|---|---|
1692
+ | `body` | `MemoryDocumentRequest` | yes | Request body; fields below. |
1693
+
1694
+ Body fields (`MemoryDocumentRequest`):
1695
+
1696
+ | Field | Type | Required | Description |
1697
+ |---|---|---|---|
1698
+ | `body.content` | `string` | yes | The WHOLE document. This is an upsert, not an append: it replaces what is there. Use `POST /copilot/memory/documents/append` to add without replacing. |
1699
+ | `body.file_kind` | `string` | yes | `soul` - who the subject is. `memory` - durable facts. `daily` - the rolling journal. |
1700
+ | `body.subject_id` | `string` | yes | Which one. |
1701
+ | `body.subject_type` | `string` | yes | organization \| user \| campaign \| company \| contact. |
1702
+ | `body.title` | `string \| null` | no | Display title. |
1703
+ | `body.visibility` | `string` | no | `shared` - the whole org's Copilot may draw on it. Defaults to shared, matching the app, so a document written without thinking about this is visible org-wide. default `"shared"` |
1704
+
1705
+ **Returns** `ApiResponse_CopilotMemoryPayload_`: the envelope `{ data: CopilotMemoryPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1706
+
1707
+ Other envelope fields: `pagination` (PaginationMeta).
1708
+
1709
+ **Example**
1710
+
1711
+ ```ts
1712
+ const result = await g8.api.copilot.upsertCopilotMemoryDocument({
1713
+ body: {
1714
+ content: "example",
1715
+ file_kind: "example",
1716
+ subject_id: "id",
1717
+ subject_type: "Example",
1718
+ },
1719
+ });
1720
+ ```
1721
+
1722
+ ---
1723
+
1724
+ ## Referenced types
1725
+
1726
+ Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
1727
+
1728
+ <a id="type-copilotcanvascontext"></a>
1729
+
1730
+ ### `CopilotCanvasContext`
1731
+
1732
+ What the copilot is looking at: a document, a selection, a campaign or account.
1733
+
1734
+ | Field | Type | Required | Description |
1735
+ |---|---|---|---|
1736
+ | `accountId` | `string \| null` | no | |
1737
+ | `activeDocument` | `Record<string, unknown> \| null` | no | {path, content, type, status}. |
1738
+ | `campaignId` | `string \| null` | no | |
1739
+ | `cursor` | `Record<string, integer> \| null` | no | {line, column}. |
1740
+ | `mode` | `"global" \| "campaign" \| "account"` | no | default `"global"` |
1741
+ | `selection` | `Record<string, unknown> \| null` | no | {text, start_line, end_line}. |
1742
+
1743
+ <a id="type-copilotchatmessage"></a>
1744
+
1745
+ ### `CopilotChatMessage`
1746
+
1747
+ One earlier turn of the conversation.
1748
+
1749
+ | Field | Type | Required | Description |
1750
+ |---|---|---|---|
1751
+ | `content` | `string` | yes | |
1752
+ | `role` | `"user" \| "assistant" \| "system" \| "tool"` | yes | |
1753
+ | `tool_name` | `string \| null` | no | |
1754
+ | `tool_result` | `Record<string, unknown> \| null` | no | |
1755
+
1756
+ <a id="type-personaldrivefolderchoice"></a>
1757
+
1758
+ ### `PersonalDriveFolderChoice`
1759
+
1760
+ Mirror of `PersonalDriveFolderChoice`.
1761
+
1762
+ | Field | Type | Required | Description |
1763
+ |---|---|---|---|
1764
+ | `id` | `string` | yes | Drive folder id, as returned by `GET /copilot/personal-wiki/drive`. pattern `^[A-Za-z0-9_-]{10,200}$` |
1765
+ | `auto_sync` | `boolean` | no | Keep reading new documents added to this folder later, not just today's. default `false` |