@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,1613 @@
1
+ /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
+
3
+ /**
4
+ * Types for `g8.api.newsletter` (Newsletter): 61 operations.
5
+ *
6
+ * For reading. In code, import from the package instead:
7
+ * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
8
+ * type In = ApiInput<"activate_newsletter_newsletters__newsletter_id__activate_post">;
9
+ *
10
+ * Reference with examples: newsletter.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.newsletter.<member>` -> the operationId it calls. */
15
+ export interface NewsletterMembers {
16
+ activateNewsletter: "activate_newsletter_newsletters__newsletter_id__activate_post";
17
+ addSubscriber: "add_subscriber_newsletters__newsletter_id__subscribers_post";
18
+ batchTemplateGenerationStatus: "batch_template_generation_status_newsletters_templates_generation_status_post";
19
+ cancelSend: "cancel_send_newsletters__newsletter_id__issues__issue_id__send_cancel_post";
20
+ cloneTemplate: "clone_template_newsletters_templates_clone_post";
21
+ completeNewsletter: "complete_newsletter_newsletters__newsletter_id__complete_post";
22
+ createIssue: "create_issue_newsletters__newsletter_id__issues_post";
23
+ createNewsletter: "create_newsletter_newsletters_post";
24
+ createTemplateFromLayout: "create_template_from_layout_newsletters_templates_layout_post";
25
+ createTemplateFromPrompt: "create_template_from_prompt_newsletters_templates_custom_post";
26
+ deleteIssue: "delete_issue_newsletters__newsletter_id__issues__issue_id__delete";
27
+ deleteNewsletterTemplate: "delete_newsletter_template_newsletters_templates__template_id__delete";
28
+ deleteSubscriber: "delete_subscriber_newsletters__newsletter_id__subscribers__subscriber_id__delete";
29
+ disableNewsletterListSync: "disable_newsletter_list_sync_newsletters__newsletter_id__list_syncs__audience_list_id__delete";
30
+ duplicateIssue: "duplicate_issue_newsletters__newsletter_id__issues__issue_id__duplicate_post";
31
+ enableNewsletterListSync: "enable_newsletter_list_sync_newsletters__newsletter_id__list_syncs_post";
32
+ generateNewsletterIssue: "generate_newsletter_issue_newsletters__newsletter_id__issues__issue_id__generate_post";
33
+ getIssue: "get_issue_newsletters__newsletter_id__issues__issue_id__get";
34
+ getIssueAnalyticsKpis: "get_issue_analytics_kpis_newsletters__newsletter_id__issues__issue_id__analytics_kpis_get";
35
+ getIssueGenerationStatus: "get_issue_generation_status_newsletters__newsletter_id__issues__issue_id__generation_status_get";
36
+ getNewsletter: "get_newsletter_newsletters__newsletter_id__get";
37
+ getNewsletterIssueConversation: "get_newsletter_issue_conversation_newsletters__newsletter_id__issues__issue_id__conversation_get";
38
+ getNewsletterSettings: "get_newsletter_settings_newsletters__newsletter_id__settings_get";
39
+ getNewsletterSubscriberVerification: "get_newsletter_subscriber_verification_newsletters__newsletter_id__subscribers_verify_status_get";
40
+ getSendStatus: "get_send_status_newsletters__newsletter_id__issues__issue_id__send_get";
41
+ getSubscriberTimeline: "get_subscriber_timeline_newsletters__newsletter_id__issues__issue_id__analytics_subscribers__subscriber_id__timeline_get";
42
+ importSubscribersFromAudience: "import_subscribers_from_audience_newsletters__newsletter_id__subscribers_import_audience_post";
43
+ linkNewsletterCampaign: "link_newsletter_campaign_newsletters__newsletter_id__campaign_put";
44
+ listIssues: "list_issues_newsletters__newsletter_id__issues_get";
45
+ listNewsletterIssueVersions: "list_newsletter_issue_versions_newsletters__newsletter_id__issues__issue_id__versions_get";
46
+ listNewsletterListSyncs: "list_newsletter_list_syncs_newsletters__newsletter_id__list_syncs_get";
47
+ listNewsletters: "list_newsletters_newsletters_get";
48
+ listSubscribers: "list_subscribers_newsletters__newsletter_id__subscribers_get";
49
+ listTemplates: "list_templates_newsletters_templates_get";
50
+ newsletterDomainStatus: "newsletter_domain_status_newsletters__newsletter_id__settings_domain_status_get";
51
+ pauseNewsletter: "pause_newsletter_newsletters__newsletter_id__pause_post";
52
+ pauseSend: "pause_send_newsletters__newsletter_id__issues__issue_id__send_pause_post";
53
+ previewNewsletterSubscriberVerification: "preview_newsletter_subscriber_verification_newsletters__newsletter_id__subscribers_verify_preview_post";
54
+ restoreNewsletterIssueVersion: "restore_newsletter_issue_version_newsletters__newsletter_id__issues__issue_id__versions__version_num__restore_post";
55
+ resumeNewsletter: "resume_newsletter_newsletters__newsletter_id__resume_post";
56
+ resumeSend: "resume_send_newsletters__newsletter_id__issues__issue_id__send_resume_post";
57
+ rewriteIssueText: "rewrite_issue_text_newsletters__newsletter_id__issues__issue_id__rewrite_text_post";
58
+ runNewsletterListSync: "run_newsletter_list_sync_newsletters__newsletter_id__list_syncs__audience_list_id__run_post";
59
+ sendIssue: "send_issue_newsletters__newsletter_id__issues__issue_id__send_post";
60
+ sendTestEmail: "send_test_email_newsletters__newsletter_id__issues__issue_id__send_test_post";
61
+ setIssueButtonAction: "set_issue_button_action_newsletters__newsletter_id__issues__issue_id__set_button_action_post";
62
+ setIssueMediaEdit: "set_issue_media_edit_newsletters__newsletter_id__issues__issue_id__set_media_edit_post";
63
+ setIssueText: "set_issue_text_newsletters__newsletter_id__issues__issue_id__set_text_post";
64
+ setTemplateApproval: "set_template_approval_newsletters_templates__template_id__approval_post";
65
+ setTemplateButtonAction: "set_template_button_action_newsletters_templates__template_id__set_button_action_post";
66
+ setTemplateMediaEdit: "set_template_media_edit_newsletters_templates__template_id__set_media_edit_post";
67
+ templateGenerationStatus: "template_generation_status_newsletters_templates__template_id__generation_status_get";
68
+ unlinkNewsletterCampaign: "unlink_newsletter_campaign_newsletters__newsletter_id__campaign_delete";
69
+ unsubscribeSubscriber: "unsubscribe_subscriber_newsletters__newsletter_id__subscribers__subscriber_id__unsubscribe_patch";
70
+ updateIssue: "update_issue_newsletters__newsletter_id__issues__issue_id__put";
71
+ updateNewsletter: "update_newsletter_newsletters__newsletter_id__patch";
72
+ updateNewsletterSettings: "update_newsletter_settings_newsletters__newsletter_id__settings_put";
73
+ updateNewsletterTemplate: "update_newsletter_template_newsletters_templates__template_id__patch";
74
+ useTemplate: "use_template_newsletters_templates__template_id__use_post";
75
+ verifyNewsletterDomain: "verify_newsletter_domain_newsletters__newsletter_id__settings_verify_domain_post";
76
+ verifyNewsletterSubscribers: "verify_newsletter_subscribers_newsletters__newsletter_id__subscribers_verify_post";
77
+ }
78
+
79
+ /** Input and output of every `g8.api.newsletter` operation, keyed by operationId. */
80
+ export interface NewsletterOperations {
81
+ /**
82
+ * POST /newsletters/{newsletter_id}/activate
83
+ * Activate Newsletter
84
+ * tier: external · scope: newsletter:run
85
+ */
86
+ activate_newsletter_newsletters__newsletter_id__activate_post: {
87
+ input: {
88
+ path: {
89
+ /** Newsletter id (UUID). */
90
+ newsletter_id: string;
91
+ };
92
+ headers?: {
93
+ "X-Target-Org-Id"?: string | null;
94
+ };
95
+ };
96
+ output: ApiResponse_NewsletterPayload_;
97
+ };
98
+ /**
99
+ * POST /newsletters/{newsletter_id}/subscribers
100
+ * Add Subscriber
101
+ * tier: external · scope: newsletter:run
102
+ */
103
+ add_subscriber_newsletters__newsletter_id__subscribers_post: {
104
+ input: {
105
+ path: {
106
+ /** Newsletter UUID */
107
+ newsletter_id: string;
108
+ };
109
+ headers?: {
110
+ "X-Target-Org-Id"?: string | null;
111
+ };
112
+ body: SubscriberAddRequest;
113
+ };
114
+ output: ApiResponse_SubscriberSummary_;
115
+ };
116
+ /**
117
+ * POST /newsletters/templates/generation-status
118
+ * Batch Template Generation Status
119
+ * tier: read · scope: newsletter:read
120
+ */
121
+ batch_template_generation_status_newsletters_templates_generation_status_post: {
122
+ input: {
123
+ headers?: {
124
+ "X-Target-Org-Id"?: string | null;
125
+ };
126
+ body: TemplateGenerationStatusBatchRequest;
127
+ };
128
+ output: ApiResponse_NewsletterListPayload_;
129
+ };
130
+ /**
131
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/send/cancel
132
+ * Cancel Send
133
+ * tier: write · scope: newsletter:write
134
+ */
135
+ cancel_send_newsletters__newsletter_id__issues__issue_id__send_cancel_post: {
136
+ input: {
137
+ path: {
138
+ /** Newsletter id (UUID). */
139
+ newsletter_id: string;
140
+ /** Issue id. */
141
+ issue_id: number;
142
+ };
143
+ headers?: {
144
+ "X-Target-Org-Id"?: string | null;
145
+ };
146
+ body?: SendControlRequest;
147
+ };
148
+ output: ApiResponse_NewsletterPayload_;
149
+ };
150
+ /**
151
+ * POST /newsletters/templates/clone
152
+ * Clone Template
153
+ * tier: billable · scope: newsletter:run
154
+ */
155
+ clone_template_newsletters_templates_clone_post: {
156
+ input: {
157
+ headers?: {
158
+ "X-Target-Org-Id"?: string | null;
159
+ };
160
+ body: TemplateCloneRequest;
161
+ };
162
+ output: ApiResponse_NewsletterPayload_;
163
+ };
164
+ /**
165
+ * POST /newsletters/{newsletter_id}/complete
166
+ * Complete Newsletter
167
+ * tier: write · scope: newsletter:write
168
+ */
169
+ complete_newsletter_newsletters__newsletter_id__complete_post: {
170
+ input: {
171
+ path: {
172
+ /** Newsletter id. */
173
+ newsletter_id: string;
174
+ };
175
+ headers?: {
176
+ "X-Target-Org-Id"?: string | null;
177
+ };
178
+ };
179
+ output: ApiResponse_NewsletterStatusResponse_;
180
+ };
181
+ /**
182
+ * POST /newsletters/{newsletter_id}/issues
183
+ * Create Issue
184
+ * tier: external · scope: newsletter:run
185
+ */
186
+ create_issue_newsletters__newsletter_id__issues_post: {
187
+ input: {
188
+ path: {
189
+ /** Newsletter UUID */
190
+ newsletter_id: string;
191
+ };
192
+ headers?: {
193
+ "X-Target-Org-Id"?: string | null;
194
+ };
195
+ body: IssueCreateRequest;
196
+ };
197
+ output: ApiResponse_IssueDetail_;
198
+ };
199
+ /**
200
+ * POST /newsletters
201
+ * Create Newsletter
202
+ * tier: external · scope: newsletter:run
203
+ */
204
+ create_newsletter_newsletters_post: {
205
+ input: {
206
+ headers?: {
207
+ "X-Target-Org-Id"?: string | null;
208
+ };
209
+ body: NewsletterCreateRequest;
210
+ };
211
+ output: ApiResponse_NewsletterDetail_;
212
+ };
213
+ /**
214
+ * POST /newsletters/templates/layout
215
+ * Create Template From Layout
216
+ * tier: billable · scope: newsletter:run
217
+ */
218
+ create_template_from_layout_newsletters_templates_layout_post: {
219
+ input: {
220
+ headers?: {
221
+ "X-Target-Org-Id"?: string | null;
222
+ };
223
+ body: TemplateFromLayoutRequest;
224
+ };
225
+ output: ApiResponse_NewsletterPayload_;
226
+ };
227
+ /**
228
+ * POST /newsletters/templates/custom
229
+ * Create Template From Prompt
230
+ * tier: billable · scope: newsletter:run
231
+ */
232
+ create_template_from_prompt_newsletters_templates_custom_post: {
233
+ input: {
234
+ headers?: {
235
+ "X-Target-Org-Id"?: string | null;
236
+ };
237
+ body: TemplateFromPromptRequest;
238
+ };
239
+ output: ApiResponse_NewsletterPayload_;
240
+ };
241
+ /**
242
+ * DELETE /newsletters/{newsletter_id}/issues/{issue_id}
243
+ * Delete Issue
244
+ * tier: destructive · scope: newsletter:delete
245
+ */
246
+ delete_issue_newsletters__newsletter_id__issues__issue_id__delete: {
247
+ input: {
248
+ path: {
249
+ /** Newsletter id (UUID). */
250
+ newsletter_id: string;
251
+ /** Issue id. */
252
+ issue_id: number;
253
+ };
254
+ headers?: {
255
+ "X-Target-Org-Id"?: string | null;
256
+ };
257
+ };
258
+ output: ApiResponse_NewsletterPayload_;
259
+ };
260
+ /**
261
+ * DELETE /newsletters/templates/{template_id}
262
+ * Delete Newsletter Template
263
+ * tier: destructive · scope: newsletter:delete
264
+ */
265
+ delete_newsletter_template_newsletters_templates__template_id__delete: {
266
+ input: {
267
+ path: {
268
+ /** Template id. */
269
+ template_id: number;
270
+ };
271
+ headers?: {
272
+ "X-Target-Org-Id"?: string | null;
273
+ };
274
+ };
275
+ output: ApiResponse_NewsletterStudioPayload_;
276
+ };
277
+ /**
278
+ * DELETE /newsletters/{newsletter_id}/subscribers/{subscriber_id}
279
+ * Delete Subscriber
280
+ * tier: destructive · scope: newsletter:delete
281
+ */
282
+ delete_subscriber_newsletters__newsletter_id__subscribers__subscriber_id__delete: {
283
+ input: {
284
+ path: {
285
+ /** Newsletter id (UUID). */
286
+ newsletter_id: string;
287
+ /** Subscriber id. */
288
+ subscriber_id: number;
289
+ };
290
+ headers?: {
291
+ "X-Target-Org-Id"?: string | null;
292
+ };
293
+ };
294
+ output: ApiResponse_NewsletterPayload_;
295
+ };
296
+ /**
297
+ * DELETE /newsletters/{newsletter_id}/list-syncs/{audience_list_id}
298
+ * Disable Newsletter List Sync
299
+ * tier: destructive · scope: newsletter:delete
300
+ */
301
+ disable_newsletter_list_sync_newsletters__newsletter_id__list_syncs__audience_list_id__delete: {
302
+ input: {
303
+ path: {
304
+ /** Newsletter id. */
305
+ newsletter_id: string;
306
+ /** Audience list id. */
307
+ audience_list_id: number;
308
+ };
309
+ headers?: {
310
+ "X-Target-Org-Id"?: string | null;
311
+ };
312
+ };
313
+ output: ApiResponse_Any_;
314
+ };
315
+ /**
316
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/duplicate
317
+ * Duplicate Issue
318
+ * tier: external · scope: newsletter:run
319
+ */
320
+ duplicate_issue_newsletters__newsletter_id__issues__issue_id__duplicate_post: {
321
+ input: {
322
+ path: {
323
+ /** Newsletter UUID */
324
+ newsletter_id: string;
325
+ /** Source issue id (any status) */
326
+ issue_id: number;
327
+ };
328
+ headers?: {
329
+ "X-Target-Org-Id"?: string | null;
330
+ };
331
+ };
332
+ output: ApiResponse_IssueDetail_;
333
+ };
334
+ /**
335
+ * POST /newsletters/{newsletter_id}/list-syncs
336
+ * Enable Newsletter List Sync
337
+ * tier: write · scope: newsletter:write
338
+ */
339
+ enable_newsletter_list_sync_newsletters__newsletter_id__list_syncs_post: {
340
+ input: {
341
+ path: {
342
+ /** Newsletter id. */
343
+ newsletter_id: string;
344
+ };
345
+ headers?: {
346
+ "X-Target-Org-Id"?: string | null;
347
+ };
348
+ body: ListSyncEnableRequest;
349
+ };
350
+ output: ApiResponse_Any_;
351
+ };
352
+ /**
353
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/generate
354
+ * Generate Newsletter Issue
355
+ * tier: billable · scope: newsletter:run
356
+ */
357
+ generate_newsletter_issue_newsletters__newsletter_id__issues__issue_id__generate_post: {
358
+ input: {
359
+ path: {
360
+ /** Newsletter id. */
361
+ newsletter_id: string;
362
+ /** Issue id. */
363
+ issue_id: number;
364
+ };
365
+ headers?: {
366
+ "X-Target-Org-Id"?: string | null;
367
+ };
368
+ body: NewsletterIssueGenerateRequest;
369
+ };
370
+ output: ApiResponse_NewsletterStudioPayload_;
371
+ };
372
+ /**
373
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}
374
+ * Get Issue
375
+ * tier: read · scope: newsletter:read
376
+ */
377
+ get_issue_newsletters__newsletter_id__issues__issue_id__get: {
378
+ input: {
379
+ path: {
380
+ /** Newsletter UUID */
381
+ newsletter_id: string;
382
+ /** Issue id */
383
+ issue_id: number;
384
+ };
385
+ headers?: {
386
+ "X-Target-Org-Id"?: string | null;
387
+ };
388
+ };
389
+ output: ApiResponse_IssueDetail_;
390
+ };
391
+ /**
392
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}/analytics/kpis
393
+ * Get Issue Analytics Kpis
394
+ * tier: read · scope: newsletter:read
395
+ */
396
+ get_issue_analytics_kpis_newsletters__newsletter_id__issues__issue_id__analytics_kpis_get: {
397
+ input: {
398
+ path: {
399
+ /** Newsletter UUID */
400
+ newsletter_id: string;
401
+ /** Issue id */
402
+ issue_id: number;
403
+ };
404
+ headers?: {
405
+ "X-Target-Org-Id"?: string | null;
406
+ };
407
+ };
408
+ output: ApiResponse_IssueAnalyticsKpis_;
409
+ };
410
+ /**
411
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}/generation-status
412
+ * Get Issue Generation Status
413
+ * tier: read · scope: newsletter:read
414
+ */
415
+ get_issue_generation_status_newsletters__newsletter_id__issues__issue_id__generation_status_get: {
416
+ input: {
417
+ path: {
418
+ /** Newsletter id (UUID). */
419
+ newsletter_id: string;
420
+ /** Issue id. */
421
+ issue_id: number;
422
+ };
423
+ headers?: {
424
+ "X-Target-Org-Id"?: string | null;
425
+ };
426
+ };
427
+ output: ApiResponse_NewsletterPayload_;
428
+ };
429
+ /**
430
+ * GET /newsletters/{newsletter_id}
431
+ * Get Newsletter
432
+ * tier: read · scope: newsletter:read
433
+ */
434
+ get_newsletter_newsletters__newsletter_id__get: {
435
+ input: {
436
+ path: {
437
+ /** Newsletter UUID */
438
+ newsletter_id: string;
439
+ };
440
+ headers?: {
441
+ "X-Target-Org-Id"?: string | null;
442
+ };
443
+ };
444
+ output: ApiResponse_NewsletterDetail_;
445
+ };
446
+ /**
447
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}/conversation
448
+ * Get Newsletter Issue Conversation
449
+ * tier: read · scope: newsletter:read
450
+ */
451
+ get_newsletter_issue_conversation_newsletters__newsletter_id__issues__issue_id__conversation_get: {
452
+ input: {
453
+ path: {
454
+ /** Newsletter id. */
455
+ newsletter_id: string;
456
+ /** Issue id. */
457
+ issue_id: number;
458
+ };
459
+ headers?: {
460
+ "X-Target-Org-Id"?: string | null;
461
+ };
462
+ };
463
+ output: ApiResponse_NewsletterStudioPayload_;
464
+ };
465
+ /**
466
+ * GET /newsletters/{newsletter_id}/settings
467
+ * Get Newsletter Settings
468
+ * tier: read · scope: newsletter:read
469
+ */
470
+ get_newsletter_settings_newsletters__newsletter_id__settings_get: {
471
+ input: {
472
+ path: {
473
+ /** Newsletter id (UUID). */
474
+ newsletter_id: string;
475
+ };
476
+ headers?: {
477
+ "X-Target-Org-Id"?: string | null;
478
+ };
479
+ };
480
+ output: ApiResponse_NewsletterPayload_;
481
+ };
482
+ /**
483
+ * GET /newsletters/{newsletter_id}/subscribers/verify/status
484
+ * Get Newsletter Subscriber Verification
485
+ * tier: read · scope: newsletter:read
486
+ */
487
+ get_newsletter_subscriber_verification_newsletters__newsletter_id__subscribers_verify_status_get: {
488
+ input: {
489
+ path: {
490
+ /** Newsletter id. */
491
+ newsletter_id: string;
492
+ };
493
+ headers?: {
494
+ "X-Target-Org-Id"?: string | null;
495
+ };
496
+ };
497
+ output: ApiResponse_NewsletterStudioPayload_;
498
+ };
499
+ /**
500
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}/send
501
+ * Get Send Status
502
+ * tier: read · scope: newsletter:read
503
+ */
504
+ get_send_status_newsletters__newsletter_id__issues__issue_id__send_get: {
505
+ input: {
506
+ path: {
507
+ /** Newsletter id (UUID). */
508
+ newsletter_id: string;
509
+ /** Issue id. */
510
+ issue_id: number;
511
+ };
512
+ headers?: {
513
+ "X-Target-Org-Id"?: string | null;
514
+ };
515
+ };
516
+ output: ApiResponse_NewsletterPayload_;
517
+ };
518
+ /**
519
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}/analytics/subscribers/{subscriber_id}/timeline
520
+ * Get Subscriber Timeline
521
+ * tier: read · scope: newsletter:read
522
+ */
523
+ get_subscriber_timeline_newsletters__newsletter_id__issues__issue_id__analytics_subscribers__subscriber_id__timeline_get: {
524
+ input: {
525
+ path: {
526
+ /** Newsletter id (UUID). */
527
+ newsletter_id: string;
528
+ /** Issue id. */
529
+ issue_id: number;
530
+ /** Subscriber id. */
531
+ subscriber_id: number;
532
+ };
533
+ headers?: {
534
+ "X-Target-Org-Id"?: string | null;
535
+ };
536
+ };
537
+ output: ApiResponse_NewsletterPayload_;
538
+ };
539
+ /**
540
+ * POST /newsletters/{newsletter_id}/subscribers/import-audience
541
+ * Import Subscribers From Audience
542
+ * tier: billable · scope: newsletter:run
543
+ */
544
+ import_subscribers_from_audience_newsletters__newsletter_id__subscribers_import_audience_post: {
545
+ input: {
546
+ path: {
547
+ /** Newsletter id (UUID). */
548
+ newsletter_id: string;
549
+ };
550
+ headers?: {
551
+ "X-Target-Org-Id"?: string | null;
552
+ };
553
+ body: ImportAudienceRequest;
554
+ };
555
+ output: ApiResponse_NewsletterPayload_;
556
+ };
557
+ /**
558
+ * PUT /newsletters/{newsletter_id}/campaign
559
+ * Link Newsletter Campaign
560
+ * tier: write · scope: newsletter:write
561
+ */
562
+ link_newsletter_campaign_newsletters__newsletter_id__campaign_put: {
563
+ input: {
564
+ path: {
565
+ /** Newsletter id. */
566
+ newsletter_id: string;
567
+ };
568
+ headers?: {
569
+ "X-Target-Org-Id"?: string | null;
570
+ };
571
+ body: NewsletterCampaignLinkRequest;
572
+ };
573
+ output: ApiResponse_NewsletterStudioPayload_;
574
+ };
575
+ /**
576
+ * GET /newsletters/{newsletter_id}/issues
577
+ * List Issues
578
+ * tier: read · scope: newsletter:read
579
+ */
580
+ list_issues_newsletters__newsletter_id__issues_get: {
581
+ input: {
582
+ path: {
583
+ /** Newsletter UUID */
584
+ newsletter_id: string;
585
+ };
586
+ headers?: {
587
+ "X-Target-Org-Id"?: string | null;
588
+ };
589
+ };
590
+ output: ApiResponse_list_;
591
+ };
592
+ /**
593
+ * GET /newsletters/{newsletter_id}/issues/{issue_id}/versions
594
+ * List Newsletter Issue Versions
595
+ * tier: read · scope: newsletter:read
596
+ */
597
+ list_newsletter_issue_versions_newsletters__newsletter_id__issues__issue_id__versions_get: {
598
+ input: {
599
+ path: {
600
+ /** Newsletter id. */
601
+ newsletter_id: string;
602
+ /** Issue id. */
603
+ issue_id: number;
604
+ };
605
+ headers?: {
606
+ "X-Target-Org-Id"?: string | null;
607
+ };
608
+ };
609
+ output: ApiResponse_NewsletterStudioPayload_;
610
+ };
611
+ /**
612
+ * GET /newsletters/{newsletter_id}/list-syncs
613
+ * List Newsletter List Syncs
614
+ * tier: read · scope: newsletter:read
615
+ */
616
+ list_newsletter_list_syncs_newsletters__newsletter_id__list_syncs_get: {
617
+ input: {
618
+ path: {
619
+ /** Newsletter id. */
620
+ newsletter_id: string;
621
+ };
622
+ query?: {
623
+ /** Resolve a CANDIDATE list that has no saved row yet. Returns a synthetic disabled entry carrying the live name and count, so a rebuilt enable dialog can state the number the worker will actually act on rather than a stale one. */
624
+ audience_list_id?: number | null;
625
+ };
626
+ headers?: {
627
+ "X-Target-Org-Id"?: string | null;
628
+ };
629
+ };
630
+ output: ApiResponse_ListSyncListResponse_;
631
+ };
632
+ /**
633
+ * GET /newsletters
634
+ * List Newsletters
635
+ * tier: read · scope: newsletter:read
636
+ */
637
+ list_newsletters_newsletters_get: {
638
+ input: {
639
+ headers?: {
640
+ "X-Target-Org-Id"?: string | null;
641
+ };
642
+ };
643
+ output: ApiResponse_list_;
644
+ };
645
+ /**
646
+ * GET /newsletters/{newsletter_id}/subscribers
647
+ * List Subscribers
648
+ * tier: read · scope: newsletter:read
649
+ */
650
+ list_subscribers_newsletters__newsletter_id__subscribers_get: {
651
+ input: {
652
+ path: {
653
+ /** Newsletter UUID */
654
+ newsletter_id: string;
655
+ };
656
+ query?: {
657
+ page?: number;
658
+ page_size?: number;
659
+ /** Free-text search over email/name */
660
+ search?: string | null;
661
+ /** Comma-separated status filter (e.g. 'subscribed,bounced') */
662
+ status?: string | null;
663
+ };
664
+ headers?: {
665
+ "X-Target-Org-Id"?: string | null;
666
+ };
667
+ };
668
+ output: ApiResponse_SubscriberListResponse_;
669
+ };
670
+ /**
671
+ * GET /newsletters/templates
672
+ * List Templates
673
+ * tier: read · scope: newsletter:read
674
+ */
675
+ list_templates_newsletters_templates_get: {
676
+ input: {
677
+ headers?: {
678
+ "X-Target-Org-Id"?: string | null;
679
+ };
680
+ };
681
+ output: ApiResponse_list_;
682
+ };
683
+ /**
684
+ * GET /newsletters/{newsletter_id}/settings/domain-status
685
+ * Newsletter Domain Status
686
+ * tier: read · scope: newsletter:read
687
+ */
688
+ newsletter_domain_status_newsletters__newsletter_id__settings_domain_status_get: {
689
+ input: {
690
+ path: {
691
+ /** Newsletter id (UUID). */
692
+ newsletter_id: string;
693
+ };
694
+ query: {
695
+ /** The domain to check. */
696
+ domain: string;
697
+ };
698
+ headers?: {
699
+ "X-Target-Org-Id"?: string | null;
700
+ };
701
+ };
702
+ output: ApiResponse_NewsletterPayload_;
703
+ };
704
+ /**
705
+ * POST /newsletters/{newsletter_id}/pause
706
+ * Pause Newsletter
707
+ * tier: write · scope: newsletter:write
708
+ */
709
+ pause_newsletter_newsletters__newsletter_id__pause_post: {
710
+ input: {
711
+ path: {
712
+ /** Newsletter id. */
713
+ newsletter_id: string;
714
+ };
715
+ headers?: {
716
+ "X-Target-Org-Id"?: string | null;
717
+ };
718
+ };
719
+ output: ApiResponse_NewsletterStatusResponse_;
720
+ };
721
+ /**
722
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/send/pause
723
+ * Pause Send
724
+ * tier: write · scope: newsletter:write
725
+ */
726
+ pause_send_newsletters__newsletter_id__issues__issue_id__send_pause_post: {
727
+ input: {
728
+ path: {
729
+ /** Newsletter id (UUID). */
730
+ newsletter_id: string;
731
+ /** Issue id. */
732
+ issue_id: number;
733
+ };
734
+ headers?: {
735
+ "X-Target-Org-Id"?: string | null;
736
+ };
737
+ body?: SendControlRequest;
738
+ };
739
+ output: ApiResponse_NewsletterPayload_;
740
+ };
741
+ /**
742
+ * POST /newsletters/{newsletter_id}/subscribers/verify/preview
743
+ * Preview Newsletter Subscriber Verification
744
+ * tier: read · scope: newsletter:read
745
+ */
746
+ preview_newsletter_subscriber_verification_newsletters__newsletter_id__subscribers_verify_preview_post: {
747
+ input: {
748
+ path: {
749
+ /** Newsletter id. */
750
+ newsletter_id: string;
751
+ };
752
+ headers?: {
753
+ "X-Target-Org-Id"?: string | null;
754
+ };
755
+ };
756
+ output: ApiResponse_NewsletterStudioPayload_;
757
+ };
758
+ /**
759
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/versions/{version_num}/restore
760
+ * Restore Newsletter Issue Version
761
+ * tier: write · scope: newsletter:write
762
+ */
763
+ restore_newsletter_issue_version_newsletters__newsletter_id__issues__issue_id__versions__version_num__restore_post: {
764
+ input: {
765
+ path: {
766
+ /** Newsletter id. */
767
+ newsletter_id: string;
768
+ /** Issue id. */
769
+ issue_id: number;
770
+ /** The version to restore. */
771
+ version_num: number;
772
+ };
773
+ headers?: {
774
+ "X-Target-Org-Id"?: string | null;
775
+ };
776
+ };
777
+ output: ApiResponse_NewsletterStudioPayload_;
778
+ };
779
+ /**
780
+ * POST /newsletters/{newsletter_id}/resume
781
+ * Resume Newsletter
782
+ * tier: external · scope: newsletter:run
783
+ */
784
+ resume_newsletter_newsletters__newsletter_id__resume_post: {
785
+ input: {
786
+ path: {
787
+ /** Newsletter id (UUID). */
788
+ newsletter_id: string;
789
+ };
790
+ headers?: {
791
+ "X-Target-Org-Id"?: string | null;
792
+ };
793
+ };
794
+ output: ApiResponse_NewsletterPayload_;
795
+ };
796
+ /**
797
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/send/resume
798
+ * Resume Send
799
+ * tier: external · scope: newsletter:run
800
+ */
801
+ resume_send_newsletters__newsletter_id__issues__issue_id__send_resume_post: {
802
+ input: {
803
+ path: {
804
+ /** Newsletter id (UUID). */
805
+ newsletter_id: string;
806
+ /** Issue id. */
807
+ issue_id: number;
808
+ };
809
+ headers?: {
810
+ "X-Target-Org-Id"?: string | null;
811
+ };
812
+ };
813
+ output: ApiResponse_NewsletterPayload_;
814
+ };
815
+ /**
816
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/rewrite-text
817
+ * Rewrite Issue Text
818
+ * tier: billable · scope: newsletter:run
819
+ */
820
+ rewrite_issue_text_newsletters__newsletter_id__issues__issue_id__rewrite_text_post: {
821
+ input: {
822
+ path: {
823
+ /** Newsletter id (UUID). */
824
+ newsletter_id: string;
825
+ /** Issue id. */
826
+ issue_id: number;
827
+ };
828
+ headers?: {
829
+ "X-Target-Org-Id"?: string | null;
830
+ };
831
+ body: RewriteTextRequest;
832
+ };
833
+ output: ApiResponse_NewsletterPayload_;
834
+ };
835
+ /**
836
+ * POST /newsletters/{newsletter_id}/list-syncs/{audience_list_id}/run
837
+ * Run Newsletter List Sync
838
+ * tier: write · scope: newsletter:write
839
+ */
840
+ run_newsletter_list_sync_newsletters__newsletter_id__list_syncs__audience_list_id__run_post: {
841
+ input: {
842
+ path: {
843
+ /** Newsletter id. */
844
+ newsletter_id: string;
845
+ /** Audience list id. */
846
+ audience_list_id: number;
847
+ };
848
+ headers?: {
849
+ "X-Target-Org-Id"?: string | null;
850
+ };
851
+ };
852
+ output: ApiResponse_Any_;
853
+ };
854
+ /**
855
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/send
856
+ * Send Issue
857
+ * tier: external · scope: newsletter:run
858
+ */
859
+ send_issue_newsletters__newsletter_id__issues__issue_id__send_post: {
860
+ input: {
861
+ path: {
862
+ /** Newsletter UUID */
863
+ newsletter_id: string;
864
+ /** Issue id */
865
+ issue_id: number;
866
+ };
867
+ headers?: {
868
+ "X-Target-Org-Id"?: string | null;
869
+ };
870
+ body: IssueSendRequest;
871
+ };
872
+ output: ApiResponse_dict_;
873
+ };
874
+ /**
875
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/send-test
876
+ * Send Test Email
877
+ * tier: external · scope: newsletter:run
878
+ */
879
+ send_test_email_newsletters__newsletter_id__issues__issue_id__send_test_post: {
880
+ input: {
881
+ path: {
882
+ /** Newsletter UUID */
883
+ newsletter_id: string;
884
+ /** Issue id */
885
+ issue_id: number;
886
+ };
887
+ headers?: {
888
+ "X-Target-Org-Id"?: string | null;
889
+ };
890
+ body: IssueSendTestRequest;
891
+ };
892
+ output: ApiResponse_dict_;
893
+ };
894
+ /**
895
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/set-button-action
896
+ * Set Issue Button Action
897
+ * tier: write · scope: newsletter:write
898
+ */
899
+ set_issue_button_action_newsletters__newsletter_id__issues__issue_id__set_button_action_post: {
900
+ input: {
901
+ path: {
902
+ /** Newsletter id (UUID). */
903
+ newsletter_id: string;
904
+ /** Issue id. */
905
+ issue_id: number;
906
+ };
907
+ headers?: {
908
+ "X-Target-Org-Id"?: string | null;
909
+ };
910
+ body: SetButtonActionRequest;
911
+ };
912
+ output: ApiResponse_NewsletterPayload_;
913
+ };
914
+ /**
915
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/set-media-edit
916
+ * Set Issue Media Edit
917
+ * tier: write · scope: newsletter:write
918
+ */
919
+ set_issue_media_edit_newsletters__newsletter_id__issues__issue_id__set_media_edit_post: {
920
+ input: {
921
+ path: {
922
+ /** Newsletter id (UUID). */
923
+ newsletter_id: string;
924
+ /** Issue id. */
925
+ issue_id: number;
926
+ };
927
+ headers?: {
928
+ "X-Target-Org-Id"?: string | null;
929
+ };
930
+ body: SetMediaEditRequest;
931
+ };
932
+ output: ApiResponse_NewsletterPayload_;
933
+ };
934
+ /**
935
+ * POST /newsletters/{newsletter_id}/issues/{issue_id}/set-text
936
+ * Set Issue Text
937
+ * tier: write · scope: newsletter:write
938
+ */
939
+ set_issue_text_newsletters__newsletter_id__issues__issue_id__set_text_post: {
940
+ input: {
941
+ path: {
942
+ /** Newsletter id (UUID). */
943
+ newsletter_id: string;
944
+ /** Issue id. */
945
+ issue_id: number;
946
+ };
947
+ headers?: {
948
+ "X-Target-Org-Id"?: string | null;
949
+ };
950
+ body: SetTextRequest;
951
+ };
952
+ output: ApiResponse_NewsletterPayload_;
953
+ };
954
+ /**
955
+ * POST /newsletters/templates/{template_id}/approval
956
+ * Set Template Approval
957
+ * tier: write · scope: newsletter:write
958
+ */
959
+ set_template_approval_newsletters_templates__template_id__approval_post: {
960
+ input: {
961
+ path: {
962
+ /** Template id. */
963
+ template_id: number;
964
+ };
965
+ headers?: {
966
+ "X-Target-Org-Id"?: string | null;
967
+ };
968
+ body: SetTemplateApprovalRequest;
969
+ };
970
+ output: ApiResponse_NewsletterPayload_;
971
+ };
972
+ /**
973
+ * POST /newsletters/templates/{template_id}/set-button-action
974
+ * Set Template Button Action
975
+ * tier: write · scope: newsletter:write
976
+ */
977
+ set_template_button_action_newsletters_templates__template_id__set_button_action_post: {
978
+ input: {
979
+ path: {
980
+ /** Template id. */
981
+ template_id: number;
982
+ };
983
+ headers?: {
984
+ "X-Target-Org-Id"?: string | null;
985
+ };
986
+ body: SetButtonActionRequest;
987
+ };
988
+ output: ApiResponse_NewsletterPayload_;
989
+ };
990
+ /**
991
+ * POST /newsletters/templates/{template_id}/set-media-edit
992
+ * Set Template Media Edit
993
+ * tier: write · scope: newsletter:write
994
+ */
995
+ set_template_media_edit_newsletters_templates__template_id__set_media_edit_post: {
996
+ input: {
997
+ path: {
998
+ /** Template id. */
999
+ template_id: number;
1000
+ };
1001
+ headers?: {
1002
+ "X-Target-Org-Id"?: string | null;
1003
+ };
1004
+ body: SetMediaEditRequest;
1005
+ };
1006
+ output: ApiResponse_NewsletterPayload_;
1007
+ };
1008
+ /**
1009
+ * GET /newsletters/templates/{template_id}/generation-status
1010
+ * Template Generation Status
1011
+ * tier: read · scope: newsletter:read
1012
+ */
1013
+ template_generation_status_newsletters_templates__template_id__generation_status_get: {
1014
+ input: {
1015
+ path: {
1016
+ /** Template id. */
1017
+ template_id: number;
1018
+ };
1019
+ headers?: {
1020
+ "X-Target-Org-Id"?: string | null;
1021
+ };
1022
+ };
1023
+ output: ApiResponse_NewsletterPayload_;
1024
+ };
1025
+ /**
1026
+ * DELETE /newsletters/{newsletter_id}/campaign
1027
+ * Unlink Newsletter Campaign
1028
+ * tier: destructive · scope: newsletter:delete
1029
+ */
1030
+ unlink_newsletter_campaign_newsletters__newsletter_id__campaign_delete: {
1031
+ input: {
1032
+ path: {
1033
+ /** Newsletter id. */
1034
+ newsletter_id: string;
1035
+ };
1036
+ headers?: {
1037
+ "X-Target-Org-Id"?: string | null;
1038
+ };
1039
+ };
1040
+ output: ApiResponse_NewsletterStudioPayload_;
1041
+ };
1042
+ /**
1043
+ * PATCH /newsletters/{newsletter_id}/subscribers/{subscriber_id}/unsubscribe
1044
+ * Unsubscribe Subscriber
1045
+ * tier: external · scope: newsletter:run
1046
+ */
1047
+ unsubscribe_subscriber_newsletters__newsletter_id__subscribers__subscriber_id__unsubscribe_patch: {
1048
+ input: {
1049
+ path: {
1050
+ /** Newsletter UUID */
1051
+ newsletter_id: string;
1052
+ /** Subscriber id */
1053
+ subscriber_id: number;
1054
+ };
1055
+ headers?: {
1056
+ "X-Target-Org-Id"?: string | null;
1057
+ };
1058
+ };
1059
+ output: ApiResponse_dict_;
1060
+ };
1061
+ /**
1062
+ * PUT /newsletters/{newsletter_id}/issues/{issue_id}
1063
+ * Update Issue
1064
+ * tier: external · scope: newsletter:run
1065
+ */
1066
+ update_issue_newsletters__newsletter_id__issues__issue_id__put: {
1067
+ input: {
1068
+ path: {
1069
+ /** Newsletter UUID */
1070
+ newsletter_id: string;
1071
+ /** Issue id */
1072
+ issue_id: number;
1073
+ };
1074
+ headers?: {
1075
+ "X-Target-Org-Id"?: string | null;
1076
+ };
1077
+ body: IssueUpdateRequest;
1078
+ };
1079
+ output: ApiResponse_IssueDetail_;
1080
+ };
1081
+ /**
1082
+ * PATCH /newsletters/{newsletter_id}
1083
+ * Update Newsletter
1084
+ * tier: write · scope: newsletter:write
1085
+ */
1086
+ update_newsletter_newsletters__newsletter_id__patch: {
1087
+ input: {
1088
+ path: {
1089
+ /** Newsletter id (UUID). */
1090
+ newsletter_id: string;
1091
+ };
1092
+ headers?: {
1093
+ "X-Target-Org-Id"?: string | null;
1094
+ };
1095
+ body: UpdateNewsletterRequest;
1096
+ };
1097
+ output: ApiResponse_NewsletterPayload_;
1098
+ };
1099
+ /**
1100
+ * PUT /newsletters/{newsletter_id}/settings
1101
+ * Update Newsletter Settings
1102
+ * tier: write · scope: newsletter:write
1103
+ */
1104
+ update_newsletter_settings_newsletters__newsletter_id__settings_put: {
1105
+ input: {
1106
+ path: {
1107
+ /** Newsletter id (UUID). */
1108
+ newsletter_id: string;
1109
+ };
1110
+ headers?: {
1111
+ "X-Target-Org-Id"?: string | null;
1112
+ };
1113
+ body: UpdateNewsletterSettingsRequest;
1114
+ };
1115
+ output: ApiResponse_NewsletterPayload_;
1116
+ };
1117
+ /**
1118
+ * PATCH /newsletters/templates/{template_id}
1119
+ * Update Newsletter Template
1120
+ * tier: write · scope: newsletter:write
1121
+ */
1122
+ update_newsletter_template_newsletters_templates__template_id__patch: {
1123
+ input: {
1124
+ path: {
1125
+ /** Template id. */
1126
+ template_id: number;
1127
+ };
1128
+ headers?: {
1129
+ "X-Target-Org-Id"?: string | null;
1130
+ };
1131
+ body: NewsletterTemplateUpdateRequest;
1132
+ };
1133
+ output: ApiResponse_NewsletterStudioPayload_;
1134
+ };
1135
+ /**
1136
+ * POST /newsletters/templates/{template_id}/use
1137
+ * Use Template
1138
+ * tier: write · scope: newsletter:write
1139
+ */
1140
+ use_template_newsletters_templates__template_id__use_post: {
1141
+ input: {
1142
+ path: {
1143
+ /** Template id. */
1144
+ template_id: number;
1145
+ };
1146
+ headers?: {
1147
+ "X-Target-Org-Id"?: string | null;
1148
+ };
1149
+ body: UseTemplateRequest;
1150
+ };
1151
+ output: ApiResponse_NewsletterPayload_;
1152
+ };
1153
+ /**
1154
+ * POST /newsletters/{newsletter_id}/settings/verify-domain
1155
+ * Verify Newsletter Domain
1156
+ * tier: external · scope: newsletter:run
1157
+ */
1158
+ verify_newsletter_domain_newsletters__newsletter_id__settings_verify_domain_post: {
1159
+ input: {
1160
+ path: {
1161
+ /** Newsletter id (UUID). */
1162
+ newsletter_id: string;
1163
+ };
1164
+ headers?: {
1165
+ "X-Target-Org-Id"?: string | null;
1166
+ };
1167
+ body: VerifyDomainRequest;
1168
+ };
1169
+ output: ApiResponse_NewsletterPayload_;
1170
+ };
1171
+ /**
1172
+ * POST /newsletters/{newsletter_id}/subscribers/verify
1173
+ * Verify Newsletter Subscribers
1174
+ * tier: billable · scope: newsletter:run
1175
+ */
1176
+ verify_newsletter_subscribers_newsletters__newsletter_id__subscribers_verify_post: {
1177
+ input: {
1178
+ path: {
1179
+ /** Newsletter id. */
1180
+ newsletter_id: string;
1181
+ };
1182
+ headers?: {
1183
+ "X-Target-Org-Id"?: string | null;
1184
+ };
1185
+ };
1186
+ output: ApiResponse_NewsletterStudioPayload_;
1187
+ };
1188
+ }
1189
+
1190
+ // 50 schemas referenced above (the same as G8Contract.<Name>).
1191
+
1192
+ export interface ApiResponse_Any_ {
1193
+ data: unknown;
1194
+ pagination?: PaginationMeta | null;
1195
+ }
1196
+
1197
+ export interface ApiResponse_IssueAnalyticsKpis_ {
1198
+ data: IssueAnalyticsKpis;
1199
+ pagination?: PaginationMeta | null;
1200
+ }
1201
+
1202
+ export interface ApiResponse_IssueDetail_ {
1203
+ data: IssueDetail;
1204
+ pagination?: PaginationMeta | null;
1205
+ }
1206
+
1207
+ export interface ApiResponse_ListSyncListResponse_ {
1208
+ data: ListSyncListResponse;
1209
+ pagination?: PaginationMeta | null;
1210
+ }
1211
+
1212
+ export interface ApiResponse_NewsletterDetail_ {
1213
+ data: NewsletterDetail;
1214
+ pagination?: PaginationMeta | null;
1215
+ }
1216
+
1217
+ export interface ApiResponse_NewsletterListPayload_ {
1218
+ data: NewsletterListPayload;
1219
+ pagination?: PaginationMeta | null;
1220
+ }
1221
+
1222
+ export interface ApiResponse_NewsletterPayload_ {
1223
+ data: NewsletterPayload;
1224
+ pagination?: PaginationMeta | null;
1225
+ }
1226
+
1227
+ export interface ApiResponse_NewsletterStatusResponse_ {
1228
+ data: NewsletterStatusResponse;
1229
+ pagination?: PaginationMeta | null;
1230
+ }
1231
+
1232
+ export interface ApiResponse_NewsletterStudioPayload_ {
1233
+ data: NewsletterStudioPayload;
1234
+ pagination?: PaginationMeta | null;
1235
+ }
1236
+
1237
+ export interface ApiResponse_SubscriberListResponse_ {
1238
+ data: SubscriberListResponse;
1239
+ pagination?: PaginationMeta | null;
1240
+ }
1241
+
1242
+ export interface ApiResponse_SubscriberSummary_ {
1243
+ data: SubscriberSummary;
1244
+ pagination?: PaginationMeta | null;
1245
+ }
1246
+
1247
+ export interface ApiResponse_dict_ {
1248
+ data: Record<string, unknown>;
1249
+ pagination?: PaginationMeta | null;
1250
+ }
1251
+
1252
+ export interface ApiResponse_list_ {
1253
+ data: Array<unknown>;
1254
+ pagination?: PaginationMeta | null;
1255
+ }
1256
+
1257
+ /** Bulk-import an audience list's contacts as subscribers. */
1258
+ export interface ImportAudienceRequest {
1259
+ /** Integer audience id, not a UUID. */
1260
+ audience_id: number;
1261
+ }
1262
+
1263
+ /**
1264
+ * ``GET /{newsletter_id}/issues/{issue_id}/analytics/kpis``. Open dict
1265
+ * for the ``kpis`` bucket — bucketed counters evolve independently of
1266
+ * this API surface (see ``issue_analytics_router.py`` docstring).
1267
+ */
1268
+ export interface IssueAnalyticsKpis {
1269
+ kpis?: Record<string, unknown>;
1270
+ last_updated_at?: string | null;
1271
+ stale?: boolean | null;
1272
+ [key: string]: unknown;
1273
+ }
1274
+
1275
+ export interface IssueCreateRequest {
1276
+ html_body: string;
1277
+ plain_text?: string | null;
1278
+ preview_text?: string | null;
1279
+ reply_to?: string | null;
1280
+ sender_email?: string | null;
1281
+ sender_name?: string | null;
1282
+ subject: string;
1283
+ }
1284
+
1285
+ /**
1286
+ * A single newsletter issue. Open dict — the internal handler returns
1287
+ * the row dict plus derived KPI/status fields.
1288
+ */
1289
+ export interface IssueDetail {
1290
+ created_at?: string | null;
1291
+ id?: number | null;
1292
+ newsletter_id?: string | null;
1293
+ sent_at?: string | null;
1294
+ status?: string | null;
1295
+ subject?: string | null;
1296
+ updated_at?: string | null;
1297
+ [key: string]: unknown;
1298
+ }
1299
+
1300
+ /**
1301
+ * Enqueue or schedule an issue for sending. ``scheduled_at`` omitted
1302
+ * (or null) sends immediately.
1303
+ */
1304
+ export interface IssueSendRequest {
1305
+ scheduled_at?: string | null;
1306
+ }
1307
+
1308
+ export interface IssueSendTestRequest {
1309
+ test_email: string;
1310
+ }
1311
+
1312
+ /**
1313
+ * Partial update for a draft issue. All fields optional — only the
1314
+ * ones sent are changed (mirrors the internal ``exclude_unset=True``
1315
+ * handling in ``update_issue``).
1316
+ */
1317
+ export interface IssueUpdateRequest {
1318
+ html_body?: string | null;
1319
+ plain_text?: string | null;
1320
+ preview_text?: string | null;
1321
+ reply_to?: string | null;
1322
+ sender_email?: string | null;
1323
+ sender_name?: string | null;
1324
+ subject?: string | null;
1325
+ }
1326
+
1327
+ /** One audience list feeding a newsletter's subscribers. */
1328
+ export interface ListSync {
1329
+ audience_list_id?: number | null;
1330
+ /** Live count the worker will act on. */
1331
+ contact_count?: number | null;
1332
+ /** False on a SYNTHETIC candidate row - a list resolved by `?audience_list_id=` that has no saved sync yet. */
1333
+ enabled?: boolean | null;
1334
+ /** Live list name. */
1335
+ name?: string | null;
1336
+ [key: string]: unknown;
1337
+ }
1338
+
1339
+ export interface ListSyncEnableRequest {
1340
+ /** The exact consent wording shown to the operator, stored VERBATIM so the trail survives future copy edits. Send what your UI displayed, not a summary of it. */
1341
+ attested_text?: string | null;
1342
+ /** Audience list to attach. */
1343
+ audience_list_id: number;
1344
+ }
1345
+
1346
+ /**
1347
+ * Audience lists attached to a newsletter.
1348
+ *
1349
+ * The app returns a bare LIST here, not an object, so `from_internal` accepts
1350
+ * both that and the wrapped shapes rather than 500-ing if it ever changes.
1351
+ */
1352
+ export interface ListSyncListResponse {
1353
+ list_syncs?: Array<ListSync>;
1354
+ total?: number;
1355
+ [key: string]: unknown;
1356
+ }
1357
+
1358
+ export interface NewsletterCampaignLinkRequest {
1359
+ /** The Studio campaign to link. */
1360
+ campaign_id: string;
1361
+ }
1362
+
1363
+ /** Create a new newsletter. Mirrors ``CreateNewsletterRequest``. */
1364
+ export interface NewsletterCreateRequest {
1365
+ goal?: string | null;
1366
+ name: string;
1367
+ }
1368
+
1369
+ /** A single newsletter row. Open dict — mirrors ``_serialize_newsletter``. */
1370
+ export interface NewsletterDetail {
1371
+ audience_list_id?: unknown | null;
1372
+ created_at?: string | null;
1373
+ goal?: string | null;
1374
+ id?: string | null;
1375
+ name?: string | null;
1376
+ slug?: string | null;
1377
+ status?: string | null;
1378
+ updated_at?: string | null;
1379
+ [key: string]: unknown;
1380
+ }
1381
+
1382
+ export interface NewsletterIssueGenerateRequest {
1383
+ /** `email_safe`: table layout, inline CSS. `modern`: div layout. */
1384
+ html_mode?: "email_safe" | "modern";
1385
+ /** What the issue should cover. */
1386
+ prompt?: string | null;
1387
+ /** Base the issue on this template. */
1388
+ template_id?: number | null;
1389
+ }
1390
+
1391
+ /** An open envelope for a LIST result, so a bare list keeps its shape. */
1392
+ export interface NewsletterListPayload {
1393
+ items?: Array<unknown>;
1394
+ [key: string]: unknown;
1395
+ }
1396
+
1397
+ /** An open envelope for a newsletter, an issue, a template or a send row. */
1398
+ export type NewsletterPayload = Record<string, unknown>;
1399
+
1400
+ /** The result of a lifecycle transition. */
1401
+ export interface NewsletterStatusResponse {
1402
+ id?: string | null;
1403
+ /** Status after the transition, e.g. `paused`, `completed`. */
1404
+ status?: string | null;
1405
+ [key: string]: unknown;
1406
+ }
1407
+
1408
+ /** An issue, version list, template, verification job or link result. */
1409
+ export type NewsletterStudioPayload = Record<string, unknown>;
1410
+
1411
+ export interface NewsletterTemplateUpdateRequest {
1412
+ html_body?: string | null;
1413
+ name?: string | null;
1414
+ preview_text?: string | null;
1415
+ subject?: string | null;
1416
+ }
1417
+
1418
+ export interface PaginationMeta {
1419
+ /** Whether there are more pages */
1420
+ has_next: boolean;
1421
+ /** Items per page */
1422
+ limit: number;
1423
+ /** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
1424
+ next_cursor?: string | null;
1425
+ /** Current page number (1-indexed) */
1426
+ page: number;
1427
+ /** Total number of items */
1428
+ total: number;
1429
+ }
1430
+
1431
+ /** Rewrite ONE element with an AI instruction. THIS SPENDS AI CREDIT. */
1432
+ export interface RewriteTextRequest {
1433
+ element_id: string;
1434
+ /** What to change, in plain words. */
1435
+ instruction: string;
1436
+ }
1437
+
1438
+ /** Why the send was stopped. Recorded on the send row. */
1439
+ export interface SendControlRequest {
1440
+ reason?: string | null;
1441
+ }
1442
+
1443
+ /**
1444
+ * Repoint a button.
1445
+ *
1446
+ * `action_type` is CLOSED to `url` and `mailto`. The app narrows the wider
1447
+ * landing-page action union to those two for email, so a third value reaches
1448
+ * a real `Literal` inside the handler and would escape as a 500.
1449
+ */
1450
+ export interface SetButtonActionRequest {
1451
+ action_type: "url" | "mailto";
1452
+ /** For `mailto`. */
1453
+ email?: string | null;
1454
+ g8_action_id: string;
1455
+ /** For `url`. */
1456
+ href?: string | null;
1457
+ target?: ("_self" | "_blank") | null;
1458
+ }
1459
+
1460
+ /**
1461
+ * Change or remove an image.
1462
+ *
1463
+ * Email surfaces handle `<img>` only - no video and no per-breakpoint
1464
+ * positioning - which is why this carries a smaller set of fields than the
1465
+ * landing-page equivalent.
1466
+ */
1467
+ export interface SetMediaEditRequest {
1468
+ align?: ("left" | "center" | "right") | null;
1469
+ alt?: string | null;
1470
+ g8_action_id: string;
1471
+ height?: number | null;
1472
+ /** Delete the image. Other fields are then ignored. */
1473
+ remove?: boolean;
1474
+ src?: string | null;
1475
+ width?: number | null;
1476
+ }
1477
+
1478
+ /**
1479
+ * Move a template through its lifecycle.
1480
+ *
1481
+ * `approved` is what makes it visible in the gallery; `archived` takes it out
1482
+ * without deleting it. Closed to the app's three values.
1483
+ */
1484
+ export interface SetTemplateApprovalRequest {
1485
+ status: "draft" | "approved" | "archived";
1486
+ }
1487
+
1488
+ /** Replace the text of ONE element, exactly as given. */
1489
+ export interface SetTextRequest {
1490
+ /** `g8` element id from the rendered HTML. */
1491
+ element_id: string;
1492
+ new_text: string;
1493
+ }
1494
+
1495
+ export interface SubscriberAddRequest {
1496
+ email: string;
1497
+ first_name?: string | null;
1498
+ last_name?: string | null;
1499
+ }
1500
+
1501
+ /**
1502
+ * ``GET /{newsletter_id}/subscribers`` — preserves the internal
1503
+ * ``{items, total, page, page_size}`` shape verbatim.
1504
+ */
1505
+ export interface SubscriberListResponse {
1506
+ items?: Array<SubscriberSummary>;
1507
+ page?: number;
1508
+ page_size?: number;
1509
+ total?: number;
1510
+ }
1511
+
1512
+ /** A single newsletter subscriber row. */
1513
+ export interface SubscriberSummary {
1514
+ created_at?: string | null;
1515
+ email?: string | null;
1516
+ first_name?: string | null;
1517
+ id?: number | null;
1518
+ last_name?: string | null;
1519
+ status?: string | null;
1520
+ verification_status?: string | null;
1521
+ [key: string]: unknown;
1522
+ }
1523
+
1524
+ /**
1525
+ * Import an existing email as a template.
1526
+ *
1527
+ * `source` says which of the three optional inputs is the real one: `url`
1528
+ * reads `url`, `past_issue` reads `issue_id`, `html` reads `html`. It is
1529
+ * deliberately left an open string rather than a `Literal`, because the app
1530
+ * leaves it open - closing it here would 422 a source the app added.
1531
+ */
1532
+ export interface TemplateCloneRequest {
1533
+ html?: string | null;
1534
+ issue_id?: string | null;
1535
+ /** Keep the original images rather than dropping them. */
1536
+ keep_images?: boolean;
1537
+ /** Restyle the import to the org's brand. */
1538
+ reskin?: boolean;
1539
+ /** `url`, `past_issue` or `html`. */
1540
+ source: string;
1541
+ url?: string | null;
1542
+ }
1543
+
1544
+ /** Build a template from a named layout archetype. ASYNC and AI-backed. */
1545
+ export interface TemplateFromLayoutRequest {
1546
+ /** Which layout to build from. */
1547
+ archetype_key: string;
1548
+ /** Audience the copy is aimed at. */
1549
+ audience_id?: string | null;
1550
+ }
1551
+
1552
+ /** Build a template from a plain-language idea. ASYNC and AI-backed. */
1553
+ export interface TemplateFromPromptRequest {
1554
+ audience_id?: string | null;
1555
+ /** What it is for, e.g. `product`. */
1556
+ goal?: string;
1557
+ /** What the email should say, in plain words. */
1558
+ idea: string;
1559
+ length?: string | null;
1560
+ tone?: string | null;
1561
+ /** How many alternatives to generate. */
1562
+ variants?: number | null;
1563
+ /** Past issues to imitate the voice of. */
1564
+ voice_reference_issue_ids?: Array<string>;
1565
+ }
1566
+
1567
+ /**
1568
+ * Poll many template builds in one call.
1569
+ *
1570
+ * Capped at 200 ids, matching the app. The cap is not arbitrary: a dashboard
1571
+ * polls this every two seconds and an unbounded `IN (...)` is a denial-of-
1572
+ * service surface, which is why it is enforced here as a 422 rather than
1573
+ * reached inside the handler.
1574
+ */
1575
+ export interface TemplateGenerationStatusBatchRequest {
1576
+ template_ids: Array<number>;
1577
+ }
1578
+
1579
+ /** Rename a newsletter, restate its goal, or point it at a different list. */
1580
+ export interface UpdateNewsletterRequest {
1581
+ /** The audience new subscribers are drawn from. Changing it does NOT move anybody who is already subscribed. */
1582
+ audience_list_id?: string | null;
1583
+ /** What the newsletter is for. Steers AI drafting. */
1584
+ goal?: string | null;
1585
+ name?: string | null;
1586
+ }
1587
+
1588
+ /** Who a newsletter sends as, and how strict its opt-in is. */
1589
+ export interface UpdateNewsletterSettingsRequest {
1590
+ auto_verify_on_import?: boolean | null;
1591
+ default_reply_to?: string | null;
1592
+ default_sender_email?: string | null;
1593
+ default_sender_name?: string | null;
1594
+ /** The ACTIVE double-opt-in flag the send pipeline reads. Legacy: a `true` written here is routed to `double_opt_in_intent` and the active flag is auto-promoted once the domain and sender are ready. */
1595
+ double_opt_in?: boolean | null;
1596
+ /** The REQUEST for double opt-in, independent of readiness. Set this rather than `double_opt_in` - it is promoted automatically. */
1597
+ double_opt_in_intent?: boolean | null;
1598
+ /** Must be verified first - see `settings/verify-domain`. */
1599
+ sending_domain?: string | null;
1600
+ skip_unverified_subscribers?: boolean | null;
1601
+ }
1602
+
1603
+ /** Turn a template into a new draft issue on a newsletter. */
1604
+ export interface UseTemplateRequest {
1605
+ /** Which newsletter the draft issue is created on. */
1606
+ newsletter_id: string;
1607
+ }
1608
+
1609
+ /** Start verification of a sending domain. */
1610
+ export interface VerifyDomainRequest {
1611
+ /** Sending subdomain, e.g. `updates.acme.com`. */
1612
+ domain: string;
1613
+ }