@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,1564 @@
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.quotes` (Quotes): 56 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<"archive_quote_quotes__quote_id__archive_post">;
9
+ *
10
+ * Reference with examples: quotes.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.quotes.<member>` -> the operationId it calls. */
15
+ export interface QuotesMembers {
16
+ archiveQuote: "archive_quote_quotes__quote_id__archive_post";
17
+ batchQuoteAction: "batch_quote_action_quotes_batch_post";
18
+ bulkUpdateStripeProductSettings: "bulk_update_stripe_product_settings_stripe_product_settings_bulk_patch";
19
+ calculateMailboxCapacity: "calculate_mailbox_capacity_quotes_mailbox_capacity_post";
20
+ connectStripeApiKey: "connect_stripe_api_key_stripe_api_key_post";
21
+ createManualProduct: "create_manual_product_manual_products_post";
22
+ createQuote: "create_quote_quotes_post";
23
+ createQuoteBillingContact: "create_quote_billing_contact_quote_billing_contact_post";
24
+ createQuoteContact: "create_quote_contact_quote_contacts_post";
25
+ createQuoteTemplate: "create_quote_template_quote_templates_post";
26
+ deleteManualProduct: "delete_manual_product_manual_products__product_id__delete";
27
+ deleteQuote: "delete_quote_quotes__quote_id__delete";
28
+ deleteQuoteDocument: "delete_quote_document_quote_settings_documents__doc_id__delete";
29
+ deleteQuoteTemplate: "delete_quote_template_quote_templates__template_id__delete";
30
+ downloadQuoteEvidence: "download_quote_evidence_quotes__quote_id__evidence__evidence_id__get";
31
+ duplicateQuote: "duplicate_quote_quotes__quote_id__duplicate_post";
32
+ editQuoteAsDraft: "edit_quote_as_draft_quotes__quote_id__edit_as_draft_post";
33
+ expireQuote: "expire_quote_quotes__quote_id__expire_post";
34
+ getCompanyQuotes: "get_company_quotes_companies__company_id__quotes_get";
35
+ getCompanyRevenueSummary: "get_company_revenue_summary_stripe_companies__company_id__revenue_summary_get";
36
+ getCompanyStripeInvoices: "get_company_stripe_invoices_stripe_companies__company_id__invoices_get";
37
+ getCompanyStripeSubscriptions: "get_company_stripe_subscriptions_stripe_companies__company_id__subscriptions_get";
38
+ getContactQuotes: "get_contact_quotes_contacts__contact_id__quotes_get";
39
+ getQuote: "get_quote_quotes__quote_id__get";
40
+ getQuotePdf: "get_quote_pdf_quotes__quote_id__pdf_get";
41
+ getQuoteSettings: "get_quote_settings_quote_settings_get";
42
+ getStripeData: "get_stripe_data_stripe_connections__connection_id__data_get";
43
+ getStripeDataPage: "get_stripe_data_page_stripe_connections__connection_id__data__resource__get";
44
+ getStripeIntegrationStatus: "get_stripe_integration_status_stripe_integration_status_get";
45
+ listManualProducts: "list_manual_products_manual_products_get";
46
+ listQuotableProducts: "list_quotable_products_quotable_products_get";
47
+ listQuoteDocuments: "list_quote_documents_quote_settings_documents_get";
48
+ listQuoteEvidence: "list_quote_evidence_quotes__quote_id__evidence_get";
49
+ listQuoteTemplates: "list_quote_templates_quote_templates_get";
50
+ listQuotes: "list_quotes_quotes_get";
51
+ listStripeProductSettings: "list_stripe_product_settings_stripe_product_settings_get";
52
+ listStripeProductSubscribers: "list_stripe_product_subscribers_stripe_products__product_id__subscribers_get";
53
+ listStripeProducts: "list_stripe_products_stripe_products_get";
54
+ markQuoteAccepted: "mark_quote_accepted_quotes__quote_id__mark_accepted_post";
55
+ previewPaymentSchedule: "preview_payment_schedule_quotes_payment_schedule_post";
56
+ previewQuoteDraft: "preview_quote_draft_quotes_preview_draft_post";
57
+ previewQuoteSend: "preview_quote_send_quotes__quote_id__send_preview_post";
58
+ revokeQuote: "revoke_quote_quotes__quote_id__revoke_post";
59
+ searchQuoteContacts: "search_quote_contacts_quote_contacts_get";
60
+ sendQuote: "send_quote_quotes__quote_id__send_post";
61
+ triggerStripeSync: "trigger_stripe_sync_stripe_sync_post";
62
+ unarchiveQuote: "unarchive_quote_quotes__quote_id__unarchive_post";
63
+ updateManualProduct: "update_manual_product_manual_products__product_id__patch";
64
+ updateQuotePatch: "update_quote_quotes__quote_id__patch";
65
+ updateQuotePut: "update_quote_quotes__quote_id__put";
66
+ updateQuoteSettings: "update_quote_settings_quote_settings_put";
67
+ updateQuoteTemplate: "update_quote_template_quote_templates__template_id__put";
68
+ updateStripeCustomerMapping: "update_stripe_customer_mapping_stripe_customers__customer_id__mapping_patch";
69
+ uploadQuoteDocument: "upload_quote_document_quote_settings_documents_post";
70
+ uploadQuoteEvidence: "upload_quote_evidence_quotes__quote_id__evidence_post";
71
+ upsertStripeProductSettings: "upsert_stripe_product_settings_stripe_product_settings__stripe_product_id__put";
72
+ }
73
+
74
+ /** Input and output of every `g8.api.quotes` operation, keyed by operationId. */
75
+ export interface QuotesOperations {
76
+ /**
77
+ * POST /quotes/{quote_id}/archive
78
+ * Archive Quote
79
+ * tier: destructive · scope: quotes:delete
80
+ */
81
+ archive_quote_quotes__quote_id__archive_post: {
82
+ input: {
83
+ path: {
84
+ /** Quote id (UUID). */
85
+ quote_id: string;
86
+ };
87
+ headers?: {
88
+ "X-Target-Org-Id"?: string | null;
89
+ };
90
+ };
91
+ output: ApiResponse_QuotePayload_;
92
+ };
93
+ /**
94
+ * POST /quotes/batch
95
+ * Batch Quote Action
96
+ * tier: external · scope: quotes:run
97
+ */
98
+ batch_quote_action_quotes_batch_post: {
99
+ input: {
100
+ headers?: {
101
+ "X-Target-Org-Id"?: string | null;
102
+ };
103
+ body: BatchQuoteActionRequest;
104
+ };
105
+ output: ApiResponse_QuoteListPayload_;
106
+ };
107
+ /**
108
+ * PATCH /stripe/product-settings/bulk
109
+ * Bulk Update Stripe Product Settings
110
+ * tier: write · scope: quotes:write
111
+ */
112
+ bulk_update_stripe_product_settings_stripe_product_settings_bulk_patch: {
113
+ input: {
114
+ headers?: {
115
+ "X-Target-Org-Id"?: string | null;
116
+ };
117
+ body: BulkProductSettingsRequest;
118
+ };
119
+ output: ApiResponse_BillingPayload_;
120
+ };
121
+ /**
122
+ * POST /quotes/mailbox-capacity
123
+ * Calculate Mailbox Capacity
124
+ * tier: read · scope: quotes:read
125
+ */
126
+ calculate_mailbox_capacity_quotes_mailbox_capacity_post: {
127
+ input: {
128
+ headers?: {
129
+ "X-Target-Org-Id"?: string | null;
130
+ };
131
+ body: MailboxCapacityRequest;
132
+ };
133
+ output: ApiResponse_BillingPayload_;
134
+ };
135
+ /**
136
+ * POST /stripe/api-key
137
+ * Connect Stripe Api Key
138
+ * tier: external · scope: quotes:run
139
+ */
140
+ connect_stripe_api_key_stripe_api_key_post: {
141
+ input: {
142
+ headers?: {
143
+ "X-Target-Org-Id"?: string | null;
144
+ };
145
+ body: StripeApiKeyRequest;
146
+ };
147
+ output: ApiResponse_BillingPayload_;
148
+ };
149
+ /**
150
+ * POST /manual-products
151
+ * Create Manual Product
152
+ * tier: write · scope: quotes:write
153
+ */
154
+ create_manual_product_manual_products_post: {
155
+ input: {
156
+ headers?: {
157
+ "X-Target-Org-Id"?: string | null;
158
+ };
159
+ body: ManualProductCreateRequest;
160
+ };
161
+ output: ApiResponse_BillingPayload_;
162
+ };
163
+ /**
164
+ * POST /quotes
165
+ * Create Quote
166
+ * tier: external · scope: quotes:run
167
+ */
168
+ create_quote_quotes_post: {
169
+ input: {
170
+ headers?: {
171
+ "X-Target-Org-Id"?: string | null;
172
+ };
173
+ body: QuoteCreateRequest;
174
+ };
175
+ output: ApiResponse_QuoteDetail_;
176
+ };
177
+ /**
178
+ * POST /quote-billing-contact
179
+ * Create Quote Billing Contact
180
+ * tier: external · scope: quotes:run
181
+ */
182
+ create_quote_billing_contact_quote_billing_contact_post: {
183
+ input: {
184
+ headers?: {
185
+ "X-Target-Org-Id"?: string | null;
186
+ };
187
+ body: QuoteBillingContactCreateRequest;
188
+ };
189
+ output: ApiResponse_QuotePayload_;
190
+ };
191
+ /**
192
+ * POST /quote-contacts
193
+ * Create Quote Contact
194
+ * tier: external · scope: quotes:run
195
+ */
196
+ create_quote_contact_quote_contacts_post: {
197
+ input: {
198
+ headers?: {
199
+ "X-Target-Org-Id"?: string | null;
200
+ };
201
+ body: QuoteContactCreateRequest;
202
+ };
203
+ output: ApiResponse_QuotePayload_;
204
+ };
205
+ /**
206
+ * POST /quote-templates
207
+ * Create Quote Template
208
+ * tier: external · scope: quotes:run
209
+ */
210
+ create_quote_template_quote_templates_post: {
211
+ input: {
212
+ headers?: {
213
+ "X-Target-Org-Id"?: string | null;
214
+ };
215
+ body: QuoteTemplateRequest;
216
+ };
217
+ output: ApiResponse_QuotePayload_;
218
+ };
219
+ /**
220
+ * DELETE /manual-products/{product_id}
221
+ * Delete Manual Product
222
+ * tier: destructive · scope: quotes:delete
223
+ */
224
+ delete_manual_product_manual_products__product_id__delete: {
225
+ input: {
226
+ path: {
227
+ /** Manual product id. */
228
+ product_id: string;
229
+ };
230
+ headers?: {
231
+ "X-Target-Org-Id"?: string | null;
232
+ };
233
+ };
234
+ output: ApiResponse_BillingPayload_;
235
+ };
236
+ /**
237
+ * DELETE /quotes/{quote_id}
238
+ * Delete Quote
239
+ * tier: destructive · scope: quotes:delete
240
+ */
241
+ delete_quote_quotes__quote_id__delete: {
242
+ input: {
243
+ path: {
244
+ /** Quote UUID */
245
+ quote_id: string;
246
+ };
247
+ headers?: {
248
+ "X-Target-Org-Id"?: string | null;
249
+ };
250
+ };
251
+ output: ApiResponse_dict_;
252
+ };
253
+ /**
254
+ * DELETE /quote-settings/documents/{doc_id}
255
+ * Delete Quote Document
256
+ * tier: destructive · scope: quotes:delete
257
+ */
258
+ delete_quote_document_quote_settings_documents__doc_id__delete: {
259
+ input: {
260
+ path: {
261
+ /** Document id. */
262
+ doc_id: string;
263
+ };
264
+ headers?: {
265
+ "X-Target-Org-Id"?: string | null;
266
+ };
267
+ };
268
+ output: ApiResponse_QuotePayload_;
269
+ };
270
+ /**
271
+ * DELETE /quote-templates/{template_id}
272
+ * Delete Quote Template
273
+ * tier: destructive · scope: quotes:delete
274
+ */
275
+ delete_quote_template_quote_templates__template_id__delete: {
276
+ input: {
277
+ path: {
278
+ /** Template id. */
279
+ template_id: string;
280
+ };
281
+ headers?: {
282
+ "X-Target-Org-Id"?: string | null;
283
+ };
284
+ };
285
+ output: ApiResponse_QuotePayload_;
286
+ };
287
+ /**
288
+ * GET /quotes/{quote_id}/evidence/{evidence_id}
289
+ * Download Quote Evidence
290
+ * tier: read · scope: quotes:read
291
+ */
292
+ download_quote_evidence_quotes__quote_id__evidence__evidence_id__get: {
293
+ input: {
294
+ path: {
295
+ /** Quote id. */
296
+ quote_id: string;
297
+ /** Evidence id. */
298
+ evidence_id: string;
299
+ };
300
+ headers?: {
301
+ "X-Target-Org-Id"?: string | null;
302
+ };
303
+ };
304
+ output: ApiResponse_BillingPayload_;
305
+ };
306
+ /**
307
+ * POST /quotes/{quote_id}/duplicate
308
+ * Duplicate Quote
309
+ * tier: external · scope: quotes:run
310
+ */
311
+ duplicate_quote_quotes__quote_id__duplicate_post: {
312
+ input: {
313
+ path: {
314
+ /** Source quote UUID (any status) */
315
+ quote_id: string;
316
+ };
317
+ headers?: {
318
+ "X-Target-Org-Id"?: string | null;
319
+ };
320
+ };
321
+ output: ApiResponse_QuoteDetail_;
322
+ };
323
+ /**
324
+ * POST /quotes/{quote_id}/edit-as-draft
325
+ * Edit Quote As Draft
326
+ * tier: external · scope: quotes:run
327
+ */
328
+ edit_quote_as_draft_quotes__quote_id__edit_as_draft_post: {
329
+ input: {
330
+ path: {
331
+ /** Source quote UUID (must be in 'sent' status) */
332
+ quote_id: string;
333
+ };
334
+ headers?: {
335
+ "X-Target-Org-Id"?: string | null;
336
+ };
337
+ };
338
+ output: ApiResponse_dict_;
339
+ };
340
+ /**
341
+ * POST /quotes/{quote_id}/expire
342
+ * Expire Quote
343
+ * tier: destructive · scope: quotes:delete
344
+ */
345
+ expire_quote_quotes__quote_id__expire_post: {
346
+ input: {
347
+ path: {
348
+ /** Quote id (UUID). */
349
+ quote_id: string;
350
+ };
351
+ headers?: {
352
+ "X-Target-Org-Id"?: string | null;
353
+ };
354
+ };
355
+ output: ApiResponse_QuotePayload_;
356
+ };
357
+ /**
358
+ * GET /companies/{company_id}/quotes
359
+ * Get Company Quotes
360
+ * tier: read · scope: quotes:read
361
+ */
362
+ get_company_quotes_companies__company_id__quotes_get: {
363
+ input: {
364
+ path: {
365
+ /** MashupCompany ID */
366
+ company_id: number;
367
+ };
368
+ headers?: {
369
+ "X-Target-Org-Id"?: string | null;
370
+ };
371
+ };
372
+ output: ApiResponse_list_QuoteDetail__;
373
+ };
374
+ /**
375
+ * GET /stripe/companies/{company_id}/revenue-summary
376
+ * Get Company Revenue Summary
377
+ * tier: read · scope: quotes:read
378
+ */
379
+ get_company_revenue_summary_stripe_companies__company_id__revenue_summary_get: {
380
+ input: {
381
+ path: {
382
+ /** graph8 company id. */
383
+ company_id: number;
384
+ };
385
+ headers?: {
386
+ "X-Target-Org-Id"?: string | null;
387
+ };
388
+ };
389
+ output: ApiResponse_BillingPayload_;
390
+ };
391
+ /**
392
+ * GET /stripe/companies/{company_id}/invoices
393
+ * Get Company Stripe Invoices
394
+ * tier: read · scope: quotes:read
395
+ */
396
+ get_company_stripe_invoices_stripe_companies__company_id__invoices_get: {
397
+ input: {
398
+ path: {
399
+ /** graph8 company id. */
400
+ company_id: number;
401
+ };
402
+ query?: {
403
+ /** 1-based page. */
404
+ page?: number;
405
+ limit?: number;
406
+ };
407
+ headers?: {
408
+ "X-Target-Org-Id"?: string | null;
409
+ };
410
+ };
411
+ output: ApiResponse_BillingListPayload_;
412
+ };
413
+ /**
414
+ * GET /stripe/companies/{company_id}/subscriptions
415
+ * Get Company Stripe Subscriptions
416
+ * tier: read · scope: quotes:read
417
+ */
418
+ get_company_stripe_subscriptions_stripe_companies__company_id__subscriptions_get: {
419
+ input: {
420
+ path: {
421
+ /** graph8 company id. */
422
+ company_id: number;
423
+ };
424
+ headers?: {
425
+ "X-Target-Org-Id"?: string | null;
426
+ };
427
+ };
428
+ output: ApiResponse_BillingListPayload_;
429
+ };
430
+ /**
431
+ * GET /contacts/{contact_id}/quotes
432
+ * Get Contact Quotes
433
+ * tier: read · scope: quotes:read
434
+ */
435
+ get_contact_quotes_contacts__contact_id__quotes_get: {
436
+ input: {
437
+ path: {
438
+ /** MashupContact ID (the quote signer) */
439
+ contact_id: number;
440
+ };
441
+ headers?: {
442
+ "X-Target-Org-Id"?: string | null;
443
+ };
444
+ };
445
+ output: ApiResponse_list_QuoteDetail__;
446
+ };
447
+ /**
448
+ * GET /quotes/{quote_id}
449
+ * Get Quote
450
+ * tier: read · scope: quotes:read
451
+ */
452
+ get_quote_quotes__quote_id__get: {
453
+ input: {
454
+ path: {
455
+ /** Quote UUID */
456
+ quote_id: string;
457
+ };
458
+ headers?: {
459
+ "X-Target-Org-Id"?: string | null;
460
+ };
461
+ };
462
+ output: ApiResponse_QuoteDetail_;
463
+ };
464
+ /**
465
+ * GET /quotes/{quote_id}/pdf
466
+ * Get Quote Pdf
467
+ * tier: read · scope: quotes:read
468
+ */
469
+ get_quote_pdf_quotes__quote_id__pdf_get: {
470
+ input: {
471
+ path: {
472
+ /** Quote id (UUID). */
473
+ quote_id: string;
474
+ };
475
+ headers?: {
476
+ "X-Target-Org-Id"?: string | null;
477
+ };
478
+ };
479
+ output: ApiResponse_QuotePayload_;
480
+ };
481
+ /**
482
+ * GET /quote-settings
483
+ * Get Quote Settings
484
+ * tier: read · scope: quotes:read
485
+ */
486
+ get_quote_settings_quote_settings_get: {
487
+ input: {
488
+ headers?: {
489
+ "X-Target-Org-Id"?: string | null;
490
+ };
491
+ };
492
+ output: ApiResponse_QuoteSettingsResponse_;
493
+ };
494
+ /**
495
+ * GET /stripe/connections/{connection_id}/data
496
+ * Get Stripe Data
497
+ * tier: read · scope: quotes:read
498
+ */
499
+ get_stripe_data_stripe_connections__connection_id__data_get: {
500
+ input: {
501
+ path: {
502
+ /** The org's Stripe connection id. */
503
+ connection_id: string;
504
+ };
505
+ headers?: {
506
+ "X-Target-Org-Id"?: string | null;
507
+ };
508
+ };
509
+ output: ApiResponse_BillingPayload_;
510
+ };
511
+ /**
512
+ * GET /stripe/connections/{connection_id}/data/{resource}
513
+ * Get Stripe Data Page
514
+ * tier: read · scope: quotes:read
515
+ */
516
+ get_stripe_data_page_stripe_connections__connection_id__data__resource__get: {
517
+ input: {
518
+ path: {
519
+ /** The org's Stripe connection id. */
520
+ connection_id: string;
521
+ /** Which Stripe list to page through. */
522
+ resource: "customers" | "subscriptions" | "invoices" | "charges";
523
+ };
524
+ query?: {
525
+ limit?: number;
526
+ /** `next_cursor` from the previous page. */
527
+ starting_after?: string | null;
528
+ };
529
+ headers?: {
530
+ "X-Target-Org-Id"?: string | null;
531
+ };
532
+ };
533
+ output: ApiResponse_BillingPayload_;
534
+ };
535
+ /**
536
+ * GET /stripe/integration-status
537
+ * Get Stripe Integration Status
538
+ * tier: read · scope: quotes:read
539
+ */
540
+ get_stripe_integration_status_stripe_integration_status_get: {
541
+ input: {
542
+ headers?: {
543
+ "X-Target-Org-Id"?: string | null;
544
+ };
545
+ };
546
+ output: ApiResponse_BillingPayload_;
547
+ };
548
+ /**
549
+ * GET /manual-products
550
+ * List Manual Products
551
+ * tier: read · scope: quotes:read
552
+ */
553
+ list_manual_products_manual_products_get: {
554
+ input: {
555
+ query?: {
556
+ /** Include inactive products. */
557
+ include_inactive?: boolean;
558
+ /** Include products not offered on quotes. */
559
+ include_non_quotable?: boolean;
560
+ category?: string | null;
561
+ /** 1-based page. */
562
+ page?: number;
563
+ limit?: number;
564
+ };
565
+ headers?: {
566
+ "X-Target-Org-Id"?: string | null;
567
+ };
568
+ };
569
+ output: ApiResponse_BillingListPayload_;
570
+ };
571
+ /**
572
+ * GET /quotable-products
573
+ * List Quotable Products
574
+ * tier: read · scope: quotes:read
575
+ */
576
+ list_quotable_products_quotable_products_get: {
577
+ input: {
578
+ query?: {
579
+ /** Filter prices to this currency code (e.g. USD) */
580
+ currency?: string | null;
581
+ page?: number;
582
+ limit?: number;
583
+ };
584
+ headers?: {
585
+ "X-Target-Org-Id"?: string | null;
586
+ };
587
+ };
588
+ output: ApiResponse_QuotableProductsResponse_;
589
+ };
590
+ /**
591
+ * GET /quote-settings/documents
592
+ * List Quote Documents
593
+ * tier: read · scope: quotes:read
594
+ */
595
+ list_quote_documents_quote_settings_documents_get: {
596
+ input: {
597
+ headers?: {
598
+ "X-Target-Org-Id"?: string | null;
599
+ };
600
+ };
601
+ output: ApiResponse_QuoteListPayload_;
602
+ };
603
+ /**
604
+ * GET /quotes/{quote_id}/evidence
605
+ * List Quote Evidence
606
+ * tier: read · scope: quotes:read
607
+ */
608
+ list_quote_evidence_quotes__quote_id__evidence_get: {
609
+ input: {
610
+ path: {
611
+ /** Quote id. */
612
+ quote_id: string;
613
+ };
614
+ headers?: {
615
+ "X-Target-Org-Id"?: string | null;
616
+ };
617
+ };
618
+ output: ApiResponse_BillingListPayload_;
619
+ };
620
+ /**
621
+ * GET /quote-templates
622
+ * List Quote Templates
623
+ * tier: read · scope: quotes:read
624
+ */
625
+ list_quote_templates_quote_templates_get: {
626
+ input: {
627
+ headers?: {
628
+ "X-Target-Org-Id"?: string | null;
629
+ };
630
+ };
631
+ output: ApiResponse_QuoteListPayload_;
632
+ };
633
+ /**
634
+ * GET /quotes
635
+ * List Quotes
636
+ * tier: read · scope: quotes:read
637
+ */
638
+ list_quotes_quotes_get: {
639
+ input: {
640
+ query?: {
641
+ /** Filter by quote status: draft, sent, viewed, accepted, declined, voided, expired */
642
+ status?: string | null;
643
+ /** Filter quotes for a specific company */
644
+ mashup_company_id?: number | null;
645
+ /** Filter quotes linked to a specific deal (UUID) */
646
+ deal_id?: string | null;
647
+ /** Filter quotes owned by a specific user (email) */
648
+ owner_id?: string | null;
649
+ page?: number;
650
+ limit?: number;
651
+ };
652
+ headers?: {
653
+ "X-Target-Org-Id"?: string | null;
654
+ };
655
+ };
656
+ output: ApiResponse_QuoteListResponse_;
657
+ };
658
+ /**
659
+ * GET /stripe/product-settings
660
+ * List Stripe Product Settings
661
+ * tier: read · scope: quotes:read
662
+ */
663
+ list_stripe_product_settings_stripe_product_settings_get: {
664
+ input: {
665
+ headers?: {
666
+ "X-Target-Org-Id"?: string | null;
667
+ };
668
+ };
669
+ output: ApiResponse_BillingListPayload_;
670
+ };
671
+ /**
672
+ * GET /stripe/products/{product_id}/subscribers
673
+ * List Stripe Product Subscribers
674
+ * tier: read · scope: quotes:read
675
+ */
676
+ list_stripe_product_subscribers_stripe_products__product_id__subscribers_get: {
677
+ input: {
678
+ path: {
679
+ /** Stripe product id. */
680
+ product_id: string;
681
+ };
682
+ query?: {
683
+ /** 1-based page. */
684
+ page?: number;
685
+ limit?: number;
686
+ /** Grid filter model as JSON, as the app's grid sends it. */
687
+ filter_model?: string | null;
688
+ /** Grid sort model as JSON. */
689
+ sort_model?: string | null;
690
+ };
691
+ headers?: {
692
+ "X-Target-Org-Id"?: string | null;
693
+ };
694
+ };
695
+ output: ApiResponse_BillingListPayload_;
696
+ };
697
+ /**
698
+ * GET /stripe/products
699
+ * List Stripe Products
700
+ * tier: read · scope: quotes:read
701
+ */
702
+ list_stripe_products_stripe_products_get: {
703
+ input: {
704
+ query?: {
705
+ /** 1-based page. */
706
+ page?: number;
707
+ limit?: number;
708
+ /** Grid filter model as JSON, as the app's grid sends it. */
709
+ filter_model?: string | null;
710
+ /** Grid sort model as JSON. */
711
+ sort_model?: string | null;
712
+ };
713
+ headers?: {
714
+ "X-Target-Org-Id"?: string | null;
715
+ };
716
+ };
717
+ output: ApiResponse_BillingListPayload_;
718
+ };
719
+ /**
720
+ * POST /quotes/{quote_id}/mark-accepted
721
+ * Mark Quote Accepted
722
+ * tier: external · scope: quotes:run
723
+ */
724
+ mark_quote_accepted_quotes__quote_id__mark_accepted_post: {
725
+ input: {
726
+ path: {
727
+ /** Quote id (UUID). */
728
+ quote_id: string;
729
+ };
730
+ headers?: {
731
+ "X-Target-Org-Id"?: string | null;
732
+ };
733
+ body: ManualAcceptRequest;
734
+ };
735
+ output: ApiResponse_QuotePayload_;
736
+ };
737
+ /**
738
+ * POST /quotes/payment-schedule
739
+ * Preview Payment Schedule
740
+ * tier: read · scope: quotes:read
741
+ */
742
+ preview_payment_schedule_quotes_payment_schedule_post: {
743
+ input: {
744
+ headers?: {
745
+ "X-Target-Org-Id"?: string | null;
746
+ };
747
+ body: PaymentSchedulePreviewRequest;
748
+ };
749
+ output: ApiResponse_QuotePayload_;
750
+ };
751
+ /**
752
+ * POST /quotes/preview-draft
753
+ * Preview Quote Draft
754
+ * tier: read · scope: quotes:read
755
+ */
756
+ preview_quote_draft_quotes_preview_draft_post: {
757
+ input: {
758
+ headers?: {
759
+ "X-Target-Org-Id"?: string | null;
760
+ };
761
+ body: Record<string, unknown>;
762
+ };
763
+ output: ApiResponse_QuotePayload_;
764
+ };
765
+ /**
766
+ * POST /quotes/{quote_id}/send-preview
767
+ * Preview Quote Send
768
+ * tier: read · scope: quotes:read
769
+ */
770
+ preview_quote_send_quotes__quote_id__send_preview_post: {
771
+ input: {
772
+ path: {
773
+ /** Quote id (UUID). */
774
+ quote_id: string;
775
+ };
776
+ headers?: {
777
+ "X-Target-Org-Id"?: string | null;
778
+ };
779
+ body: QuoteSendPreviewRequest;
780
+ };
781
+ output: ApiResponse_QuotePayload_;
782
+ };
783
+ /**
784
+ * POST /quotes/{quote_id}/revoke
785
+ * Revoke Quote
786
+ * tier: destructive · scope: quotes:delete
787
+ */
788
+ revoke_quote_quotes__quote_id__revoke_post: {
789
+ input: {
790
+ path: {
791
+ /** Quote id (UUID). */
792
+ quote_id: string;
793
+ };
794
+ headers?: {
795
+ "X-Target-Org-Id"?: string | null;
796
+ };
797
+ };
798
+ output: ApiResponse_QuotePayload_;
799
+ };
800
+ /**
801
+ * GET /quote-contacts
802
+ * Search Quote Contacts
803
+ * tier: read · scope: quotes:read
804
+ */
805
+ search_quote_contacts_quote_contacts_get: {
806
+ input: {
807
+ query?: {
808
+ /** Name or email fragment. Empty returns the default page. */
809
+ q?: string;
810
+ /** The app's default is 100 and deliberately not smaller: the signer picker has to show every plausible match, and a short page reads as 'this contact does not exist'. */
811
+ limit?: number;
812
+ /** Scope to contacts at this company. */
813
+ company_id?: number | null;
814
+ /** Scope to contacts linked to this deal. Combined with `company_id` the two scopes are a UNION - on the deal OR at the company - and each row comes back with an `on_deal` flag. Given `deal_id` alone, the company is derived from the deal. */
815
+ deal_id?: string | null;
816
+ };
817
+ headers?: {
818
+ "X-Target-Org-Id"?: string | null;
819
+ };
820
+ };
821
+ output: ApiResponse_QuoteListPayload_;
822
+ };
823
+ /**
824
+ * POST /quotes/{quote_id}/send
825
+ * Send Quote
826
+ * tier: external · scope: quotes:run
827
+ */
828
+ send_quote_quotes__quote_id__send_post: {
829
+ input: {
830
+ path: {
831
+ /** Quote UUID (must be in draft or sent status) */
832
+ quote_id: string;
833
+ };
834
+ headers?: {
835
+ "X-Target-Org-Id"?: string | null;
836
+ };
837
+ body?: QuoteSendRequest;
838
+ };
839
+ output: ApiResponse_QuoteDetail_;
840
+ };
841
+ /**
842
+ * POST /stripe/sync
843
+ * Trigger Stripe Sync
844
+ * tier: external · scope: quotes:run
845
+ */
846
+ trigger_stripe_sync_stripe_sync_post: {
847
+ input: {
848
+ headers?: {
849
+ "X-Target-Org-Id"?: string | null;
850
+ };
851
+ };
852
+ output: ApiResponse_BillingPayload_;
853
+ };
854
+ /**
855
+ * POST /quotes/{quote_id}/unarchive
856
+ * Unarchive Quote
857
+ * tier: external · scope: quotes:run
858
+ */
859
+ unarchive_quote_quotes__quote_id__unarchive_post: {
860
+ input: {
861
+ path: {
862
+ /** Quote id (UUID). */
863
+ quote_id: string;
864
+ };
865
+ headers?: {
866
+ "X-Target-Org-Id"?: string | null;
867
+ };
868
+ };
869
+ output: ApiResponse_QuotePayload_;
870
+ };
871
+ /**
872
+ * PATCH /manual-products/{product_id}
873
+ * Update Manual Product
874
+ * tier: write · scope: quotes:write
875
+ */
876
+ update_manual_product_manual_products__product_id__patch: {
877
+ input: {
878
+ path: {
879
+ /** Manual product id. */
880
+ product_id: string;
881
+ };
882
+ headers?: {
883
+ "X-Target-Org-Id"?: string | null;
884
+ };
885
+ body: ManualProductUpdateRequest;
886
+ };
887
+ output: ApiResponse_BillingPayload_;
888
+ };
889
+ /**
890
+ * PATCH /quotes/{quote_id}
891
+ * Update Quote
892
+ * tier: external · scope: quotes:run
893
+ */
894
+ update_quote_quotes__quote_id__patch: {
895
+ input: {
896
+ path: {
897
+ /** Quote UUID */
898
+ quote_id: string;
899
+ };
900
+ headers?: {
901
+ "X-Target-Org-Id"?: string | null;
902
+ };
903
+ body: QuoteUpdateRequest;
904
+ };
905
+ output: ApiResponse_QuoteDetail_;
906
+ };
907
+ /**
908
+ * PUT /quotes/{quote_id}
909
+ * Update Quote
910
+ * tier: external · scope: quotes:run
911
+ */
912
+ update_quote_quotes__quote_id__put: {
913
+ input: {
914
+ path: {
915
+ /** Quote UUID */
916
+ quote_id: string;
917
+ };
918
+ headers?: {
919
+ "X-Target-Org-Id"?: string | null;
920
+ };
921
+ body: QuoteUpdateRequest;
922
+ };
923
+ output: ApiResponse_QuoteDetail_;
924
+ };
925
+ /**
926
+ * PUT /quote-settings
927
+ * Update Quote Settings
928
+ * tier: external · scope: quotes:run
929
+ */
930
+ update_quote_settings_quote_settings_put: {
931
+ input: {
932
+ headers?: {
933
+ "X-Target-Org-Id"?: string | null;
934
+ };
935
+ body: QuoteSettingsUpdateRequest;
936
+ };
937
+ output: ApiResponse_QuotePayload_;
938
+ };
939
+ /**
940
+ * PUT /quote-templates/{template_id}
941
+ * Update Quote Template
942
+ * tier: external · scope: quotes:run
943
+ */
944
+ update_quote_template_quote_templates__template_id__put: {
945
+ input: {
946
+ path: {
947
+ /** Template id. */
948
+ template_id: string;
949
+ };
950
+ headers?: {
951
+ "X-Target-Org-Id"?: string | null;
952
+ };
953
+ body: QuoteTemplateRequest;
954
+ };
955
+ output: ApiResponse_QuotePayload_;
956
+ };
957
+ /**
958
+ * PATCH /stripe/customers/{customer_id}/mapping
959
+ * Update Stripe Customer Mapping
960
+ * tier: write · scope: quotes:write
961
+ */
962
+ update_stripe_customer_mapping_stripe_customers__customer_id__mapping_patch: {
963
+ input: {
964
+ path: {
965
+ /** The synced customer row id (not the `cus_` id). */
966
+ customer_id: number;
967
+ };
968
+ headers?: {
969
+ "X-Target-Org-Id"?: string | null;
970
+ };
971
+ body: CustomerMappingRequest;
972
+ };
973
+ output: ApiResponse_BillingPayload_;
974
+ };
975
+ /**
976
+ * POST /quote-settings/documents
977
+ * Upload Quote Document
978
+ * tier: external · scope: quotes:run
979
+ */
980
+ upload_quote_document_quote_settings_documents_post: {
981
+ input: {
982
+ headers?: {
983
+ "X-Target-Org-Id"?: string | null;
984
+ };
985
+ };
986
+ output: ApiResponse_QuotePayload_;
987
+ };
988
+ /**
989
+ * POST /quotes/{quote_id}/evidence
990
+ * Upload Quote Evidence
991
+ * tier: write · scope: quotes:write
992
+ */
993
+ upload_quote_evidence_quotes__quote_id__evidence_post: {
994
+ input: {
995
+ path: {
996
+ /** Quote id. */
997
+ quote_id: string;
998
+ };
999
+ headers?: {
1000
+ "X-Target-Org-Id"?: string | null;
1001
+ };
1002
+ };
1003
+ output: ApiResponse_BillingPayload_;
1004
+ };
1005
+ /**
1006
+ * PUT /stripe/product-settings/{stripe_product_id}
1007
+ * Upsert Stripe Product Settings
1008
+ * tier: write · scope: quotes:write
1009
+ */
1010
+ upsert_stripe_product_settings_stripe_product_settings__stripe_product_id__put: {
1011
+ input: {
1012
+ path: {
1013
+ /** Stripe product id. */
1014
+ stripe_product_id: string;
1015
+ };
1016
+ headers?: {
1017
+ "X-Target-Org-Id"?: string | null;
1018
+ };
1019
+ body: ProductSettingsUpdateRequest;
1020
+ };
1021
+ output: ApiResponse_BillingPayload_;
1022
+ };
1023
+ }
1024
+
1025
+ // 41 schemas referenced above (the same as G8Contract.<Name>).
1026
+
1027
+ export interface ApiResponse_BillingListPayload_ {
1028
+ data: BillingListPayload;
1029
+ pagination?: PaginationMeta | null;
1030
+ }
1031
+
1032
+ export interface ApiResponse_BillingPayload_ {
1033
+ data: BillingPayload;
1034
+ pagination?: PaginationMeta | null;
1035
+ }
1036
+
1037
+ export interface ApiResponse_QuotableProductsResponse_ {
1038
+ data: QuotableProductsResponse;
1039
+ pagination?: PaginationMeta | null;
1040
+ }
1041
+
1042
+ export interface ApiResponse_QuoteDetail_ {
1043
+ data: QuoteDetail;
1044
+ pagination?: PaginationMeta | null;
1045
+ }
1046
+
1047
+ export interface ApiResponse_QuoteListPayload_ {
1048
+ data: QuoteListPayload;
1049
+ pagination?: PaginationMeta | null;
1050
+ }
1051
+
1052
+ export interface ApiResponse_QuoteListResponse_ {
1053
+ data: QuoteListResponse;
1054
+ pagination?: PaginationMeta | null;
1055
+ }
1056
+
1057
+ export interface ApiResponse_QuotePayload_ {
1058
+ data: QuotePayload;
1059
+ pagination?: PaginationMeta | null;
1060
+ }
1061
+
1062
+ export interface ApiResponse_QuoteSettingsResponse_ {
1063
+ data: QuoteSettingsResponse;
1064
+ pagination?: PaginationMeta | null;
1065
+ }
1066
+
1067
+ export interface ApiResponse_dict_ {
1068
+ data: Record<string, unknown>;
1069
+ pagination?: PaginationMeta | null;
1070
+ }
1071
+
1072
+ export interface ApiResponse_list_QuoteDetail__ {
1073
+ data: Array<QuoteDetail>;
1074
+ pagination?: PaginationMeta | null;
1075
+ }
1076
+
1077
+ /**
1078
+ * Archive, expire or revoke up to 200 quotes.
1079
+ *
1080
+ * Each quote runs in its OWN transaction and reports its own outcome, so one
1081
+ * bad row does not roll back the rest. The per-row result is the whole point
1082
+ * of the endpoint - read it rather than the HTTP status.
1083
+ */
1084
+ export interface BatchQuoteActionRequest {
1085
+ /** What to do to every quote in the list. */
1086
+ action: "archive" | "expire" | "revoke";
1087
+ /** Quote ids. An out-of-scope or unknown id is reported per-row, not fatal. */
1088
+ quote_ids: Array<string>;
1089
+ }
1090
+
1091
+ /**
1092
+ * An open envelope for a LIST result. The rows are always under `items`;
1093
+ * `total` and paging fields ride along when the app reports them.
1094
+ */
1095
+ export interface BillingListPayload {
1096
+ items?: Array<unknown>;
1097
+ [key: string]: unknown;
1098
+ }
1099
+
1100
+ /** An open envelope for one billing result. */
1101
+ export type BillingPayload = Record<string, unknown>;
1102
+
1103
+ export interface BulkProductSettingsRequest {
1104
+ /** Stripe product ids to update. */
1105
+ stripe_product_ids: Array<string>;
1106
+ updates: ProductSettingsUpdateRequest;
1107
+ }
1108
+
1109
+ /** Link a Stripe customer to a graph8 company, or unlink it with null. */
1110
+ export interface CustomerMappingRequest {
1111
+ /** graph8 company id. Null removes the mapping. */
1112
+ mashup_company_id: number | null;
1113
+ }
1114
+
1115
+ /** Input for the warmup-aware mailbox capacity planner. */
1116
+ export interface MailboxCapacityRequest {
1117
+ /** Target contacts to reach per month. */
1118
+ contacts_per_month: number;
1119
+ /** TLD for the per-domain cost estimate. */
1120
+ domain_tld?: string;
1121
+ /** Mailbox warmup state. Advisory under the current platform-wide daily cap. */
1122
+ warmed?: boolean;
1123
+ }
1124
+
1125
+ /**
1126
+ * Evidence for an acceptance that happened OUTSIDE graph8 e-sign.
1127
+ *
1128
+ * Both fields are required by the app and stay required here. This is the
1129
+ * audit trail for a quote accepted on a wire transfer or a paper contract,
1130
+ * and an acceptance with no recorded reason is the one thing a finance
1131
+ * surface cannot afford.
1132
+ */
1133
+ export interface ManualAcceptRequest {
1134
+ /** What happened, in the accepter's own words. Stored on the audit row. */
1135
+ evidence_note: string;
1136
+ /** How the customer accepted, outside the e-sign flow. */
1137
+ evidence_type: "offline_signature" | "customer_email" | "verbal_authorization" | "payment_received";
1138
+ }
1139
+
1140
+ /** A product in the org's own catalogue - quotable with or without Stripe. */
1141
+ export interface ManualProductCreateRequest {
1142
+ active?: boolean;
1143
+ billing_frequency?: "one_time" | "month" | "year" | "quarter";
1144
+ category?: string | null;
1145
+ currency?: string;
1146
+ /** In cents. */
1147
+ default_unit_amount: number;
1148
+ description?: string | null;
1149
+ name: string;
1150
+ quotable?: boolean;
1151
+ sort_order?: number;
1152
+ }
1153
+
1154
+ /** Partial update. Only the fields you send are changed. */
1155
+ export interface ManualProductUpdateRequest {
1156
+ active?: boolean | null;
1157
+ billing_frequency?: ("one_time" | "month" | "year" | "quarter") | null;
1158
+ category?: string | null;
1159
+ currency?: string | null;
1160
+ default_unit_amount?: number | null;
1161
+ description?: string | null;
1162
+ name?: string | null;
1163
+ quotable?: boolean | null;
1164
+ sort_order?: number | null;
1165
+ }
1166
+
1167
+ export interface PaginationMeta {
1168
+ /** Whether there are more pages */
1169
+ has_next: boolean;
1170
+ /** Items per page */
1171
+ limit: number;
1172
+ /** 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. */
1173
+ next_cursor?: string | null;
1174
+ /** Current page number (1-indexed) */
1175
+ page: number;
1176
+ /** Total number of items */
1177
+ total: number;
1178
+ }
1179
+
1180
+ /**
1181
+ * Compute the payment schedule a set of line items WOULD produce.
1182
+ *
1183
+ * Reads nothing and writes nothing - it is arithmetic over the body, which
1184
+ * is why it is POST but tiered `read`.
1185
+ */
1186
+ export interface PaymentSchedulePreviewRequest {
1187
+ contract_duration_unit?: ("months" | "weeks" | "days") | null;
1188
+ contract_duration_value?: number | null;
1189
+ contract_end_date?: string | null;
1190
+ contract_months?: number | null;
1191
+ /** ISO date the contract starts. */
1192
+ contract_start_date: string;
1193
+ line_items: Array<QuoteLineItem>;
1194
+ tax_amount?: number;
1195
+ }
1196
+
1197
+ /** How a Stripe product appears in the quote builder. Omitted fields are unchanged. */
1198
+ export interface ProductSettingsUpdateRequest {
1199
+ category?: string | null;
1200
+ friendly_description?: string | null;
1201
+ friendly_name?: string | null;
1202
+ quotable?: boolean | null;
1203
+ sort_order?: number | null;
1204
+ }
1205
+
1206
+ /** ``GET /quotable-products`` envelope (pagination preserved). */
1207
+ export interface QuotableProductsResponse {
1208
+ items: Array<Record<string, unknown>>;
1209
+ limit: number;
1210
+ page: number;
1211
+ total: number;
1212
+ }
1213
+
1214
+ /** The FINANCE contact a quote bills to - name and email only. */
1215
+ export interface QuoteBillingContactCreateRequest {
1216
+ deal_id?: string | null;
1217
+ email: string;
1218
+ /** Company the contact belongs to. */
1219
+ mashup_company_id: number;
1220
+ name?: string | null;
1221
+ }
1222
+
1223
+ /**
1224
+ * The full CRM contact form for a quote's SIGNER.
1225
+ *
1226
+ * Distinct from the billing contact below, which is a finance contact and
1227
+ * takes name and email only. This one links the new contact to the deal and
1228
+ * the company so it is immediately usable as the signer.
1229
+ */
1230
+ export interface QuoteContactCreateRequest {
1231
+ buying_role?: string | null;
1232
+ /** Deal to link it to. */
1233
+ deal_id?: string | null;
1234
+ department?: string | null;
1235
+ email: string;
1236
+ first_name?: string | null;
1237
+ last_name?: string | null;
1238
+ linkedin_url?: string | null;
1239
+ /** Company to link the new contact to. */
1240
+ mashup_company_id?: number | null;
1241
+ mobile_phone?: string | null;
1242
+ phone?: string | null;
1243
+ title?: string | null;
1244
+ }
1245
+
1246
+ /**
1247
+ * Create a new quote (always starts in `draft` status).
1248
+ *
1249
+ * Mirrors ``CreateQuoteDTO``. At least one of ``signer_contact_id`` or
1250
+ * ``signer_email`` is required. ``line_items`` must be non-empty —
1251
+ * zero-line quotes can't be invoiced.
1252
+ */
1253
+ export interface QuoteCreateRequest {
1254
+ accepted_payment_methods?: (Array<"ach" | "credit_card" | "wire">) | null;
1255
+ billing_address?: string | null;
1256
+ billing_contact_id?: number | null;
1257
+ billing_email?: string | null;
1258
+ billing_legal_name?: string | null;
1259
+ billing_primary_email?: string | null;
1260
+ contract_duration_unit?: ("months" | "weeks" | "days") | null;
1261
+ contract_duration_value?: number | null;
1262
+ contract_end_date?: string | null;
1263
+ contract_months?: number | null;
1264
+ contract_start_date?: string | null;
1265
+ currency?: string;
1266
+ deal_id?: string | null;
1267
+ line_items: Array<QuoteLineItemRequest>;
1268
+ marketing_rights?: (Array<"logo" | "quote" | "case_study">) | null;
1269
+ mashup_company_id?: number | null;
1270
+ notes?: string | null;
1271
+ owner_id?: string | null;
1272
+ payment_terms?: "due_on_receipt" | "net_15" | "net_30" | "net_45" | "net_60" | "net_90";
1273
+ privacy_content?: string | null;
1274
+ public_notes?: string | null;
1275
+ signer_contact_id?: number | null;
1276
+ signer_email?: string | null;
1277
+ signer_name?: string | null;
1278
+ tax_amount?: number;
1279
+ template_id?: string | null;
1280
+ terms_content?: string | null;
1281
+ title: string;
1282
+ valid_until?: string | null;
1283
+ }
1284
+
1285
+ /**
1286
+ * Full row + line items + activity + envelope from ``GET /quotes/{id}``.
1287
+ *
1288
+ * Open dict because ``_get_quote_detail`` returns the dynamic
1289
+ * ``_row_to_dict`` shape plus resolved contact/company/envelope blocks.
1290
+ */
1291
+ export interface QuoteDetail {
1292
+ activity?: Array<Record<string, unknown>> | null;
1293
+ envelope?: Record<string, unknown> | null;
1294
+ id?: string | null;
1295
+ line_items?: Array<Record<string, unknown>> | null;
1296
+ quote_number?: string | null;
1297
+ status?: string | null;
1298
+ title?: string | null;
1299
+ [key: string]: unknown;
1300
+ }
1301
+
1302
+ /**
1303
+ * One priced line, mirroring the app's `LineItemDTO`.
1304
+ *
1305
+ * The two REQUIRED fields are required here too, and that is the point: the
1306
+ * app model is built inside the handler, so a missing `product_name` or
1307
+ * `unit_amount` would raise a bare `pydantic.ValidationError` there - not the
1308
+ * `RequestValidationError` `error_handlers.py` registers - and escape as a
1309
+ * 500 instead of a 422.
1310
+ *
1311
+ * `unit_amount` is in CENTS, like the app. An API that took dollars here
1312
+ * while the app took cents would be wrong by a factor of a hundred on every
1313
+ * quote, silently.
1314
+ *
1315
+ * CLOSED (`extra="forbid"`), which makes this stricter than the app on
1316
+ * purpose. `LineItemDTO` uses pydantic's default behaviour and DROPS an
1317
+ * unrecognised field, so an open model here would accept a pricing field,
1318
+ * lose it on the way in, and return a schedule computed without it. On a
1319
+ * money surface a 422 naming the field is worth more than a 200 that quietly
1320
+ * priced something else. Nothing existing is affected - this route is new.
1321
+ */
1322
+ export interface QuoteLineItem {
1323
+ billing_frequency?: string | null;
1324
+ billing_start_date?: string | null;
1325
+ description?: string | null;
1326
+ discount_pct?: number;
1327
+ manual_product_id?: string | null;
1328
+ product_name: string;
1329
+ quantity?: number;
1330
+ sort_order?: number;
1331
+ start_month?: number;
1332
+ stripe_price_id?: string | null;
1333
+ stripe_product_id?: string | null;
1334
+ /** CENTS, not dollars. */
1335
+ unit_amount: number;
1336
+ }
1337
+
1338
+ /**
1339
+ * One line item on a quote request body.
1340
+ *
1341
+ * Shape mirrors ``integrations_v4.interfaces.fastapi.quote_router.LineItemDTO``
1342
+ * exactly. Pass either ``stripe_product_id`` + ``stripe_price_id`` (for a
1343
+ * Stripe-catalogue product) or ``manual_product_id`` (for an org-owned
1344
+ * manual catalogue entry), or neither (for a custom one-off line).
1345
+ * Authorization is enforced server-side — non-quotable products are
1346
+ * rejected with 400.
1347
+ */
1348
+ export interface QuoteLineItemRequest {
1349
+ billing_frequency?: ("one_time" | "month" | "year" | "quarter") | null;
1350
+ /** Exact recurring billing start date within the contract; start_month must remain 1 when supplied. */
1351
+ billing_start_date?: string | null;
1352
+ description?: string | null;
1353
+ discount_pct?: number;
1354
+ manual_product_id?: string | null;
1355
+ product_name: string;
1356
+ quantity?: number;
1357
+ sort_order?: number;
1358
+ /** Contract month when recurring billing begins; 1 means at contract start. Use billing_start_date instead for an exact date. */
1359
+ start_month?: number;
1360
+ stripe_price_id?: string | null;
1361
+ stripe_product_id?: string | null;
1362
+ /** In cents */
1363
+ unit_amount: number;
1364
+ }
1365
+
1366
+ /** An open envelope for a LIST result, so a bare list keeps its shape. */
1367
+ export interface QuoteListPayload {
1368
+ items?: Array<unknown>;
1369
+ [key: string]: unknown;
1370
+ }
1371
+
1372
+ /**
1373
+ * ``GET /quotes`` envelope — preserves the original list endpoint's
1374
+ * pagination fields verbatim (the internal handler returns
1375
+ * ``{items, total, page, limit}``).
1376
+ */
1377
+ export interface QuoteListResponse {
1378
+ items: Array<QuoteSummary>;
1379
+ limit: number;
1380
+ page: number;
1381
+ total: number;
1382
+ }
1383
+
1384
+ /** An open envelope for a quote, template, contact or job result. */
1385
+ export type QuotePayload = Record<string, unknown>;
1386
+
1387
+ /**
1388
+ * The same body `POST /quotes/{id}/send` takes - rendered, not sent.
1389
+ *
1390
+ * Identical on purpose: previewing with a different body than you send is
1391
+ * how a preview stops predicting anything. `deliver` is accepted because the
1392
+ * app's model has it, and it is INERT here - this handler renders and
1393
+ * returns, and nothing in it reaches a mail transport.
1394
+ */
1395
+ export interface QuoteSendPreviewRequest {
1396
+ cc_emails?: Array<string> | null;
1397
+ deliver?: boolean;
1398
+ email_body?: string | null;
1399
+ message?: string | null;
1400
+ notification_mode?: "after_each" | "after_all";
1401
+ preview_recipient_email?: string | null;
1402
+ recipient_email?: string | null;
1403
+ recipient_name?: string | null;
1404
+ recipients?: Array<QuoteSendRecipient> | null;
1405
+ subject?: string | null;
1406
+ }
1407
+
1408
+ /** One recipient of a quote preview. */
1409
+ export interface QuoteSendRecipient {
1410
+ email: string;
1411
+ email_body?: string | null;
1412
+ name?: string | null;
1413
+ role?: "signer" | "viewer";
1414
+ subject?: string | null;
1415
+ }
1416
+
1417
+ /**
1418
+ * Send (or resend) a quote for e-signature.
1419
+ *
1420
+ * Both fields are optional — the server falls back to the quote title
1421
+ * for ``subject`` and a default cover line for ``message``. When the
1422
+ * target quote already has an active envelope (``sent`` / ``viewed``)
1423
+ * this resends without minting a new signing link.
1424
+ */
1425
+ export interface QuoteSendRequest {
1426
+ message?: string | null;
1427
+ subject?: string | null;
1428
+ }
1429
+
1430
+ /**
1431
+ * ``GET /quote-settings`` row. Open dict — settings columns evolve
1432
+ * independently of this API surface.
1433
+ */
1434
+ export type QuoteSettingsResponse = Record<string, unknown>;
1435
+
1436
+ /**
1437
+ * Org-wide quote branding, terms and sender identity.
1438
+ *
1439
+ * A CLOSED mirror of the app's `QuoteSettingsDTO`, not an open bag. Leaving
1440
+ * it open would have achieved nothing: the app model uses pydantic's default
1441
+ * `extra` behaviour, so an unrecognised branding field is dropped THERE
1442
+ * whatever this one does. Closed, the caller gets a 422 naming the field;
1443
+ * open, they get a 200 and settings that did not change.
1444
+ *
1445
+ * Every field is optional, and the app writes with `exclude_none`, so a
1446
+ * field you omit is left alone rather than blanked.
1447
+ */
1448
+ export interface QuoteSettingsUpdateRequest {
1449
+ accent_color?: string | null;
1450
+ auto_advance_deal_on_quote_send?: boolean | null;
1451
+ /** Close the linked DEAL when a quote is accepted. Org-wide, and it changes what every future acceptance does to the pipeline. */
1452
+ auto_close_deal_on_acceptance?: boolean | null;
1453
+ company_address?: string | null;
1454
+ company_email?: string | null;
1455
+ company_logo_url?: string | null;
1456
+ company_name?: string | null;
1457
+ company_phone?: string | null;
1458
+ default_billing_provider?: string | null;
1459
+ default_payment_terms?: string | null;
1460
+ default_privacy?: string | null;
1461
+ default_terms?: string | null;
1462
+ default_valid_days?: number | null;
1463
+ footer_text?: string | null;
1464
+ privacy_url?: string | null;
1465
+ quote_acceptance_roam_channel_id?: string | null;
1466
+ quote_acceptance_roam_channel_name?: string | null;
1467
+ quote_acceptance_roam_notifications_enabled?: boolean | null;
1468
+ quote_number_prefix?: string | null;
1469
+ required_billing_fields?: Array<string> | null;
1470
+ /** Whose name every quote goes out under. Admin-only for that reason. */
1471
+ sender_email?: string | null;
1472
+ /** `fixed` to always use `sender_email`, or `creator`. */
1473
+ sender_mode?: string | null;
1474
+ sender_name?: string | null;
1475
+ terms_library?: Array<Record<string, unknown>> | null;
1476
+ terms_url?: string | null;
1477
+ }
1478
+
1479
+ /**
1480
+ * List-view row from ``GET /quotes``. ``extra="allow"`` keeps every
1481
+ * backend column flowing through without us re-declaring CBQuote.
1482
+ */
1483
+ export interface QuoteSummary {
1484
+ accepted_at?: string | null;
1485
+ created_at?: string | null;
1486
+ currency?: string | null;
1487
+ id?: string | null;
1488
+ quote_number?: string | null;
1489
+ sent_at?: string | null;
1490
+ status?: string | null;
1491
+ title?: string | null;
1492
+ total?: number | null;
1493
+ [key: string]: unknown;
1494
+ }
1495
+
1496
+ /**
1497
+ * A reusable quote template. A CLOSED mirror of `QuoteTemplateDTO` - the
1498
+ * app drops an unrecognised field silently, so an open model here would turn
1499
+ * a typo into a template saved without the thing you typed.
1500
+ */
1501
+ export interface QuoteTemplateRequest {
1502
+ contract_duration_unit?: ("months" | "weeks" | "days") | null;
1503
+ contract_duration_value?: number | null;
1504
+ contract_months?: number | null;
1505
+ default_line_items?: Array<Record<string, unknown>> | null;
1506
+ default_payment_terms?: string | null;
1507
+ default_valid_days?: number | null;
1508
+ description?: string | null;
1509
+ /** Legal documents to attach to every quote built from this template. Ids come from `GET /quote-settings/documents`. */
1510
+ document_ids?: Array<string> | null;
1511
+ is_default?: boolean;
1512
+ name: string;
1513
+ terms_override?: string | null;
1514
+ }
1515
+
1516
+ /**
1517
+ * Partial update for a draft quote.
1518
+ *
1519
+ * All fields optional. Passing ``line_items`` replaces them entirely
1520
+ * (and re-runs quotable-product authorization). Quotes in any status
1521
+ * other than ``draft`` reject updates with 400 — use ``edit-as-draft``
1522
+ * on a ``sent`` quote, or ``duplicate`` on a terminal one, to get a
1523
+ * fresh editable copy.
1524
+ */
1525
+ export interface QuoteUpdateRequest {
1526
+ accepted_payment_methods?: (Array<"ach" | "credit_card" | "wire">) | null;
1527
+ billing_address?: string | null;
1528
+ billing_contact_id?: number | null;
1529
+ billing_email?: string | null;
1530
+ billing_legal_name?: string | null;
1531
+ billing_primary_email?: string | null;
1532
+ contract_duration_unit?: ("months" | "weeks" | "days") | null;
1533
+ contract_duration_value?: number | null;
1534
+ contract_end_date?: string | null;
1535
+ contract_months?: number | null;
1536
+ contract_start_date?: string | null;
1537
+ currency?: string | null;
1538
+ deal_id?: string | null;
1539
+ line_items?: Array<QuoteLineItemRequest> | null;
1540
+ marketing_rights?: (Array<"logo" | "quote" | "case_study">) | null;
1541
+ mashup_company_id?: number | null;
1542
+ notes?: string | null;
1543
+ owner_id?: string | null;
1544
+ payment_terms?: ("due_on_receipt" | "net_15" | "net_30" | "net_45" | "net_60" | "net_90") | null;
1545
+ privacy_content?: string | null;
1546
+ public_notes?: string | null;
1547
+ signer_contact_id?: number | null;
1548
+ signer_email?: string | null;
1549
+ signer_name?: string | null;
1550
+ tax_amount?: number | null;
1551
+ terms_content?: string | null;
1552
+ title?: string | null;
1553
+ valid_until?: string | null;
1554
+ }
1555
+
1556
+ /**
1557
+ * Connect Stripe with a restricted (or secret) API key.
1558
+ *
1559
+ * WRITE-ONLY: the key is stored encrypted and never returned by any operation.
1560
+ */
1561
+ export interface StripeApiKeyRequest {
1562
+ /** Stripe restricted or secret key: rk_live_, rk_test_, sk_live_ or sk_test_. */
1563
+ api_key: string;
1564
+ }