@graph8/sdk 0.251.0 → 0.260.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +9 -2
  2. package/dist/cli.js +216 -0
  3. package/dist/index.d.mts +104 -7
  4. package/dist/index.d.ts +104 -7
  5. package/dist/index.js +44 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +44 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react.d.mts +102 -7
  10. package/dist/react.d.ts +102 -7
  11. package/dist/react.js +62 -11
  12. package/dist/react.js.map +1 -1
  13. package/dist/react.mjs +53 -12
  14. package/dist/react.mjs.map +1 -1
  15. package/dist/types/README.md +7 -0
  16. package/dist/types/agency.d.ts +20 -0
  17. package/dist/types/agentSetup.d.ts +57 -0
  18. package/dist/types/api.d.ts +127 -0
  19. package/dist/types/appClient.d.ts +99 -0
  20. package/dist/types/appPlatform.d.ts +269 -0
  21. package/dist/types/appTokens.d.ts +125 -0
  22. package/dist/types/apps.d.ts +130 -0
  23. package/dist/types/audiences.d.ts +88 -0
  24. package/dist/types/calendar.d.ts +55 -0
  25. package/dist/types/campaigns.d.ts +61 -0
  26. package/dist/types/chat.d.ts +35 -0
  27. package/dist/types/cli.d.ts +14 -0
  28. package/dist/types/companies.d.ts +123 -0
  29. package/dist/types/contacts.d.ts +200 -0
  30. package/dist/types/copilot.d.ts +31 -0
  31. package/dist/types/core.d.ts +1052 -0
  32. package/dist/types/deals.d.ts +215 -0
  33. package/dist/types/enrich.d.ts +51 -0
  34. package/dist/types/fields.d.ts +84 -0
  35. package/dist/types/forms.d.ts +16 -0
  36. package/dist/types/http.d.ts +141 -0
  37. package/dist/types/inbox.d.ts +123 -0
  38. package/dist/types/index.d.ts +63 -0
  39. package/dist/types/intent.d.ts +196 -0
  40. package/dist/types/lists.d.ts +44 -0
  41. package/dist/types/mailboxes.d.ts +240 -0
  42. package/dist/types/marketplace.d.ts +62 -0
  43. package/dist/types/meetings.d.ts +70 -0
  44. package/dist/types/newsletter.d.ts +212 -0
  45. package/dist/types/notes.d.ts +57 -0
  46. package/dist/types/objects.d.ts +281 -0
  47. package/dist/types/pipelines.d.ts +135 -0
  48. package/dist/types/quotes.d.ts +143 -0
  49. package/dist/types/react.d.ts +978 -0
  50. package/dist/types/search.d.ts +99 -0
  51. package/dist/types/sequences.d.ts +255 -0
  52. package/dist/types/signals.d.ts +28 -0
  53. package/dist/types/skills.d.ts +176 -0
  54. package/dist/types/snippet.d.ts +24 -0
  55. package/dist/types/studio.d.ts +161 -0
  56. package/dist/types/tasks.d.ts +101 -0
  57. package/dist/types/types.d.ts +45 -0
  58. package/dist/types/utils.d.ts +21 -0
  59. package/dist/types/version.d.ts +10 -0
  60. package/dist/types/visitors.d.ts +29 -0
  61. package/dist/types/voice.d.ts +304 -0
  62. package/dist/types/webhooks.d.ts +71 -0
  63. package/dist/types/workflows.d.ts +229 -0
  64. package/docs/agents.md +748 -0
  65. package/docs/api/README.md +165 -0
  66. package/docs/api/accounts.d.ts +396 -0
  67. package/docs/api/accounts.md +644 -0
  68. package/docs/api/adCampaigns.d.ts +707 -0
  69. package/docs/api/adCampaigns.md +1091 -0
  70. package/docs/api/adCreatives.d.ts +996 -0
  71. package/docs/api/adCreatives.md +1708 -0
  72. package/docs/api/agency.d.ts +556 -0
  73. package/docs/api/agency.md +845 -0
  74. package/docs/api/agent.d.ts +330 -0
  75. package/docs/api/agent.md +514 -0
  76. package/docs/api/agents.d.ts +1622 -0
  77. package/docs/api/agents.md +2860 -0
  78. package/docs/api/aiInbox.d.ts +1984 -0
  79. package/docs/api/aiInbox.md +3490 -0
  80. package/docs/api/analytics.d.ts +1273 -0
  81. package/docs/api/analytics.md +2095 -0
  82. package/docs/api/apiKeys.d.ts +252 -0
  83. package/docs/api/apiKeys.md +318 -0
  84. package/docs/api/appDeployments.d.ts +236 -0
  85. package/docs/api/appDeployments.md +471 -0
  86. package/docs/api/appDomains.d.ts +171 -0
  87. package/docs/api/appDomains.md +281 -0
  88. package/docs/api/appLogs.d.ts +120 -0
  89. package/docs/api/appLogs.md +159 -0
  90. package/docs/api/appObjects.d.ts +415 -0
  91. package/docs/api/appObjects.md +568 -0
  92. package/docs/api/appPages.d.ts +557 -0
  93. package/docs/api/appPages.md +796 -0
  94. package/docs/api/appPlatformTokens.d.ts +123 -0
  95. package/docs/api/appPlatformTokens.md +172 -0
  96. package/docs/api/appointments.d.ts +2361 -0
  97. package/docs/api/appointments.md +3917 -0
  98. package/docs/api/apps.d.ts +822 -0
  99. package/docs/api/apps.md +1342 -0
  100. package/docs/api/assertUpsert.d.ts +286 -0
  101. package/docs/api/assertUpsert.md +370 -0
  102. package/docs/api/audienceSyncs.d.ts +259 -0
  103. package/docs/api/audienceSyncs.md +395 -0
  104. package/docs/api/brandKit.d.ts +686 -0
  105. package/docs/api/brandKit.md +1133 -0
  106. package/docs/api/bugReports.d.ts +181 -0
  107. package/docs/api/bugReports.md +268 -0
  108. package/docs/api/by-path.md +3260 -0
  109. package/docs/api/calendarInvites.d.ts +117 -0
  110. package/docs/api/calendarInvites.md +148 -0
  111. package/docs/api/campaignWorkflows.d.ts +152 -0
  112. package/docs/api/campaignWorkflows.md +200 -0
  113. package/docs/api/campaigns.d.ts +721 -0
  114. package/docs/api/campaigns.md +1236 -0
  115. package/docs/api/channels.d.ts +171 -0
  116. package/docs/api/channels.md +235 -0
  117. package/docs/api/cliCampaigns.d.ts +205 -0
  118. package/docs/api/cliCampaigns.md +256 -0
  119. package/docs/api/cliPipelines.d.ts +324 -0
  120. package/docs/api/cliPipelines.md +562 -0
  121. package/docs/api/clickHouse.d.ts +115 -0
  122. package/docs/api/clickHouse.md +138 -0
  123. package/docs/api/companies.d.ts +1636 -0
  124. package/docs/api/companies.md +2211 -0
  125. package/docs/api/companyIntelligence.d.ts +299 -0
  126. package/docs/api/companyIntelligence.md +488 -0
  127. package/docs/api/contacts.d.ts +2173 -0
  128. package/docs/api/contacts.md +3143 -0
  129. package/docs/api/content.d.ts +968 -0
  130. package/docs/api/content.md +1667 -0
  131. package/docs/api/contentGridSkills.d.ts +177 -0
  132. package/docs/api/contentGridSkills.md +271 -0
  133. package/docs/api/copilot.d.ts +1017 -0
  134. package/docs/api/copilot.md +1765 -0
  135. package/docs/api/crmSyncs.d.ts +215 -0
  136. package/docs/api/crmSyncs.md +301 -0
  137. package/docs/api/customerSuccess.d.ts +491 -0
  138. package/docs/api/customerSuccess.md +776 -0
  139. package/docs/api/deals.d.ts +1696 -0
  140. package/docs/api/deals.md +2432 -0
  141. package/docs/api/deliverability.d.ts +418 -0
  142. package/docs/api/deliverability.md +677 -0
  143. package/docs/api/desk.d.ts +1765 -0
  144. package/docs/api/desk.md +3007 -0
  145. package/docs/api/dialer.d.ts +1185 -0
  146. package/docs/api/dialer.md +2166 -0
  147. package/docs/api/dialerAnalytics.d.ts +187 -0
  148. package/docs/api/dialerAnalytics.md +257 -0
  149. package/docs/api/documents.d.ts +895 -0
  150. package/docs/api/documents.md +1440 -0
  151. package/docs/api/duplicates.d.ts +195 -0
  152. package/docs/api/duplicates.md +315 -0
  153. package/docs/api/eSign.d.ts +38 -0
  154. package/docs/api/eSign.md +54 -0
  155. package/docs/api/eSignature.d.ts +242 -0
  156. package/docs/api/eSignature.md +341 -0
  157. package/docs/api/enrichment.d.ts +3207 -0
  158. package/docs/api/enrichment.md +5225 -0
  159. package/docs/api/events.d.ts +115 -0
  160. package/docs/api/events.md +105 -0
  161. package/docs/api/fields.d.ts +482 -0
  162. package/docs/api/fields.md +566 -0
  163. package/docs/api/forms.d.ts +1012 -0
  164. package/docs/api/forms.md +1542 -0
  165. package/docs/api/gtmCampaigns.d.ts +662 -0
  166. package/docs/api/gtmCampaigns.md +1044 -0
  167. package/docs/api/gtmContext.d.ts +1187 -0
  168. package/docs/api/gtmContext.md +2112 -0
  169. package/docs/api/gtmDeliverability.d.ts +60 -0
  170. package/docs/api/gtmDeliverability.md +63 -0
  171. package/docs/api/gtmKnowledgeBase.d.ts +76 -0
  172. package/docs/api/gtmKnowledgeBase.md +91 -0
  173. package/docs/api/gtmLaunchHelpers.d.ts +123 -0
  174. package/docs/api/gtmLaunchHelpers.md +148 -0
  175. package/docs/api/gtmLibrary.d.ts +448 -0
  176. package/docs/api/gtmLibrary.md +780 -0
  177. package/docs/api/health.d.ts +39 -0
  178. package/docs/api/health.md +58 -0
  179. package/docs/api/imageLibrary.d.ts +341 -0
  180. package/docs/api/imageLibrary.md +569 -0
  181. package/docs/api/imports.d.ts +157 -0
  182. package/docs/api/imports.md +174 -0
  183. package/docs/api/inbox.d.ts +709 -0
  184. package/docs/api/inbox.md +1067 -0
  185. package/docs/api/install.d.ts +213 -0
  186. package/docs/api/install.md +317 -0
  187. package/docs/api/installedApps.d.ts +131 -0
  188. package/docs/api/installedApps.md +241 -0
  189. package/docs/api/integrationStatus.d.ts +142 -0
  190. package/docs/api/integrationStatus.md +205 -0
  191. package/docs/api/integrations.d.ts +2327 -0
  192. package/docs/api/integrations.md +3791 -0
  193. package/docs/api/intent.d.ts +482 -0
  194. package/docs/api/intent.md +858 -0
  195. package/docs/api/knowledge.d.ts +501 -0
  196. package/docs/api/knowledge.md +843 -0
  197. package/docs/api/knowledgeBase.d.ts +84 -0
  198. package/docs/api/knowledgeBase.md +96 -0
  199. package/docs/api/landingPages.d.ts +1411 -0
  200. package/docs/api/landingPages.md +2488 -0
  201. package/docs/api/leads.d.ts +133 -0
  202. package/docs/api/leads.md +180 -0
  203. package/docs/api/library.d.ts +217 -0
  204. package/docs/api/library.md +338 -0
  205. package/docs/api/linkedIn.d.ts +227 -0
  206. package/docs/api/linkedIn.md +289 -0
  207. package/docs/api/linkedInOutreach.d.ts +727 -0
  208. package/docs/api/linkedInOutreach.md +990 -0
  209. package/docs/api/lists.d.ts +1106 -0
  210. package/docs/api/lists.md +1609 -0
  211. package/docs/api/logs.d.ts +71 -0
  212. package/docs/api/logs.md +70 -0
  213. package/docs/api/mailboxes.d.ts +1050 -0
  214. package/docs/api/mailboxes.md +1690 -0
  215. package/docs/api/marketingIntelligence.d.ts +256 -0
  216. package/docs/api/marketingIntelligence.md +454 -0
  217. package/docs/api/marketplace.d.ts +3173 -0
  218. package/docs/api/marketplace.md +5953 -0
  219. package/docs/api/mcp.d.ts +69 -0
  220. package/docs/api/mcp.md +69 -0
  221. package/docs/api/me.d.ts +54 -0
  222. package/docs/api/me.md +56 -0
  223. package/docs/api/meetings.d.ts +539 -0
  224. package/docs/api/meetings.md +747 -0
  225. package/docs/api/newsletter.d.ts +1613 -0
  226. package/docs/api/newsletter.md +2746 -0
  227. package/docs/api/notes.d.ts +517 -0
  228. package/docs/api/notes.md +888 -0
  229. package/docs/api/notifications.d.ts +94 -0
  230. package/docs/api/notifications.md +105 -0
  231. package/docs/api/objects.d.ts +621 -0
  232. package/docs/api/objects.md +1098 -0
  233. package/docs/api/openSearch.d.ts +234 -0
  234. package/docs/api/openSearch.md +297 -0
  235. package/docs/api/ops.d.ts +299 -0
  236. package/docs/api/ops.md +339 -0
  237. package/docs/api/orgGovernance.d.ts +393 -0
  238. package/docs/api/orgGovernance.md +623 -0
  239. package/docs/api/orgVideos.d.ts +184 -0
  240. package/docs/api/orgVideos.md +252 -0
  241. package/docs/api/organizationSettings.d.ts +626 -0
  242. package/docs/api/organizationSettings.md +911 -0
  243. package/docs/api/phoneNumbers.d.ts +484 -0
  244. package/docs/api/phoneNumbers.md +777 -0
  245. package/docs/api/profile.d.ts +329 -0
  246. package/docs/api/profile.md +540 -0
  247. package/docs/api/programmaticPages.d.ts +400 -0
  248. package/docs/api/programmaticPages.md +626 -0
  249. package/docs/api/providerDomains.d.ts +866 -0
  250. package/docs/api/providerDomains.md +1446 -0
  251. package/docs/api/providerUsage.d.ts +129 -0
  252. package/docs/api/providerUsage.md +186 -0
  253. package/docs/api/public.d.ts +69 -0
  254. package/docs/api/public.md +78 -0
  255. package/docs/api/publicCopilot.d.ts +67 -0
  256. package/docs/api/publicCopilot.md +80 -0
  257. package/docs/api/publicSignals.d.ts +66 -0
  258. package/docs/api/publicSignals.md +71 -0
  259. package/docs/api/publicVisitors.d.ts +97 -0
  260. package/docs/api/publicVisitors.md +118 -0
  261. package/docs/api/quotes.d.ts +1564 -0
  262. package/docs/api/quotes.md +2553 -0
  263. package/docs/api/radar.d.ts +808 -0
  264. package/docs/api/radar.md +1431 -0
  265. package/docs/api/radarReports.d.ts +208 -0
  266. package/docs/api/radarReports.md +306 -0
  267. package/docs/api/recordRoles.d.ts +143 -0
  268. package/docs/api/recordRoles.md +175 -0
  269. package/docs/api/repos.d.ts +146 -0
  270. package/docs/api/repos.md +211 -0
  271. package/docs/api/research.d.ts +295 -0
  272. package/docs/api/research.md +534 -0
  273. package/docs/api/revenue.d.ts +402 -0
  274. package/docs/api/revenue.md +608 -0
  275. package/docs/api/revenueAnalytics.d.ts +147 -0
  276. package/docs/api/revenueAnalytics.md +212 -0
  277. package/docs/api/revenueLifecycle.d.ts +207 -0
  278. package/docs/api/revenueLifecycle.md +274 -0
  279. package/docs/api/revenueRecords.d.ts +372 -0
  280. package/docs/api/revenueRecords.md +563 -0
  281. package/docs/api/roles.d.ts +431 -0
  282. package/docs/api/roles.md +812 -0
  283. package/docs/api/salesCoach.d.ts +877 -0
  284. package/docs/api/salesCoach.md +1540 -0
  285. package/docs/api/sandbox.d.ts +210 -0
  286. package/docs/api/sandbox.md +380 -0
  287. package/docs/api/scans.d.ts +104 -0
  288. package/docs/api/scans.md +136 -0
  289. package/docs/api/scheduleBuy.d.ts +293 -0
  290. package/docs/api/scheduleBuy.md +431 -0
  291. package/docs/api/scraping.d.ts +266 -0
  292. package/docs/api/scraping.md +383 -0
  293. package/docs/api/sdrAnalytics.d.ts +138 -0
  294. package/docs/api/sdrAnalytics.md +246 -0
  295. package/docs/api/search.d.ts +598 -0
  296. package/docs/api/search.md +866 -0
  297. package/docs/api/seo.d.ts +447 -0
  298. package/docs/api/seo.md +660 -0
  299. package/docs/api/sequenceLifecycle.d.ts +439 -0
  300. package/docs/api/sequenceLifecycle.md +513 -0
  301. package/docs/api/sequences.d.ts +1936 -0
  302. package/docs/api/sequences.md +3232 -0
  303. package/docs/api/settings.d.ts +448 -0
  304. package/docs/api/settings.md +731 -0
  305. package/docs/api/signals.d.ts +1441 -0
  306. package/docs/api/signals.md +2526 -0
  307. package/docs/api/signatures.d.ts +719 -0
  308. package/docs/api/signatures.md +1247 -0
  309. package/docs/api/skills.d.ts +230 -0
  310. package/docs/api/skills.md +466 -0
  311. package/docs/api/snippet.d.ts +85 -0
  312. package/docs/api/snippet.md +106 -0
  313. package/docs/api/socialPublishing.d.ts +824 -0
  314. package/docs/api/socialPublishing.md +1245 -0
  315. package/docs/api/studioDocuments.d.ts +244 -0
  316. package/docs/api/studioDocuments.md +348 -0
  317. package/docs/api/support.d.ts +90 -0
  318. package/docs/api/support.md +76 -0
  319. package/docs/api/suppressions.d.ts +241 -0
  320. package/docs/api/suppressions.md +343 -0
  321. package/docs/api/surveys.d.ts +847 -0
  322. package/docs/api/surveys.md +1223 -0
  323. package/docs/api/tasks.d.ts +813 -0
  324. package/docs/api/tasks.md +1344 -0
  325. package/docs/api/teamMembers.d.ts +668 -0
  326. package/docs/api/teamMembers.md +1040 -0
  327. package/docs/api/teams.d.ts +784 -0
  328. package/docs/api/teams.md +1395 -0
  329. package/docs/api/usage.d.ts +277 -0
  330. package/docs/api/usage.md +389 -0
  331. package/docs/api/visitors.d.ts +690 -0
  332. package/docs/api/visitors.md +1075 -0
  333. package/docs/api/voice.d.ts +4661 -0
  334. package/docs/api/voice.md +7905 -0
  335. package/docs/api/webAnalytics.d.ts +964 -0
  336. package/docs/api/webAnalytics.md +1452 -0
  337. package/docs/api/webChat.d.ts +1704 -0
  338. package/docs/api/webChat.md +2048 -0
  339. package/docs/api/webhooks.d.ts +251 -0
  340. package/docs/api/webhooks.md +386 -0
  341. package/docs/api/websiteEditor.d.ts +324 -0
  342. package/docs/api/websiteEditor.md +517 -0
  343. package/docs/api/work.d.ts +2298 -0
  344. package/docs/api/work.md +3096 -0
  345. package/docs/api/workbench.d.ts +2962 -0
  346. package/docs/api/workbench.md +4884 -0
  347. package/docs/api/workflows.d.ts +1218 -0
  348. package/docs/api/workflows.md +2302 -0
  349. package/docs/sdk-clients.md +4339 -0
  350. package/package.json +10 -3
@@ -0,0 +1,1133 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.brandKit`: Brand Kit
4
+
5
+ 30 operations (17 read, 12 write, 1 destructive).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.brandKit.*` 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: [brandKit.d.ts](brandKit.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`createCustomLayoutTemplate`](#op-createcustomlayouttemplate) | `POST /api/v1/brand-kit/layout-templates/custom` | write | `campaigns:write` | Create Custom Layout Template |
26
+ | [`deleteBrandKitTemplates`](#op-deletebrandkittemplates) | `DELETE /api/v1/brand-kit/templates` | destructive | `campaigns:delete` | Delete Brand Kit Templates |
27
+ | [`getBrandKitHomepage`](#op-getbrandkithomepage) | `GET /api/v1/brand-kit/homepage` | read | `campaigns:read` | Get Brand Kit Homepage |
28
+ | [`getBrandKitOverview`](#op-getbrandkitoverview) | `GET /api/v1/brand-kit` | read | `campaigns:read` | Get Brand Kit Overview |
29
+ | [`getBrandKitTemplates`](#op-getbrandkittemplates) | `GET /api/v1/brand-kit/templates` | read | `campaigns:read` | Get Brand Kit Templates |
30
+ | [`getHomepageSections`](#op-gethomepagesections) | `GET /api/v1/brand-kit/sections` | read | `campaigns:read` | Get Homepage Sections |
31
+ | [`getLayoutSelections`](#op-getlayoutselections) | `GET /api/v1/brand-kit/layout-selections` | read | `campaigns:read` | Get Layout Selections |
32
+ | [`getLayoutTemplatesStatus`](#op-getlayouttemplatesstatus) | `GET /api/v1/brand-kit/layout-templates/status` | read | `campaigns:read` | Get Layout Templates Status |
33
+ | [`getNewsletterSelections`](#op-getnewsletterselections) | `GET /api/v1/brand-kit/newsletter-selections` | read | `campaigns:read` | Get Newsletter Selections |
34
+ | [`getNewsletterTemplatesStatus`](#op-getnewslettertemplatesstatus) | `GET /api/v1/brand-kit/newsletter-templates/status` | read | `campaigns:read` | Get Newsletter Templates Status |
35
+ | [`getSectionLibrary`](#op-getsectionlibrary) | `GET /api/v1/brand-kit/section-library` | read | `campaigns:read` | Get Section Library |
36
+ | [`getSectionLibraryItem`](#op-getsectionlibraryitem) | `GET /api/v1/brand-kit/section-library/{section_id}` | read | `campaigns:read` | Get Section Library Item |
37
+ | [`getSectionTagOverrides`](#op-getsectiontagoverrides) | `GET /api/v1/brand-kit/section-tag-overrides` | read | `campaigns:read` | Get Section Tag Overrides |
38
+ | [`getTemplateGenerationStatus`](#op-gettemplategenerationstatus) | `GET /api/v1/brand-kit/templates/status` | read | `campaigns:read` | Get Template Generation Status |
39
+ | [`improveCustomTemplateIdea`](#op-improvecustomtemplateidea) | `POST /api/v1/brand-kit/layout-templates/improve-idea` | write | `campaigns:write` | Improve Custom Template Idea |
40
+ | [`listArchetypes`](#op-listarchetypes) | `GET /api/v1/brand-kit/archetypes` | read | `campaigns:read` | List Archetypes |
41
+ | [`listCandidatePagesForSectionLibrary`](#op-listcandidatepagesforsectionlibrary) | `GET /api/v1/brand-kit/section-library/candidate-pages` | read | `campaigns:read` | List Candidate Pages For Section Library |
42
+ | [`listCustomLayoutTemplates`](#op-listcustomlayouttemplates) | `GET /api/v1/brand-kit/layout-templates/custom` | read | `campaigns:read` | List Custom Layout Templates |
43
+ | [`listNewsletterArchetypes`](#op-listnewsletterarchetypes) | `GET /api/v1/brand-kit/newsletter-archetypes` | read | `campaigns:read` | List Newsletter Archetypes |
44
+ | [`listNewsletterTemplates`](#op-listnewslettertemplates) | `GET /api/v1/brand-kit/newsletter-templates` | read | `campaigns:read` | List Newsletter Templates |
45
+ | [`planCustomTemplate`](#op-plancustomtemplate) | `POST /api/v1/brand-kit/layout-templates/custom/plan` | write | `campaigns:write` | Plan Custom Template |
46
+ | [`rebuildSectionLibrary`](#op-rebuildsectionlibrary) | `POST /api/v1/brand-kit/section-library/rebuild` | write | `campaigns:write` | Rebuild Section Library |
47
+ | [`recaptureHomepageHtml`](#op-recapturehomepagehtml) | `POST /api/v1/brand-kit/homepage/recapture` | write | `campaigns:write` | Recapture Homepage Html |
48
+ | [`regenerateCustomLayoutTemplate`](#op-regeneratecustomlayouttemplate) | `POST /api/v1/brand-kit/layout-templates/custom/{landing_page_id}/regenerate` | write | `campaigns:write` | Regenerate Custom Layout Template |
49
+ | [`regenerateLayoutTemplates`](#op-regeneratelayouttemplates) | `POST /api/v1/brand-kit/layout-templates/regenerate` | write | `campaigns:write` | Regenerate Layout Templates |
50
+ | [`regenerateNewsletterTemplates`](#op-regeneratenewslettertemplates) | `POST /api/v1/brand-kit/newsletter-templates/regenerate` | write | `campaigns:write` | Regenerate Newsletter Templates |
51
+ | [`saveLayoutSelections`](#op-savelayoutselections) | `PUT /api/v1/brand-kit/layout-selections` | write | `campaigns:write` | Save Layout Selections |
52
+ | [`saveNewsletterSelections`](#op-savenewsletterselections) | `PUT /api/v1/brand-kit/newsletter-selections` | write | `campaigns:write` | Save Newsletter Selections |
53
+ | [`saveSectionTagOverrides`](#op-savesectiontagoverrides) | `PUT /api/v1/brand-kit/section-tag-overrides` | write | `campaigns:write` | Save Section Tag Overrides |
54
+ | [`triggerBrandExtraction`](#op-triggerbrandextraction) | `POST /api/v1/brand-kit/extract` | write | `campaigns:write` | Trigger Brand Extraction |
55
+
56
+ ---
57
+
58
+ <a id="op-createcustomlayouttemplate"></a>
59
+
60
+ ### `g8.api.brandKit.createCustomLayoutTemplate(input)`
61
+
62
+ **Create Custom Layout Template**
63
+
64
+ - HTTP: `POST /api/v1/brand-kit/layout-templates/custom`
65
+ - operationId: `create_custom_layout_template_brand_kit_layout_templates_custom_post` (also callable as `g8.api.call("create_custom_layout_template_brand_kit_layout_templates_custom_post", input)`)
66
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
67
+ - API-key scope: `campaigns:write`
68
+
69
+ Queue one landing page template built from a plain-language idea.
70
+
71
+ Pass the `plan` returned by `/layout-templates/custom/plan` to build the
72
+ page you previewed; omit it and the idea is re-interpreted from scratch,
73
+ which will not match the preview.
74
+
75
+ `attached_assets` are MANDATORY inclusions, not suggestions - the generated
76
+ page uses them. Capped at 5 images and 2 videos.
77
+
78
+ **Input**
79
+
80
+ | Field | Type | Required | Description |
81
+ |---|---|---|---|
82
+ | `body` | `CustomLayoutTemplateRequest` | yes | Request body; fields below. |
83
+
84
+ Body fields (`CustomLayoutTemplateRequest`):
85
+
86
+ | Field | Type | Required | Description |
87
+ |---|---|---|---|
88
+ | `body.idea` | `string` | yes | Plain-language description of the page to build. |
89
+ | `body.attached_assets` | `Array<AttachedAsset>` | no | Images and videos the page must use. Max 5 images and 2 videos. |
90
+ | `body.name` | `string \| null` | no | Short title. Derived from the idea when omitted. |
91
+ | `body.plan` | `LpPlan \| null` | no | An approved plan from the plan-preview step. |
92
+
93
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
94
+
95
+ Other envelope fields: `pagination` (PaginationMeta).
96
+
97
+ **Example**
98
+
99
+ ```ts
100
+ const result = await g8.api.brandKit.createCustomLayoutTemplate({ body: { idea: "example" } });
101
+ ```
102
+
103
+ ---
104
+
105
+ <a id="op-deletebrandkittemplates"></a>
106
+
107
+ ### `g8.api.brandKit.deleteBrandKitTemplates(input?)`
108
+
109
+ **Delete Brand Kit Templates**
110
+
111
+ - HTTP: `DELETE /api/v1/brand-kit/templates`
112
+ - operationId: `delete_brand_kit_templates_brand_kit_templates_delete` (also callable as `g8.api.call("delete_brand_kit_templates_brand_kit_templates_delete", input)`)
113
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
114
+ - API-key scope: `campaigns:delete`
115
+
116
+ Delete org-level templates so they can be regenerated.
117
+
118
+ OMITTING `source` DELETES BOTH KINDS. Not reversible, and a campaign built
119
+ on a deleted template keeps its own copy - this removes the org-level
120
+ original, not the pages already made from it.
121
+
122
+ **Input**
123
+
124
+ | Field | Type | Required | Description |
125
+ |---|---|---|---|
126
+ | `query.source` | `string \| null` | no | `layout_archetype` for templates built from a chosen archetype, `homepage` for the one cloned from the org's own site. Omit for both. |
127
+
128
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
129
+
130
+ Other envelope fields: `pagination` (PaginationMeta).
131
+
132
+ **Example**
133
+
134
+ ```ts
135
+ // destructive: deletes or archives data; confirm with a human before calling.
136
+ const result = await g8.api.brandKit.deleteBrandKitTemplates();
137
+ ```
138
+
139
+ ---
140
+
141
+ <a id="op-getbrandkithomepage"></a>
142
+
143
+ ### `g8.api.brandKit.getBrandKitHomepage(input?)`
144
+
145
+ **Get Brand Kit Homepage**
146
+
147
+ - HTTP: `GET /api/v1/brand-kit/homepage`
148
+ - operationId: `get_brand_kit_homepage_brand_kit_homepage_get` (also callable as `g8.api.call("get_brand_kit_homepage_brand_kit_homepage_get", input)`)
149
+ - Tier: `read`: reads data; safe to call and to retry
150
+ - API-key scope: `campaigns:read`
151
+
152
+ The cloned homepage HTML captured during brand extraction.
153
+
154
+ This is the raw source everything else here is derived from. It can be
155
+ large - a real homepage with inlined CSS - so prefer `/brand-kit/sections`
156
+ when you want the structure rather than the bytes.
157
+
158
+ **Input**: none.
159
+
160
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
161
+
162
+ Other envelope fields: `pagination` (PaginationMeta).
163
+
164
+ **Example**
165
+
166
+ ```ts
167
+ const result = await g8.api.brandKit.getBrandKitHomepage();
168
+ ```
169
+
170
+ ---
171
+
172
+ <a id="op-getbrandkitoverview"></a>
173
+
174
+ ### `g8.api.brandKit.getBrandKitOverview(input?)`
175
+
176
+ **Get Brand Kit Overview**
177
+
178
+ - HTTP: `GET /api/v1/brand-kit`
179
+ - operationId: `get_brand_kit_overview_brand_kit_get` (also callable as `g8.api.call("get_brand_kit_overview_brand_kit_get", input)`)
180
+ - Tier: `read`: reads data; safe to call and to retry
181
+ - API-key scope: `campaigns:read`
182
+
183
+ Everything the Brand Kit knows about this organisation, in one read.
184
+
185
+ Design tokens, the measured colour palette, fonts, whether a homepage has
186
+ been captured and whether templates have been built. The orientation call:
187
+ read this first to find out which of the other routes there is any point
188
+ calling.
189
+
190
+ **Input**: none.
191
+
192
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
193
+
194
+ Other envelope fields: `pagination` (PaginationMeta).
195
+
196
+ **Example**
197
+
198
+ ```ts
199
+ const result = await g8.api.brandKit.getBrandKitOverview();
200
+ ```
201
+
202
+ ---
203
+
204
+ <a id="op-getbrandkittemplates"></a>
205
+
206
+ ### `g8.api.brandKit.getBrandKitTemplates(input?)`
207
+
208
+ **Get Brand Kit Templates**
209
+
210
+ - HTTP: `GET /api/v1/brand-kit/templates`
211
+ - operationId: `get_brand_kit_templates_brand_kit_templates_get` (also callable as `g8.api.call("get_brand_kit_templates_brand_kit_templates_get", input)`)
212
+ - Tier: `read`: reads data; safe to call and to retry
213
+ - API-key scope: `campaigns:read`
214
+
215
+ The org-level landing page templates a campaign can be built on.
216
+
217
+ **Input**
218
+
219
+ | Field | Type | Required | Description |
220
+ |---|---|---|---|
221
+ | `query.source` | `string \| null` | no | `layout_archetype` for templates built from a chosen archetype, `homepage` for the one cloned from the org's own site. Omit for both. |
222
+
223
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
224
+
225
+ Other envelope fields: `pagination` (PaginationMeta).
226
+
227
+ `StudioListPayload` fields:
228
+
229
+ | Field | Type | Required | Description |
230
+ |---|---|---|---|
231
+ | `items` | `Array<unknown>` | no | |
232
+
233
+ **Example**
234
+
235
+ ```ts
236
+ const result = await g8.api.brandKit.getBrandKitTemplates();
237
+ ```
238
+
239
+ ---
240
+
241
+ <a id="op-gethomepagesections"></a>
242
+
243
+ ### `g8.api.brandKit.getHomepageSections(input?)`
244
+
245
+ **Get Homepage Sections**
246
+
247
+ - HTTP: `GET /api/v1/brand-kit/sections`
248
+ - operationId: `get_homepage_sections_brand_kit_sections_get` (also callable as `g8.api.call("get_homepage_sections_brand_kit_sections_get", input)`)
249
+ - Tier: `read`: reads data; safe to call and to retry
250
+ - API-key scope: `campaigns:read`
251
+
252
+ The homepage broken into its visual sections.
253
+
254
+ Derived live from the stored capture, so it changes when the capture does
255
+ and nothing needs rebuilding. The durable, multi-page version is
256
+ `/brand-kit/section-library`.
257
+
258
+ **Input**: none.
259
+
260
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
261
+
262
+ Other envelope fields: `pagination` (PaginationMeta).
263
+
264
+ `StudioListPayload` fields:
265
+
266
+ | Field | Type | Required | Description |
267
+ |---|---|---|---|
268
+ | `items` | `Array<unknown>` | no | |
269
+
270
+ **Example**
271
+
272
+ ```ts
273
+ const result = await g8.api.brandKit.getHomepageSections();
274
+ ```
275
+
276
+ ---
277
+
278
+ <a id="op-getlayoutselections"></a>
279
+
280
+ ### `g8.api.brandKit.getLayoutSelections(input?)`
281
+
282
+ **Get Layout Selections**
283
+
284
+ - HTTP: `GET /api/v1/brand-kit/layout-selections`
285
+ - operationId: `get_layout_selections_brand_kit_layout_selections_get` (also callable as `g8.api.call("get_layout_selections_brand_kit_layout_selections_get", input)`)
286
+ - Tier: `read`: reads data; safe to call and to retry
287
+ - API-key scope: `campaigns:read`
288
+
289
+ Which layout archetypes this organisation has chosen.
290
+
291
+ **Input**: none.
292
+
293
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
294
+
295
+ Other envelope fields: `pagination` (PaginationMeta).
296
+
297
+ **Example**
298
+
299
+ ```ts
300
+ const result = await g8.api.brandKit.getLayoutSelections();
301
+ ```
302
+
303
+ ---
304
+
305
+ <a id="op-getlayouttemplatesstatus"></a>
306
+
307
+ ### `g8.api.brandKit.getLayoutTemplatesStatus(input?)`
308
+
309
+ **Get Layout Templates Status**
310
+
311
+ - HTTP: `GET /api/v1/brand-kit/layout-templates/status`
312
+ - operationId: `get_layout_templates_status_brand_kit_layout_templates_status_get` (also callable as `g8.api.call("get_layout_templates_status_brand_kit_layout_templates_status_get", input)`)
313
+ - Tier: `read`: reads data; safe to call and to retry
314
+ - API-key scope: `campaigns:read`
315
+
316
+ Per-archetype template build progress.
317
+
318
+ **Input**: none.
319
+
320
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
321
+
322
+ Other envelope fields: `pagination` (PaginationMeta).
323
+
324
+ **Example**
325
+
326
+ ```ts
327
+ const result = await g8.api.brandKit.getLayoutTemplatesStatus();
328
+ ```
329
+
330
+ ---
331
+
332
+ <a id="op-getnewsletterselections"></a>
333
+
334
+ ### `g8.api.brandKit.getNewsletterSelections(input?)`
335
+
336
+ **Get Newsletter Selections**
337
+
338
+ - HTTP: `GET /api/v1/brand-kit/newsletter-selections`
339
+ - operationId: `get_newsletter_selections_brand_kit_newsletter_selections_get` (also callable as `g8.api.call("get_newsletter_selections_brand_kit_newsletter_selections_get", input)`)
340
+ - Tier: `read`: reads data; safe to call and to retry
341
+ - API-key scope: `campaigns:read`
342
+
343
+ Which newsletter archetypes this organisation has chosen.
344
+
345
+ **Input**: none.
346
+
347
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
348
+
349
+ Other envelope fields: `pagination` (PaginationMeta).
350
+
351
+ **Example**
352
+
353
+ ```ts
354
+ const result = await g8.api.brandKit.getNewsletterSelections();
355
+ ```
356
+
357
+ ---
358
+
359
+ <a id="op-getnewslettertemplatesstatus"></a>
360
+
361
+ ### `g8.api.brandKit.getNewsletterTemplatesStatus(input?)`
362
+
363
+ **Get Newsletter Templates Status**
364
+
365
+ - HTTP: `GET /api/v1/brand-kit/newsletter-templates/status`
366
+ - operationId: `get_newsletter_templates_status_brand_kit_newsletter_templates_status_get` (also callable as `g8.api.call("get_newsletter_templates_status_brand_kit_newsletter_templates_status_get", input)`)
367
+ - Tier: `read`: reads data; safe to call and to retry
368
+ - API-key scope: `campaigns:read`
369
+
370
+ Per-archetype newsletter template build progress.
371
+
372
+ **Input**: none.
373
+
374
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
375
+
376
+ Other envelope fields: `pagination` (PaginationMeta).
377
+
378
+ **Example**
379
+
380
+ ```ts
381
+ const result = await g8.api.brandKit.getNewsletterTemplatesStatus();
382
+ ```
383
+
384
+ ---
385
+
386
+ <a id="op-getsectionlibrary"></a>
387
+
388
+ ### `g8.api.brandKit.getSectionLibrary(input?)`
389
+
390
+ **Get Section Library**
391
+
392
+ - HTTP: `GET /api/v1/brand-kit/section-library`
393
+ - operationId: `get_section_library_brand_kit_section_library_get` (also callable as `g8.api.call("get_section_library_brand_kit_section_library_get", input)`)
394
+ - Tier: `read`: reads data; safe to call and to retry
395
+ - API-key scope: `campaigns:read`
396
+
397
+ Every section in the org's library, across all crawled pages.
398
+
399
+ **Input**
400
+
401
+ | Field | Type | Required | Description |
402
+ |---|---|---|---|
403
+ | `query.include_code` | `boolean` | no | Include each section's full HTML and CSS. Off by default because the response is an order of magnitude larger with it on - use the detail route for a single preview, and this only for a bulk export. default `false` |
404
+
405
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
406
+
407
+ Other envelope fields: `pagination` (PaginationMeta).
408
+
409
+ `StudioListPayload` fields:
410
+
411
+ | Field | Type | Required | Description |
412
+ |---|---|---|---|
413
+ | `items` | `Array<unknown>` | no | |
414
+
415
+ **Example**
416
+
417
+ ```ts
418
+ const result = await g8.api.brandKit.getSectionLibrary();
419
+ ```
420
+
421
+ ---
422
+
423
+ <a id="op-getsectionlibraryitem"></a>
424
+
425
+ ### `g8.api.brandKit.getSectionLibraryItem(input)`
426
+
427
+ **Get Section Library Item**
428
+
429
+ - HTTP: `GET /api/v1/brand-kit/section-library/{section_id}`
430
+ - operationId: `get_section_library_item_brand_kit_section_library__section_id__get` (also callable as `g8.api.call("get_section_library_item_brand_kit_section_library__section_id__get", input)`)
431
+ - Tier: `read`: reads data; safe to call and to retry
432
+ - API-key scope: `campaigns:read`
433
+
434
+ One section, with self-contained HTML ready to render in an iframe.
435
+
436
+ Self-contained means the CSS travels with it - this is the preview call,
437
+ and the reason `include_code` is off on the list route.
438
+
439
+ **Input**
440
+
441
+ | Field | Type | Required | Description |
442
+ |---|---|---|---|
443
+ | `path.section_id` | `string` | yes | Section id. |
444
+
445
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
446
+
447
+ Other envelope fields: `pagination` (PaginationMeta).
448
+
449
+ **Example**
450
+
451
+ ```ts
452
+ const result = await g8.api.brandKit.getSectionLibraryItem({ path: { section_id: "id" } });
453
+ ```
454
+
455
+ ---
456
+
457
+ <a id="op-getsectiontagoverrides"></a>
458
+
459
+ ### `g8.api.brandKit.getSectionTagOverrides(input?)`
460
+
461
+ **Get Section Tag Overrides**
462
+
463
+ - HTTP: `GET /api/v1/brand-kit/section-tag-overrides`
464
+ - operationId: `get_section_tag_overrides_brand_kit_section_tag_overrides_get` (also callable as `g8.api.call("get_section_tag_overrides_brand_kit_section_tag_overrides_get", input)`)
465
+ - Tier: `read`: reads data; safe to call and to retry
466
+ - API-key scope: `campaigns:read`
467
+
468
+ Durable per-section tag and category overrides.
469
+
470
+ Tags are derived automatically; these are the corrections that survive a
471
+ rebuild. Without them, every rebuild re-derives the same wrong tag.
472
+
473
+ **Input**: none.
474
+
475
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
476
+
477
+ Other envelope fields: `pagination` (PaginationMeta).
478
+
479
+ **Example**
480
+
481
+ ```ts
482
+ const result = await g8.api.brandKit.getSectionTagOverrides();
483
+ ```
484
+
485
+ ---
486
+
487
+ <a id="op-gettemplategenerationstatus"></a>
488
+
489
+ ### `g8.api.brandKit.getTemplateGenerationStatus(input?)`
490
+
491
+ **Get Template Generation Status**
492
+
493
+ - HTTP: `GET /api/v1/brand-kit/templates/status`
494
+ - operationId: `get_template_generation_status_brand_kit_templates_status_get` (also callable as `g8.api.call("get_template_generation_status_brand_kit_templates_status_get", input)`)
495
+ - Tier: `read`: reads data; safe to call and to retry
496
+ - API-key scope: `campaigns:read`
497
+
498
+ Whether template generation is running, finished or failed.
499
+
500
+ **Input**: none.
501
+
502
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
503
+
504
+ Other envelope fields: `pagination` (PaginationMeta).
505
+
506
+ **Example**
507
+
508
+ ```ts
509
+ const result = await g8.api.brandKit.getTemplateGenerationStatus();
510
+ ```
511
+
512
+ ---
513
+
514
+ <a id="op-improvecustomtemplateidea"></a>
515
+
516
+ ### `g8.api.brandKit.improveCustomTemplateIdea(input)`
517
+
518
+ **Improve Custom Template Idea**
519
+
520
+ - HTTP: `POST /api/v1/brand-kit/layout-templates/improve-idea`
521
+ - operationId: `improve_custom_template_idea_brand_kit_layout_templates_improve_idea_post` (also callable as `g8.api.call("improve_custom_template_idea_brand_kit_layout_templates_improve_idea_post", input)`)
522
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
523
+ - API-key scope: `campaigns:write`
524
+
525
+ Rewrite a one-line idea into a fuller brief. Changes nothing.
526
+
527
+ **Input**
528
+
529
+ | Field | Type | Required | Description |
530
+ |---|---|---|---|
531
+ | `body` | `ImproveIdeaRequest` | yes | Request body; fields below. |
532
+
533
+ Body fields (`ImproveIdeaRequest`):
534
+
535
+ | Field | Type | Required | Description |
536
+ |---|---|---|---|
537
+ | `body.idea` | `string` | yes | The raw idea to rewrite into a fuller brief. |
538
+
539
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
540
+
541
+ Other envelope fields: `pagination` (PaginationMeta).
542
+
543
+ **Example**
544
+
545
+ ```ts
546
+ const result = await g8.api.brandKit.improveCustomTemplateIdea({ body: { idea: "example" } });
547
+ ```
548
+
549
+ ---
550
+
551
+ <a id="op-listarchetypes"></a>
552
+
553
+ ### `g8.api.brandKit.listArchetypes(input?)`
554
+
555
+ **List Archetypes**
556
+
557
+ - HTTP: `GET /api/v1/brand-kit/archetypes`
558
+ - operationId: `list_archetypes_brand_kit_archetypes_get` (also callable as `g8.api.call("list_archetypes_brand_kit_archetypes_get", input)`)
559
+ - Tier: `read`: reads data; safe to call and to retry
560
+ - API-key scope: `campaigns:read`
561
+
562
+ The catalogue of landing page layout archetypes.
563
+
564
+ GLOBAL, not per-organisation: the same catalogue for everyone. Your org's
565
+ picks from it are `/brand-kit/layout-selections`.
566
+
567
+ **Input**: none.
568
+
569
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
570
+
571
+ Other envelope fields: `pagination` (PaginationMeta).
572
+
573
+ `StudioListPayload` fields:
574
+
575
+ | Field | Type | Required | Description |
576
+ |---|---|---|---|
577
+ | `items` | `Array<unknown>` | no | |
578
+
579
+ **Example**
580
+
581
+ ```ts
582
+ const result = await g8.api.brandKit.listArchetypes();
583
+ ```
584
+
585
+ ---
586
+
587
+ <a id="op-listcandidatepagesforsectionlibrary"></a>
588
+
589
+ ### `g8.api.brandKit.listCandidatePagesForSectionLibrary(input?)`
590
+
591
+ **List Candidate Pages For Section Library**
592
+
593
+ - HTTP: `GET /api/v1/brand-kit/section-library/candidate-pages`
594
+ - operationId: `list_candidate_pages_for_section_library_brand_kit_section_library_candidate_pages_get` (also callable as `g8.api.call("list_candidate_pages_for_section_library_brand_kit_section_library_candidate_pages_get", input)`)
595
+ - Tier: `read`: reads data; safe to call and to retry
596
+ - API-key scope: `campaigns:read`
597
+
598
+ The pages a rebuild could draw sections from.
599
+
600
+ Declared BEFORE `/section-library/{section_id}`. The app declares them the
601
+ other way round, so in the app this path is matched by the detail route and
602
+ resolves a section id of "candidate-pages" instead. Read this to choose
603
+ `page_urls` for a rebuild.
604
+
605
+ **Input**: none.
606
+
607
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
608
+
609
+ Other envelope fields: `pagination` (PaginationMeta).
610
+
611
+ `StudioListPayload` fields:
612
+
613
+ | Field | Type | Required | Description |
614
+ |---|---|---|---|
615
+ | `items` | `Array<unknown>` | no | |
616
+
617
+ **Example**
618
+
619
+ ```ts
620
+ const result = await g8.api.brandKit.listCandidatePagesForSectionLibrary();
621
+ ```
622
+
623
+ ---
624
+
625
+ <a id="op-listcustomlayouttemplates"></a>
626
+
627
+ ### `g8.api.brandKit.listCustomLayoutTemplates(input?)`
628
+
629
+ **List Custom Layout Templates**
630
+
631
+ - HTTP: `GET /api/v1/brand-kit/layout-templates/custom`
632
+ - operationId: `list_custom_layout_templates_brand_kit_layout_templates_custom_get` (also callable as `g8.api.call("list_custom_layout_templates_brand_kit_layout_templates_custom_get", input)`)
633
+ - Tier: `read`: reads data; safe to call and to retry
634
+ - API-key scope: `campaigns:read`
635
+
636
+ The idea-driven templates already built for this organisation.
637
+
638
+ **Input**: none.
639
+
640
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
641
+
642
+ Other envelope fields: `pagination` (PaginationMeta).
643
+
644
+ `StudioListPayload` fields:
645
+
646
+ | Field | Type | Required | Description |
647
+ |---|---|---|---|
648
+ | `items` | `Array<unknown>` | no | |
649
+
650
+ **Example**
651
+
652
+ ```ts
653
+ const result = await g8.api.brandKit.listCustomLayoutTemplates();
654
+ ```
655
+
656
+ ---
657
+
658
+ <a id="op-listnewsletterarchetypes"></a>
659
+
660
+ ### `g8.api.brandKit.listNewsletterArchetypes(input?)`
661
+
662
+ **List Newsletter Archetypes**
663
+
664
+ - HTTP: `GET /api/v1/brand-kit/newsletter-archetypes`
665
+ - operationId: `list_newsletter_archetypes_brand_kit_newsletter_archetypes_get` (also callable as `g8.api.call("list_newsletter_archetypes_brand_kit_newsletter_archetypes_get", input)`)
666
+ - Tier: `read`: reads data; safe to call and to retry
667
+ - API-key scope: `campaigns:read`
668
+
669
+ The catalogue of newsletter archetypes. GLOBAL, not per-organisation.
670
+
671
+ **Input**: none.
672
+
673
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
674
+
675
+ Other envelope fields: `pagination` (PaginationMeta).
676
+
677
+ `StudioListPayload` fields:
678
+
679
+ | Field | Type | Required | Description |
680
+ |---|---|---|---|
681
+ | `items` | `Array<unknown>` | no | |
682
+
683
+ **Example**
684
+
685
+ ```ts
686
+ const result = await g8.api.brandKit.listNewsletterArchetypes();
687
+ ```
688
+
689
+ ---
690
+
691
+ <a id="op-listnewslettertemplates"></a>
692
+
693
+ ### `g8.api.brandKit.listNewsletterTemplates(input?)`
694
+
695
+ **List Newsletter Templates**
696
+
697
+ - HTTP: `GET /api/v1/brand-kit/newsletter-templates`
698
+ - operationId: `list_newsletter_templates_brand_kit_newsletter_templates_get` (also callable as `g8.api.call("list_newsletter_templates_brand_kit_newsletter_templates_get", input)`)
699
+ - Tier: `read`: reads data; safe to call and to retry
700
+ - API-key scope: `campaigns:read`
701
+
702
+ The newsletter templates built from this org's Brand Kit picks.
703
+
704
+ **Input**: none.
705
+
706
+ **Returns** `ApiResponse_StudioListPayload_`: the envelope `{ data: StudioListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
707
+
708
+ Other envelope fields: `pagination` (PaginationMeta).
709
+
710
+ `StudioListPayload` fields:
711
+
712
+ | Field | Type | Required | Description |
713
+ |---|---|---|---|
714
+ | `items` | `Array<unknown>` | no | |
715
+
716
+ **Example**
717
+
718
+ ```ts
719
+ const result = await g8.api.brandKit.listNewsletterTemplates();
720
+ ```
721
+
722
+ ---
723
+
724
+ <a id="op-plancustomtemplate"></a>
725
+
726
+ ### `g8.api.brandKit.planCustomTemplate(input)`
727
+
728
+ **Plan Custom Template**
729
+
730
+ - HTTP: `POST /api/v1/brand-kit/layout-templates/custom/plan`
731
+ - operationId: `plan_custom_template_brand_kit_layout_templates_custom_plan_post` (also callable as `g8.api.call("plan_custom_template_brand_kit_layout_templates_custom_plan_post", input)`)
732
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
733
+ - API-key scope: `campaigns:write`
734
+
735
+ Preview the section plan for an idea. Builds nothing, stores nothing.
736
+
737
+ The review step: it returns the plan a build WOULD follow, so the plan can
738
+ be edited and handed back to `POST /layout-templates/custom` instead of
739
+ discovering the interpretation was wrong after the page exists.
740
+
741
+ **Input**
742
+
743
+ | Field | Type | Required | Description |
744
+ |---|---|---|---|
745
+ | `body` | `CustomTemplatePlanRequest` | yes | Request body; fields below. |
746
+
747
+ Body fields (`CustomTemplatePlanRequest`):
748
+
749
+ | Field | Type | Required | Description |
750
+ |---|---|---|---|
751
+ | `body.idea` | `string` | yes | Plain-language description of the page to plan. |
752
+ | `body.attached_assets` | `Array<AttachedAsset>` | no | Images and videos the plan must place. |
753
+ | `body.name` | `string \| null` | no | Short title. |
754
+
755
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
756
+
757
+ Other envelope fields: `pagination` (PaginationMeta).
758
+
759
+ **Example**
760
+
761
+ ```ts
762
+ const result = await g8.api.brandKit.planCustomTemplate({ body: { idea: "example" } });
763
+ ```
764
+
765
+ ---
766
+
767
+ <a id="op-rebuildsectionlibrary"></a>
768
+
769
+ ### `g8.api.brandKit.rebuildSectionLibrary(input?)`
770
+
771
+ **Rebuild Section Library**
772
+
773
+ - HTTP: `POST /api/v1/brand-kit/section-library/rebuild`
774
+ - operationId: `rebuild_section_library_brand_kit_section_library_rebuild_post` (also callable as `g8.api.call("rebuild_section_library_brand_kit_section_library_rebuild_post", input)`)
775
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
776
+ - API-key scope: `campaigns:write`
777
+
778
+ Rebuild the section library. REPLACES what is there.
779
+
780
+ The two overrides are not interchangeable: `page_urls` REPLACES the
781
+ automatic page selection, `extra_page_urls` ADDS to it. Send neither to let
782
+ the picker choose. Asynchronous.
783
+
784
+ **Input**
785
+
786
+ | Field | Type | Required | Description |
787
+ |---|---|---|---|
788
+ | `body` | `SectionLibraryRebuildRequest \| null` | no | Request body; fields below. |
789
+
790
+ Body fields:
791
+
792
+ | Field | Type | Required | Description |
793
+ |---|---|---|---|
794
+ | `body.extra_page_urls` | `Array<string> \| null` | no | Add these pages to whatever the picker chose. |
795
+ | `body.page_urls` | `Array<string> \| null` | no | Replace the automatic page selection with exactly these pages. |
796
+
797
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
798
+
799
+ Other envelope fields: `pagination` (PaginationMeta).
800
+
801
+ **Example**
802
+
803
+ ```ts
804
+ const result = await g8.api.brandKit.rebuildSectionLibrary();
805
+ ```
806
+
807
+ ---
808
+
809
+ <a id="op-recapturehomepagehtml"></a>
810
+
811
+ ### `g8.api.brandKit.recaptureHomepageHtml(input?)`
812
+
813
+ **Recapture Homepage Html**
814
+
815
+ - HTTP: `POST /api/v1/brand-kit/homepage/recapture`
816
+ - operationId: `recapture_homepage_html_brand_kit_homepage_recapture_post` (also callable as `g8.api.call("recapture_homepage_html_brand_kit_homepage_recapture_post", input)`)
817
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
818
+ - API-key scope: `campaigns:write`
819
+
820
+ Re-capture the homepage for full CSS fidelity.
821
+
822
+ REPLACES the stored capture. Reaches an external scraping provider, so it
823
+ is slower and costlier than anything else here - run it when the customer's
824
+ site has actually changed, not as a refresh.
825
+
826
+ **Input**: none.
827
+
828
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
829
+
830
+ Other envelope fields: `pagination` (PaginationMeta).
831
+
832
+ **Example**
833
+
834
+ ```ts
835
+ const result = await g8.api.brandKit.recaptureHomepageHtml();
836
+ ```
837
+
838
+ ---
839
+
840
+ <a id="op-regeneratecustomlayouttemplate"></a>
841
+
842
+ ### `g8.api.brandKit.regenerateCustomLayoutTemplate(input)`
843
+
844
+ **Regenerate Custom Layout Template**
845
+
846
+ - HTTP: `POST /api/v1/brand-kit/layout-templates/custom/{landing_page_id}/regenerate`
847
+ - operationId: `regenerate_custom_layout_template_brand_kit_layout_templates_custom__landing_page_id__regenerate_post` (also callable as `g8.api.call("regenerate_custom_layout_template_brand_kit_layout_templates_custom__landing_page_id__regenerate_post", input)`)
848
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
849
+ - API-key scope: `campaigns:write`
850
+
851
+ Re-run a custom build with the same idea. REPLACES the template.
852
+
853
+ **Input**
854
+
855
+ | Field | Type | Required | Description |
856
+ |---|---|---|---|
857
+ | `path.landing_page_id` | `string` | yes | The custom template to rebuild. |
858
+ | `query.clear_plan` | `boolean` | no | Discard the stored plan and re-derive one from the original idea. Leave false to rebuild against the plan that was approved. default `false` |
859
+
860
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
861
+
862
+ Other envelope fields: `pagination` (PaginationMeta).
863
+
864
+ **Example**
865
+
866
+ ```ts
867
+ const result = await g8.api.brandKit.regenerateCustomLayoutTemplate({ path: { landing_page_id: "id" } });
868
+ ```
869
+
870
+ ---
871
+
872
+ <a id="op-regeneratelayouttemplates"></a>
873
+
874
+ ### `g8.api.brandKit.regenerateLayoutTemplates(input?)`
875
+
876
+ **Regenerate Layout Templates**
877
+
878
+ - HTTP: `POST /api/v1/brand-kit/layout-templates/regenerate`
879
+ - operationId: `regenerate_layout_templates_brand_kit_layout_templates_regenerate_post` (also callable as `g8.api.call("regenerate_layout_templates_brand_kit_layout_templates_regenerate_post", input)`)
880
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
881
+ - API-key scope: `campaigns:write`
882
+
883
+ Build the landing page templates for the selected archetypes.
884
+
885
+ Asynchronous. Poll `GET /brand-kit/layout-templates/status` for per-archetype
886
+ progress.
887
+
888
+ **Input**
889
+
890
+ | Field | Type | Required | Description |
891
+ |---|---|---|---|
892
+ | `query.archetype_id` | `string \| null` | no | Rebuild ONE archetype's template. Omit to run the layout picker and rebuild every selected archetype - which is much more work. |
893
+
894
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
895
+
896
+ Other envelope fields: `pagination` (PaginationMeta).
897
+
898
+ **Example**
899
+
900
+ ```ts
901
+ const result = await g8.api.brandKit.regenerateLayoutTemplates();
902
+ ```
903
+
904
+ ---
905
+
906
+ <a id="op-regeneratenewslettertemplates"></a>
907
+
908
+ ### `g8.api.brandKit.regenerateNewsletterTemplates(input?)`
909
+
910
+ **Regenerate Newsletter Templates**
911
+
912
+ - HTTP: `POST /api/v1/brand-kit/newsletter-templates/regenerate`
913
+ - operationId: `regenerate_newsletter_templates_brand_kit_newsletter_templates_regenerate_post` (also callable as `g8.api.call("regenerate_newsletter_templates_brand_kit_newsletter_templates_regenerate_post", input)`)
914
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
915
+ - API-key scope: `campaigns:write`
916
+
917
+ Build newsletter templates for the selected archetypes. Asynchronous.
918
+
919
+ **Input**: none.
920
+
921
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
922
+
923
+ Other envelope fields: `pagination` (PaginationMeta).
924
+
925
+ **Example**
926
+
927
+ ```ts
928
+ const result = await g8.api.brandKit.regenerateNewsletterTemplates();
929
+ ```
930
+
931
+ ---
932
+
933
+ <a id="op-savelayoutselections"></a>
934
+
935
+ ### `g8.api.brandKit.saveLayoutSelections(input)`
936
+
937
+ **Save Layout Selections**
938
+
939
+ - HTTP: `PUT /api/v1/brand-kit/layout-selections`
940
+ - operationId: `save_layout_selections_brand_kit_layout_selections_put` (also callable as `g8.api.call("save_layout_selections_brand_kit_layout_selections_put", input)`)
941
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
942
+ - API-key scope: `campaigns:write`
943
+
944
+ REPLACE the org's layout archetype selection.
945
+
946
+ Selecting is not building: the templates are produced by
947
+ `POST /brand-kit/layout-templates/regenerate` afterwards.
948
+
949
+ **Input**
950
+
951
+ | Field | Type | Required | Description |
952
+ |---|---|---|---|
953
+ | `body` | `LayoutSelectionRequest` | yes | Request body; fields below. |
954
+
955
+ Body fields (`LayoutSelectionRequest`):
956
+
957
+ | Field | Type | Required | Description |
958
+ |---|---|---|---|
959
+ | `body.archetype_ids` | `Array<string>` | yes | The complete set of selected layout archetype ids. |
960
+
961
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
962
+
963
+ Other envelope fields: `pagination` (PaginationMeta).
964
+
965
+ **Example**
966
+
967
+ ```ts
968
+ const result = await g8.api.brandKit.saveLayoutSelections({ body: { archetype_ids: ["id"] } });
969
+ ```
970
+
971
+ ---
972
+
973
+ <a id="op-savenewsletterselections"></a>
974
+
975
+ ### `g8.api.brandKit.saveNewsletterSelections(input)`
976
+
977
+ **Save Newsletter Selections**
978
+
979
+ - HTTP: `PUT /api/v1/brand-kit/newsletter-selections`
980
+ - operationId: `save_newsletter_selections_brand_kit_newsletter_selections_put` (also callable as `g8.api.call("save_newsletter_selections_brand_kit_newsletter_selections_put", input)`)
981
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
982
+ - API-key scope: `campaigns:write`
983
+
984
+ REPLACE the org's newsletter archetype selection.
985
+
986
+ **Input**
987
+
988
+ | Field | Type | Required | Description |
989
+ |---|---|---|---|
990
+ | `body` | `NewsletterSelectionsRequest` | yes | Request body; fields below. |
991
+
992
+ Body fields (`NewsletterSelectionsRequest`):
993
+
994
+ | Field | Type | Required | Description |
995
+ |---|---|---|---|
996
+ | `body.archetype_ids` | `Array<string>` | yes | The complete set of selected newsletter archetype ids. |
997
+
998
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
999
+
1000
+ Other envelope fields: `pagination` (PaginationMeta).
1001
+
1002
+ **Example**
1003
+
1004
+ ```ts
1005
+ const result = await g8.api.brandKit.saveNewsletterSelections({ body: { archetype_ids: ["id"] } });
1006
+ ```
1007
+
1008
+ ---
1009
+
1010
+ <a id="op-savesectiontagoverrides"></a>
1011
+
1012
+ ### `g8.api.brandKit.saveSectionTagOverrides(input)`
1013
+
1014
+ **Save Section Tag Overrides**
1015
+
1016
+ - HTTP: `PUT /api/v1/brand-kit/section-tag-overrides`
1017
+ - operationId: `save_section_tag_overrides_brand_kit_section_tag_overrides_put` (also callable as `g8.api.call("save_section_tag_overrides_brand_kit_section_tag_overrides_put", input)`)
1018
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1019
+ - API-key scope: `campaigns:write`
1020
+
1021
+ Upsert tag overrides, keyed by section id.
1022
+
1023
+ UPSERT, not replace: sections you do not mention keep the overrides they
1024
+ already had. To clear one, send it with empty lists.
1025
+
1026
+ **Input**
1027
+
1028
+ | Field | Type | Required | Description |
1029
+ |---|---|---|---|
1030
+ | `body` | `SectionTagOverridesRequest` | yes | Request body; fields below. |
1031
+
1032
+ Body fields (`SectionTagOverridesRequest`):
1033
+
1034
+ | Field | Type | Required | Description |
1035
+ |---|---|---|---|
1036
+ | `body.overrides` | `Record<string, SectionTagOverride>` | no | Section id -> tag override. |
1037
+
1038
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1039
+
1040
+ Other envelope fields: `pagination` (PaginationMeta).
1041
+
1042
+ **Example**
1043
+
1044
+ ```ts
1045
+ const result = await g8.api.brandKit.saveSectionTagOverrides({ body: {} });
1046
+ ```
1047
+
1048
+ ---
1049
+
1050
+ <a id="op-triggerbrandextraction"></a>
1051
+
1052
+ ### `g8.api.brandKit.triggerBrandExtraction(input?)`
1053
+
1054
+ **Trigger Brand Extraction**
1055
+
1056
+ - HTTP: `POST /api/v1/brand-kit/extract`
1057
+ - operationId: `trigger_brand_extraction_brand_kit_extract_post` (also callable as `g8.api.call("trigger_brand_extraction_brand_kit_extract_post", input)`)
1058
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1059
+ - API-key scope: `campaigns:write`
1060
+
1061
+ Start, or restart, brand extraction.
1062
+
1063
+ Omit the body to re-extract the website already on the org's company
1064
+ profile. Supplying `website_url` EXTRACTS A DIFFERENT SITE and replaces
1065
+ the org's design tokens and homepage capture with that site's - which is
1066
+ how a brand kit ends up belonging to the wrong company. Asynchronous; the
1067
+ result appears on `GET /brand-kit`.
1068
+
1069
+ **Input**
1070
+
1071
+ | Field | Type | Required | Description |
1072
+ |---|---|---|---|
1073
+ | `body` | `BrandExtractionRequest \| null` | no | Request body; fields below. |
1074
+
1075
+ Body fields:
1076
+
1077
+ | Field | Type | Required | Description |
1078
+ |---|---|---|---|
1079
+ | `body.website_url` | `string \| null` | no | Site to extract from. Omit to re-extract the org's current website. |
1080
+
1081
+ **Returns** `ApiResponse_StudioPayload_`: the envelope `{ data: StudioPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1082
+
1083
+ Other envelope fields: `pagination` (PaginationMeta).
1084
+
1085
+ **Example**
1086
+
1087
+ ```ts
1088
+ const result = await g8.api.brandKit.triggerBrandExtraction();
1089
+ ```
1090
+
1091
+ ---
1092
+
1093
+ ## Referenced types
1094
+
1095
+ Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
1096
+
1097
+ <a id="type-attachedasset"></a>
1098
+
1099
+ ### `AttachedAsset`
1100
+
1101
+ Mirrors `campaign_builder.routers.brand_kit.AttachedAsset`. An asset the generated page MUST use. Capped by the app at 5 images and 2 videos per submission; the cap is a model validator there, so it answers 422 through the same path as any other body error.
1102
+
1103
+ | Field | Type | Required | Description |
1104
+ |---|---|---|---|
1105
+ | `id` | `string` | yes | Asset id. |
1106
+ | `type` | `"image" \| "video"` | yes | Asset kind. |
1107
+ | `url` | `string` | yes | Public URL the generated page will reference. |
1108
+ | `alt_text` | `string \| null` | no | Alt text. |
1109
+ | `position_hint` | `"hero" \| "body" \| "any"` | no | Where the asset should land on the page. default `"any"` |
1110
+ | `poster_url` | `string \| null` | no | Poster frame for a video. |
1111
+ | `title` | `string \| null` | no | Title. |
1112
+
1113
+ <a id="type-lpplan"></a>
1114
+
1115
+ ### `LpPlan`
1116
+
1117
+ Full landing-page plan — 1..8 sections.
1118
+
1119
+ | Field | Type | Required | Description |
1120
+ |---|---|---|---|
1121
+ | `sections` | `Array<PlanSection>` | yes | min items 1, max items 8 |
1122
+
1123
+ <a id="type-sectiontagoverride"></a>
1124
+
1125
+ ### `SectionTagOverride`
1126
+
1127
+ Mirrors `campaign_builder.routers.brand_kit.SectionTagOverride`.
1128
+
1129
+ | Field | Type | Required | Description |
1130
+ |---|---|---|---|
1131
+ | `category` | `string \| null` | no | Category override for this section. |
1132
+ | `custom` | `Array<string>` | no | Tags added to this section. |
1133
+ | `hidden` | `Array<string>` | no | Auto-derived tags suppressed for this section. |